a working internationalization ...

vnext
Paul Schneider 10 years ago
parent 0516ab585e
commit 333b6fd9d9
15 changed files with 670 additions and 123 deletions

@ -15,7 +15,7 @@ namespace Yavsc.App_GlobalResources {
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[System.Diagnostics.DebuggerNonUserCodeAttribute()] [System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class LocalizedText { public class LocalizedText {
private static System.Resources.ResourceManager resourceMan; private static System.Resources.ResourceManager resourceMan;
@ -26,7 +26,7 @@ namespace Yavsc.App_GlobalResources {
} }
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Resources.ResourceManager ResourceManager { public static System.Resources.ResourceManager ResourceManager {
get { get {
if (object.Equals(null, resourceMan)) { if (object.Equals(null, resourceMan)) {
System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Yavsc.App_GlobalResources.LocalizedText", typeof(LocalizedText).Assembly); System.Resources.ResourceManager temp = new System.Resources.ResourceManager("Yavsc.App_GlobalResources.LocalizedText", typeof(LocalizedText).Assembly);
@ -37,7 +37,7 @@ namespace Yavsc.App_GlobalResources {
} }
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
internal static System.Globalization.CultureInfo Culture { public static System.Globalization.CultureInfo Culture {
get { get {
return resourceCulture; return resourceCulture;
} }
@ -46,9 +46,15 @@ namespace Yavsc.App_GlobalResources {
} }
} }
internal static string Previe { public static string Preview {
get { get {
return ResourceManager.GetString("Previe", resourceCulture); return ResourceManager.GetString("Preview", resourceCulture);
}
}
public static string Welcome {
get {
return ResourceManager.GetString("Welcome", resourceCulture);
} }
} }
} }

@ -12,5 +12,6 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Preview"><value>Preview</value><comment>comment on preview</comment></data> <data name="Preview"><value>Prévisualiser</value><comment>Prévisualiser le document</comment></data>
<data name="Welcome"><value>Bienvenue</value><comment></comment></data>
</root> </root>

@ -12,7 +12,6 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Preview"><value>Preview</value><comment>comment on preview</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Welcome"><value>Welcome</value><comment></comment></data>
</root> </root>

@ -45,5 +45,18 @@ namespace Yavsc.App_GlobalResources {
resourceCulture = value; resourceCulture = value;
} }
} }
internal static System.Drawing.Color Color1 {
get {
object obj = ResourceManager.GetObject("Color1", resourceCulture);
return ((System.Drawing.Color)(obj));
}
}
internal static string Name1 {
get {
return ResourceManager.GetString("Name1", resourceCulture);
}
}
} }
} }

@ -3,6 +3,7 @@ using System.Runtime.CompilerServices;
// Information about this assembly is defined by the following attributes. // Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project. // Change them to the values specific to your project.
using System.Resources;
[assembly: AssemblyTitle("Yavsc")] [assembly: AssemblyTitle("Yavsc")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
@ -13,6 +14,8 @@ using System.Runtime.CompilerServices;
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision, // The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision. // and "{Major}.{Minor}.{Build}.*" will update just the revision.

@ -143,6 +143,7 @@ namespace Yavsc.Controllers
return UserPost (BlogManager.GetPost (postid)); return UserPost (BlogManager.GetPost (postid));
} }
} }
string prevstr = App_GlobalResources.LocalizedText.Preview;
return UserPost (BlogManager.GetPost (user, title)); return UserPost (BlogManager.GetPost (user, title));
} }

@ -8,6 +8,9 @@ using System.Web.Configuration;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Mvc.Ajax; using System.Web.Mvc.Ajax;
using Yavsc; using Yavsc;
using System.Reflection;
using Yavsc.App_GlobalResources;
using System.Resources;
namespace Yavsc.Controllers namespace Yavsc.Controllers
{ {
@ -41,6 +44,12 @@ namespace Yavsc.Controllers
} }
} }
public ActionResult ReferencedAssemblies()
{
AssemblyName[] model = GetType ().Assembly.GetReferencedAssemblies ();
return View (model);
}
private static string owneremail = null; private static string owneremail = null;
/// <summary> /// <summary>
@ -60,33 +69,12 @@ namespace Yavsc.Controllers
public ActionResult Index () public ActionResult Index ()
{ {
InitCulture (); string cn = CultureInfo.CurrentCulture.Name;
ViewData ["Message"] = string.Format(T.GetString("Welcome")+"({0})",GetType ().Assembly.FullName); ViewData ["Message"] =
LocalizedText.ResourceManager.GetString("Welcome");
return View (); return View ();
} }
public void InitCulture() {
CultureInfo culture = null;
string defaultCulture = "fr";
if (Request.UserLanguages==null)
culture = CultureInfo.CreateSpecificCulture(defaultCulture);
else
if (Request.UserLanguages.Length > 0) {
try {
culture = new CultureInfo (Request.UserLanguages [0]);
}
catch (Exception e) {
ViewData ["Message"] = e.ToString ();
culture = CultureInfo.CreateSpecificCulture(defaultCulture);
}
}
else culture = CultureInfo.CreateSpecificCulture(defaultCulture);
System.Threading.Thread.CurrentThread.CurrentUICulture = culture;
System.Threading.Thread.CurrentThread.CurrentCulture = culture;
string lcd = Server.MapPath ("./locale");
Mono.Unix.Catalog.Init("i8n1", lcd );
}
public ActionResult AOEMail (string reason, string body) public ActionResult AOEMail (string reason, string body)
{ {
// requires valid owner and admin email? // requires valid owner and admin email?

@ -12,38 +12,13 @@
<link rel="stylesheet" href="/Theme/style.css"/> <link rel="stylesheet" href="/Theme/style.css"/>
<link rel="icon" type="image/png" href="/favicon.png" /> <link rel="icon" type="image/png" href="/favicon.png" />
<link href='http://fonts.googleapis.com/css?family=Dancing+Script:400,700' rel='stylesheet' type='text/css'/> <link href='http://fonts.googleapis.com/css?family=Dancing+Script:400,700' rel='stylesheet' type='text/css'/>
</head> </head>
<body> <body>
<header> <header>
<div id="login">
<% if (Membership.GetUser()==null) { %>
<%= Html.ActionLink( YavscHelpers.SiteName, "Index", "Home" ) %>
<%= Html.ActionLink("Login", "Login", "Account", new { returnUrl=Request.Url.PathAndQuery }, null ) %>
<% } else { %>
<%= HttpContext.Current.User.Identity.Name %> @ <%= Html.ActionLink( YavscHelpers.SiteName, "Index", "Home" ) %>
<%= Html.ActionLink( "Poster", "Post", "Blogs" ) %>
<%= Html.ActionLink( "Profile", "Profile", "Account" ) %>
<%= Html.ActionLink( "Logout", "Logout", "Account", new { returnUrl=Request.Url.PathAndQuery }, null) %>
<% } %>
</div>
<!-- Use taking care of keeping the title to be the same in the head and h1 sections -->
<asp:ContentPlaceHolder ID="overHeaderOne" runat="server"> <asp:ContentPlaceHolder ID="overHeaderOne" runat="server">
<h1><a href="<%= Html.Encode(Request.Url.AbsoluteUri.ToString()) %>"> <h1><a href="<%= Html.Encode(Request.Url.AbsoluteUri.ToString()) %>"><%= Page.Title %></a></h1>
<%= Page.Title %>
</a></h1>
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
<asp:ContentPlaceHolder ID="header" runat="server"></asp:ContentPlaceHolder>
<% if (ViewData["Error"]!=null) { %> <% if (ViewData["Error"]!=null) { %>
<div class="error"> <div class="error">
<%= Html.Encode(ViewData["Error"]) %> <%= Html.Encode(ViewData["Error"]) %>
@ -54,20 +29,26 @@
<%= Html.Encode(ViewData["Message"]) %> <%= Html.Encode(ViewData["Message"]) %>
</div> </div>
<% } %> <% } %>
<!-- a place to add some meta information, under the title -->
<asp:ContentPlaceHolder ID="header" runat="server">
</asp:ContentPlaceHolder>
</header> </header>
<main> <main>
<asp:ContentPlaceHolder ID="MainContent" runat="server"> <asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
</main> </main>
<aside> <aside>
<div id="login">
<% if (Membership.GetUser()==null) { %>
<%= Html.ActionLink( YavscHelpers.SiteName, "Index", "Home" ) %>
<%= Html.ActionLink("Login", "Login", "Account", new { returnUrl=Request.Url.PathAndQuery }, null ) %>
<% } else { %>
<%= HttpContext.Current.User.Identity.Name %> @ <%= Html.ActionLink( YavscHelpers.SiteName, "Index", "Home" ) %>
<%= Html.ActionLink( "Poster", "Post", "Blogs" ) %>
<%= Html.ActionLink( "Profile", "Profile", "Account" ) %>
<%= Html.ActionLink( "Logout", "Logout", "Account", new { returnUrl=Request.Url.PathAndQuery }, null) %>
<% } %>
</div>
<asp:ContentPlaceHolder ID="MASContent" runat="server"> <asp:ContentPlaceHolder ID="MASContent" runat="server">
</asp:ContentPlaceHolder> </asp:ContentPlaceHolder>
</aside> </aside>
<footer> <footer>
<hr/> <hr/>
<%= string.Join("\n",Yavsc.ThanksHelper.Links()) %> <%= string.Join("\n",Yavsc.ThanksHelper.Links()) %>

@ -4,11 +4,10 @@ body {
background-image: url('/images/Banner.png'); background-image: url('/images/Banner.png');
background-repeat: no-repeat; background-repeat: no-repeat;
color: #D0FFD0; color: #D0FFD0;
margin:1em;
padding:1em;
font-family: 'Arial', cursive; font-family: 'Arial', cursive;
} }
aside { float: right; }
aside { float: right; }
video,img { video,img {
max-width:100%; max-width:100%;
@ -17,9 +16,6 @@ video,img {
} }
#login { #login {
position: fixed;
top: 3px;
right:3px;
font-size:x-small; font-size:x-small;
background-color:rgba(0,0,0,0.6); background-color:rgba(0,0,0,0.6);
color:rgb(130,254,130); color:rgb(130,254,130);
@ -152,9 +148,8 @@ padding-left: 20px;
header,footer,.postcomment,.actionlink,.metablog{ display:none;} header,footer,.postcomment,.actionlink,.metablog{ display:none;}
} }
@media all and (max-width: 15em) { @media all and (max-width: 440px) {
section, aside { aside {
float: none; float: none;
width: auto;
} }
} }

@ -1,5 +1,8 @@
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEditEntryModel>" MasterPageFile="~/Models/App.master"%> <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<BlogEditEntryModel>" MasterPageFile="~/Models/App.master"%>
<asp:Content ContentPlaceHolderID="head" ID="head1" runat="server" >
<script type="text/javascript" src="/js/jquery-latest.js"></script>
<script type="text/javascript" src="/js/rangyinputs-jquery-1.1.2.js"></script>
</asp:Content>
<asp:Content ContentPlaceHolderID="overHeaderOne" ID="headerContent" runat="server"> <asp:Content ContentPlaceHolderID="overHeaderOne" ID="headerContent" runat="server">
<h1 class="blogtitle"> <h1 class="blogtitle">
<a href="/Blog/<%=ViewData["UserName"]%>"> <a href="/Blog/<%=ViewData["UserName"]%>">
@ -8,9 +11,6 @@
Nouveau billet - Nouveau billet -
<a href="/"><%= Html.Encode(YavscHelpers.SiteName) %></a> </h1> <a href="/"><%= Html.Encode(YavscHelpers.SiteName) %></a> </h1>
<div class="message">
<%= Html.Encode(ViewData["Message"]) %>
</div>
</asp:Content> </asp:Content>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
@ -36,8 +36,7 @@ Nouveau billet -
<div> <div>
Usage BBcodes : Usage BBcodes :
<ul> <ul>
<% <% foreach (string usage in BBCodeHelper.BBTagsUsage) { %>
foreach (string usage in BBCodeHelper.BBTagsUsage) { %>
<li><%= usage %></li> <li><%= usage %></li>
<% } %> <% } %>
</ul> </ul>
@ -55,7 +54,16 @@ Nouveau billet -
<%= Html.ValidationMessage("Preview", "*") %> <%= Html.ValidationMessage("Preview", "*") %>
<br/> <br/>
<%= Html.Hidden("Id") %> <%= Html.Hidden("Id") %>
<input type="button" id="btnpreview" value="<%=LocalizedText.Preview %>"/>
<input type="submit"/> <input type="submit"/>
<input type="button" id="testbtn">
<script language="Javascript">
$(document).ready(function () {
$("#testbtn").click(function () {
$("#Content").replaceSelectedText("SOME NEW TEXT");
});
});
</script>
<% } %> <% } %>
</div> </div>

@ -1,11 +1,9 @@
<%@ Page Title="Yavsc - indexe" Language="C#" Inherits="System.Web.Mvc.ViewPage" MasterPageFile="~/Models/App.master"%> <%@ Page Title="Yavsc - indexe" Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<System.Reflection.AssemblyName>>" MasterPageFile="~/Models/App.master"%>
<asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server"> <asp:Content ContentPlaceHolderID="MainContent" ID="MainContentContent" runat="server">
<ul>
<p> <% foreach (System.Reflection.AssemblyName item in Model) { %>
« Voir le monde comme un rêve est un bon point de vue. Quand on fait un cauchemar, on se réveille et on se dit que ce nétait quun rêve. Il est dit que le monde où nous vivons nen diffère en rien ». <li><%= item.FullName %></li>
<br/><a href="http://unefenetresurlemonde.over-blog.com/article-34325590.html">Ghost Dog, la Voie du samouraï</a> <% } %>
</p><div> </ul>
<%= Html.ActionLink("Les blogs","Index","Blogs") %>
</div>
</asp:Content> </asp:Content>

@ -29,6 +29,7 @@
<add namespace="Yavsc.Model.Admin" /> <add namespace="Yavsc.Model.Admin" />
<add namespace="Yavsc.Model.Blogs" /> <add namespace="Yavsc.Model.Blogs" />
<add namespace="Yavsc.Model.WorkFlow" /> <add namespace="Yavsc.Model.WorkFlow" />
<add namespace="Yavsc.App_GlobalResources" />
</namespaces> </namespaces>
</pages> </pages>
</system.web> </system.web>

@ -108,7 +108,7 @@ http://msdn2.microsoft.com/en-us/library/b5ysx397.aspx
</httpModules> </httpModules>
<httpRuntime maxRequestLength="52428800" /> <httpRuntime maxRequestLength="52428800" />
<trace enabled="false" localOnly="true" pageOutput="false" requestLimit="10" traceMode="SortByTime" /> <trace enabled="false" localOnly="true" pageOutput="false" requestLimit="10" traceMode="SortByTime" />
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="auto" uiCulture="auto" /> <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="auto" uiCulture="auto" enableClientBasedCulture="true"/>
<membership defaultProvider="NpgsqlMembershipProvider" userIsOnlineTimeWindow="1"> <membership defaultProvider="NpgsqlMembershipProvider" userIsOnlineTimeWindow="1">
<providers> <providers>
<clear /> <clear />

@ -97,7 +97,6 @@
<Folder Include="Models\" /> <Folder Include="Models\" />
<Folder Include="Scripts\" /> <Folder Include="Scripts\" />
<Folder Include="Views\Account\" /> <Folder Include="Views\Account\" />
<Folder Include="Resources\" />
<Folder Include="images\" /> <Folder Include="images\" />
<Folder Include="Thanks\" /> <Folder Include="Thanks\" />
<Folder Include="Views\Blogs\" /> <Folder Include="Views\Blogs\" />
@ -119,6 +118,7 @@
<Folder Include="templates\" /> <Folder Include="templates\" />
<Folder Include="Formatters\" /> <Folder Include="Formatters\" />
<Folder Include="install\" /> <Folder Include="install\" />
<Folder Include="App_GlobalResources\" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Controllers\HomeController.cs" /> <Compile Include="Controllers\HomeController.cs" />
@ -157,6 +157,12 @@
<Compile Include="templates\TexEstimInit.cs" /> <Compile Include="templates\TexEstimInit.cs" />
<Compile Include="Formatters\TexFormatter.cs" /> <Compile Include="Formatters\TexFormatter.cs" />
<Compile Include="Formatters\EstimToPdfFormatter.cs" /> <Compile Include="Formatters\EstimToPdfFormatter.cs" />
<Compile Include="App_GlobalResources\LocalizedTextfr.Designer.cs">
<DependentUpon>LocalizedText.fr.resx</DependentUpon>
</Compile>
<Compile Include="App_GlobalResources\LocalizedText.Designer.cs">
<DependentUpon>LocalizedText.resx</DependentUpon>
</Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Views\Web.config" /> <Content Include="Views\Web.config" />
@ -235,6 +241,9 @@
<Content Include="Theme\dark\desc.gif" /> <Content Include="Theme\dark\desc.gif" />
<Content Include="Theme\dark\style.css" /> <Content Include="Theme\dark\style.css" />
<Content Include="Views\FrontOffice\Estimates.aspx" /> <Content Include="Views\FrontOffice\Estimates.aspx" />
<Content Include="images\pgsql.png" />
<Content Include="Views\Home\ReferencedAssemblies.aspx" />
<Content Include="js\rangyinputs-jquery-1.1.2.js" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
@ -292,4 +301,14 @@
<Name>NpgsqlWorkflow</Name> <Name>NpgsqlWorkflow</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Include="App_GlobalResources\LocalizedText.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>LocalizedText.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="App_GlobalResources\LocalizedText.fr.resx">
<Generator>PublicResXFileCodeGenerator</Generator>
<LastGenOutput>LocalizedTextfr.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project> </Project>

@ -1,4 +1,472 @@
CREATE TABLE blfiles
(
_id bigint NOT NULL DEFAULT nextval('bltags__id_seq'::regclass), -- Identifier
name character varying(2048), -- File Name, relative to the user home directory, must not begin with a slash.
blid bigint, -- Blog entry identifier (foreign key)
CONSTRAINT bltags_pkey PRIMARY KEY (_id),
CONSTRAINT bltags_blid_fkey FOREIGN KEY (blid)
REFERENCES blog (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN blfiles._id IS 'Identifier';
COMMENT ON COLUMN blfiles.name IS 'File Name, relative to the user home directory, must not begin with a slash.';
COMMENT ON COLUMN blfiles.blid IS 'Blog entry identifier (foreign key)';
-- Table: blog
-- DROP TABLE blog;
CREATE TABLE blog
(
applicationname character varying(255) NOT NULL,
username character varying(255) NOT NULL,
posted timestamp with time zone NOT NULL,
modified timestamp with time zone NOT NULL,
title character varying(512) NOT NULL,
bcontent text NOT NULL,
visible boolean NOT NULL,
_id bigserial NOT NULL,
CONSTRAINT blog_pkey PRIMARY KEY (_id),
CONSTRAINT bloguser FOREIGN KEY (applicationname, username)
REFERENCES users (applicationname, username) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
-- Table: commandes
-- DROP TABLE commandes;
CREATE TABLE commandes
(
id bigint NOT NULL, -- Identifiant unique de commande e, cours
validation date, -- Date de validation
prdref character varying(255) NOT NULL, -- Product reference from the unique valid catalog at the validation date
CONSTRAINT commandes_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN commandes.id IS 'Identifiant unique de commande e, cours';
COMMENT ON COLUMN commandes.validation IS 'Date de validation';
COMMENT ON COLUMN commandes.prdref IS 'Product reference from the unique valid catalog at the validation date';
-- Table: comment
-- DROP TABLE comment;
CREATE TABLE comment
(
username character varying(255) NOT NULL,
bcontent text NOT NULL,
posted timestamp with time zone NOT NULL,
modified timestamp with time zone NOT NULL,
visible boolean NOT NULL,
_id bigserial NOT NULL,
postid bigint,
applicationname character varying(255),
CONSTRAINT comment_pkey PRIMARY KEY (_id),
CONSTRAINT fkey_blog FOREIGN KEY (postid)
REFERENCES blog (_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fkey_users FOREIGN KEY (username, applicationname)
REFERENCES users (username, applicationname) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
-- Index: fki_fkey_blog
-- DROP INDEX fki_fkey_blog;
CREATE INDEX fki_fkey_blog
ON comment
USING btree
(postid);
-- Index: fki_fkey_users
-- DROP INDEX fki_fkey_users;
CREATE INDEX fki_fkey_users
ON comment
USING btree
(username COLLATE pg_catalog."default", applicationname COLLATE pg_catalog."default");
-- Table: estimate
-- DROP TABLE estimate;
CREATE TABLE estimate
(
_id bigserial NOT NULL, -- identifier
title character varying(1024) NOT NULL,
username character varying(255) NOT NULL, -- User name of the owner and creator for this estimate
applicationname character varying(255) NOT NULL,
status integer,
client character varying(255) NOT NULL, -- a login name
description character varying(65000),
CONSTRAINT estimate_pkey PRIMARY KEY (_id),
CONSTRAINT estimate_client_fkey FOREIGN KEY (client, applicationname)
REFERENCES users (username, applicationname) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT estimate_username_fkey FOREIGN KEY (username, applicationname)
REFERENCES users (username, applicationname) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN estimate._id IS 'identifier';
COMMENT ON COLUMN estimate.username IS 'User name of the owner and creator for this estimate';
COMMENT ON COLUMN estimate.client IS 'a login name';
-- Index: cliuser
-- DROP INDEX cliuser;
CREATE INDEX cliuser
ON estimate
USING btree
(client COLLATE pg_catalog."default", applicationname COLLATE pg_catalog."default");
-- Table: histoestim
-- DROP TABLE histoestim;
CREATE TABLE histoestim
(
datechange timestamp with time zone NOT NULL DEFAULT now(),
status integer,
estid bigint NOT NULL,
username character varying(255),
applicationname character varying(255),
_id bigserial NOT NULL,
CONSTRAINT histoestim_pkey PRIMARY KEY (_id),
CONSTRAINT histoestim_estid_fkey FOREIGN KEY (estid)
REFERENCES estimate (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT histoestim_username_fkey FOREIGN KEY (username, applicationname)
REFERENCES users (username, applicationname) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
-- Table: histowritting
-- DROP TABLE histowritting;
CREATE TABLE histowritting
(
datechange timestamp with time zone NOT NULL DEFAULT now(),
status integer,
wrtid bigint NOT NULL,
username character varying(255),
applicationname character varying,
_id bigserial NOT NULL,
CONSTRAINT histowritting_pkey PRIMARY KEY (_id),
CONSTRAINT histowritting_username_fkey FOREIGN KEY (username, applicationname)
REFERENCES users (username, applicationname) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT histowritting_wrtid_fkey FOREIGN KEY (wrtid)
REFERENCES writtings (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
-- Table: hr
-- DROP TABLE hr;
CREATE TABLE hr
(
userid character varying NOT NULL,
rate numeric NOT NULL,
comment text NOT NULL,
CONSTRAINT hr_pk_new PRIMARY KEY (userid)
)
WITH (
OIDS=FALSE
);
-- Table: product
-- DROP TABLE product;
CREATE TABLE product
(
ref character varying(255) NOT NULL, -- Product reference from the catalog
"Name" character varying(1000), -- Product Name
"Description" character varying(64000), -- Product description
CONSTRAINT product_pkey PRIMARY KEY (ref)
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN product.ref IS 'Product reference from the catalog';
COMMENT ON COLUMN product."Name" IS 'Product Name';
COMMENT ON COLUMN product."Description" IS 'Product description';
-- Table: profiledata
-- DROP TABLE profiledata;
CREATE TABLE profiledata
(
uniqueid integer,
zipcode character varying(10),
cityandstate character varying(255),
blogtitle character varying(255), -- Blog Title
address character varying(2048), -- Postal address
country character varying(100),
website character varying(256),
blogvisible boolean,
hasavatar boolean, -- True when user has specified an image for avatar
name character varying(1024),
phone character varying(15),
mobile character varying(15),
accountnumber character varying(15), -- Numero de compte
bankedkey integer, -- clé RIB
bankcode character varying(5), -- Code banque
wicketcode character varying(5),
iban character varying(33),
bic character varying(15),
CONSTRAINT fkprofiles2 FOREIGN KEY (uniqueid)
REFERENCES profiles (uniqueid) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN profiledata.blogtitle IS 'Blog Title';
COMMENT ON COLUMN profiledata.address IS 'Postal address';
COMMENT ON COLUMN profiledata.hasavatar IS 'True when user has specified an image for avatar';
COMMENT ON COLUMN profiledata.accountnumber IS 'Numero de compte';
COMMENT ON COLUMN profiledata.bankedkey IS 'clé RIB';
COMMENT ON COLUMN profiledata.bankcode IS 'Code banque';
-- Index: fki_fkprofiles2
-- DROP INDEX fki_fkprofiles2;
CREATE INDEX fki_fkprofiles2
ON profiledata
USING btree
(uniqueid);
-- Table: profiles
-- DROP TABLE profiles;
CREATE TABLE profiles
(
uniqueid bigserial NOT NULL,
username character varying(255) NOT NULL,
applicationname character varying(255) NOT NULL,
isanonymous boolean,
lastactivitydate timestamp with time zone,
lastupdateddate timestamp with time zone,
CONSTRAINT profiles_pkey PRIMARY KEY (uniqueid),
CONSTRAINT pkprofiles UNIQUE (username, applicationname)
)
WITH (
OIDS=FALSE
);
-- Table: projet
-- DROP TABLE projet;
CREATE TABLE projet
(
id bigserial NOT NULL,
name character varying NOT NULL,
prdesc text,
managerid character varying NOT NULL,
"ApplicationName" character varying(250),
CONSTRAINT projet_pk_new PRIMARY KEY (id),
CONSTRAINT pk_project_manager FOREIGN KEY (managerid, "ApplicationName")
REFERENCES users (username, applicationname) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
-- Index: fki_pk_project_manager
-- DROP INDEX fki_pk_project_manager;
CREATE INDEX fki_pk_project_manager
ON projet
USING btree
(managerid COLLATE pg_catalog."default", "ApplicationName" COLLATE pg_catalog."default");
-- Table: roles
-- DROP TABLE roles;
CREATE TABLE roles
(
rolename character varying(255) NOT NULL,
applicationname character varying(255) NOT NULL,
comment character varying(255) NOT NULL,
CONSTRAINT roles_pkey PRIMARY KEY (rolename, applicationname)
)
WITH (
OIDS=FALSE
);
COMMENT ON TABLE roles
IS 'Web application roles';
-- Table: stocksymbols
-- DROP TABLE stocksymbols;
CREATE TABLE stocksymbols
(
uniqueid integer,
stocksymbol character varying(10),
CONSTRAINT fkprofiles1 FOREIGN KEY (uniqueid)
REFERENCES profiles (uniqueid) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
-- Table: tag
-- DROP TABLE tag;
CREATE TABLE tag
(
_id bigserial NOT NULL, -- Identifier
name character varying(30), -- Tag name
CONSTRAINT tag_pkey PRIMARY KEY (_id),
CONSTRAINT tag_name_key UNIQUE (name)
)
WITH (
OIDS=FALSE
);
COMMENT ON COLUMN tag._id IS 'Identifier';
COMMENT ON COLUMN tag.name IS 'Tag name';
-- Table: tagged
-- DROP TABLE tagged;
CREATE TABLE tagged
(
postid bigint NOT NULL,
tagid bigint NOT NULL,
CONSTRAINT tagged_pkey PRIMARY KEY (postid, tagid),
CONSTRAINT tagged_postid_fkey FOREIGN KEY (postid)
REFERENCES blog (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT tagged_tagid_fkey FOREIGN KEY (tagid)
REFERENCES tag (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
-- Table: taskdeps
-- DROP TABLE taskdeps;
CREATE TABLE taskdeps
(
"taskId" bigint NOT NULL, -- dependent task
deptask bigint NOT NULL, -- Dependency
CONSTRAINT pk_tasks_deps PRIMARY KEY ("taskId", deptask),
CONSTRAINT pk_foreign_dep FOREIGN KEY (deptask)
REFERENCES tasks (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT pk_foreign_task FOREIGN KEY ("taskId")
REFERENCES tasks (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
COMMENT ON TABLE taskdeps
IS 'Dependencies between tasks';
COMMENT ON COLUMN taskdeps."taskId" IS 'dependent task';
COMMENT ON COLUMN taskdeps.deptask IS 'Dependency';
-- Index: fki_pk_foreign_dep
-- DROP INDEX fki_pk_foreign_dep;
CREATE INDEX fki_pk_foreign_dep
ON taskdeps
USING btree
(deptask);
-- Index: fki_pk_foreign_task
-- DROP INDEX fki_pk_foreign_task;
CREATE INDEX fki_pk_foreign_task
ON taskdeps
USING btree
("taskId");
-- Table: tasks
-- DROP TABLE tasks;
CREATE TABLE tasks
(
id bigserial NOT NULL,
name character varying NOT NULL,
start date NOT NULL,
endd date NOT NULL,
tdesc text NOT NULL,
prid bigint NOT NULL,
CONSTRAINT tasks_pk_new PRIMARY KEY (id),
CONSTRAINT tasks_fk_new FOREIGN KEY (prid)
REFERENCES projet (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
-- Table: users
-- DROP TABLE users;
CREATE TABLE users CREATE TABLE users
( (
pkid character varying NOT NULL, pkid character varying NOT NULL,
@ -10,59 +478,125 @@ CREATE TABLE users
passwordquestion character varying(255), passwordquestion character varying(255),
passwordanswer character varying(255), passwordanswer character varying(255),
isapproved boolean, isapproved boolean,
lastactivitydate date, lastactivitydate timestamp with time zone,
lastlogindate date, lastlogindate timestamp with time zone,
lastpasswordchangeddate date, lastpasswordchangeddate timestamp with time zone,
creationdate date, creationdate timestamp with time zone,
isonline boolean,
islockedout boolean, islockedout boolean,
lastlockedoutdate date, lastlockedoutdate timestamp with time zone,
failedpasswordattemptcount integer, failedpasswordattemptcount integer,
failedpasswordattemptwindowstart date, failedpasswordattemptwindowstart timestamp with time zone,
failedpasswordanswerattemptcount integer, failedpasswordanswerattemptcount integer,
failedpasswordanswerattemptwindowstart date, failedpasswordanswerattemptwindowstart timestamp with time zone,
CONSTRAINT users_pkey PRIMARY KEY (pkid ), CONSTRAINT users_pkey PRIMARY KEY (pkid),
CONSTRAINT uniquelogin UNIQUE (applicationname, email ), CONSTRAINT uniquelogin UNIQUE (applicationname, email),
CONSTRAINT uniquemail UNIQUE (applicationname, username ) CONSTRAINT uniquemail UNIQUE (applicationname, username)
) )
WITH ( WITH (
OIDS=FALSE OIDS=FALSE
); );
-- Table: roles -- Table: usersroles
-- DROP TABLE roles; -- DROP TABLE usersroles;
CREATE TABLE roles CREATE TABLE usersroles
( (
rolename character varying(255) NOT NULL,
applicationname character varying(255) NOT NULL, applicationname character varying(255) NOT NULL,
comment character varying(255) NOT NULL, rolename character varying(255) NOT NULL,
CONSTRAINT roles_pkey PRIMARY KEY (rolename , applicationname ) username character varying(255) NOT NULL,
CONSTRAINT attrroles_pkey PRIMARY KEY (applicationname, rolename, username),
CONSTRAINT usersroles_fk_role FOREIGN KEY (applicationname, rolename)
REFERENCES roles (applicationname, rolename) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT usersroles_fk_user FOREIGN KEY (applicationname, username)
REFERENCES users (applicationname, username) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
) )
WITH ( WITH (
OIDS=FALSE OIDS=FALSE
); );
COMMENT ON TABLE roles
IS 'Web application roles';
-- Table: usersroles -- Table: wrfiles
-- DROP TABLE usersroles; -- DROP TABLE wrfiles;
CREATE TABLE usersroles CREATE TABLE wrfiles
( (
applicationname character varying (255) NOT NULL, _id bigint NOT NULL DEFAULT nextval('wrtags__id_seq'::regclass), -- Identifier
rolename character varying (255) NOT NULL, name character varying(2048), -- File Name, relative to the user home directory, must not begin with a slash.
username character varying (255) NOT NULL, wrid bigint, -- Writting identifier (foreign key)
CONSTRAINT attrroles_pkey PRIMARY KEY (applicationname, rolename , username ), CONSTRAINT wrtags_pkey PRIMARY KEY (_id),
CONSTRAINT usersroles_fk_role FOREIGN KEY (applicationname,rolename) CONSTRAINT wrtags_wrid_fkey FOREIGN KEY (wrid)
REFERENCES roles (applicationname,rolename) MATCH SIMPLE REFERENCES writtings (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE, ON UPDATE CASCADE ON DELETE CASCADE
CONSTRAINT usersroles_fk_user FOREIGN KEY (applicationname,username) )
REFERENCES users (applicationname,username) MATCH SIMPLE WITH (
OIDS=FALSE
);
COMMENT ON COLUMN wrfiles._id IS 'Identifier';
COMMENT ON COLUMN wrfiles.name IS 'File Name, relative to the user home directory, must not begin with a slash.';
COMMENT ON COLUMN wrfiles.wrid IS 'Writting identifier (foreign key)';
-- Table: writtings
-- DROP TABLE writtings;
CREATE TABLE writtings
(
_id bigserial NOT NULL, -- identifier
count integer, -- multiplier
estimid bigint NOT NULL, -- Estimaton identifier
description character varying(2047), -- item textual description
productid character varying(512), -- Product reference ... may be a key in a catalog, may contain a catalog id
ucost numeric(8,2), -- en euro.?
CONSTRAINT writtings_pkey PRIMARY KEY (_id),
CONSTRAINT writtings_estimid_fkey FOREIGN KEY (estimid)
REFERENCES estimate (_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE ON UPDATE CASCADE ON DELETE CASCADE
) )
WITH ( WITH (
OIDS=FALSE OIDS=FALSE
); );
COMMENT ON COLUMN writtings._id IS 'identifier';
COMMENT ON COLUMN writtings.count IS 'multiplier';
COMMENT ON COLUMN writtings.estimid IS 'Estimaton identifier';
COMMENT ON COLUMN writtings.description IS 'item textual description';
COMMENT ON COLUMN writtings.productid IS 'Product reference ... may be a key in a catalog, may contain a catalog id';
COMMENT ON COLUMN writtings.ucost IS 'en euro.?';
-- Table: wrtags
-- DROP TABLE wrtags;
CREATE TABLE wrtags
(
wrid bigint NOT NULL,
tagid bigint NOT NULL,
CONSTRAINT wrtags_pkey1 PRIMARY KEY (wrid, tagid),
CONSTRAINT cstwrtagsref FOREIGN KEY (tagid)
REFERENCES tag (_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT wrtags_wrid_fkey1 FOREIGN KEY (wrid)
REFERENCES writtings (_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
-- Index: fki_cstwrtagsref
-- DROP INDEX fki_cstwrtagsref;
CREATE INDEX fki_cstwrtagsref
ON wrtags
USING btree
(tagid);

Loading…