From b8b77c7f3874c2cda4017281c5345a3bec5451f0 Mon Sep 17 00:00:00 2001 From: inga-lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Sun, 26 Sep 2010 13:07:18 +0000 Subject: [PATCH] ModernSkin setting implemented --- Builder/IISMainHandler/build.txt | 2 +- Common/Common.csproj | 1 + Common/dataobjects/AccountSettings.cs | 18 ++++- Common/dataobjects/AnonymousUserSettings.cs | 8 +++ Common/dataobjects/IUserSettings.cs | 5 ++ Common/dataobjects/ModernSkin.cs | 70 +++++++++++++++++++ IISMainHandler/handlers/AbstractGetHandler.cs | 1 + .../handlers/request/AbstractPostHandler.cs | 1 + .../handlers/request/SettingsHandler.cs | 3 +- .../handlers/response/SettingsHandler.cs | 1 + static/css/modern/global.css | 2 +- .../{penartur.css => high-contrast.css} | 16 +---- templates/Full/Settings.xslt | 20 ++++++ templates/Modern/Settings.xslt | 24 ++++++- templates/Modern/elems/Main.xslt | 8 +-- 15 files changed, 155 insertions(+), 25 deletions(-) create mode 100644 Common/dataobjects/ModernSkin.cs rename static/css/modern/{penartur.css => high-contrast.css} (72%) diff --git a/Builder/IISMainHandler/build.txt b/Builder/IISMainHandler/build.txt index 98ced61..32196ac 100644 --- a/Builder/IISMainHandler/build.txt +++ b/Builder/IISMainHandler/build.txt @@ -1 +1 @@ -1696 \ No newline at end of file +1702 \ No newline at end of file diff --git a/Common/Common.csproj b/Common/Common.csproj index 1d81187..e75f5a6 100644 --- a/Common/Common.csproj +++ b/Common/Common.csproj @@ -101,6 +101,7 @@ + diff --git a/Common/dataobjects/AccountSettings.cs b/Common/dataobjects/AccountSettings.cs index 48e5ede..f933cd5 100644 --- a/Common/dataobjects/AccountSettings.cs +++ b/Common/dataobjects/AccountSettings.cs @@ -21,6 +21,7 @@ namespace FLocal.Common.dataobjects { public const string FIELD_USERSPERPAGE = "UsersPerPage"; public const string FIELD_BOARDSVIEWSETTINGS = "BoardsViewSettings"; public const string FIELD_SKINID = "SkinId"; + public const string FIELD_MODERNSKINID = "ModernSkinId"; public const string FIELD_MACHICHARAID = "MachicharaId"; public static readonly TableSpec instance = new TableSpec(); public string name { get { return TABLE; } } @@ -90,6 +91,19 @@ namespace FLocal.Common.dataobjects { } } + private int _modernSkinId; + public int modernSkinId { + get { + this.LoadIfNotLoaded(); + return this._modernSkinId; + } + } + public ModernSkin modernSkin { + get { + return ModernSkin.LoadById(this.modernSkinId); + } + } + private int _machicharaId; public int machicharaId { get { @@ -118,6 +132,7 @@ namespace FLocal.Common.dataobjects { this._usersPerPage = int.Parse(data[TableSpec.FIELD_USERSPERPAGE]); this._boardsViewSettings = data[TableSpec.FIELD_BOARDSVIEWSETTINGS]; this._skinId = int.Parse(data[TableSpec.FIELD_SKINID]); + this._modernSkinId = int.Parse(data[TableSpec.FIELD_MODERNSKINID]); this._machicharaId = int.Parse(data[TableSpec.FIELD_MACHICHARAID]); } @@ -158,13 +173,14 @@ namespace FLocal.Common.dataobjects { } } - public static void Save(Account account, int postsPerPage, int threadsPerPage, int usersPerPage, int uploadsPerPage, Skin skin, Machichara machichara) { + public static void Save(Account account, int postsPerPage, int threadsPerPage, int usersPerPage, int uploadsPerPage, Skin skin, ModernSkin modernSkin, Machichara machichara) { Dictionary dataToUpdate = new Dictionary { { TableSpec.FIELD_POSTSPERPAGE, new ScalarFieldValue(postsPerPage.ToString()) }, { TableSpec.FIELD_THREADSPERPAGE, new ScalarFieldValue(threadsPerPage.ToString()) }, { TableSpec.FIELD_USERSPERPAGE, new ScalarFieldValue(usersPerPage.ToString()) }, { TableSpec.FIELD_UPLOADSPERPAGE, new ScalarFieldValue(uploadsPerPage.ToString()) }, { TableSpec.FIELD_SKINID, new ScalarFieldValue(skin.id.ToString()) }, + { TableSpec.FIELD_MODERNSKINID, new ScalarFieldValue(modernSkin.id.ToString()) }, { TableSpec.FIELD_MACHICHARAID, new ScalarFieldValue(machichara.id.ToString()) }, }; Dictionary dataToInsert = new Dictionary(dataToUpdate) { diff --git a/Common/dataobjects/AnonymousUserSettings.cs b/Common/dataobjects/AnonymousUserSettings.cs index 558b65a..8962ec6 100644 --- a/Common/dataobjects/AnonymousUserSettings.cs +++ b/Common/dataobjects/AnonymousUserSettings.cs @@ -11,6 +11,7 @@ namespace FLocal.Common.dataobjects { var allSkins = Skin.allSkins.ToArray(); //this._skinId = allSkins[Util.RandomInt(0, allSkins.Length)].id; this._skinId = 28; + this._modernSkinId = 1; this._machicharaId = 2; } @@ -45,6 +46,13 @@ namespace FLocal.Common.dataobjects { } } + private int _modernSkinId; + public ModernSkin modernSkin { + get { + return ModernSkin.LoadById(this._modernSkinId); + } + } + private int _machicharaId; public Machichara machichara { get { diff --git a/Common/dataobjects/IUserSettings.cs b/Common/dataobjects/IUserSettings.cs index f255d0c..695a215 100644 --- a/Common/dataobjects/IUserSettings.cs +++ b/Common/dataobjects/IUserSettings.cs @@ -27,6 +27,10 @@ namespace FLocal.Common.dataobjects { get; } + ModernSkin modernSkin { + get; + } + Machichara machichara { get; } @@ -44,6 +48,7 @@ namespace FLocal.Common.dataobjects { new XElement("usersPerPage", settings.usersPerPage), new XElement("uploadsPerPage", settings.uploadsPerPage), new XElement("skinId", settings.skin.id), + new XElement("modernSkinId", settings.modernSkin.id), new XElement("machicharaId", settings.machichara.id) ); } diff --git a/Common/dataobjects/ModernSkin.cs b/Common/dataobjects/ModernSkin.cs new file mode 100644 index 0000000..80af3b7 --- /dev/null +++ b/Common/dataobjects/ModernSkin.cs @@ -0,0 +1,70 @@ +п»їusing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml.Linq; +using FLocal.Core; +using FLocal.Core.DB; +using FLocal.Core.DB.conditions; + +namespace FLocal.Common.dataobjects { + public class ModernSkin : SqlObject { + + public class TableSpec : ISqlObjectTableSpec { + public const string TABLE = "ModernSkins"; + public const string FIELD_ID = "Id"; + public const string FIELD_NAME = "SkinName"; + public static readonly TableSpec instance = new TableSpec(); + public string name { get { return TABLE; } } + public string idName { get { return FIELD_ID; } } + public void refreshSqlObject(int id) { Refresh(id); } + } + + protected override ISqlObjectTableSpec table { get { return TableSpec.instance; } } + + private string _name; + public string name { + get { + this.LoadIfNotLoaded(); + return this._name; + } + } + + protected override void doFromHash(Dictionary data) { + this._name = data[TableSpec.FIELD_NAME]; + } + + private static readonly object allSkins_Locker = new object(); + public static IEnumerable allSkins { + get { + return + from id in Cache>.instance.get( + allSkins_Locker, + () => { + List ids = (from stringId in Config.instance.mainConnection.LoadIdsByConditions( + TableSpec.instance, + new FLocal.Core.DB.conditions.EmptyCondition(), + Diapasone.unlimited + ) select int.Parse(stringId)).ToList(); + ModernSkin.LoadByIds(ids); + return ids; + } + ) + let skin = ModernSkin.LoadById(id) + orderby skin.id + select skin; + } + } + internal static void allSkins_Reset() { + Cache>.instance.delete(allSkins_Locker); + } + + public XElement exportToXml() { + return new XElement("modernSkin", + new XElement("id", this.id), + new XElement("name", this.name) + ); + } + + } +} diff --git a/IISMainHandler/handlers/AbstractGetHandler.cs b/IISMainHandler/handlers/AbstractGetHandler.cs index 6bb6bf9..21b33ed 100644 --- a/IISMainHandler/handlers/AbstractGetHandler.cs +++ b/IISMainHandler/handlers/AbstractGetHandler.cs @@ -28,6 +28,7 @@ namespace FLocal.IISHandler.handlers { new XElement("current", DateTime.Now.ToXml()), context.exportSession(), context.userSettings.skin.exportToXml(), + context.userSettings.modernSkin.exportToXml(), context.userSettings.machichara.exportToXml(), context.exportRequestParameters(), }; diff --git a/IISMainHandler/handlers/request/AbstractPostHandler.cs b/IISMainHandler/handlers/request/AbstractPostHandler.cs index 74cb38c..4bf2ff6 100644 --- a/IISMainHandler/handlers/request/AbstractPostHandler.cs +++ b/IISMainHandler/handlers/request/AbstractPostHandler.cs @@ -33,6 +33,7 @@ namespace FLocal.IISHandler.handlers.request { new XElement("title", Config.instance.AppInfo), new XElement("timestamp", DateTime.Now.Ticks.ToString()), context.userSettings.skin.exportToXml(), + context.userSettings.modernSkin.exportToXml(), context.userSettings.machichara.exportToXml(), context.exportSession(), context.exportRequestParameters(), diff --git a/IISMainHandler/handlers/request/SettingsHandler.cs b/IISMainHandler/handlers/request/SettingsHandler.cs index 78b06b6..9a19fed 100644 --- a/IISMainHandler/handlers/request/SettingsHandler.cs +++ b/IISMainHandler/handlers/request/SettingsHandler.cs @@ -25,6 +25,7 @@ namespace FLocal.IISHandler.handlers.request { int usersPerPage = int.Parse(context.httprequest.Form["usersPerPage"]); int uploadsPerPage = int.Parse(context.httprequest.Form["uploadsPerPage"]); Skin skin = Skin.LoadById(int.Parse(context.httprequest.Form["skinId"])); + ModernSkin modernSkin = ModernSkin.LoadById(int.Parse(context.httprequest.Form["modernSkinId"])); Machichara machichara = Machichara.LoadById(int.Parse(context.httprequest.Form["machicharaId"])); if((postsPerPage < 1) || (postsPerPage > 200)) throw new FLocalException("wrong number for postsPerPage"); @@ -34,7 +35,7 @@ namespace FLocal.IISHandler.handlers.request { if(!context.account.checkPassword(currentPassword)) throw new FLocalException("Wrong password. You should enter your current password in order to change settings."); - AccountSettings.Save(context.session.account, postsPerPage, threadsPerPage, usersPerPage, uploadsPerPage, skin, machichara); + AccountSettings.Save(context.session.account, postsPerPage, threadsPerPage, usersPerPage, uploadsPerPage, skin, modernSkin, machichara); if(newPassword != null && newPassword != "") { context.account.updatePassword(newPassword); diff --git a/IISMainHandler/handlers/response/SettingsHandler.cs b/IISMainHandler/handlers/response/SettingsHandler.cs index a49d469..bca6b68 100644 --- a/IISMainHandler/handlers/response/SettingsHandler.cs +++ b/IISMainHandler/handlers/response/SettingsHandler.cs @@ -24,6 +24,7 @@ namespace FLocal.IISHandler.handlers.response { return new XElement[] { settings.exportToXml(context), new XElement("skins", from skin in Skin.allSkins select skin.exportToXml()), + new XElement("modernSkins", from modernSkin in ModernSkin.allSkins select modernSkin.exportToXml()), new XElement("machicharas", from machichara in Machichara.allMachicharas select machichara.exportToXml()) }; } diff --git a/static/css/modern/global.css b/static/css/modern/global.css index 08e27c9..f5c41fb 100644 --- a/static/css/modern/global.css +++ b/static/css/modern/global.css @@ -98,7 +98,7 @@ input { [nobr] { white-space: nowrap; } -.postcontainer, .pmcontainer { +.postcontainer, .pmcontainer, .uploadcontainer { border-style:none none solid none; border-width:0 0 1px 0; padding-bottom:5pt; diff --git a/static/css/modern/penartur.css b/static/css/modern/high-contrast.css similarity index 72% rename from static/css/modern/penartur.css rename to static/css/modern/high-contrast.css index aff2fd3..100ed52 100644 --- a/static/css/modern/penartur.css +++ b/static/css/modern/high-contrast.css @@ -15,7 +15,7 @@ PRE{background-color:#303030;font-size:0.9em;BORDER:#999999 1px solid;PADDING: 0 .confluent{COLOR:black;} -.postcontainer, .pmcontainer { +.postcontainer, .pmcontainer, .uploadcontainer { border-color:#808080; } .pmcontainer.unread { @@ -50,20 +50,6 @@ blockquote { background-color:#1C281C; } -.tablesurround{BACKGROUND:#191919;margin-top:-0.1em;margin-bottom:-0.1em} -.tableborders{BACKGROUND:#191919} -.tdheader{FONT-WEIGHT:bold;font-size:1em;BACKGROUND:#333333;color:#ffffff} -.tdheader a{font-size:1em;color:#dddddd;text-decoration:underline} -.tdheader a:hover{color:#BBBBBB;text-decoration:none} -.tdheader a:visited{color:#999999;text-decoration:underline} -.tdheader a:active{color:#000000;text-decoration:underline} -.lighttable{BACKGROUND:#141414;color:#cccccc} -.darktable{BACKGROUND:black} -.cleartable{BACKGROUND:black} -.alternatetable{BACKGROUND:black} -.subjecttable{BACKGROUND:black} -.footertable{BACKGROUND:#666666} - .header, .header a { color:#BFBFBF; } diff --git a/templates/Full/Settings.xslt b/templates/Full/Settings.xslt index 733c181..e47d8da 100644 --- a/templates/Full/Settings.xslt +++ b/templates/Full/Settings.xslt @@ -89,6 +89,15 @@ function changeMachichara(newMachichara) {

+

+ Цветовая схема дизайна Modern: +
+ +

Цветовая схема:
@@ -134,6 +143,17 @@ function changeMachichara(newMachichara) { + + + + +

Цветовая схема:
- changeSkin(this.options[this.selectedIndex].innerText); + + + + +

+

+ Цветовая схема для классического интерфейса и лайта: +
+