From a502bfdbeb6a7975cb26c5be8219d3da403728ae Mon Sep 17 00:00:00 2001 From: Mark Entingh Date: Tue, 29 Aug 2017 22:33:37 -0400 Subject: [PATCH] initial commit after deciding Websilk should be a headless CMS --- .vs/Websilk/v15/sqlite3/storage.ide | Bin 0 -> 1978368 bytes App/CSS/editor.less | 194 --- App/Components/Login/Component.cs | 57 - App/Components/Login/Service.cs | 49 - App/Components/Login/component.html | 17 - App/Components/Login/component.js | 21 - App/Components/Login/forgot-pass.html | 1 - App/Components/Login/new-pass.html | 20 - App/Components/Login/new-pass.js | 61 - App/Components/Menu/Component.cs | 98 -- App/Components/Menu/Properties.cs | 56 - App/Components/Menu/component.html | 3 - App/Components/Menu/component.js | 1 - App/Components/Menu/menu-item.html | 17 - App/Components/Menu/prop-menuitem.html | 10 - App/Components/Menu/properties.html | 25 - App/Components/Menu/properties.js | 37 - App/Components/Textbox/Component.cs | 172 -- App/Components/Textbox/component.html | 1 - App/Components/Textbox/component.js | 1 - App/Components/Textbox/texteditor.html | 137 -- App/Components/Textbox/texteditor.js | 650 ------- .../themes/default/elements/button.html | 7 - .../themes/default/elements/textbox.html | 1 - .../themes/default/layouts/default.html | 3 - App/Content/themes/default/theme.css | 4 - App/{Core => }/Core.cs | 138 +- App/Core/App.cs | 90 - App/Core/Component.cs | 578 ------- App/Core/Elements.cs | 85 - App/Core/Page.cs | 1507 ----------------- App/Core/Panel.cs | 211 --- App/Core/README.md | 50 - App/Core/Resources.cs | 159 -- App/Core/Scheduler.cs | 41 - App/Core/Service.cs | 132 -- App/Core/Sql.cs | 351 ---- App/Core/page.html | 49 - App/Dashboard/Analytics/Analytics.cs | 34 - App/Dashboard/Analytics/analytics.html | 1 - App/Dashboard/Dashboard.cs | 82 +- App/Editor/Components/Components.cs | 329 ---- App/Editor/Components/Properties.cs | 67 - App/Editor/Components/ui-item.html | 7 - App/Editor/Components/ui.html | 3 - App/Editor/Editor.cs | 96 -- App/Editor/Page.cs | 400 ----- App/Editor/Support/Support.cs | 46 - App/Editor/Support/noresults.html | 1 - App/Editor/Support/result.html | 3 - App/Editor/Support/support.html | 15 - App/Editor/UI/component-properties.html | 1 - App/Editor/UI/dashboard.html | 64 - App/Editor/UI/layout-addblock.html | 19 - App/Editor/UI/layout-dialog.html | 18 - App/Editor/UI/layout-options.html | 69 - App/Editor/UI/select-menu-alignment.html | 77 - App/Editor/UI/select-menu-props.html | 7 - App/Editor/UI/window-body.html | 6 - App/Editor/UI/window-menu-item.html | 3 - App/Editor/UI/window.html | 16 - App/Editor/editor.html | 100 -- App/Elements/Button.cs | 41 - App/Elements/List.cs | 11 - App/Elements/Panel.cs | 27 - App/Elements/Textbox.cs | 55 - App/Page.cs | 20 + App/Pipeline/PageRequest.cs | 64 +- App/Pipeline/WebService.cs | 46 +- App/Scheduler/EveryMinute.cs | 119 -- App/{Core => }/Server.cs | 279 ++- App/Service.cs | 17 + App/Sql/SqlUser.cs | 64 - App/Startup.cs | 16 +- App/Support/Core/areas.md | 3 - App/Support/Core/blocks.md | 10 - App/Support/Core/components.md | 6 - App/Support/Core/page-layout.md | 36 - App/Support/Core/pages.html | 10 - App/Support/Developers/Component/window.md | 38 - App/Support/Developers/applications.md | 8 - App/Support/Developers/component.md | 39 - App/Support/Developers/content-folder.md | 1 - App/Support/Editor/component-properties.md | 1 - App/Support/Pages/history.md | 10 - App/Support/core.md | 3 - App/Support/glossary.md | 12 - App/{Core => }/User.cs | 352 ++-- App/{Core => Utility}/Scaffold.cs | 494 +++--- App/{Core => }/Vendor.cs | 0 App/Websilk.csproj | 28 +- Query/Models/Page.cs | 41 + Query/Models/Security.cs | 13 + Query/Models/User.cs | 19 + Query/Query.csproj | 21 + Query/Query/Pages.cs | 9 + Query/Query/Security.cs | 23 + Query/Query/Users.cs | 65 + Query/QuerySql.cs | 13 + Query/Sql.cs | 140 ++ Query/config.json | 6 + .../Security/NT AUTHORITY_NETWORK SERVICE.sql | 2 - .../Security/NT AUTHORITY_SYSTEM.sql | 2 - Sql/SqlServer/Security/RoleMemberships.sql | 26 - Sql/SqlServer/Security/WebsilkDev.sql | 6 - .../{SqlServer.sqlproj => Sql.sqlproj} | 409 +++-- Sql/SqlServer/SqlServer.refactorlog | 185 -- .../User_Authenticate.sql} | 2 +- Websilk.sln | 18 +- 109 files changed, 1297 insertions(+), 8011 deletions(-) create mode 100644 .vs/Websilk/v15/sqlite3/storage.ide delete mode 100644 App/CSS/editor.less delete mode 100644 App/Components/Login/Component.cs delete mode 100644 App/Components/Login/Service.cs delete mode 100644 App/Components/Login/component.html delete mode 100644 App/Components/Login/component.js delete mode 100644 App/Components/Login/forgot-pass.html delete mode 100644 App/Components/Login/new-pass.html delete mode 100644 App/Components/Login/new-pass.js delete mode 100644 App/Components/Menu/Component.cs delete mode 100644 App/Components/Menu/Properties.cs delete mode 100644 App/Components/Menu/component.html delete mode 100644 App/Components/Menu/component.js delete mode 100644 App/Components/Menu/menu-item.html delete mode 100644 App/Components/Menu/prop-menuitem.html delete mode 100644 App/Components/Menu/properties.html delete mode 100644 App/Components/Menu/properties.js delete mode 100644 App/Components/Textbox/Component.cs delete mode 100644 App/Components/Textbox/component.html delete mode 100644 App/Components/Textbox/component.js delete mode 100644 App/Components/Textbox/texteditor.html delete mode 100644 App/Components/Textbox/texteditor.js delete mode 100644 App/Content/themes/default/elements/button.html delete mode 100644 App/Content/themes/default/elements/textbox.html delete mode 100644 App/Content/themes/default/layouts/default.html delete mode 100644 App/Content/themes/default/theme.css rename App/{Core => }/Core.cs (96%) delete mode 100644 App/Core/App.cs delete mode 100644 App/Core/Component.cs delete mode 100644 App/Core/Elements.cs delete mode 100644 App/Core/Page.cs delete mode 100644 App/Core/Panel.cs delete mode 100644 App/Core/README.md delete mode 100644 App/Core/Resources.cs delete mode 100644 App/Core/Scheduler.cs delete mode 100644 App/Core/Service.cs delete mode 100644 App/Core/Sql.cs delete mode 100644 App/Core/page.html delete mode 100644 App/Dashboard/Analytics/Analytics.cs delete mode 100644 App/Dashboard/Analytics/analytics.html delete mode 100644 App/Editor/Components/Components.cs delete mode 100644 App/Editor/Components/Properties.cs delete mode 100644 App/Editor/Components/ui-item.html delete mode 100644 App/Editor/Components/ui.html delete mode 100644 App/Editor/Editor.cs delete mode 100644 App/Editor/Page.cs delete mode 100644 App/Editor/Support/Support.cs delete mode 100644 App/Editor/Support/noresults.html delete mode 100644 App/Editor/Support/result.html delete mode 100644 App/Editor/Support/support.html delete mode 100644 App/Editor/UI/component-properties.html delete mode 100644 App/Editor/UI/dashboard.html delete mode 100644 App/Editor/UI/layout-addblock.html delete mode 100644 App/Editor/UI/layout-dialog.html delete mode 100644 App/Editor/UI/layout-options.html delete mode 100644 App/Editor/UI/select-menu-alignment.html delete mode 100644 App/Editor/UI/select-menu-props.html delete mode 100644 App/Editor/UI/window-body.html delete mode 100644 App/Editor/UI/window-menu-item.html delete mode 100644 App/Editor/UI/window.html delete mode 100644 App/Editor/editor.html delete mode 100644 App/Elements/Button.cs delete mode 100644 App/Elements/List.cs delete mode 100644 App/Elements/Panel.cs delete mode 100644 App/Elements/Textbox.cs create mode 100644 App/Page.cs delete mode 100644 App/Scheduler/EveryMinute.cs rename App/{Core => }/Server.cs (84%) create mode 100644 App/Service.cs delete mode 100644 App/Sql/SqlUser.cs delete mode 100644 App/Support/Core/areas.md delete mode 100644 App/Support/Core/blocks.md delete mode 100644 App/Support/Core/components.md delete mode 100644 App/Support/Core/page-layout.md delete mode 100644 App/Support/Core/pages.html delete mode 100644 App/Support/Developers/Component/window.md delete mode 100644 App/Support/Developers/applications.md delete mode 100644 App/Support/Developers/component.md delete mode 100644 App/Support/Developers/content-folder.md delete mode 100644 App/Support/Editor/component-properties.md delete mode 100644 App/Support/Pages/history.md delete mode 100644 App/Support/core.md delete mode 100644 App/Support/glossary.md rename App/{Core => }/User.cs (83%) rename App/{Core => Utility}/Scaffold.cs (97%) rename App/{Core => }/Vendor.cs (100%) create mode 100644 Query/Models/Page.cs create mode 100644 Query/Models/Security.cs create mode 100644 Query/Models/User.cs create mode 100644 Query/Query.csproj create mode 100644 Query/Query/Pages.cs create mode 100644 Query/Query/Security.cs create mode 100644 Query/Query/Users.cs create mode 100644 Query/QuerySql.cs create mode 100644 Query/Sql.cs create mode 100644 Query/config.json delete mode 100644 Sql/SqlServer/Security/NT AUTHORITY_NETWORK SERVICE.sql delete mode 100644 Sql/SqlServer/Security/NT AUTHORITY_SYSTEM.sql delete mode 100644 Sql/SqlServer/Security/RoleMemberships.sql delete mode 100644 Sql/SqlServer/Security/WebsilkDev.sql rename Sql/SqlServer/{SqlServer.sqlproj => Sql.sqlproj} (94%) delete mode 100644 Sql/SqlServer/SqlServer.refactorlog rename Sql/SqlServer/dbo/Stored Procedures/{Security/Security_AuthenticateUser.sql => Users/User_Authenticate.sql} (86%) diff --git a/.vs/Websilk/v15/sqlite3/storage.ide b/.vs/Websilk/v15/sqlite3/storage.ide new file mode 100644 index 0000000000000000000000000000000000000000..7c5d751a6f34005a4483177a71b5a149f86de1f2 GIT binary patch literal 1978368 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�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%0AFZAHi^DoBLglN|C}UF_K1K&~IYQ0A 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

6zpkG2}c2=6M-M>HweuB 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

Dn#z6+7h&AWz~TXY@|^Mdu{n=-<@OegfJpZH)Ta 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 xj>H?fl_!yj%z$)ug5jiY_&Md%gXJ?6+G=mFt a > svg{width:22px; height:22px;} -} -.editor > .fixed{ width:100%; height:0; z-index:5000; display:none;} -.editor{ - .toolbar{ - position:absolute; width:100%; height:50px; cursor:default; - a{cursor:default;} - .container{ max-width:1920px; margin:0 auto; padding:0 10px; box-sizing:border-box; text-align:center; white-space:nowrap;} - nav.menu{ - display:inline-block; white-space:nowrap; padding-top:12px; - > a{display:inline-block; margin:0 10px;} - } - .dialog{ - display:none; max-width:1920px; padding:0 10px; box-sizing:border-box; text-align:center; white-space:nowrap; - > div{width:80%; margin:0 auto;} - } - a.logo{ - position:absolute;left:10px; top:7px; - svg{width:100px; height:36px;} - } - .right-side{position:absolute; right:0;} - .save-page{ - &.nosave{opacity:0.5;} - } - - .keyframes(save-svg;{ - 0% { top:-8px; left: -14px; width:33px; height:33px; } - 33% { top:0; left: 0; width:25px; height:25px; } - 34% { top:-4px; left: -4px; width:33px; height:33px; } - 66% { top:0; left: 0; width:25px; height:25px; } - 67% { top:-4px; left: -4px; width:33px; height:33px; } - 100% { top:0; left: 0; width:25px; height:25px; } - }); - .save-page.saved svg{position:absolute;.animation(save-svg 2s linear);} - - .btn-close{position:relative; top:4px;} - } - - > .temp{ - position:absolute; z-index:3000; - .cellbox{position:absolute; outline-style:dashed; outline-width:10px; outline-offset:-10px; box-sizing:border-box;} - .compline{position:absolute; border-left-style:dashed; border-left-width:2px;} - .layout-area{ - position:absolute; box-sizing:border-box; padding:5px; - .content{width:100%; box-sizing:border-box; height:100%;} - .options{display:none; width:100%; text-align:center;} - .btn-history, .btn-remove{padding-top:9px;} - .btn-empty{width:25px;} - } - .area-label{ - width:100%; text-align:center; - } - .sort-btns{ - margin-top:-3px; - & > .row{height:23px;} - } - .layout-area:hover{ - .options{display:block;} - .area-label{display:none;} - } - - .block-moved-border{ - border: 1px solid rgb(86, 180, 239); - box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.05) inset, 0px 0px 8px rgba(82, 168, 236, 0.6); - } - } - > .clone{ - position:absolute; z-index:5001; width:0; height:0; - } - - .windows{width:0; height:0;} - .window{ - position:absolute; max-width:100%; - .titlebar{ - cursor:move; - .close{cursor:default;} - } - .box > .arrow.top{ position:absolute; top:-24px; width: 0; height: 0; border-style: solid; border-width: 0 25px 25px 25px; } - .box > .arrow.bottom{ position:absolute; width: 0; height: 0; border-style: solid; border-width: 25px 25px 0 25px; } - } -} - -.component-hover{position:absolute; display:none; border:2px dashed transparent; cursor:move; z-index:3000;} - -.component-select{ - cursor:move; position:absolute; display:none; z-index:3050; - .side, .corner{position:absolute;line-height:0;font-size:0;} - .r-top, .r-bottom{cursor:ns-resize;} - .r-left, .r-right{cursor:ew-resize;} - .r-left-top, .r-top-left, .r-right-bottom, .r-bottom-right{cursor:nwse-resize;} - .r-top-right, .r-right-top, .r-bottom-left, .r-left-bottom{cursor:nesw-resize;} - &.isalsocell .resize{cursor:default;} - &.isalsopanel{ - .resize.top, .r-bottom{cursor:ns-resize;} - .r-left, .r-right{cursor:ew-resize;} - .r-left-top, resize.top-left, .r-right-bottom, .r-bottom-right{cursor:nwse-resize;} - .r-top-right, .r-right-top, .r-bottom-left, .r-left-bottom{cursor:nesw-resize;} - } - @bar:4px; - .r-top, .r-top-right, .r-top-left, .r-bottom, .r-bottom-right, .r-bottom-left{height:@bar;} - .r-left, .r-left-top, .r-left-bottom, .r-right, .r-right-top, .r-right-bottom{width:@bar;} - - - .menu{position:absolute; width:18px; padding:7px; border-top-right-radius:5px; border-bottom-right-radius:5px; cursor:default; - &.inner{border-bottom-left-radius:5px; border-top-right-radius:0px; border-bottom-right-radius:0px; border-bottom-left-radius:5px;} - .item{position:relative; padding-bottom:10px;} - .item:last-child{padding-bottom:4px;} - } - .menu-window{position:absolute; display:none; left:18px; margin-top:-7px; margin-left:3px; padding-bottom:10px; width:250px;} - .menu-window.inner{left:auto; right:25px;} -} - -.component-shield{position:absolute; display:none; z-index:1000;} - -.debugger { - background:rgba(0,0,0,0.5); color:#4cff00; padding:10px 30px; position:fixed; bottom:20px; right:20px; -} - -.webpage{ - > .grid-leftside{background-image:url(/images/editor/gridleft.jpg); background-position:top right; position:absolute; width:2000px; left:-2000px; height:100%; z-index:480;} - > .grid-rightside{ background-image:url(/images/editor/gridright.jpg); background-position:top left; position:absolute; width:2000px; right:-2000px; height:100%; z-index:480;} - > div{position:relative;} -} -.is-editing .grid-leftside, .is-editing .grid-rightside{height:~"calc(100% - 50px)";} - -/* disable text selection on certain elements */ -.editor .toolbar{ - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -#winDashboard{ - .page-title{width:200px; cursor:default;} -} - -#winDocumentation .box{ - .content p, .content span{line-height:1.25;} - .support-search{max-width:200px; width:100% !important;} - .result{cursor:default; font-size:17px;} -} - -.show-empty-cells { - .webpage { - .is-cell{min-height:50px; outline-style:dashed; outline-width:4px; outline-offset:-2px;} - .is-cell.is-disabled{min-height:auto; outline-width:0px;} - } -} -.show-blocks { - .webpage { - .is-block{min-height:115px; outline-style:dashed; outline-width:4px; outline-offset:-2px;} - .is-panel.has-siblings{height:auto; min-height:120px;} - } -} - -/* component specific */ -.component.c-textbox{word-break: break-word; - .placeholder-area{padding:20px 20px; text-align:center; border:4px solid; - &.is-body-area{padding:300px 20px; height:100%; box-sizing:border-box;} - } -} -.text-toolbar{position:absolute; z-index:3001; - & > div{width:340px; padding:5px;} -} -#textedit_fontfamily{width:100px;} -#textedit_fontsize{width:50px;} -.text-editor{position:absolute !important; z-index:1001;} -.ace_editor{height:100%;} - -@media(max-width:1920px){ - .editor{ - .toolbar{ - > .container{ width:100%; } - } - } -} - -@media(max-width:550px){ - .editor{ - .toolbar{ - .logo{ display:none; } - nav.menu{float:left;} - } - } -} \ No newline at end of file diff --git a/App/Components/Login/Component.cs b/App/Components/Login/Component.cs deleted file mode 100644 index 697f8c5..0000000 --- a/App/Components/Login/Component.cs +++ /dev/null @@ -1,57 +0,0 @@ -using ProtoBuf; - -namespace Websilk.Components -{ - [ProtoContract] - public class Login: Component - { - public string label = "Log In"; - - public Login() { } - - public override string Name - { - get - { - return "Login"; - } - } - - public override string Path - { - get - { - return "/Components/Login/"; - } - } - - public override void Load() - { - if(S.Server.resetPass == true) - { - //load new password form (for admin only) - scaffold = new Scaffold(S, "/Components/Login/new-pass.html"); - var txtPass = (Element.Textbox)Page.Elements.Load(ElementType.Textbox); - var txtPass2 = (Element.Textbox)Page.Elements.Load(ElementType.Textbox); - var btnLogin = (Element.Button)Page.Elements.Load(ElementType.Button, "button-apply"); - scaffold.Data["title"] = "Create an administrator password"; - scaffold.Data["field-pass"] = txtPass.Render("password", "password", "", "password", "", Element.Textbox.enumTextType.password); - scaffold.Data["field-pass2"] = txtPass2.Render("password2", "password", "", "retype password", "", Element.Textbox.enumTextType.password); - scaffold.Data["button-save"] = btnLogin.Render("btnsavepass", "javascript:", "Save"); - AddJavascriptFile("new-pass", "/js/components/login/new-pass.js"); - } - else - { - //load login form (default) - var txtEmail = (Element.Textbox)Page.Elements.Load(ElementType.Textbox); - var txtPass = (Element.Textbox)Page.Elements.Load(ElementType.Textbox); - var btnLogin = (Element.Button)Page.Elements.Load(ElementType.Button, "button-apply"); - scaffold.Data["field-email"] = txtEmail.Render("email", "email", "", "email address"); - scaffold.Data["field-pass"] = txtPass.Render("password", "password", "", "password", "", Element.Textbox.enumTextType.password); - scaffold.Data["button-login"] = btnLogin.Render("btnlogin", "javascript:", label); - AddJavascriptFile("component", "/js/components/login/component.js"); - } - - } - } -} diff --git a/App/Components/Login/Service.cs b/App/Components/Login/Service.cs deleted file mode 100644 index 2fc44b3..0000000 --- a/App/Components/Login/Service.cs +++ /dev/null @@ -1,49 +0,0 @@ -namespace Websilk.Services.Components -{ - public class Login : Service - { - public Login(Core WebsilkCore) : base(WebsilkCore) { } - - public string Authenticate(string email, string pass) - { - if (S.isSessionLost()) { return "err"; } - - var page = new Page(S); - page.getPageInfo(pageId); - - if (S.User.LogIn(email, pass, page.websiteId, page.websiteOwner)) - { - //logged in - return "success"; - } - return "err"; - } - - public Inject ForgotPassword() - { - //this feature is very vulnerable to attack and should - //require 2-way authentication (via cell phone) - var response = new Inject(); - if (S.isSessionLost()) { return lostInject(); } - - return response; - } - - public string SavePass(string pass) - { - //save a new password for an existing user that does not have a password set - if (S.isSessionLost()) { return "err"; } - - //validate password - if(pass == "") { return "err"; } - if(pass.Length < 8) { return "err"; } - - if (S.Server.resetPass == true) - { - //update password for administrator - S.User.UpdatePassword(1, pass); - } - return "saved"; - } - } -} diff --git a/App/Components/Login/component.html b/App/Components/Login/component.html deleted file mode 100644 index c3c57bd..0000000 --- a/App/Components/Login/component.html +++ /dev/null @@ -1,17 +0,0 @@ -

\ No newline at end of file diff --git a/App/Components/Login/component.js b/App/Components/Login/component.js deleted file mode 100644 index 50af295..0000000 --- a/App/Components/Login/component.js +++ /dev/null @@ -1,21 +0,0 @@ -S.login = { - submit: function () { - var email = $('#email').val(); - var pass = $('#password').val(); - - S.ajax.post('Components/Login/Authenticate', { email: email, pass: pass}, function (data) { - if (data.d) { - var msg = $('.login .message'); - if (data.d == 'err') { - S.message.show(msg, 'error', 'Your credentials are incorrect'); - return false; - } else if (data.d == 'success') { - S.message.show(msg, '', 'Login success! Redirecting to dashboard...'); - window.location.href = '/dashboard'; - } - } - }); - } -} -$('#btnlogin').on('click', S.login.submit); -$('.login form').on('submit', function (e) { S.login.submit(); e.preventDefault(); return false; }); \ No newline at end of file diff --git a/App/Components/Login/forgot-pass.html b/App/Components/Login/forgot-pass.html deleted file mode 100644 index 7a4f89b..0000000 --- a/App/Components/Login/forgot-pass.html +++ /dev/null @@ -1 +0,0 @@ -Forgot your password? \ No newline at end of file diff --git a/App/Components/Login/new-pass.html b/App/Components/Login/new-pass.html deleted file mode 100644 index 2f83d1a..0000000 --- a/App/Components/Login/new-pass.html +++ /dev/null @@ -1,20 +0,0 @@ - \ No newline at end of file diff --git a/App/Components/Login/new-pass.js b/App/Components/Login/new-pass.js deleted file mode 100644 index 230468a..0000000 --- a/App/Components/Login/new-pass.js +++ /dev/null @@ -1,61 +0,0 @@ -S.login = { - watchPass: function (e) { - - }, - - savePass: function () { - //save new password for user - var pass = $('#password').val(); - var pass2 = $('#password2').val(); - var msg = $('.login .message'); - var msglbl = $('.login .message > span'); - //validate password - if (pass == '' || pass2 == '') { - S.message.show(msg, 'error', 'You must type in your password twice'); - return; - } - if (pass != pass2) { - S.message.show(msg, 'error', 'Your passwords do not match'); - return; - } - if (pass.length < 8) { - S.message.show(msg, 'error', 'Your password must be at least 8 characters long'); - return; - } - - //disable button - $('#btnsavepass').prop("disabled", "disabled"); - - //send new password to server - S.ajax.post('Components/Login/SavePass', { pass: pass }, function (data) { - //callback, replace form with message - console.log(data); - var err = false; - if (data.d){ - if (data.d == 'err') { err = true;} - } else { err = true; } - - if (err == false) { - //show success message - window.location.reload(); - } else { - //show error message - S.message.show(msg, 'error', 'An error occurred while trying to update your password'); - } - }); - }, - - validatePass: function (pass, pass2) { - - } -} - -//add event listeners -$('#password, #password2').on('input', S.login.watchPass); -$('#btnsavepass').on('click', S.login.savePass); -$('.login form').on('submit', function (e) { - e.preventDefault(); - e.cancelBubble = true; - S.login.savePass(); - return false; -}); \ No newline at end of file diff --git a/App/Components/Menu/Component.cs b/App/Components/Menu/Component.cs deleted file mode 100644 index 582fce4..0000000 --- a/App/Components/Menu/Component.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System.Text; -using System.Collections.Generic; -using ProtoBuf; - -namespace Websilk.Components -{ - public class Menu : Component - { - [ProtoContract] - public struct item - { - [ProtoMember(1)] - public string url; - [ProtoMember(2)] - public string text; - [ProtoMember(3)] - public string icon; - [ProtoMember(4)] - public string target; - [ProtoMember(5)] - public int design; //index of HTML design to use for menu item - } - - [ProtoMember(1)] - public List menuItems; - - [ProtoMember(2)] - public bool isHorizontal = false; - - private Scaffold menuItem; - - public Menu() { } - - #region "Overrides" - - public override string Name - { - get - { - return "Menu"; - } - } - - public override string Path - { - get - { - return "/Components/Menu/"; - } - } - - public override int defaultWidth - { - get - { - return 200; - } - } - - public override Editor.Component.Properties GetProperties() { - return new ComponentProperties.Menu(S, this); - } - - #endregion - - #region "Load" - public override void Load() - { - var items = new StringBuilder(); - scaffold = new Scaffold(S, "/Components/Menu/component.html"); - menuItem = new Scaffold(S, "/Components/Menu/menu-item.html"); - - if(menuItems == null) { - menuItems = new List(){ - new item() - { - url = "javascript:", - text = "New Menu Item #1", - icon = "", - target = "", - design = 0 - } - }; - } - - foreach(var item in menuItems) - { - menuItem.Data["url"] = item.url; - menuItem.Data["text"] = item.text; - menuItem.Data["icon"] = item.icon != "" ? "1" : ""; - menuItem.Data["target"] = item.target != "" ? "target=\"" + item.target + "\"" : ""; - items.Append(menuItem.Render()); - } - scaffold.Data["menu-items"] = items.ToString(); - } - #endregion - } -} diff --git a/App/Components/Menu/Properties.cs b/App/Components/Menu/Properties.cs deleted file mode 100644 index 370b176..0000000 --- a/App/Components/Menu/Properties.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System.Text; - -namespace Websilk.ComponentProperties -{ - public class Menu: Editor.Component.Properties - { - public Components.Menu Component; - - public override string Path{ get { return "/Components/Menu"; } } - - public Menu(Core WebsilkCore, Component componentInstance):base (WebsilkCore, componentInstance) { } - - public override void Load() - { - var html = new StringBuilder(); - - //create tab menu - AddMenuItem("Menu Items"); - AddMenuItem("Design", "S.componentProperties.design.loadAce();"); - - //create menu item list - var item = new Scaffold(S, Path + "/prop-menuitem.html"); - Component = (Components.Menu)component; - for (var x = 0; x < Component.menuItems.Count; x++) - { - var menuitem = Component.menuItems[x]; - item.Data["text"] = menuitem.text; - item.Data["url"] = menuitem.url; - item.Data["target"] = menuitem.target != "" ? " target=\"" + menuitem.target + "\"" : ""; - html.Append(item.Render()); - } - body.Data["menu-items"] = html.ToString(); - - //add javascript dependency - S.javascriptFiles.Add("componentProperties", "/js/components/menu/properties.js"); - } - } -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Web API calls -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -namespace Websilk.Services.Editor.Component.Menu -{ - public class Properties: Service - { - public Properties (Core WebsilkCore):base(WebsilkCore) { } - - //public Inject GetList() - //{ - // GetPage(); - // - //} - } -} diff --git a/App/Components/Menu/component.html b/App/Components/Menu/component.html deleted file mode 100644 index cce2741..0000000 --- a/App/Components/Menu/component.html +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/App/Components/Menu/component.js b/App/Components/Menu/component.js deleted file mode 100644 index 5f28270..0000000 --- a/App/Components/Menu/component.js +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/App/Components/Menu/menu-item.html b/App/Components/Menu/menu-item.html deleted file mode 100644 index 84118f3..0000000 --- a/App/Components/Menu/menu-item.html +++ /dev/null @@ -1,17 +0,0 @@ -
  • - - {{submenu}} -
  • \ No newline at end of file diff --git a/App/Components/Menu/prop-menuitem.html b/App/Components/Menu/prop-menuitem.html deleted file mode 100644 index 85b91b3..0000000 --- a/App/Components/Menu/prop-menuitem.html +++ /dev/null @@ -1,10 +0,0 @@ -
  • -
    -
    - - - -
    - {{text}} -
    -
  • \ No newline at end of file diff --git a/App/Components/Menu/properties.html b/App/Components/Menu/properties.html deleted file mode 100644 index 508ec6d..0000000 --- a/App/Components/Menu/properties.html +++ /dev/null @@ -1,25 +0,0 @@ - - -
    -
    - -
    - -
    - -
    -
    -
    -
    Menu Item HTML Design
    - -
    \ No newline at end of file diff --git a/App/Components/Menu/properties.js b/App/Components/Menu/properties.js deleted file mode 100644 index 0223449..0000000 --- a/App/Components/Menu/properties.js +++ /dev/null @@ -1,37 +0,0 @@ -S.componentProperties = { - menu: { - add: { - show: function (parentId) { - - }, - - submit: function () { - - }, - - cancel: function () { - - } - }, - - remove: function (id) { - - }, - - edit: { - show: function (id) { - - }, - - submit: function () { - - } - } - }, - - design: { - loadAce: function () { - S.ace.add('props_menuitem_design', 'html'); - } - } -}; \ No newline at end of file diff --git a/App/Components/Textbox/Component.cs b/App/Components/Textbox/Component.cs deleted file mode 100644 index 4d7a682..0000000 --- a/App/Components/Textbox/Component.cs +++ /dev/null @@ -1,172 +0,0 @@ -using System; -using System.Collections.Generic; -using ProtoBuf; - -namespace Websilk.Components -{ - public class Textbox: Component - { - [ProtoMember(1)] - public string text = ""; - - public Textbox() { } - - public override string Name - { - get - { - return "Textbox"; - } - } - - public override string Path - { - get - { - return "/Components/Textbox/"; - } - } - - public override int defaultWidth - { - get - { - return 300; - } - } - - public override void Load() - { - scaffold = new Scaffold(S, "/Components/Textbox/component.html"); - - if (text == "") - { - //Lorem Ipsum taken from "the most beautiful book quotes" google search - var rnd = new Random(); - var lorem = new string[] - { - "In our village, folks say God crumbles up the old moon into stars.", //Alexander Solzhenitsyn, One Day in the Life of Ivan Denisovich - "She wasn’t doing a thing that I could see, except standing there leaning on the balcony railing, holding the universe together.", //J. D. Salinger, “A Girl I Knew” - "Beauty is an enormous, unmerited gift given randomly, stupidly.", //Khaled Hosseini, And the Mountains Echoed - "Sometimes I can feel my bones straining under the weight of all the lives I’m not living.", //Jonathan Safran Foer, Extremely Loud and Incredibly Close - "A dream, all a dream, that ends in nothing, and leaves the sleeper where he lay down, but I wish you to know that you inspired it.", //Charles Dickens, A Tale of Two Cities - "If equal affection cannot be, let the more loving one be me.",//W. H. Auden, “The More Loving One” - "And now that you don’t have to be perfect, you can be good.",//John Steinbeck, East of Eden - "It might be that to surrender to happiness was to accept defeat, but it was a defeat better than many victories.",//W. Somerset Maugham, Of Human Bondage - "Once upon a time there was a boy who loved a girl, and her laughter was a question he wanted to spend his whole life answering.",//Nicole Krauss, The History of Love - "In spite of everything, I still believe people are really good at heart.",//Anne Frank, The Diary of Anne Frank - "The pieces I am, she gather them and gave them back to me in all the right order.",//Toni Morrison, Beloved - "She was becoming herself and daily casting aside that fictitious self which we assume like a garment with which to appear before the world.",//Kate Chopin, “The Awakening” - "We cross our bridges as we come to them and burn them behind us, with nothing to show for our progress except a memory of the smell of smoke, and the presumption that once our eyes watered.",//Tom Stoppard, Rosencratz and Guildenstern Are Dead - "There are darknesses in life and there are lights, and you are one of the lights, the light of all lights.", //Bram Stroker, Dracula - "I have spread my dreams under your feet; / Tread softly because you tread on my dreams", //W. B. Yeats, “Aedh Wishes for the Cloths of Heaven” - "It frightened him to think what must have gone to the making of her eyes.", //Edith Wharton, The Age of Innocence - "I wondered if that was how forgiveness budded; not with the fanfare of epiphany, but with pain gathering its things, packing up, and slipping away unannounced in the middle of the night.", //Khaled Hosseini, The Kite Runner - "So we beat on, boats against the current, borne back ceaselessly into the past.", //F. Scott Fitzgerald, The Great Gatsby - "It does not do well to dwell on dreams and forget to live, remember that.", //J.K. Rowling, Harry Potter and the Sorcerer’s Stone - "One must be careful of books, and what is inside them, for words have the power to change us.", //Cassandra Clare, The Infernal Devices - "Maybe ever’body in the whole damn world is scared of each other.", //John Steinbeck, Of Mice And Men - "Life is to be lived, not controlled; and humanity is won by continuing to play in face of certain defeat.", //Ralph Ellison, Invisible Man - "The only people for me are the mad ones, the ones who are mad to live, mad to talk, mad to be saved, desirous of everything at the same time, the ones who never yawn or say a commonplace thing, but burn, burn, burn like fabulous yellow roman candles exploding like spiders across the stars.", //Jack Kerouac, On The Road - "It was a bright cold day in April, and the clocks were striking thirteen.", //George Orwell, 1984 - "We were the people who were not in the papers. We lived in the blank white spaces at the edges of print. It gave us more freedom. We lived in the gaps between the stories.", //Margaret Atwood, The Handmaid's Tale - "It sounds plausible enough tonight, but wait until tomorrow. Wait for the common sense of the morning.", //H.G. Wells, The Time Machine - "It's much better to do good in a way that no one knows anything about it.", //Leo Tolstoy, Anna Karenina - "Life appears to me too short to be spent in nursing animosity or registering wrongs.", //Charlotte Brontë, Jane Eyre - "You forget what you want to remember, and you remember what you want to forget.", //Cormac McCarthy, The Road - "There is an idea of a Patrick Bateman, some kind of abstraction, but there is no real me, only an entity, something illusory, and though I can hide my cold gaze and you can shake my hand and feel flesh gripping yours and maybe you can even sense our lifestyles are probably comparable: I simply am not there.", //Bret Easton Ellis, American Psycho - "Finally, from so little sleeping and so much reading, his brain dried up and he went completely out of his mind.", //Miguel de Cervantes Saavedra, Don Quixote - "We cast a shadow on something wherever we stand, and it is no good moving from place to place to save things; because the shadow always follows. Choose a place where you won't do harm - yes, choose a place where you won't do very much harm, and stand in it for all you are worth, facing the sunshine.", //E.M. Forster, A Room With A View - "History, Stephen said, is a nightmare from which I am trying to awake.", //James Joyce, Ulysses - "It is a great misfortune to be alone, my friends; and it must be believed that solitude can quickly destroy reason.", //Jules Verne, The Mysterious Island - "And meanwhile time goes about its immemorial work of making everyone look and feel like shit.", //Martin Amis, London Fields - "No man, for any considerable period, can wear one face to himself and another to the multitude, without finally getting bewildered as to which may be the true.", //Nathaniel Hawthorne, The Scarlet Letter - "Nowadays people know the price of everything and the value of nothing.", //Oscar Wilde, The Picture Of Dorian Gray - "We can experience nothing but the present moment, live in no other second of time, and to understand this is as close as we can get to eternal life.", //P.D. James, The Children Of Men - "No one forgets the truth; they just get better at lying.", //Richard Yates, Revolutionary Road - "She had waited all her life for something, and it had killed her when it found her.", //Zora Neale Hurston, Their Eyes Were Watching God - "Nothing is so painful to the human mind as a great and sudden change.", //Mary Shelley, Frankenstein - "It is sometimes an appropriate response to reality to go insane.", //Philip K. Dick, Valis - "I know. I was there. I saw the great void in your soul, and you saw mine.", //Sebastian Faulks, Birdsong - "She says nothing at all, but simply stares upward into the dark sky and watches, with sad eyes, the slow dance of the infinite stars.", //Neil Gaiman, Stardust - "Why can't people have what they want? The things were all there to content everybody; yet everybody has the wrong thing.", //Ford Madox Ford, The Good Soldier - "We mortals, men and women, devour many a disappointment between breakfast and dinner-time; keep back the tears and look a little pale about the lips, and in answer to inquiries say, \"Oh, nothing!\" Pride helps; and pride is not a bad thing when it only urges us to hide our hurts— not to hurt others.", //George Eliot, MIddlemarch - "Anyone who ever gave you confidence, you owe them a lot.", //Truman Capote, breakfast at tiffany's - "Clocks slay time... time is dead as long as it is being clicked off by little wheels; only when the clock stops does time come to life.", //William Faulkner, The Sound And The Fury - "None of those other things makes a difference. Love is the strongest thing in the world, you know. Nothing can touch it. Nothing comes close. If we love each other we're safe from it all. Love is the biggest thing there is.", //David Guterson, Snow Falling on Cedars - "The only lies for which we are truly punished are those we tell ourselves." //V.S. Naipaul, In a Free State - - - }; - var i = rnd.Next(0, lorem.Length - 1); - text = lorem[i]; - } - - scaffold.Data["text"] = text; - - if (Page.isEditable) - { - menuTypes = new string[] { "all", "!props", "texteditor" }; - var texteditor = new Scaffold(S, "/components/textbox/texteditor.html"); - - //set up font sizes - var fontSizes = new int[] - { - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, - 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, - 100, 120, 140, 160, 180, 200, 250 - }; - var html = ""; - foreach(var s in fontSizes) - { - html += "\n"; - } - texteditor.Data["font-size"] = html; - - //set up font family - html = ""; - var fontFamilies = new List() - { - "Arial, Helvetica, sans-serif", - "\"Arial Black\", Gadget, sans-serif", - "Impact, Charcoal, sans-serif", - "\"Lucida Sans Unicode\", \"Lucida Grande\", sans-serif", - "Tahoma, Geneva, sans-serif", - "\"Trebuchet MS\", Helvetica, sans-serif", - "Verdana, Geneva, sans-serif", - "Georgia, serif", - "\"Palatino Linotype\", \"Book Antiqua\", Palatino, serif", - "\"Times New Roman\", Times, serif", - "\"Courier New\", Courier, monospace", - "\"Lucida Console\", Monaco, monospace" - }; - foreach(var f in fontFamilies) - { - html += "\n"; - } - texteditor.Data["font-family"] = html; - - AddHtmlToEditor("texteditor", texteditor.Render(), new Func( - (c) => { - //text component already exists on the page, so don't add Html - return false; - } - )); - AddJavascriptFile("texteditor", "js/components/textbox/texteditor.js"); - } - } - - public override void Save(string key, object data) - { - switch (key) - { - case "text": - text = (string)data; - break; - } - } - } -} diff --git a/App/Components/Textbox/component.html b/App/Components/Textbox/component.html deleted file mode 100644 index 563bbd6..0000000 --- a/App/Components/Textbox/component.html +++ /dev/null @@ -1 +0,0 @@ -{{text}} \ No newline at end of file diff --git a/App/Components/Textbox/component.js b/App/Components/Textbox/component.js deleted file mode 100644 index 5f28270..0000000 --- a/App/Components/Textbox/component.js +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/App/Components/Textbox/texteditor.html b/App/Components/Textbox/texteditor.html deleted file mode 100644 index 2ff4388..0000000 --- a/App/Components/Textbox/texteditor.html +++ /dev/null @@ -1,137 +0,0 @@ - \ No newline at end of file diff --git a/App/Components/Textbox/texteditor.js b/App/Components/Textbox/texteditor.js deleted file mode 100644 index f8a3c99..0000000 --- a/App/Components/Textbox/texteditor.js +++ /dev/null @@ -1,650 +0,0 @@ -(function () { - - S.editor.textEditor = { - toolbar: $('.text-toolbar'), - revert: '', - - init: function () { - //add editor menu button to component select menu - S.editor.components.select.menu.add($('#template_select_menu_texteditor').html(), 'texteditor', ['texteditor'], S.editor.textEditor.show, S.editor.textEditor.hide); - - //configure rangy - rangy.config.preferTextRange = true; - rangy.createMissingNativeApi(); - - //add events to text editor toolbar - var toolbar = $('.editor .text-toolbar'); - toolbar.find('.icon-bold a').on('click', this.commands.bold); - toolbar.find('.icon-italic a').on('click', this.commands.italic); - toolbar.find('.icon-strikethru a').on('click', this.commands.strikethru); - toolbar.find('.icon-underline a').on('click', this.commands.underline); - toolbar.find('.icon-bullet a').on('click', this.commands.bulletList); - toolbar.find('.icon-numbers a').on('click', this.commands.numberList); - toolbar.find('.icon-indent a').on('click', this.commands.indent); - toolbar.find('.icon-outdent a').on('click', this.commands.outdent); - toolbar.find('.icon-textleft a').on('click', this.commands.alignLeft); - toolbar.find('.icon-textcenter a').on('click', this.commands.alignCenter); - toolbar.find('.icon-textright a').on('click', this.commands.alignRight); - toolbar.find('.icon-more a').on('click', this.showMore); - toolbar.find('.icon-less a').on('click', this.showLess); - toolbar.on('mousedown', this.cancelBlur); - - //configure DOMpurify - //DOMPurify.addHook('uponSanitizeElement', this.purify); - }, - - // toolbar ////////////////////////////////////////////////////////////////// - - show: function (e) { - var self = S.editor.textEditor; - var e = S.editor.components.selected; - self.align(); - self.toolbar.show(); - - e[0].contentEditable = 'true'; - S.editor.textEditor.revert = e.html(); - - //add event for detecting select refresh & window resize - S.editor.components.select.events.refresh.add('texteditor', self.align); - - //add event for text editor key events - $(document).on('keypress', S.editor.textEditor.keypress); - $(document).on('keyup', S.editor.textEditor.keyup); - - //add event for detecting text selection to disable deselecting component on accident - e.on('mousedown', self.mousedown); - $(document).on('mouseup', S.editor.textEditor.mouseup); - - //add event for detecting save button press - S.editor.save.events.save.add('texteditor', self.save); - }, - - hide: function (e) { - var self = S.editor.textEditor; - - //save contents of text editor - self.save(); - - //remove events - S.editor.components.select.events.refresh.remove('texteditor'); - $(document).off('keyup', S.editor.textEditor.keyup); - e.off('mousedown', self.mousedown); - $(document).off('mouseup', S.editor.textEditor.mouseup); - S.editor.save.events.save.remove('texteditor', self.save); - - //hide text editor toolbar - self.toolbar.hide(); - - //disable editing - e[0].removeAttribute('contentEditable'); - - }, - - save: function () { - var self = S.editor.textEditor; - var e = S.editor.components.selected; - var html = e.html(); - if (html != self.revert) { - self.clean(e); - S.editor.save.add(e[0].id.substr(1), 'text', e.html()); - } - }, - - align: function () { - var self = S.editor.textEditor; - var e = S.editor.components.selected; - var pos = e.offset(); - var win = S.window.pos(); - if (pos.left < 13) { - pos.left = 13; - } - pos.height = e.height(); - if (pos.top + win.scrolly <= 50 && (win.scrolly - pos.top) + pos.height < win.h) { - //show toolbar below component - self.toolbar.css({ left: pos.left - 13, top: pos.top + pos.height + 13 }); - } else { - if (win.scrolly > pos.top - 100) { - //show toolbar at top of window - self.toolbar.css({ left: pos.left + 5, top: win.scrolly + 65 }); - } else { - //show toolbar at top of component - self.toolbar.css({ left: pos.left - 13, top: pos.top - 53 }); - } - } - }, - - showMore: function () { - $('.text-toolbar .edit-basic').hide(); - $('.text-toolbar .edit-advanced').show(); - }, - - showLess: function () { - $('.text-toolbar .edit-basic').show(); - $('.text-toolbar .edit-advanced').hide(); - }, - - cancelBlur: function (e) { - //prevents user from allowing contentEditable area to lose focus when clicking on the toolbar - if (!$(e.target).is('select')) { - e.preventDefault(); - } - }, - - // Events //////////////////////////////////////////////////////////////// - - keypress: function (e) { - var k = e.keyCode; - var self = S.editor.textEditor; - switch (k) { - case 9: //tab press - self.insertText(' ', document.createElement("pre")); - e.cancelBubble = true; - e.preventDefault(); - return false; - - case 8: //backspace - //check for "pre" tag - var sel = rangy.getSelection(); - var range = sel.getRangeAt(0); - var anchor = sel.anchorNode; - if (anchor.tagName) { - console.log(anchor.tagName); - if (anchor.tagName.toLowerCase() == 'pre') { - anchor.remove(); - e.cancelBubble = true; - e.preventDefault(); - return false; - } - } - - case 13: //line break - var docFragment = document.createDocumentFragment(); - - //add a new line - var newEle = document.createTextNode('\n'); - docFragment.appendChild(newEle); - - //add the br, or p, or something else - newEle = document.createElement('br'); - docFragment.appendChild(newEle); - - //make the br replace selection - var range = window.getSelection().getRangeAt(0); - range.deleteContents(); - range.insertNode(docFragment); - - //create a new range - range = document.createRange(); - range.setStartAfter(newEle); - range.collapse(true); - - //make the cursor there - var sel = window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - - return false; - } - - //if caret is inside pre tag, move outside of pre tag - self.moveCaretOutside(['pre']); - }, - - keyup: function (e) { - var k = e.keyCode; - var self = S.editor.textEditor; - S.editor.textEditor.align(); - S.editor.components.select.refresh(); - }, - - mousedown: function () { - S.editor.components.select.locked = true; - }, - - mouseup: function (e) { - var self = S.editor.textEditor; - if (S.editor.components.select.locked == true) { - setTimeout(function () { - S.editor.components.select.locked = false; - }, 10); - } - //if caret is inside pre tag, move outside of pre tag - self.moveCaretOutside(['pre']); - }, - - // Rangy DOM manipulation //////////////////////////////////////////////// - - alterRange: function (name, tag, attributes, remove, outerOnly) { - var sel = rangy.getSelection(), range, el, f, container, - hasremove = false, hasclass = false; - - //select children if there is no selection made - if (sel.isCollapsed == true) { - sel.selectAllChildren(sel.anchorNode); - } - - if (outerOnly == true) { - //create outer node - sel.refresh(); - range = sel.getRangeAt(0).cloneRange(); - container = range.commonAncestorContainer; - var contents = range.extractContents(); - f = document.createDocumentFragment(); - el = document.createElement(tag); - if (attributes != null) { $(el).attr(attributes); } - el.appendChild(contents); - var e = $(el).find('.' + name); - if (e.length == 0 && remove != null) { - for (x = 0; x < remove.length; x++) { - e = $(el).find('.' + remove[x]); - if (e.length > 0) { hasremove = true; break; } - } - } - if (e.length > 0) { - el = el.firstChild; - if (hasremove == false) { - //remove outer node (toggle) - hasclass = true; - $(f).append(el.childNodes); - range.insertNode(f); - } - } - if (hasclass == false) { - f.appendChild(el); - range.insertNode(f); - } - range.normalizeBoundaries(); - sel.refresh(); - sel.setSingleRange(range); - } - - - //apply attributes & class (name) to all elements within the select - var applier = rangy.createClassApplier(name, { - elementTagName: tag, - elementAttributes: attributes - }, tag); - applier.toggleSelection(); - - //remove any classes from the selection that don't belong - if (remove != null) { - if (remove.length > 0) { - //remove classes from range - for (x = 0; x < remove.length; x++) { - applier = rangy.createClassApplier(remove[x], { - elementTagName: tag, - elementAttributes: attributes - }, tag); - applier.undoToSelection(); - } - } - } - - //get all nodes within the selection - sel.refresh(); - var nodes = []; - for (x = 0; x < sel.rangeCount; x++) { - nodes = nodes.concat(sel.getRangeAt(x).getNodes()); - } - //find each text node and replace trailing spaces with   - for (x = 0; x < nodes.length; x++) { - if (nodes[x].nodeType == 3) { - nodes[x].nodeValue = nodes[x].nodeValue.replace(/\s+$/g, '\u00a0'); - } - } - - if (outerOnly == true) { - //remove class (name) from all child nodes - if (hasclass == false) { - el.className = name; - } - var c = $(el).find('.' + name).removeClass(name); - sel.refresh(); - if (hasclass == false) { - range.selectNode(el); - } else { - range.selectNodeContents(container); - } - sel.setSingleRange(range); - } - - return this; - }, - - wrapRange: function (parent, child) { - //appends selection within the child element & replaces selection with the parent element - var sel = rangy.getSelection(); - sel.refresh(); - if (!child) { child = parent; } - var range = sel.getRangeAt(0).cloneRange(); - container = range.commonAncestorContainer; - var contents = range.extractContents(); - child.appendChild(contents); - range.insertNode(parent); - range.normalizeBoundaries(); - sel.refresh(); - sel.setSingleRange(range); - }, - - insertText: function (content, container, selectContent) { - var sel, range; - if (window.getSelection) { - // IE9 and non-IE - sel = window.getSelection(); - if (sel.getRangeAt && sel.rangeCount) { - range = sel.getRangeAt(0); - range.deleteContents(); - - // Range.createContextualFragment() would be useful here but is - // only relatively recently standardized and is not supported in - // some browsers (IE9, for one) - var el = document.createElement("div"); - if (typeof (content) == "string") { - el.innerHTML = content; - } else if (typeof (content) == "object") { - el.innerHTML = ''; - el.appendChild(content); - } - var frag, node, lastNode; - if (container == null) { - frag = document.createDocumentFragment(); - } else { - frag = container; - } - while ((node = el.firstChild)) { - lastNode = frag.appendChild(node); - } - var firstNode = frag.firstChild; - range.insertNode(frag); - - // Preserve the selection - if (lastNode) { - range = range.cloneRange(); - range.setStartAfter(lastNode); - if (selectContent) { - range.setStartBefore(firstNode); - } else { - range.collapse(true); - } - sel.removeAllRanges(); - sel.addRange(range); - } - } - } else if ((sel = document.selection) && sel.type != "Control") { - // IE < 9 - var originalRange = sel.createRange(); - originalRange.collapse(true); - sel.createRange().pasteHTML(html); - if (selectContent) { - range = sel.createRange(); - range.setEndPoint("StartToStart", originalRange); - range.select(); - } - } - }, - - moveCaretOutside: function (tags) { - //move the caret outside of a specific tag - var self = S.editor.textEditor; - var sel = rangy.getSelection(); - sel.refresh(); - var range = sel.getRangeAt(0); - container = range.commonAncestorContainer; - var node = container; - while (node != null) { - if (node.className) { - if (node.className.indexOf('c-textbox') >= 0) { break;} - } - if (node.tagName) { - if (tags.indexOf(node.tagName.toLowerCase()) >= 0) { - //move caret outside tag - range = range.cloneRange(); - range.setStartAfter(node); - range.collapse(false); - sel.removeAllRanges(); - sel.addRange(range); - sel.refresh(); - break; - } - } - node = node.parentNode; - } - }, - - getCaretOffset: function(element) { - var caretOffset = 0; - var doc = element.ownerDocument || element.document; - var win = doc.defaultView || doc.parentWindow; - var sel; - if (typeof win.getSelection != "undefined") { - sel = win.getSelection(); - if (sel.rangeCount > 0) { - var range = win.getSelection().getRangeAt(0); - var preCaretRange = range.cloneRange(); - preCaretRange.selectNodeContents(element); - preCaretRange.setEnd(range.endContainer, range.endOffset); - caretOffset = preCaretRange.toString().length; - } - } else if ((sel = doc.selection) && sel.type != "Control") { - var textRange = sel.createRange(); - var preCaretTextRange = doc.body.createTextRange(); - preCaretTextRange.moveToElementText(element); - preCaretTextRange.setEndPoint("EndToEnd", textRange); - caretOffset = preCaretTextRange.text.length; - } - return caretOffset; - }, - - expandSelection: function (start, end) { - //moves caret start & end positions relative to the parent node - var self = S.editor.textEditor; - var sel = rangy.getSelection(); - var range = sel.getRangeAt(0); - var focusNode = sel.focusNode; - var focusOffset = sel.focusOffset; - var anchorNode = sel.anchorNode; - var anchorOffset = sel.anchorOffset; - var newRange = range.cloneRange(); - if ((focusOffset > anchorOffset) && anchorOffset > 0) { //selection is forwards - newRange.setEnd(anchorNode, anchorOffset + end); - newRange.setStart(anchorNode, anchorOffset - start); - } else if ((focusOffset < anchorOffset) && focusOffset > 0) { //selection is backwards - newRange.setEnd(focusNode, focusOffset + end); - newRange.setStart(focusNode, focusOffset - start); - } else { - //TODO: no selection - //newRange.setEnd(anchorNode, anchorOffset + end); - //newRange.setStart(anchorNode, anchorOffset - start); - } - return newRange; - }, - - expandRangeWithPartialNodes: function (range) { - while (range.startContainer.nodeType == 3 || range.startContainer.childNodes.length == 1) { - range.setStartBefore(range.startContainer); - } - - while (range.endContainer.nodeType == 3 || range.endContainer.childNodes.length == 1) { - range.setEndAfter(range.endContainer); - } - return range; - }, - - getNextNode: function (node, endNode, skipChildren) { - //if there are child nodes and we didn't come from a child node - if (endNode == node) { - return null; - } - if (node.firstChild && !skipChildren) { - return node.firstChild; - } - if (!node.parentNode) { - return null; - } - return node.nextSibling - || getNextNode(node.parentNode, endNode, true); - }, - - wrapSelectedContents(tagname, className) { - if (tagname) { - var elem = document.createElement(tagname); - if (className) { - elem.className = className; - } - var self = S.editor.textEditor; - var sel = rangy.getSelection(); - var range = sel.getRangeAt(0).cloneRange(); - var contents = range.extractContents(); - elem.appendChild(contents); - range.insertNode(elem); - sel.removeAllRanges(); - sel.addRange(range); - } - }, - - // contentEditable commands //////////////////////////////////////////////// - - commands: { - bold: function () { - S.editor.textEditor.alterRange('bold', 'span', {}); - }, - - italic: function () { - S.editor.textEditor.alterRange('italic', 'span', {}); - }, - - strikethru: function () { - S.editor.textEditor.alterRange('linethru', 'span', {}, ['underline']); - }, - - underline: function () { - S.editor.textEditor.alterRange('underline', 'span', {}, ['linethru']); - }, - - bulletList: function () { - var ul = document.createElement("ul"); - var li = document.createElement("li"); - ul.className = "bullet-list"; - ul.appendChild(li); - - S.editor.textEditor.wrapRange(ul, li); - }, - - numberList: function () { - var ul = document.createElement("ul"); - var li = document.createElement("li"); - ul.className = "number-list"; - ul.appendChild(li); - - S.editor.textEditor.wrapRange(ul, li); - }, - - outdent: function () { - S.editor.textEditor.wrapSelectedContents("p", "outdent"); - }, - - indent: function () { - S.editor.textEditor.wrapSelectedContents("p", "indent"); - }, - - alignLeft: function () { - S.editor.textEditor.alterRange('align-left', 'span', {}, ['align-center', 'align-right'], true); - }, - - alignCenter: function () { - S.editor.textEditor.alterRange('align-center', 'span', {}, ['align-left', 'align-right'], true); - }, - - alignRight: function () { - S.editor.textEditor.alterRange('align-right', 'span', {}, ['align-center', 'align-left'], true); - }, - - photo: { - show: function () { - - }, - - add: function (file) { - - } - }, - - table: { - show: function () { - - }, - - add: function (rows, columns) { - - } - }, - - link: { - show: function () { - - }, - - add: function () { - - } - }, - - colors: { - type: 'color', - - show: function (type) { - - }, - - add: function (color) { - - } - }, - - source: { - show: function () { - - }, - - hide: function () { - - } - } - }, - - // output from Text Editor /////////////////////////////////////////////////// - - clean: function (e) { - //clean up dirty html tags created by rangy after user deselects component - console.log(e); - console.log(e.html()); - //var children = []; - //e.each(function (a) { children.push(a); }); - //e.html(''); - //e.append(h.replace(/ /g, ' ')) - //DOMPurify.sanitize( - // e.html().replace(/ /gi, ' '), - // { - // FORBID_TAGS: [ - // //XSS vulnerable tags - // 'style', 'script', 'embed', 'link', 'iframe', - // //depreicated tags - // 'font', 'b', 'i' - // ], - // SAFE_FOR_TEMPLATES:true - // } - //) - }, - - purify: function(node, data){ - //remove tags with empty content - //var content = node.textContent; - //if (content == ' ' || content.trim() == '') { - // node.parentNode.insertBefore(document.createTextNode(' '), node); - // return node.parentNode.removeChild(node); - //} - } - }; - - S.editor.textEditor.init(); -})(); \ No newline at end of file diff --git a/App/Content/themes/default/elements/button.html b/App/Content/themes/default/elements/button.html deleted file mode 100644 index 3fbb77a..0000000 --- a/App/Content/themes/default/elements/button.html +++ /dev/null @@ -1,7 +0,0 @@ -{{button}}{{label}}{{/button}} - -{{button-outline}}{{label}}{{/button-outline}} - -{{button-apply}}{{label}}{{/button-apply}} - -{{button-cancel}}{{label}}{{/button-cancel}} \ No newline at end of file diff --git a/App/Content/themes/default/elements/textbox.html b/App/Content/themes/default/elements/textbox.html deleted file mode 100644 index dc85567..0000000 --- a/App/Content/themes/default/elements/textbox.html +++ /dev/null @@ -1 +0,0 @@ -{{textbox}}{{input}}{{/textbox}} \ No newline at end of file diff --git a/App/Content/themes/default/layouts/default.html b/App/Content/themes/default/layouts/default.html deleted file mode 100644 index 29a1839..0000000 --- a/App/Content/themes/default/layouts/default.html +++ /dev/null @@ -1,3 +0,0 @@ -
    {{head}}
    -
    {{body}}
    -
    {{foot}}
    \ No newline at end of file diff --git a/App/Content/themes/default/theme.css b/App/Content/themes/default/theme.css deleted file mode 100644 index 7611817..0000000 --- a/App/Content/themes/default/theme.css +++ /dev/null @@ -1,4 +0,0 @@ -.webpage{height:100%; display:flex; flex-direction: column; -ms-flex-direction: column;} -.content-head{min-height:0px;} -.content-body{flex:1;} -.content-foot{min-height:0px;} \ No newline at end of file diff --git a/App/Core/Core.cs b/App/Core.cs similarity index 96% rename from App/Core/Core.cs rename to App/Core.cs index 8cfec9b..65149ba 100644 --- a/App/Core/Core.cs +++ b/App/Core.cs @@ -1,69 +1,69 @@ -using Microsoft.AspNetCore.Http; - -namespace Websilk -{ - public class Core - { - public Server Server; - public Utility.Util Util; - public Sql Sql; - public User User; - public HttpContext Context; - public HttpRequest Request; - public HttpResponse Response; - public ISession Session; - - public bool isFirstLoad = false; - - public WebResources javascript; - public WebResources javascriptFiles; - public WebResources css; - public WebResources cssFiles; - public WebResources html; - public WebResources htmlEditor; - - public Core(Server server, HttpContext context) - { - Server = server; - Util = server.Util; - Context = context; - Request = context.Request; - Response = context.Response; - Session = context.Session; - Sql = new Sql(Server, Util); - User = new User(); - - javascript = new WebResources(this); - javascriptFiles = new WebResources(this); - css = new WebResources(this); - cssFiles = new WebResources(this); - html = new WebResources(this); - htmlEditor = new WebResources(this); - - //load user session - if (Session.Get("user") != null) - { - User = (User)Util.Serializer.ReadObject(Util.Str.GetString(Session.Get("user")), User.GetType()); - } - User.Load(this); - } - - public void Unload() - { - if(User.saveSession == true) - { - Session.Set("user", Util.Serializer.WriteObject(User)); - } - Sql.Close(); - } - - public bool isSessionLost() - { - if(isFirstLoad == false && Session.Get("user") == null) { - return true; - } - return false; - } - } - -} +using Microsoft.AspNetCore.Http; + +namespace Websilk +{ + public class Core + { + public Server Server; + public Utility.Util Util; + public Sql Sql; + public User User; + public HttpContext Context; + public HttpRequest Request; + public HttpResponse Response; + public ISession Session; + + public bool isFirstLoad = false; + + public WebResources javascript; + public WebResources javascriptFiles; + public WebResources css; + public WebResources cssFiles; + public WebResources html; + public WebResources htmlEditor; + + public Core(Server server, HttpContext context) + { + Server = server; + Util = server.Util; + Context = context; + Request = context.Request; + Response = context.Response; + Session = context.Session; + Sql = new Sql(Server, Util); + User = new User(); + + javascript = new WebResources(this); + javascriptFiles = new WebResources(this); + css = new WebResources(this); + cssFiles = new WebResources(this); + html = new WebResources(this); + htmlEditor = new WebResources(this); + + //load user session + if (Session.Get("user") != null) + { + User = (User)Util.Serializer.ReadObject(Util.Str.GetString(Session.Get("user")), User.GetType()); + } + User.Load(this); + } + + public void Unload() + { + if(User.saveSession == true) + { + Session.Set("user", Util.Serializer.WriteObject(User)); + } + Sql.Close(); + } + + public bool isSessionLost() + { + if(isFirstLoad == false && Session.Get("user") == null) { + return true; + } + return false; + } + } + +} diff --git a/App/Core/App.cs b/App/Core/App.cs deleted file mode 100644 index 90f344a..0000000 --- a/App/Core/App.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Websilk.Services -{ - public class App : Service - { - - public App(Core WebsilkCore) : base(WebsilkCore) { } - - public PageRequest Url(string url) - { - if (S.isSessionLost()) { return lostPageRequest(); } //check session - - var response = new PageRequest(); - if (!string.IsNullOrEmpty(url)) - { - var arrUrl = url.Split('\"'); - if (arrUrl[0].IndexOf("+") < 0) - { - //found page with no query in url - var page = new Page(S); - - //parse URL - page.Url = page.parseUrl(url.ToLower().Replace(" ", "-")); - - //get page Info - page.getPageInfoFromUrl(); - - //load page content - page.Render(); - - //write to console - Console.WriteLine("Load page: " + page.pageTitle); - - //set up response - response.components = new List(); - response.css = ""; - response.editor = ""; - response.js = ""; - response.pageTitle = page.pageTitle; - response.url = url; - response.pageId = page.pageId; - response.already = true; - - //load page layout (if different) & page blocks (excluding blocks that are already loaded) - - //render each component for the page - - } - } - return response; - } - - public Inject StaticUrl(string url) - { - if (S.isSessionLost()) { return lostInject(); } //check session - - if (!string.IsNullOrEmpty(url)) - { - var arrUrl = url.Split('\"'); - if (arrUrl[0].IndexOf("+") < 0) - { - //found page with no query in url - var page = new Page(S); - - //parse URL - page.Url = page.parseUrl(url.ToLower().Replace(" ", "-")); - - //get page Info - page.getPageInfoFromUrl(); - - //get static page class - if(page.pageService != "") - { - var service = page.getStaticPage(page.pageService); - var response = service.LoadSubPage(page.Url.path.Replace(page.pagePathName.ToLower() + "/", "")); - S.javascript.Add("static-page", "S.url.push('" + page.pageTitle + "','" + url.Replace(" ", "-") + "');"); - response.js = - S.cssFiles.renderCssFiles(false) + "\n" + - S.javascriptFiles.renderJavascriptFiles(false, S.javascript.renderJavascript(false)); - return response; - } - } - } - return new Inject(); - } - } -} diff --git a/App/Core/Component.cs b/App/Core/Component.cs deleted file mode 100644 index 6c541d5..0000000 --- a/App/Core/Component.cs +++ /dev/null @@ -1,578 +0,0 @@ -using System; -using System.Text; -using System.Collections.Generic; -using Newtonsoft.Json; -using ProtoBuf; - -namespace Websilk -{ - - [ProtoContract] - /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //For proper serialization compression, we MUST include all - //component references here that will be used within the platform - - [ProtoInclude(10, typeof(Components.Login))] - [ProtoInclude(11, typeof(Components.Textbox))] - [ProtoInclude(12, typeof(Components.Menu))] - - //the Vender area is made up of auto-generated code. To auto-generate - //this code, log into the Websilk Dashboard and navigate to Settings > Advanced, - //then click the button labeled "Import Vendor Applications" - - //[Vender] - //[/Vender] - - /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - public class Component - { - public enum enumAlign - { - left = 0, - center = 1, - right = 2 - } - - public enum enumPosition - { - isRelative = 0, - isFixed = 1 - } - - public enum enumIsFixed - { - top = 0, - middle = 1, - bottom = 2 - } - - public enum enumWidthType - { - pixels = 0, - percent = 1, - window = 2 - } - - public enum enumHeightType - { - pixels = 0, - auto = 1, - window = 2 - } - - [ProtoContract] - public struct structPadding - { - [ProtoMember(1)] - public int top; - [ProtoMember(2)] - public int right; - [ProtoMember(3)] - public int bottom; - [ProtoMember(4)] - public int left; - } - - [ProtoContract] - public struct structPosition - { - [ProtoMember(1)] - public int left; - [ProtoMember(2)] - public int top; - [ProtoMember(3)] - public int width; - [ProtoMember(4)] - public int height; - [ProtoMember(5)] - public bool isUsed; - [ProtoMember(6)] - public bool forceNewLine; - [ProtoMember(7)] - public enumAlign align; - [ProtoMember(8)] - public enumPosition position; - [ProtoMember(9)] - public enumIsFixed fixedAlign; - [ProtoMember(10)] - public enumWidthType widthType; - [ProtoMember(11)] - public enumHeightType heightType; - [ProtoMember(12)] - public structPadding padding; - } - - [JsonIgnore] - protected Core S; - [JsonIgnore] - public Page Page; - - - [ProtoMember(1)] - public string id = ""; //unique ID - [ProtoMember(2)] - public string blockId = ""; - [ProtoMember(3)] - public string panelId = ""; //unique ID of panel this component belongs to - [ProtoMember(4)] - public string panelCellId = ""; //unique ID of panel cell this component belongs to - - //data stored about the component - [ProtoMember(5)] - public List position; - [ProtoMember(6)] - public string css = ""; - - //specific menu types to show in the component select menu - public string[] menuTypes = new string[] { "" }; - - //resources (js, js file, or css file) attached to this component - [JsonIgnore] - public List resourcesForInstance; - [JsonIgnore] - public List resourcesForComponentType; - - //panels inside the component - [ProtoMember(7)] - public List panelIds; - [JsonIgnore] - public List panels; - - //internal variables - [JsonIgnore] - public bool isLoaded = true; - [JsonIgnore] - public bool isTemporary = false; //used for temporary components (non-editable) - - //rendering objects - [JsonIgnore] - protected Scaffold scaffold; - [JsonIgnore] - protected Utility.DOM.Element div; - - public Component(){} - - #region "Properties" - /// - /// A required override. The human-readable name of this component - /// - [JsonIgnore] - public virtual string Name - { - get { return "Component"; } - } - - /// - /// A required override. The relative path where the component class is located. Must end with a forward-slash - /// - [JsonIgnore] - public virtual string Path{ - get { return ""; } - } - - [JsonIgnore] - public virtual int defaultWidth - { - get { return 320; } - } - - [JsonIgnore] - public virtual bool canResizeWidth - { - get { return true; } - } - - [JsonIgnore] - public virtual bool canResizeHeight - { - get { return false; } - } - - /// - /// Returns a new instance of the Editor.Component.Properties class created for a specific component instance - /// - /// - public virtual Editor.Component.Properties GetProperties() { return new Editor.Component.Properties(S, this); } - #endregion - - #region "Events" - /// - /// Executing after creating a new instance of the Component class - /// - public void Initialize(Core WebsilkCore, Page page) - { - S = WebsilkCore; - Page = page; - div = new Utility.DOM.Element("div"); - scaffold = new Scaffold(S, Path + "component.html"); - } - - /// - /// Executed before the web page is rendered. - /// - public virtual void Load(){} - - /// - /// Executed when the user adds a new component to their web page when in edit mode. - /// Used to set up default properties for the component before it is loaded onto the - /// web page for the first time. - /// - public virtual void Create() - { - //set up default position settings - var posHD = new structPosition(); - posHD.left = 0; - posHD.top = 0; - posHD.width = defaultWidth; - posHD.align = enumAlign.center; - posHD.position = enumPosition.isRelative; - posHD.widthType = enumWidthType.pixels; - posHD.heightType = enumHeightType.auto; - posHD.padding = new structPadding(); - posHD.forceNewLine = false; - posHD.isUsed = true; - - position = new List(); - for (var x = 1; x <= 4; x++) - { - //add 4 empty position objects (for Cell, Mobile, Tablet, & Desktop) - position.Add(new structPosition()); - } - //add HD position object - position.Add(posHD); - - //set up component internal variables - isLoaded = false; - } - - /// - /// Executed when the web page is being rendered and when the user adds a new component to their web page when in edit mode. - /// All panel cells & components that belong to this component's hierarchy will be rendered as well. - /// - /// HTML string - public string Render() - { - StringBuilder js = new StringBuilder(); - StringBuilder css = new StringBuilder(); - StringBuilder style; - structPosition pos; - var newPos = new structPosition(); - - //check for redundant settings - var noFloat = true; - var noDisplay = true; - var noPosition = true; - var noLeft = true; - var noTop = true; - var noWidth = true; - var noHeight = true; - var noPadding = true; - var noMargin = true; - for (var x = 4; x >= 0; x--) - { - pos = position[x]; - if (pos.Equals(newPos)) { continue; } - if (pos.align != enumAlign.center) { noFloat = false; } - if(pos.align == enumAlign.center && pos.forceNewLine == false) { noDisplay = false; } - if(pos.position == enumPosition.isFixed) { noDisplay = false; } - if(pos.left > 0) { noLeft = false; } - if (pos.top > 0) { noTop = false; } - if (pos.width > 0) { noWidth = false; } - if (pos.height > 0) { noHeight = false; } - if(pos.forceNewLine == false) { noMargin = false; } - if(pos.padding.top > 0 || pos.padding.right > 0 || pos.padding.bottom > 0 || pos.padding.left > 0) { noPadding = false; } - } - - for (var x = 4; x >= 0; x--) - { - //set up each window size breakpoint (cell, mobile, tablet, desktop, HD) - pos = position[x]; - - if (pos.Equals(newPos)) { continue; } - - style = new StringBuilder(); - - //horizontal alignment - switch (pos.align) - { - case enumAlign.left: - style.Append("float:left;" + (noDisplay ? "" : "display:block;")); - break; - case enumAlign.center: - if(pos.forceNewLine == true) - { - style.Append((noFloat ? "" : "float:none;") + (noDisplay ? "" : "display:block;")); - }else - { - style.Append((noFloat ? "" : "float:none;") + "display:inline-block;"); - } - break; - case enumAlign.right: - style.Append("float:right;" + (noDisplay ? "" : "display:block;")); - break; - } - - //position type - if(pos.position == enumPosition.isFixed) - { - style.Append("position:fixed;"); - switch (pos.fixedAlign) - { - case enumIsFixed.top: - style.Append("top:auto;bottom:auto;"); - break; - case enumIsFixed.middle: - style.Append("top:50%;bottom:50%;"); - break; - case enumIsFixed.bottom: - style.Append("top:auto;bottom:0;"); - break; - } - } - else - { - if (!noPosition) { style.Append("position:relative;"); } - } - - //x & y offset position - if(!noLeft || !noTop) - { - style.Append((noLeft ? "" : "left:" + pos.left + "px;") + (noTop ? "" : "top:" + pos.top + "px;")); - } - - //width & height - switch (pos.widthType) - { - case enumWidthType.pixels: - if (pos.width > 0) { style.Append("max-width:" + pos.width + "px;"); } - break; - case enumWidthType.percent: - if (pos.width > 0) { style.Append("max-width:" + pos.width + "%;"); } - break; - case enumWidthType.window: - if (!noWidth) { style.Append("max-width:100%;"); } - break; - } - switch (pos.heightType) - { - case enumHeightType.pixels: - if (pos.height > 0) { style.Append("height:" + pos.height + "px;"); } - break; - case enumHeightType.auto: - case enumHeightType.window: - if (!noHeight) { style.Append("height:auto;"); } - break; - } - - //padding - if (!noPadding) - { - style.Append("padding:" + - pos.padding.top + "px " + - pos.padding.right + "px " + - pos.padding.bottom + "px " + - pos.padding.left + "px;"); - } - - //force new line - if (pos.forceNewLine == true && !noMargin) - { - style.Append("margin:0 auto;"); - } - - //compile style with CSS selector - if(style.ToString() != "") - { - switch (x) - { - case 0://Cell - css.Append(".s-cell #c" + id + "{" + style.ToString() + "}\n"); - break; - case 1://Mobile - css.Append(".s-mobile #c" + id + "{" + style.ToString() + "}\n"); - break; - case 2://Tablet - css.Append(".s-tablet #c" + id + "{" + style.ToString() + "}\n"); - break; - case 3://Desktop - css.Append(".s-desktop #c" + id + "{" + style.ToString() + "}\n"); - break; - case 4://HD - css.Append(".s-hd #c" + id + "{" + style.ToString() + "}\n"); - break; - } - } - } - - //add compiled CSS to renderer - S.css.Add("block_" + blockId, css.ToString() + (this.css != "" ? "#c" + id + "{" + this.css + "}" : "")); - - //add component reference (with instance-specific resource references) to page - js.Append("S.components.add('" + id + "', '" + Name + "', ["); - if(resourcesForInstance != null) - { - for (var x = 0; x < resourcesForInstance.Count; x++) - { - js.Append((x > 0 ? "," : "") + "'" + resourcesForInstance[x] + "'"); - } - } - js.Append("]"); - - if(Page.isEditable == true) - { - //add position data - js.Append(",["); - for (var x = 0; x < position.Count; x++) - { - if (x > 0) { js.Append(","); } - if(position[x].Equals(newPos)) - { - js.Append("null"); - } - else - { - js.Append(S.Util.Serializer.WriteObjectToString(position[x])); - } - } - js.Append("]"); - - //add menu type - js.Append(", ['" + string.Join("','", menuTypes) + "']"); - - //add other options - js.Append(", {" + - "canResizeWidth:" + (canResizeWidth ? "true" : "false") + - ", canResizeHeight:" + (canResizeHeight ? "true" : "false") + - "}"); - } - - js.Append(");"); - - //add component-type resource references to page (js & css) - if (resourcesForComponentType != null) - { - if (resourcesForComponentType.Count > 0) - { - js.Append("S.components.addReferences('" + Name + "', ["); - for (var x = 0; x < resourcesForComponentType.Count; x++) - { - js.Append((x > 0 ? "," : "") + "'" + resourcesForComponentType[x] + "'"); - } - js.Append("]);"); - } - } - - - S.javascript.Add('c' + id + "_ref", js.ToString()); - - - //set up div container for component - div.id = "c" + id; - div.Classes.Add("component c-" + Name.Replace(" ", "-").ToLower()); - if(isTemporary == true) { div.Classes.Add("is-temporary"); } - - //finally, render contents of component - div.innerHTML = scaffold.Render(); - return div.Render(); - } - - /// - /// Sets a value for a custom variable within the component that is later saved to the page.json file - /// - /// - public virtual void Save(string key, object data){} - - public void AddPanel(string id, string name) - { - var panel = new Panel(S, Page, id, name, "", blockId); - panel.cells = new List(); - panel.arrangement = new Panel.structArrangement(); - panel.AddCell(name); - } - #endregion - - #region "Utility" - protected void AddJavascriptCode(string name, string javascript, bool forInstanceOnly = false) - { - //add javascript code reference for this component (instance or type) - var n = (forInstanceOnly ? "c" + id : Name.Replace(" ", "-")) + '_' + name; - S.javascript.Add(n, javascript); - if (forInstanceOnly) - { - if(resourcesForInstance == null) { resourcesForInstance = new List(); } - resourcesForInstance.Add("js_" + n); - }else - { - if (resourcesForComponentType == null) { resourcesForComponentType = new List(); } - resourcesForComponentType.Add("js_" + n); - } - } - - protected void AddJavascriptFile(string name, string file, bool forInstanceOnly = false) - { - //add javascript file reference for this component (instance or type) - var n = (forInstanceOnly ? "c" + id : Name.Replace(" ","-")) + '_' + name; - S.javascriptFiles.Add(n, file, false); - if (forInstanceOnly) - { - if (resourcesForInstance == null) { resourcesForInstance = new List(); } - resourcesForInstance.Add("js_" + n); - } - else - { - if (resourcesForComponentType == null) { resourcesForComponentType = new List(); } - resourcesForComponentType.Add("js_" + n); - } - } - - protected void AddCss(string name, string css, bool forInstanceOnly = false) - { - //add css styles reference for this component (instance or type) - var n = (forInstanceOnly ? "c" + id : Name.Replace(" ", "-")) + '_' + name; - S.css.Add(n, css); - if (forInstanceOnly) - { - if (resourcesForInstance == null) { resourcesForInstance = new List(); } - resourcesForInstance.Add("css_" + n); - } - else - { - if (resourcesForComponentType == null) { resourcesForComponentType = new List(); } - resourcesForComponentType.Add("css_" + n); - } - } - - protected void AddHtml(string name, string html, Func check) - { - //add html code for this component type - var components = Page.GetAllComponents(Page.panels, true); - foreach(var c in components) - { - if(c.Name == Name) - { - if(check(c) == false) { return; } - } - } - S.html.Add(Name.Replace(" ", "-") + '_' + name, html); - } - - protected void AddHtmlToEditor(string name, string html, Func check) - { - //add html code for this component type - var components = Page.GetAllComponents(Page.panels, true); - foreach (var c in components) - { - if (c.Name == Name) - { - if (check(c) == false) { return; } - } - } - S.htmlEditor.Add(Name.Replace(" ", "-") + '_' + name, html); - } - - - #endregion - } -} - diff --git a/App/Core/Elements.cs b/App/Core/Elements.cs deleted file mode 100644 index 719944f..0000000 --- a/App/Core/Elements.cs +++ /dev/null @@ -1,85 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Websilk -{ - public enum ElementType - { - Button = 1, - List = 2, - Panel = 3, - Textbox = 4 - } - - public class Elements - { - - private Core S; - private string Path = ""; //relative path - - public Elements(Core WebsilkCore, string path) - { - S = WebsilkCore; - Path = path; //path to the theme folder - } - - public Element.Element Load(ElementType type, string name = "", string themePath = "") - { - string pth = themePath; - Element.Element elem; - if(pth == "") { pth = Path; } - - switch (type) - { - case ElementType.Button: - elem = new Element.Button(S, pth + "elements/button.html", name != "" ? name : "button"); - break; - - case ElementType.List: - elem = new Element.List(S, pth + "elements/list.html", name != "" ? name : "list"); - break; - - case ElementType.Panel: - elem = new Element.Panel(S, pth + "elements/panel.html", name != "" ? name : "panel"); - break; - - case ElementType.Textbox: - elem = new Element.Textbox(S, pth + "elements/textbox.html", name != "" ? name : "textbox"); - break; - - default: - elem = new Element.Element(S, pth, name); - break; - } - - return elem; - } - } -} - -namespace Websilk.Element -{ - public class Element - { - protected Core S; - protected Scaffold scaffold; - public string Name = ""; - public string Folder = ""; - - public Element(Core WebsilkCore, string path, string name = "") - { - S = WebsilkCore; - scaffold = new Scaffold(S, path, "", name); - } - - public Dictionary Data - { - get { return scaffold.Data; } - } - - public string Render() - { - return scaffold.Render(); - } - } -} diff --git a/App/Core/Page.cs b/App/Core/Page.cs deleted file mode 100644 index 9104d0c..0000000 --- a/App/Core/Page.cs +++ /dev/null @@ -1,1507 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using Newtonsoft.Json; -using ProtoBuf; -using SharpCompress; - -namespace Websilk -{ - public class Page - { - #region "properties" - private Core S; - public SqlQueries.Page sql; - public Elements Elements; - - public struct structUrl - { - public string host; - public string path; - public string[] paths; - public string[] query; - } - - [ProtoContract] - public struct structPage - { - //structure used to save page content to JSON file - [ProtoMember(1)] - public int pageId; - [ProtoMember(2)] - public int shadowId; - [ProtoMember(3)] - public bool isShadow; - [ProtoMember(4)] - public DateTime history; - [ProtoMember(5)] - public string layout; - [ProtoMember(6)] - public List areas; - } - - [ProtoContract] - public struct structArea - { - [ProtoMember(1)] - public string name; - [ProtoMember(2)] - public List blocks; - } - - [ProtoContract] - public struct structBlock - { - [ProtoMember(1)] - public string name; - [ProtoMember(2)] - public string id; - [ProtoMember(3)] - public bool isPage; - [ProtoMember(4)] - public List components; - public bool changed; - } - - public enum enumDomainProtocols - { - http = 0, - https = 1 - } - - public struct structDomain - { - public enumDomainProtocols protocol; - public string domain; - public string subdomain; - } - - public structUrl Url; - - //page info - public int ownerId = 0; - public int pageId = 0; - public int pageType = 0; //0 = default, 1 = service, 2 = shadow - public int pageParentId = 0; - public string pageTitle = ""; - public string pageTitleHead = ""; //custom page title used for - public string pagePathName = ""; //page title hierarchy - public string pagePathIds = ""; //page id hierarchy - public string PageTitleForBrowserTab = ""; - public string parentTitle = ""; - public string pageLayout = "default"; - public string pageService = ""; //if pageType = 1, the name of the C# StaticPage class to execute, Websilk.Pages.[pageService] - public string pageDescription = ""; - public bool pageFavIcon = false; - public string pageFolder = ""; - public string pagePhoto = ""; - public DateTime pageCreated; - public DateTime pageModified; - public bool pageSecurity = false; - public DateTime pageHistory = DateTime.Now.AddYears(-1000); //either empty or history date - public bool hasAce = false; - - //shadow template info (if available) - public int shadowTemplateId = 0; //shadow template used to load custom blocks for the page - - //website info - public int websiteId = 0; - public int websiteOwner = 0; - public string websiteTitle = ""; - public string websiteTitleSeparator = " - "; - public string websiteTheme = "default"; - public string websiteColors = "beach"; - public string editorColors = "dark"; - public string dashboardColors = "aqua"; - public int websitePageAccessDenied = 0; - public int websitePage404 = 0; - public List domains = new List(); - - public string googleWebPropertyId = ""; //google Analytics - - public bool accessDenied = false; - public bool isEditable = false; - public string editType = ""; //page type to edit (usually "edit" when isEditable = true) - public string editFolder = ""; //sub-folder where page.json is located (usually used for "history" folder) - - //page references - [JsonIgnore] - public List panels; - [JsonIgnore] - public List blocks; - - public Page(Core WebsilkCore) - { - S = WebsilkCore; - sql = new SqlQueries.Page(S); - if (S.Request.Query["history"].Count > 0) - { - //set up page to load from a history folder - var hist = S.Request.Query["history"].ToString().Split('-'); - DateTime.TryParse(hist[0] + "-" + hist[1] + "-" + hist[2] + " " + hist[3] + ":" + hist[4] + ":00", out pageHistory); - editFolder = "history/" + pageHistory.ToString("yyyy"); - editType = pageHistory.ToString("MM_dd_H_mm"); - } - } - #endregion - - #region "Page Info" - public void getPageInfo(int pageId) - { - if (S.Server.Cache.ContainsKey("pageinfo_" + pageId)) - { - loadPageInfo((SqlReader)S.Server.Cache["pageinfo_" + pageId]); - } - else - { - loadPageInfo(sql.GetPageInfo(pageId)); - } - } - - public void getPageInfoFromUrl() - { - getPageInfoFromUrl(Url); - } - - public void getPageInfoFromUrl(structUrl url) - { - string domain = ""; - string subDomain = ""; - string[] domains = GetDomainParts(url.host); - string title = url.path; - SqlReader reader = null; - - domain = domains[1]; - subDomain = domains[0]; - if (string.IsNullOrEmpty(domain)) { domain = url.host; } - - //try to get page info based on domain name - if (!string.IsNullOrEmpty(url.path)) - { - //get page info from website domain name & page title - while (title != "") - { - reader = null; - if (string.IsNullOrEmpty(subDomain)) - { - //domain name & page title - var cacheName = "pageinfo_" + url.host + "_" + title; - if (S.Server.Cache.ContainsKey(cacheName)) - { - reader = (SqlReader)S.Server.Cache[cacheName]; - if(reader.Rows.Count == 0) { - reader = null; - S.Server.Cache.Remove(cacheName); - } - } - if(reader == null) { - reader = sql.GetPageInfoFromDomainAndTitle(domain, title); - if(reader.Rows.Count > 0) - { - S.Server.Cache.Add(cacheName, reader); - } - } - if(reader.Rows.Count > 0) - { - loadPageInfo(reader); - } - } - else - { - //domain & sub domain & page title - var cacheName = "pageinfo_" + url.host + "_" + title; - if (S.Server.Cache.ContainsKey(cacheName)) - { - reader = (SqlReader)S.Server.Cache[cacheName]; - S.Server.Cache.Add(cacheName, reader); - } - else - { - reader = sql.GetPageInfoFromSubDomainAndTitle(domain, subDomain, title); - } - if (reader.Rows.Count > 0) - { - loadPageInfo(reader); - } - } - if (reader.Rows.Count == 0) - { - if (title.IndexOf("/") > 0) - { - //try to get parent page - title = String.Join("/", title.Split('/').Reverse().Skip(1).Reverse().ToArray()); - } - else { break; } - } - else { break; } - } - } - else - { - if (string.IsNullOrEmpty(subDomain)) - { - //get page info from website home page - reader = sql.GetPageInfoFromDomain(domain); - } - else - { - //get page info from website sub domain home page - reader = sql.GetPageInfoFromSubDomain(domain, subDomain); - } - if (reader.Rows.Count > 0) - { - loadPageInfo(reader); - } - } - } - - public void loadPageInfo(SqlReader reader) - { - //loads the page info from Sql - if (reader.Rows.Count > 0) - { - reader.Read(); - - if(reader.GetBool("security") == true && S.User.userId == 0) - { - //redirect user to access denied page - getPageInfo(reader.GetInt("pagedenied")); - return; - } - - //get page info - ownerId = reader.GetInt("ownerId"); - pageId = reader.GetInt("pageId"); - pageTitle = reader.Get("title"); - pageTitleHead = reader.Get("title_head"); - pagePathName = reader.Get("path"); - pagePathIds = reader.Get("pathIds"); - pageDescription = reader.Get("description"); - pageCreated = reader.GetDateTime("datecreated"); - pageModified = reader.GetDateTime("datemodified"); - pageSecurity = reader.GetBool("security"); - pageType = reader.GetShort("pagetype"); - pageLayout = reader.Get("layout"); - pageService = reader.Get("service"); - pageParentId = reader.GetInt("parentid"); - parentTitle = reader.Get("parenttitle"); - websiteTheme = reader.Get("theme"); - websiteColors = reader.Get("colors"); - editorColors = reader.Get("colorsEditor"); - dashboardColors = reader.Get("colorsDash"); - websiteId = reader.GetInt("websiteid"); - websiteOwner = reader.GetInt("ownerId"); - websiteTitle = reader.Get("websitetitle"); - websitePageAccessDenied = reader.GetInt("pagedenied"); - websitePage404 = reader.GetInt("page404"); - googleWebPropertyId = reader.Get("googlewebpropertyid"); - pageFavIcon = reader.GetBool("icon"); - pagePhoto = reader.Get("photo"); - shadowTemplateId = reader.GetInt("shadowId"); - - //set up page properties - if(pageTitleHead == "") { pageTitleHead = pageTitle; } - if(pageLayout == "") { pageLayout = "default"; } - PageTitleForBrowserTab = pageTitleHead + websiteTitleSeparator + websiteTitle; - pageFolder = "/Content/websites/" + websiteId + "/pages/" + pageId + "/"; - - //initialize theme Elements - Elements = new Elements(S, "/Content/themes/" + websiteTheme + "/"); - - //check if editable - if(pageTitle != "Dashboard") - { - if(S.User.checkSecurity(websiteId,"dashboard/pages", User.enumSecurity.update)) - { - isEditable = true; - } - } - } - - } - - public List getDomainsForWebsite() - { - //get a list of available domains for this website - var domains = new List(); - var reader = sql.GetWebsiteDomains(websiteId); - if(reader.Rows.Count > 0) - { - while (reader.Read()) { - domains.Add(GetDomain(reader.Get("domain"))); - } - } - return domains; - } - #endregion - - #region "Dynamic Page" - - public List loadLayout(Scaffold scaffold) - { - var areas = new List(); - foreach (var item in scaffold.elements) - { - if (item.name != "") - { - areas.Add(new structArea() { - name = item.name, - blocks = new List() - }); - } - } - return areas; - } - - public string GetPageFilePath(int pageid = 0, string specialFolder = "", string pageType = "") - { - - var path = "/Content/websites/" + - websiteId + "/pages/" + pageid.ToString() + "/" + - (specialFolder != "" ? specialFolder + "/" : "") + - (pageType != "" ? pageType + "_" : "") + "page.json"; - return path; - } - - public structPage loadPage(bool fromCache = true) - { - //get a list of components to load onto the page - var page = new structPage(); - page.pageId = pageId; - page.shadowId = shadowTemplateId; - page.areas = new List(); - page.history = pageHistory; - - //load shadow page first (if available) - if(shadowTemplateId > 0) - { - var shadow = S.Server.LoadFileFromCache(GetPageFilePath(shadowTemplateId, editFolder, editType), false, !fromCache); - combinePages(ref page, shadow, fromCache); - } - - //load page from file (or cache) - var file = S.Server.LoadFileFromCache(GetPageFilePath(pageId, editFolder, editType), false, !fromCache); - if (file != "") - { - combinePages(ref page, file, fromCache); - } - else - { - //check if website has been initialized yet (in dev environment only) - if (S.Server.environment == Server.enumEnvironment.development && Url.path == "login") - { - if (!S.Server.Cache.ContainsKey("init_website")) - { - //initialize new website - S.Server.Cache.Add("init_website", 1); - var test = new Services.Init(S); - test.Website(); - S.Server.Cache.Remove("init_website"); - return loadPage(); - } - } - } - - //finally, load page blocks - loadBlocks(page, fromCache); - return page; - } - - public void combinePages(ref structPage page, string file, bool isShadow, bool fromCache = true) - { - var newpage = new structPage(); - if (file != "") - { - //deserialize page - //newpage = (structPage)S.Util.Serializer.DecompressObject(file); - newpage = (structPage)S.Util.Serializer.ReadObject(file, typeof(structPage)); - } - else - { - //initialize a new page - newpage = new structPage() - { - pageId = pageId, - isShadow = isShadow, - areas = new List() - }; - } - - //combine new page with page - for(var x = 0; x < newpage.areas.Count; x++) - { - var y = page.areas.FindIndex(a => a.name == newpage.areas[x].name); - if(y >= 0) - { - var area = page.areas[y]; - for(var z = 0; z < newpage.areas[x].blocks.Count; z++) - { - if(newpage.isShadow == false) - { - if(newpage.areas[x].blocks[z].isPage == true) - { - //add page block components to existing page block - var b = area.blocks.FindIndex(a => a.id == area.blocks[z].id); - if(b >= 0) - { - foreach(var c in newpage.areas[x].blocks[z].components) - { - area.blocks[b].components.Add(c); - } - } - else - { - area.blocks.Add(newpage.areas[x].blocks[z]); - } - } - else - { - area.blocks.Add(newpage.areas[x].blocks[z]); - } - } - else - { - area.blocks.Add(newpage.areas[x].blocks[z]); - } - - } - page.areas[y] = area; - } - else - { - page.areas.Add(newpage.areas[x]); - } - } - } - - /// - /// Load panels from the page layout, along with all components from the specified page - /// - /// the page to load - /// - public Tuple, structPage, List> loadPageAndLayout(int pageid, bool noExecution = false, bool fromCache = true) - { - //load page layout scaffolding - var scaffold = new Scaffold(S, "/Content/themes/" + websiteTheme + "/layouts/" + pageLayout + ".html"); - - //load page(s) from file/cache - var page = loadPage(fromCache); - - //get a list of areas in the layout HTML - var areas = loadLayout(scaffold); - - //initialize panel list - var panels = new List(); - - //add missing areas from layout into page - foreach (var area in areas) - { - var found = false; - if (page.areas.Count > 0) - { - //check for missing area in page - for(var x = 0; x < page.areas.Count; x++) - { - if(page.areas[x].name == area.name) - { - //set up page-level blocks - found = true; - } - } - } - if(found == false) - { - //add missing layout area to page - page.areas.Add(area); - } - } - - //load panels within page area blocks - for (var x = 0; x < page.areas.Count; x++) - { - var area = page.areas[x]; - if(area.blocks.Count == 0) - { - //add page-level block to empty area - area.blocks.Add(new structBlock() - { - id = "page_" + area.name.ToLower(), - name = "Page " + S.Util.Str.Capitalize(area.name), - isPage = true, - components = new List() - }); - } - - for(var y = 0; y < area.blocks.Count; y++) - { - //create a panel for each block within the area - var block = area.blocks[y]; - var id = block.name.Replace(" ", "_").Replace("-","_").ToLower(); - var panel = CreatePanel(id, block.name, area.name, block.id, block.name, block.isPage); - panel.AddCell(id); - - //add components to panels - loadComponents(block, panel, ref panels, noExecution); - - //add block-level panel to page - panels.Add(panel); - } - } - - return Tuple.Create(scaffold, areas, page, panels); - } - #endregion - - #region "Static Page" - public StaticPage getStaticPage(string pageName) - { - Type type = Type.GetType("Websilk.Pages." + pageName); - return (StaticPage)Activator.CreateInstance(type, new object[] { S, this }); - } - - private string loadStaticPage(string pageName) - { - StaticPage staticPage = getStaticPage(pageName); - staticPage.Load(); - return staticPage.Render(); - } - #endregion - - #region "Render" - - private string renderLayout() - { - //render layout, panels, and page - - if (pageType == 1) - { - //load a Static Page ////////////////// - return loadStaticPage(pageService); - } - else - { - //load a Dynamic Page ////////////////// - var htm = new StringBuilder(); - var tuple = loadPageAndLayout(pageId); - - //load page layout scaffolding - var scaffold = tuple.Item1; - - //load page from file/cache - var page = tuple.Item3; - - //load list of panels - panels = tuple.Item4; - Panel panel; - var hasSiblings = false; - - //finally, render each layout area - //this will force all components & panels within the hierarchy to render as well - foreach (var area in page.areas) - { - htm = new StringBuilder(); - hasSiblings = area.blocks.Count > 1; - foreach (var block in area.blocks) - { - panel = GetPanelById(panels, block.name.Replace(" ", "_").Replace("-", "_").ToLower()); - panel.hasSiblings = hasSiblings; - if(isEditable == true && pageType == 2 && block.isPage == true) - { - //replace panel content with placeholder content - panel.cells[0].components.Clear(); - var cell = panel.cells[0]; - var text = (Components.Textbox)createNewComponent("Textbox", panel.id, panel.cells[0].id, block.id); - var extrainfo = ""; - if (block.name == "Page Body") - { - cell.css += "height:100%;"; - text.css = "height:100%;"; - extrainfo = "
    Instead, add a custom block to your page by clicking the dashboard icon above and choosing the Layout option."; - } - text.text = "

    Shadow Template - Page Block: " + block.name.Replace("Page ","") + "

    " + - "
    Because this page is a Shadow Template, you cannot add components to the page-level block \"" + block.name.Replace("Page ", "") + "\"." + extrainfo + "
    " + - "
    "; - var comp = loadComponent(text, panel, panel.cells[0], ref panels, true, false); - var pos = text.position[4]; - pos.widthType = Component.enumWidthType.percent; - pos.width = 100; - text.position[4] = pos; - text.isTemporary = true; - panel.isDisabled = true; - panel.cells[0] = cell; - } - htm.Append(panel.Render()); - } - scaffold.Data[area.name] = htm.ToString(); - } - return scaffold.Render(); - } - } - - public string Render() - { - //setup page to render layout, panels, and components (and editor UI too if necessary) - var scaffold = new Scaffold(S, "/core/page.html"); - var useSVG = false; - - //setup base javascript files - S.javascriptFiles.Add("platform", "/js/platform.js"); - if (isEditable == true) - { - S.javascriptFiles.Add("editor", "/js/editor.js"); - } - - //render page layout (panels & components) - scaffold.Data["body"] = renderLayout(); - - //setup scaffold variables - scaffold.Data["favicon"] = "/images/favicon.gif"; - scaffold.Data["body-class"] = GetBrowserType() + (S.User.isMobile ? (S.User.isTablet ? " s-tablet" : " s-mobile") : " s-hd"); - scaffold.Data["website-css"] = "/content/websites/" + websiteId + "/website.css?v=" + S.Server.Version; - scaffold.Data["theme-css"] = "/css/themes/" + websiteTheme + "/theme.css"; - - //setup color scheme - if(pageTitle == "Dashboard") - { - //load dashboard color scheme - scaffold.Data["has-colors"] = "1"; - scaffold.Data["colors-css"] = "/css/colors/dashboard/" + dashboardColors + ".css"; - useSVG = true; - } - else - { - //load website color scheme (if desired) - if(websiteColors != "") - { - scaffold.Data["has-colors"] = "1"; - scaffold.Data["colors-css"] = "/css/colors/websites/" + websiteColors + ".css"; - } - if (isEditable == true) - { - //load Editor UI - scaffold.Data["has-editor"] = "1"; - scaffold.Data["editor-colors-css"] = "/css/colors/editor/" + editorColors + ".css"; - scaffold.Data["editor"] = Editor.UI.Render(S, this); - useSVG = true; - } - } - if(useSVG == true) - { - scaffold.Data["svg-icons"] = - S.Server.LoadFileFromCache("/Content/themes/" + websiteTheme + "/icons.svg", true) + - S.Server.LoadFileFromCache("/Content/themes/" + websiteTheme + "/loader.svg", true); - } - - if(isEditable == true) - { - //show grid at left & right sides of page body - scaffold.Data["body-sides"] = "
    "; - } - - //setup facebook meta tags - scaffold.Data["facebook"] = ""; - if (pagePhoto != "") - { - scaffold.Data["facebook"] = ""; - } - scaffold.Data["facebook"] += "" + - ""; - - //setup inline CSS - scaffold.Data["head-css"] = S.css.renderCss(); - - //setup CSS files - scaffold.Data["css-files"] = S.cssFiles.renderCssFiles(); - - //setup inline javascript - scaffold.Data["scripts"] = S.javascriptFiles.renderJavascriptFiles(true, S.javascript.renderJavascript()); - - //setup component-specific html - scaffold.Data["html"] = S.html.renderHtml(); - - //finally, render web page - return scaffold.Render(); - } - #endregion - - #region "Blocks" - public string GetBlockFilePath(string blockid = "", string specialFolder = "", string blockType = "") - { - - var path = "/Content/websites/" + - websiteId + "/blocks/" + blockid + "/" + - (specialFolder != "" ? specialFolder + "/" : "") + - (blockType != "" ? blockType + "_" : "") + "block.json"; - return path; - } - - public void loadBlocks(structPage page, bool fromCache = true) - { - if (page.areas.Count > 0) - { - foreach (var area in page.areas) - { - //load blocks associated with this page - for (var x = 0; x < area.blocks.Count; x++) - { - if (area.blocks[x].isPage == false && area.blocks[x].id.IndexOf("page_") < 0) - { - //external block - area.blocks[x] = loadBlock(area.blocks[x].id, fromCache); - } - } - } - } - } - - public structBlock loadBlock(string blockid, bool fromCache = true) - { - var block = new structBlock(); - var filename = GetBlockFilePath(blockid, editFolder, editType); - var file = S.Server.LoadFileFromCache(filename, false, !fromCache); - if (file != "") - { - //block = (structBlock)S.Util.Serializer.DecompressObject(file); - block = (structBlock)S.Util.Serializer.ReadObject(file, typeof(structBlock)); - } - else - { - //initialize new block & save to file - var sqlEditor = new SqlQueries.Editor(S); - var reader = sqlEditor.GetBlock(int.Parse(blockid)); - if (reader.Read()) - { - block.components = new List(); - block.id = blockid; - block.name = reader.Get("name"); - SaveBlock(block, true); - } - } - return block; - } - - public List GetBlocks(structPage page) - { - var blocks = new List(); - foreach(var area in page.areas) - { - foreach(var block in area.blocks) - { - blocks.Add(block); - } - } - return blocks; - } - - /// - /// Removes references to components from all custom blocks, - /// leaving page-level blocks untouched - /// - /// - /// - public void StripCustomBlocks(structPage page) - { - for(var x = 0; x < page.areas.Count; x++) - { - for(var y = 0; y < page.areas[x].blocks.Count; y++) - { - if(page.areas[x].blocks[y].isPage == false) - { - //remove components from custom (non-page-level) blocks - var block = page.areas[x].blocks[y]; - block.components = new List(); - page.areas[x].blocks[y] = block; - } - else - { - //remove unwanted (temporary) components - var block = page.areas[x].blocks[y]; - var comps = new List(); - for (var z = 0; z < block.components.Count; z++) - { - if (!block.components[z].isTemporary) - { - comps.Add(block.components[z]); - } - } - block.components = comps; - page.areas[x].blocks[y] = block; - } - } - } - } - - public void UpdateBlock(ref structPage page, structBlock block) - { - var found = false; - for (var x = 0; x < page.areas.Count; x++) - { - for (var y = 0; y < page.areas[x].blocks.Count; y++) - { - if (page.areas[x].blocks[y].name == block.name) - { - page.areas[x].blocks[y] = block; - found = true; - break; - } - } - if (found) { break; } - } - } - #endregion - - #region "Panels" - - public Panel CreatePanel(string id, string name, string area, string blockId, string blockName = "", bool isPageLevelBlock = false) - { - var panel = new Panel(S, this, id, name, S.Util.Str.Capitalize(area.Replace("-", " ")), blockId, blockName, isPageLevelBlock); - panel.cells = new List(); - panel.arrangement = new Panel.structArrangement(); - return panel; - } - - /// - /// Find a specific panel instance based on the given panel id - /// - /// - /// - /// - public Panel GetPanelById(List panels, string id) - { - //traverse through the hierarchy of panels & components until we find the correct panel - foreach(var panel in panels) - { - if(panel.id == id) { return panel; } - foreach(var cell in panel.cells) - { - if(cell.components.Count > 0) - { - foreach(var component in cell.components) - { - if(component.panels != null) - { - var p = GetPanelById(component.panels, id); - if(p != null) { return p; } - } - } - } - } - } - return null; - } - - /// - /// Get a list of all panels loaded on the page - /// - /// - /// - public List GetAllPanels(List panels) - { - var list = new List(); - foreach (var panel in panels) - { - list.Add(panel); - //get a list of cells within each panel - foreach (var cell in panel.cells) - { - if (cell.components.Count > 0) - { - //get a list of components within each panel cell - foreach (var component in cell.components) - { - if (component.panels != null) - { - //get a list of panels within each component - var p = GetAllPanels(component.panels); - if (p != null) { - foreach(var q in p) - { - list.Add(q); - } - } - } - } - } - } - } - return list; - } - #endregion - - #region "Components" - - /// - /// Initializes a component & sets up default properties if they don't already exist - /// - /// - /// - public Component loadComponent(Component component, Panel panel, Panel.structCell cell, ref List panels, bool isCreated = false, bool noExecution = false) - { - if (component.id == "") - { - //component is new - component.id = S.Util.Str.CreateID(); - } - component.Page = this; - component.blockId = panel.blockId; - component.panelId = panel.id; - component.panelCellId = cell.id; - - //add component to panel cell - var cellIndex = panel.cells.FindIndex(a => a.id == cell.id); - if (cellIndex < 0) { cellIndex = 0; } - var compIndex = panel.cells[cellIndex].components.Count; - panel.cells[cellIndex].components.Add(component); - - //initialize new component - panel.cells[cellIndex].components[compIndex].Initialize(S, this); - - if (!noExecution) - { - //call component Create() function if this is a newly created component (in the Editor by drag & drop) - if (isCreated == true) { panel.cells[cellIndex].components[compIndex].Create(); } - - //call component Load() function - panel.cells[cellIndex].components[compIndex].Load(); - panel.cells[cellIndex].components[compIndex].isLoaded = true; - } - return panel.cells[cellIndex].components[compIndex]; - } - - - public void loadComponents(structBlock block, Panel blockPanel, ref List panels, bool noExecution = false) - { - this.panels = panels; - foreach (var comp in block.components) - { - if (comp.panelId == blockPanel.id) - { - //load component into layout panel - loadComponent(comp, blockPanel, blockPanel.cells[0], ref panels, false, noExecution); - } - else - { - //load component into component panel instead - var p = GetPanelById(panels, comp.panelId); - foreach (var cell in p.cells) - { - if (cell.id == comp.panelCellId) - { - loadComponent(comp, p, cell, ref panels, false, noExecution); - } - } - } - //check for panels within component and add them to panel list - if(comp.panels != null) - { - for(var x = 0; x < comp.panels.Count; x++) - { - panels.Add(comp.panels[x]); - } - } - } - } - - /// - /// Create a new component on the page (from within the Editor) - /// - /// name of the component class within the Websilk.Components namespace - /// instance of the panel which contains the cell instance - /// panel cell instance to load the component into - /// - public Component createNewComponent(string name, string panelId, string cellId, string blockId) - { - //first, find component class by name - string className = "Websilk.Components." + name; - Type type = Type.GetType(className); - var component = (Component)Activator.CreateInstance(type); - component.id = S.Util.Str.CreateID(); - component.blockId = blockId; - component.panelId = panelId; - component.panelCellId = cellId; - component.Initialize(S, this); - component.Create(); - component.Load(); - component.isLoaded = true; - - return component; - } - - /// - /// Get a list of all the components loaded on the page - /// - /// - /// - public List GetAllComponents(List panels, bool isLoadedOnly = false) - { - var list = new List(); - foreach(var p in panels) - { - foreach(var cell in p.cells) - { - foreach(var c in cell.components) - { - if(isLoadedOnly == false) - { - list.Add(c); - } - else if(c.isLoaded == true) - { - list.Add(c); - } - } - } - } - return list; - } - #endregion - - #region "Save" - public Utility.IgnorableContractResolver IgnorablePagePropertiesResolver(bool ignore = true) - { - //create contract resolver that removes ignored properties from an object before serializing the object - var contractResolver = new Utility.IgnorableContractResolver(); - if(ignore == true) - { - contractResolver.Ignore(typeof(structBlock), "changed"); - } - return contractResolver; - } - - public void SavePage(structPage page, bool saveToDisk = true, bool saveToHistory = false) - { - if (hasPageHistory()) { return; } //cannot save a historical page - - //strip components from custom blocks - StripCustomBlocks(page); - - //first, save shadow template (if available) - if(page.shadowId > 0) - { - SaveShadowTemplate(ref page, saveToDisk); - } - - //next, save page - var path = GetPageFilePath(page.pageId, editFolder, editType); - //var serialize = S.Util.Serializer.CompressObjectToString(page); - var serialize = S.Util.Serializer.WriteObjectToString(page, Formatting.None, TypeNameHandling.Auto, IgnorablePagePropertiesResolver(saveToDisk)); - S.Server.SaveToCache(path, serialize); - if (saveToDisk == true) - { - //schedule save to file system - S.Server.ScheduleEveryMinute.ScheduleSaveFile(S.Server.MapPath(path), serialize); - } - - if(saveToHistory == true) - { - //save page to history on file system - var date = DateTime.Now; - var history_file = S.Server.MapPath(GetPageHistoryPath(page.pageId, date)); - var history_path = S.Util.Str.getFolder(history_file); - var oldfile = ""; - if (!Directory.Exists(history_path)) - { - Directory.CreateDirectory(history_path); - } - else - { - //check last history point to see if there are any changes to the file - var dir = new DirectoryInfo(history_path); - var files = dir.GetFiles(); - if(files.Length > 0) - { - var last_history = files.OrderBy(f => f.Name).Last().FullName; - oldfile = File.ReadAllText(last_history); - } - } - - if(serialize != oldfile) - { - File.WriteAllText(history_file, serialize); - sql.CreatePageHistory(websiteId, page.pageId, S.User.userId, date); - } - //S.Server.ScheduleEveryMinute.ScheduleSaveFile(S.Server.MapPath(GetPageHistoryPath(page.pageId, DateTime.Now)), serialize); - } - } - - public void SaveShadowTemplate(ref structPage oldpage, bool saveToDisk = true, bool saveToHistory = false) - { - //move shadow template blocks to a new page object - var page = new structPage() - { - pageId = oldpage.shadowId, - areas = new List(), - shadowId = 0 - }; - - var newpage = new structPage() - { - pageId = oldpage.pageId, - shadowId = oldpage.shadowId, - areas = new List() - }; - - foreach(var area in oldpage.areas) - { - page.areas.Add(new structArea() - { - name = area.name, - blocks = new List() - }); - newpage.areas.Add(new structArea() - { - name = area.name, - blocks = new List() - }); - foreach(var block in area.blocks) - { - if(block.isPage == true) - { - //add block to new page object - newpage.areas[newpage.areas.Count - 1].blocks.Add(block); - - //add page-level block to shadow template object (to remember the order in which the page-level blocks are loaded) - var b = new structBlock() - { - id = block.id, - isPage = true, - name = block.name, - components = new List(), - changed = block.changed - }; - page.areas[page.areas.Count - 1].blocks.Add(b); - } - else - { - //add block to shadow template object - page.areas[page.areas.Count - 1].blocks.Add(block); - } - } - } - - //replace old page object with new page object (without custom blocks) - oldpage = newpage; - - //finally, save shadow template page - SavePage(page, saveToDisk, saveToHistory); - } - - public void SaveBlock(structBlock block, bool saveToDisk = true, bool saveToHistory = false) - { - if (hasPageHistory()) { return; } //cannot save a historical page - - var path = GetBlockFilePath(block.id, editFolder, editType); - - //serialize block object - //var serialize = S.Util.Serializer.CompressObjectToString(block); - var serialize = S.Util.Serializer.WriteObjectToString(block, Formatting.None, TypeNameHandling.Auto, IgnorablePagePropertiesResolver(saveToDisk)); - S.Server.SaveToCache(path, serialize); - if (saveToDisk == true) - { - //schedule save block to file system - S.Server.ScheduleEveryMinute.ScheduleSaveFile(S.Server.MapPath(path), serialize); - } - - if (saveToHistory == true) - { - //save block to history on file system - var sqlEditor = new SqlQueries.Editor(S); - var date = DateTime.Now; - var history_file = S.Server.MapPath(GetBlockHistoryPath(block.id, date)); - var history_path = S.Util.Str.getFolder(history_file); - var oldfile = ""; - if (!Directory.Exists(history_path)) - { - Directory.CreateDirectory(history_path); - } - else - { - //check last history point to see if there are any changes to the file - var dir = new DirectoryInfo(history_path); - var files = dir.GetFiles(); - if (files.Length > 0) - { - var last_history = files.OrderBy(f => f.Name).Last().FullName; - oldfile = File.ReadAllText(last_history); - } - } - if (serialize != oldfile) - { - File.WriteAllText(history_file, serialize); - sqlEditor.CreateBlockHistory(websiteId, int.Parse(block.id), S.User.userId, date); - } - - //sql.CreatePageHistory - //S.Server.ScheduleEveryMinute.ScheduleSaveFile(S.Server.MapPath(GetBlockHistoryPath(block.id, DateTime.Now)), serialize); - } - } - #endregion - - #region "History" - - /// - /// Relative path to a historical page file - /// - /// - /// historical date to load - /// - public string GetPageHistoryPath(int pageId, DateTime date) - { - return GetPageFilePath(pageId, "history/" + date.ToString("yyyy"), date.ToString("MM_dd_H_mm")); - } - - public string GetBlockHistoryPath(string blockId, DateTime date) - { - return GetBlockFilePath(blockId, "history/" + date.ToString("yyyy"), date.ToString("MM_dd_H_mm")); - } - - public bool hasPageHistory() - { - return pageHistory.Year > DateTime.Now.Year - 99; - } - - #endregion - - #region "Ace Editor" - public void loadAce(AceMode mode, AceTheme theme) - { - var acemode = ""; - var acetheme = ""; - S.javascript.Add("ace", "S.ace.load('" + acemode + "','" + acetheme + "')", false); - } - #endregion - - #region "Utility" - public structUrl parseUrl(string url) - { - var r = new structUrl(); - var path = url; - if (path.Substring(0, 1) == "/") { path = path.Substring(1); } - - if (path != "") - { - //parse path (e.g. /path/to/page ) - var arr = path.Split(new char[] { '+' }); - r.path = arr[0].Replace("-", " "); - if (arr.Length > 1) - { - //get query after path (e.g. /path/to/page+query+id+7 ) - r.query = path.Split(new char[] { '+' }, 2)[1].Split(new char[] { '+' }); - } - } - else - { - r.path = "home"; - } - - //get host - r.host = S.Request.Host.ToString(); - if (r.host.Substring(r.host.Length - 1) != "/") { r.host += "/"; } - - return r; - } - - public string GetDomainName(string url) - { - string[] tmpDomain = GetSubDomainAndDomain(url).Split(new char[] { '.' }); - if (tmpDomain.Length == 2) - { - return url; - } - else if (tmpDomain.Length >= 3) - { - if (tmpDomain[tmpDomain.Length - 2] == "co") - { - return tmpDomain[tmpDomain.Length - 3] + "." + - tmpDomain[tmpDomain.Length - 2] + "." + - tmpDomain[tmpDomain.Length - 1]; - } - return tmpDomain[tmpDomain.Length - 2] + "." + tmpDomain[tmpDomain.Length - 1]; - } - return url; - } - - public string GetSubDomainAndDomain(string url) - { - string strDomain = url.Replace("http://", "").Replace("https://", "").Replace("www.", "").Split('/')[0]; - if (strDomain.IndexOf("localhost") >= 0 | strDomain.IndexOf("192.168") >= 0) - { - strDomain = "websilk.com"; - } - return strDomain.Replace("/", ""); - } - - public string[] GetDomainParts(string url) - { - string subdomain = GetSubDomainAndDomain(url); - string domain = GetDomainName(subdomain); - string sub = subdomain.Replace("." + domain, "").Replace(domain, ""); - if (sub != "") - { - return new string[] { sub, subdomain.Replace(sub, "") }; - } - return new string[] { "", subdomain }; - } - - public structDomain GetDomain(string url) - { - var domain = GetDomainParts(url); - var d = new structDomain(); - d.domain = domain[1]; - d.subdomain = domain[0]; - if(url.IndexOf("https://") >= 0) - { - d.protocol = enumDomainProtocols.https; - } - else if(url.IndexOf("http://") >= 0) - { - d.protocol = enumDomainProtocols.http; - } - return d; - } - - public string GetBrowserType() - { - string browser = S.Request.Headers["User-Agent"].ToString().ToLower(); - int major = 11; - int minor = 0; - if (browser.IndexOf("chrome") >= 0) - { - if (major > 10) - { - return "chrome"; - } - else - { - return "legacy-chrome"; - } - } - else if (browser.IndexOf("firefox") >= 0) - { - if (major == 3 & minor >= 6) - { - return "firefox"; - } - else if (major > 3) - { - return "firefox"; - } - else - { - return "legacy-firefox"; - } - } - else if (browser.IndexOf("safari") >= 0) - { - if (browser.IndexOf("iphone") >= 0) - { - return "iphone"; - } - else if (browser.IndexOf("ipad") >= 0) - { - return "ipad"; - } - else if (major <= 4) - { - return "legacy-safari"; - } - return "safari"; - } - return ""; - } - #endregion - } - - public class StaticPage - { - protected Core S; - protected Page page; - protected Scaffold scaffold; - - public StaticPage(Core WebsilkCore, Page page) - { - S = WebsilkCore; - this.page = page; - } - - /// - /// Executed when the page is being loaded - /// - public virtual void Load() { } - - /// - /// Executed when loading a sub page - /// - /// - /// - public virtual Services.Inject LoadSubPage(string path) { return new Services.Inject(); } - - public string Render() - { - return scaffold.Render(); - } - } - -#region "Ace Editor Definitions" - - public enum AceExtension - { - beautify = 0, - } - - public enum AceMode - { - cSharp = 0, - css = 1, - html = 2, - json = 3, - less = 4, - markdown = 5, - xml = 6 - } - - public enum AceTheme - { - ambiance = 0, - chaos = 1, - chrome = 2, - clouds = 3, - clouds_midnight = 4, - cobalt = 5, - crimson_editor = 6, - dawn = 7, - dreamweaver = 8, - eclipse = 9, - github = 10, - gob = 11, - gruvbox = 12, - idle_fingers = 13, - iplastic = 14, - katzenmilch = 15, - kr_theme = 16, - kuroir = 17, - merbivore = 18, - merbivore_soft = 19, - mono_industrial = 20, - monokai = 21, - pastel_on_dark = 22, - solarized_dark = 23, - solarized_light = 24, - sqlserver = 25, - terminal = 26, - textmate = 27, - tomorrow = 28, - tomorrrow_night = 29, - tomorrow_night_blue = 30, - tomorrow_night_bright = 31, - tomorrow_night_eighties = 32, - twilight = 33, - vibrant_ink = 34, - xcode = 35 - } -#endregion -} diff --git a/App/Core/Panel.cs b/App/Core/Panel.cs deleted file mode 100644 index 7be7a6e..0000000 --- a/App/Core/Panel.cs +++ /dev/null @@ -1,211 +0,0 @@ -using System.Text; -using System.Collections.Generic; -using Newtonsoft.Json; -using ProtoBuf; - -namespace Websilk -{ - [ProtoContract] - public class Panel - { - //arrangement settings for panel cells ////////////////////////////////// - public enum enumArrangeType - { - none = -1, - grid = 0, - rows = 1, - slideshow = 2, - book = 3 - } - - [ProtoContract] - public struct structArrangeGrid - { - - } - - [ProtoContract] - public struct structArrangeRows - { - - } - - [ProtoContract] - public struct structArrangeSlideshow - { - - } - - [ProtoContract] - public struct structArrangeBook - { - - } - - [ProtoContract] - public struct structArrangement - { - [ProtoMember(1)] - public enumArrangeType type; - [ProtoMember(2)] - public structCellGrid grid; - [ProtoMember(3)] - public structCellRows rows; - [ProtoMember(4)] - public structCellSlideshow slideshow; - [ProtoMember(5)] - public structCellBook book; - } - - //settings for a panel cell ////////////////////////////////// - - [ProtoContract] - public struct structCellGrid - { - - } - - [ProtoContract] - public struct structCellRows - { - - } - - [ProtoContract] - public struct structCellSlideshow - { - - } - - [ProtoContract] - public struct structCellBook - { - - } - - [ProtoContract] - public struct structCell - { - [ProtoMember(1)] - public string id; - [ProtoMember(2)] - public string head; - [ProtoMember(3)] - public string foot; - [ProtoMember(4)] - public string css; - [ProtoMember(5)] - public bool overflow; - [ProtoMember(6)] - [JsonIgnore] - public List components; - } - - //panel properties ///////////////// - [JsonIgnore] - private Core S; - [JsonIgnore] - private Page page; - - [ProtoMember(1)] - public string name = ""; //a human-readable name for reference only - [ProtoMember(2)] - public string id = ""; //a unique ID - [ProtoMember(3)] - public string blockId = ""; - [ProtoMember(4)] - public bool isPageBlock = false; - [ProtoMember(5)] - public string areaName = ""; //name of layout area this panel belongs to - [ProtoMember(6)] - public string blockName = ""; //name of block section to load into - - [JsonIgnore] - public bool hasSiblings = false; - [JsonIgnore] - public bool isDisabled = false; //cannot drag & drop components into panel (page editor only) - - [ProtoMember(7)] - public structArrangement arrangement; - [ProtoMember(8)] - public List cells; - - [JsonIgnore] - public string head = ""; - [JsonIgnore] - public string foot = ""; - - public Panel(Core WebsilkCore, Page page, string Id = "", string Name = "", string AreaName = "", string BlockId = "", string BlockName = "", bool IsPageBlock = false) - { - S = WebsilkCore; - id = Id; - name = Name; - areaName = AreaName; - blockId = BlockId; - blockName = BlockName; - isPageBlock = IsPageBlock; - this.page = page; - } - - public void AddCell(string cellId = "") - { - //set up settings for a new cell - var cell = new structCell(); - cell.components = new List(); - if(cellId != "") - { - cell.id = cellId; - }else - { - cell.id = S.Util.Str.CreateID(); - } - cells.Add(cell); - } - - public string Render() - { - //render panel, its cells, and all components within each cell - var div = new Utility.DOM.Element("div"); - var htm = new StringBuilder(); - var comps = new StringBuilder(); - foreach(var cell in cells) - { - //render all components for a cell - comps = new StringBuilder(); - foreach(var component in cell.components) - { - comps.Append(component.Render()); - } - - //render cell - var divcell = new Utility.DOM.Element("div"); - divcell.Classes.Add("is-cell"); - if (isDisabled) { divcell.Classes.Add("is-disabled"); } - if(cell.css != "") { divcell.Attributes.Add("style",cell.css); } - divcell.id = "cell_" + cell.id.Replace("-", "_").Replace(" ","_"); - divcell.innerHTML = cell.head + comps.ToString() + cell.foot; - htm.Append(divcell.Render()); - } - - div.Classes.Add("is-panel"); - if(blockName != "") { - div.Classes.Add("is-block"); - if (page.isEditable) - { - div.Attributes.Add("data-area", areaName); - div.Attributes.Add("data-block", blockName); - div.Attributes.Add("data-block-id", blockId); - if(isPageBlock == true) - { - div.Attributes.Add("data-page-level", "true"); - } - } - } - if (hasSiblings) { div.Classes.Add("has-siblings"); } - div.id = "panel_" + id.Replace("-", "_").Replace(" ", "_"); - div.innerHTML = head + htm.ToString() + foot; - - return div.Render(); - } - } -} diff --git a/App/Core/README.md b/App/Core/README.md deleted file mode 100644 index a4d4716..0000000 --- a/App/Core/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Websilk -A powerful web development platform built with ASP.net Core - -### The App/Core Folder -This folder is reserved for all the core features Websilk requires to maintain a user's session, cache objects on the server, access an SQL database, and render the various components & applications on a web page. - -#### App.cs -A `Websilk.Service` class used to execute Web API calls from a web page, such as `api/App/Url`. - -#### Component.cs -This is the base class used for all content on a web page, such as text, photos, panels, lists, videos, and menus. - -#### Core.cs -Nearly every class within Websilk has access to an instance of `Websilk.Core` as a global variable named `S`, where the following classes are accessable: `S.Server`, `S.Session`, `S.Sql`, `S.User`, `S.Util`, `S.Context`, `S.Request`, and `S.Response` - -#### Elements.cs -Some components utilize elements such as buttons, text boxes, lists, and panels, which are basically blocks of HTML. - -Instead of hand-writing an HTML button like `
    Submit
    ` or `` every where the component uses a button for example, developers should let Websilk manage these complex elements within a **theme**, such as */App/Content/themes/default/elements/button.html*. Then, the component is able to load a button element via `Websilk.Elements.Load(ElementType.Button, 'outline')` for example, which will load an HTML button styled with a CSS *outline*. The `button.html` file may contain many styles of buttons, and in this example, one of them is named *outline*. - -Finally, when the user alters the properties for a component (when editing their web page in the web browser), they'll be able to select a button style from a list of styles defined within the *button.html* theme file. This allows the user to truly customize the components on their page without having to write custom CSS to change the style of the various elements on the page. - -#### Page.cs -Every page request uses this class to load information about a web page from the database, load the contents of the page, and render the layers of components & panels as HTML. - -#### Panel.cs -Every component on a web page is loaded into a panel, which is basically a `
    ` element. Web pages load a *layout* from the website's theme, such as */App/Content/themes/default/theme.html*, and the user is able to drag & drop components into panels defined by the theme layout. - -#### Scaffold.cs -A string parsing class that essentially replaces mustache variables, such as `{{content}}` with data. It can also show or hide blocks of content, such as `{{has-button}}
    My Button
    {{/has-button}}`. It is mainly used to load & parse HTML template files. - -#### Server.cs -This class is initialized when the Kestrel web server first loads and `Startup.cs` begins listening to the asynchronous `Run()` task. Every page request & Web API call will have access to the exact same instance of the Server class, where many different objects & files will be cached to speed up page load time. Also, the Server class can tell you where on your local hard drive your web application is running from by calling `S.Server.MapPath('/my/path')` - -#### Service.cs -A base class used to handle various types of Web API calls. - -The `PageRequest` class sends a JSON array of components to render onto a web page that is already loaded in the web browser. - -The `Inject` class will load raw HTML into a specified DOM element onto a web page that is already loaded in the web browser. - -The `WebRequest` class will simply return raw text in a specified content type, such as 'text/html'. - -NOTE: The Form property is a Dictionary of key/value pairs that were sent with the request POST. Also, the Files property is a collection of files (if any) that were uploaded with the `multipart/form-data` request POST. - -#### Sql.cs -One database class to rule them all. This class is used to connect to an Sql database, execute Sql queries and provide a simple an flexible way to access the rows of data returned from Sql queries. - -#### User.cs -All the functionality for managing the current user, such as logging in & out of their account and accessing their security clearance for various websites & dashboard features. \ No newline at end of file diff --git a/App/Core/Resources.cs b/App/Core/Resources.cs deleted file mode 100644 index 691812f..0000000 --- a/App/Core/Resources.cs +++ /dev/null @@ -1,159 +0,0 @@ -using System; -using System.Text; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Websilk -{ - - public class WebResources - { - //used to collect javascript code & files, as well as CSS styles - private Core S; - private Dictionary _resources; - public WebResources(Core WebsilkCore) - { - S = WebsilkCore; - } - - public void Add(string name, string resource, bool joinDuplicates = true, bool haveDuplicates = false) - { - if (_resources == null) { _resources = new Dictionary(); } - if (!_resources.ContainsKey(name)) { _resources.Add(name, resource); } - else { - if (joinDuplicates == false) - { - if (haveDuplicates) - { - var i = 1; - while (i < 100) - { - if (!_resources.ContainsKey(name + i)) { _resources.Add(name + i, resource); break; } - i++; - } - } - } - else { - _resources[name] += "\n\n" + resource; - } - } - } - - public Dictionary Resources - { - get { return _resources; } - } - - public string renderJavascript(bool withTags = true) - { - if (_resources == null) { return ""; } - var js = new StringBuilder(); - if (withTags == true) - { - foreach (var item in _resources) - { - js.Append(""); - } - } - else - { - foreach (var item in _resources) - { - js.Append(item.Value + "\n\n"); - } - } - - return js.ToString(); - } - - /// - /// render javascript files along with any asynchronous javascript after all files are finished loading - /// - /// - /// the raw Javascript (with or without tags) to execute after all JS files are loaded - /// - public string renderJavascriptFiles(bool withTags = true, string syncJs = "") - { - if (_resources == null) { return syncJs; } - var js = new StringBuilder(); - if (withTags == true) - { - foreach (var item in _resources) - { - js.Append("\n"); - } - if (syncJs != "") { js.Append(syncJs); } - } - else - { - foreach (var item in _resources) - { - js.Append("S.util.js.load('" + item.Value + "', 'jsf_" + item.Key.Replace(" ", "_") + "',function(){"); - } - js.Append(syncJs); - for (var x = 0; x < _resources.Count; x++) - { - js.Append("});"); - } - } - return js.ToString(); - } - - public string renderCss(bool withTags = true) - { - if (_resources == null) { return ""; } - var css = new StringBuilder(); - if (withTags == true) - { - foreach (var item in _resources) - { - css.Append("\n"); - } - } - else - { - foreach (var item in _resources) - { - css.Append(item.Value + "\n"); - } - } - - return css.ToString(); - } - - public string renderCssFiles(bool withTags = true) - { - if (_resources == null) { return ""; } - var css = new StringBuilder(); - if (withTags == true) - { - foreach (var item in _resources) - { - css.Append("\n"); - } - } - else - { - foreach (var item in _resources) - { - css.Append("S.util.css.load('" + item.Value + "', 'css_" + item.Key.Replace(" ", "_") + "');\n"); - } - } - - return css.ToString(); - } - - public string renderHtml() - { - if (_resources == null) { return ""; } - var html = new StringBuilder(); - foreach (var item in _resources) - { - html.Append(item.Value + "\n"); - } - - return html.ToString(); - } - } -} diff --git a/App/Core/Scheduler.cs b/App/Core/Scheduler.cs deleted file mode 100644 index c29ffa5..0000000 --- a/App/Core/Scheduler.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; - -using Chroniton; -using Chroniton.Jobs; -using Chroniton.Schedules; - -namespace Websilk -{ - public class Scheduler - { - //Scheduling service (like CRON jobs) - private Core S; - private Singularity singularity = Singularity.Instance; - private EveryXTimeSchedule schedule; - private SimpleParameterizedJob job; - private IScheduledJob scheduledJob; - - public Scheduler(){ } - - public void Start(int seconds, Action method) { - if (singularity.IsStarted) { return; } - job = new SimpleParameterizedJob((parameter, scheduledTime) => - { - //job execution - method(); - }); - - //set up job schedule (every 3 seconds) - schedule = new EveryXTimeSchedule(TimeSpan.FromSeconds(seconds)); - scheduledJob = singularity.ScheduleParameterizedJob(schedule, job, null, true); - - //run job - singularity.Start(); - } - - public void Stop() - { - try { singularity.StopScheduledJob(scheduledJob); singularity.Stop(); } catch (Exception) { } - } - } -} diff --git a/App/Core/Service.cs b/App/Core/Service.cs deleted file mode 100644 index f98663f..0000000 --- a/App/Core/Service.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System.Collections.Generic; -using Microsoft.AspNetCore.Http; -using Newtonsoft.Json; - -namespace Websilk.Services -{ - public enum enumInjectTypes - { - replace = 0, - append = 1, - before = 2, - after = 3, - beforeNode = 4, - afterNode = 5 - } - - /// - /// Used to load a single component onto the page - /// - public class PageComponent - { - public string panelClassId = ""; - public string id = ""; - public string html = ""; - public string js = ""; - public string css = ""; - [JsonIgnore] - public Component Component; - } - - /// - /// Used to load a page and its components, removing any unused components that were previously loaded - /// - public class PageRequest - { - public string url = ""; - public string pageTitle = ""; - public List components = new List(); - public List @remove = new List(); - public string js = ""; - public string css = ""; - public string editor = ""; - public bool already = false; - public int pageId = 0; - } - - /// - /// Used to load HTML, CSS, and Javascript directly onto the page by either appending to or replacing a DOM element - /// - public class Inject - { - public string element = ""; - public string html = ""; - public string js = ""; - public string css = ""; - public string cssId = ""; - public string remove = ""; - public string node = ""; - public string newId = ""; - public enumInjectTypes inject = 0; - } - - /// - /// Used to load a raw HTML web page as a service (typically not via AJAX) - /// - public class WebRequest - { - public string html = ""; - public string contentType = "text/html"; - } -} - -namespace Websilk -{ - public class Service - { - protected Core S; - public int pageId = 0; - public Page page; - public Dictionary Form = new Dictionary(); - public IFormFileCollection Files; - - public Service(Core WebsilkCore) { - S = WebsilkCore; - } - - protected Services.Inject lostInject() - { - //if session is lost, reload the page - var response = new Services.Inject(); - response.js = "S.lostSession();"; - return response; - } - - protected Services.PageRequest lostPageRequest() - { - //if session is lost, reload the page - var response = new Services.PageRequest(); - response.js = "S.lostSession();"; - return response; - } - - /// - /// Load an instance of the currently loaded Page - /// - protected void GetPage(bool pageInfo = true) - { - if(page == null) - { - page = new Page(S); - if (pageInfo) { page.getPageInfo(pageId); } - } - } - - protected Component GetComponent(string id) - { - var panels = page.GetAllPanels(); - var components = page.GetAllComponents(); - - } - - protected string RenderJs() - { - return S.javascriptFiles.renderJavascriptFiles(false, S.javascript.renderJavascript(false)); - } - - protected string RenderCss() - { - return S.css.renderCss(false); - } - } -} diff --git a/App/Core/Sql.cs b/App/Core/Sql.cs deleted file mode 100644 index d4ce4ae..0000000 --- a/App/Core/Sql.cs +++ /dev/null @@ -1,351 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data.SqlClient; -using System.Threading.Tasks; -using Newtonsoft.Json; - -namespace Websilk -{ - public enum enumSqlDataTypes - { - SqlClient = 0, MySql = 1 - } - - public class Sql - { - private Server Server; - private Utility.Util Util; - private SqlConnection conn = new SqlConnection(); - private SqlCommand cmd = new SqlCommand(); - private bool _started = false; - - public SqlDataReader reader; - public enumSqlDataTypes dataType; - - #region "SqlServer Engine" - public Sql(Server server, Utility.Util util) - { - Server = server; - Util = util; - } - - private void Start() - { - if (_started == true) { return; } - - string active = Server.sqlActive; - - switch (active) - { - case "SqlServer": - case "SqlServerTrusted": - dataType = enumSqlDataTypes.SqlClient; - break; - - case "MySql": - dataType = enumSqlDataTypes.MySql; - break; - } - - conn.ConnectionString = Server.sqlConnection; - conn.Open(); - cmd.Connection = conn; - cmd.CommandType = System.Data.CommandType.Text; - _started = true; - } - - public void Close() - { - if (_started == true) { conn.Close(); } - } - - public SqlDataReader ExecuteReader(string sql, List parameters = null) - { - if (_started == false) { Start(); } - if(conn.State == System.Data.ConnectionState.Closed) { conn.Open(); } - cmd.Parameters.Clear(); - cmd.CommandText = sql; - try - { - if (parameters != null) { parameters.ForEach(a => cmd.Parameters.Add(a)); } - return cmd.ExecuteReader(); - conn.Close(); - } - catch (Exception ex) - { - throw ex; - } - } - - public void ExecuteNonQuery(string sql, List parameters = null) - { - if (_started == false) { Start(); } - if (conn.State == System.Data.ConnectionState.Closed) { conn.Open(); } - cmd.Parameters.Clear(); - cmd.CommandText = sql; - try - { - if (parameters != null) { parameters.ForEach(a => cmd.Parameters.Add(a)); } - cmd.ExecuteNonQuery(); - conn.Close(); - } - catch (Exception ex) - { - throw ex; - } - } - - public object ExecuteScalar(string sql, List parameters = null) - { - if (_started == false) { Start(); } - if (conn.State == System.Data.ConnectionState.Closed) { conn.Open(); } - cmd.Parameters.Clear(); - cmd.CommandText = sql; - try - { - if (parameters != null) { parameters.ForEach(a => cmd.Parameters.Add(a)); } - var obj = cmd.ExecuteScalar(); - conn.Close(); - return obj; - } - catch (Exception ex) - { - throw ex; - } - } - - public async Task ExecuteNonQueryAsync(string sql, params SqlParameter[] parameters) - { - using (var newConnection = new SqlConnection(Server.sqlConnection)) - using (var newCommand = new SqlCommand(sql, newConnection)) - { - if (parameters != null) newCommand.Parameters.AddRange(parameters); - await newConnection.OpenAsync().ConfigureAwait(false); - return await newCommand.ExecuteNonQueryAsync().ConfigureAwait(false); - } - } - - #endregion - } - - public class SqlReader - { - [JsonIgnore] - private Core S; - [JsonIgnore] - private int _i = -1; - public List> Rows = new List>(); - - public SqlReader(Core FreightCore, string query = "", List parameters = null, string cachedName = "") - { - S = FreightCore; - if(query == "") { return; } - if(cachedName != "") - { - Rows = S.Server.GetFromCache(cachedName, new Func>>(() => - { - var reader = S.Sql.ExecuteReader(query, parameters); - var rows = GetRows(reader); - reader.Dispose(); - S.Sql.Close(); - reader.Dispose(); - return rows; - })); - } - else - { - var reader = S.Sql.ExecuteReader(query, parameters); - Rows = GetRows(reader); - reader.Dispose(); - S.Sql.Close(); - reader.Dispose(); - } - } - - public List> GetRows(SqlDataReader reader) - { - var rows = new List>(); - if (reader.HasRows == true) - { - Dictionary item; - string key = ""; - while (reader.Read() == true) - { - item = new Dictionary(); - for (int i = 0; i < reader.FieldCount; i++) - { - key = reader.GetName(i); - item.Add(key.ToLower(), reader[key] is DBNull ? null : reader[key]); - } - rows.Add(item); - } - } - return rows; - } - - public SqlReader GetReader(SqlDataReader reader) - { - var sql = new SqlReader(S); - sql.Rows = sql.GetRows(reader); - return sql; - } - - public List GetReaders(SqlDataReader reader) - { - var list = new List(); - while (reader.HasRows) - { - list.Add(GetReader(reader)); - reader.NextResult(); - } - return list; - } - - public SqlReader GetReaderFromPosition(int start, int length = 0) - { - var rows = new List>(); - for (var i = start; i < Rows.Count && (i < start + length - 1 || length == 0); i++) - { - rows.Add(Rows[i]); - i++; - } - var reader = new SqlReader(S, ""); - reader.Rows = rows; - return reader; - } - - public bool HasRows - { - get - { - return Rows.Count > 0; - } - } - - public bool Read() - { - if (Rows.Count > _i + 1) - { - _i++; return true; - } - else { return false; } - - } - - public int Position - { - get { return _i; } - set { _i = value; } - } - - public void ResetPosition() - { - _i = -1; - } - - public bool ContainsKey(string key) - { - return Rows[_i].ContainsKey(key.ToLower()); - } - - public object GetObj(string key) - { - if (Rows[_i].ContainsKey(key.ToLower()) == true) { return Rows[_i][key.ToLower()]; } - return null; - } - - public string Get(string key) - { - return (string)GetObj(key) ?? ""; - } - - public int GetInt(string key) - { - var obj = GetObj(key); - if(obj == null) { return 0; } - if(Type.GetTypeCode(obj.GetType()) == TypeCode.Int64) - { - return Convert.ToInt32(obj); - } - return (int)obj; - } - - public int GetShort(string key) - { - var obj = GetObj(key); - if (obj == null) { return 0; } - return (short)obj; - } - - public Int64 GetInt64(string key) - { - var obj = GetObj(key); - if (obj == null) { return 0; } - return (Int64)obj; - } - - public bool GetBool(string key) - { - var obj = GetObj(key); - if (obj == null) { return false; } - if(obj.GetType() == typeof(bool)) { return (bool)obj; } - return (int)obj == 1 ? true : false; - } - - public double GetDouble(string key) - { - var obj = GetObj(key); - if (obj == null) { return 0; } - return (double)obj; - } - - public decimal GetDecimal(string key) - { - var obj = GetObj(key); - if (obj == null) { return 0; } - return (decimal)obj; - } - - public DateTime GetDateTime(string key) - { - var obj = GetObj(key); - if(obj == null) { return DateTime.Now; } - return (DateTime)obj; - } - - public Byte[] GetBinary(string key) - { - var obj = GetObj(key); - if (obj == null) { return new Byte[0]; } - return (Byte[])obj; - } - } - - public static class SqlReaders - { - public static List GetReaders(Core S, string sql, List parameters = null) - { - var sqlReader = new SqlReader(S); - var list = new List(); - var reader = S.Sql.ExecuteReader(sql, parameters); - do - { - list.Add(sqlReader.GetReader(reader)); - - } while (reader.NextResult()); - reader.Dispose(); - S.Sql.Close(); - return list; - } - } - - public class SqlQuery - { - protected Core S; - - public SqlQuery(Core WebsilkCore) - { - S = WebsilkCore; - } - } -} diff --git a/App/Core/page.html b/App/Core/page.html deleted file mode 100644 index c256d31..0000000 --- a/App/Core/page.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - {{title}} - {{description}} - {{facebook}} - - - - - - - {{head-css}} - - {{has-colors}} - - {{/has-colors}} - - {{css-files}} - {{has-editor}} - - - {{/has-editor}} - - {{font-faces}} - - -
    -
    -
    {{svg-icons}}
    -
    - {{editor}} - {{html}} -
    - {{body-sides}} - {{body}} -
    - - {{scripts}} - - \ No newline at end of file diff --git a/App/Dashboard/Analytics/Analytics.cs b/App/Dashboard/Analytics/Analytics.cs deleted file mode 100644 index dc5501f..0000000 --- a/App/Dashboard/Analytics/Analytics.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace Websilk.Pages.DashboardPages -{ - public class Analytics: StaticPage - { - public Analytics(Core WebsilkCore, Page page): base(WebsilkCore, page) { } - - public override Services.Inject LoadSubPage(string path) - { - var inject = new Services.Inject(); - if(path != "") - { - //load sub page - switch (path) - { - case "???": - - break; - } - }else - { - //load analytics list - scaffold = new Scaffold(S, "/Dashboard/Analytics/analytics.html"); - } - - inject.html = scaffold.Render(); - return inject; - } - } -} diff --git a/App/Dashboard/Analytics/analytics.html b/App/Dashboard/Analytics/analytics.html deleted file mode 100644 index eeec5ef..0000000 --- a/App/Dashboard/Analytics/analytics.html +++ /dev/null @@ -1 +0,0 @@ -

    Analytics

    \ No newline at end of file diff --git a/App/Dashboard/Dashboard.cs b/App/Dashboard/Dashboard.cs index 3d01b97..47f01dc 100644 --- a/App/Dashboard/Dashboard.cs +++ b/App/Dashboard/Dashboard.cs @@ -6,7 +6,7 @@ namespace Websilk.Pages { - public class Dashboard: StaticPage + public class Dashboard: Page { public struct structMenuItem { @@ -17,12 +17,12 @@ public struct structMenuItem public List submenu; } - public Dashboard(Core WebsilkCore, Page page): base(WebsilkCore, page){} + public Dashboard(Core WebsilkCore): base(WebsilkCore){} - public override void Load() + public override string Render(string path) { //load the dashboard layout - scaffold = new Scaffold(S, "/Dashboard/dashboard.html"); + var scaffold = new Scaffold(S, "/Dashboard/dashboard.html"); S.cssFiles.Add("dashboard", "/css/dashboard/dashboard.css"); var scaffMenu = new Scaffold(S, "/Dashboard/menu-item.html"); @@ -73,59 +73,41 @@ public override void Load() } scaffold.Data["menu"] = "
      " + menu.ToString() + "
    "; - //add js file - S.javascriptFiles.Add("dashboard", "/js/dashboard/dashboard.js"); - //finally, add content of dashboard section - var inject = new Inject(); - if (page.Url.path != "dashboard") + + var subPath = ""; + if (S.Request.Path.ToString() != "dashboard") { - inject = LoadSubPage(page.Url.path.Replace("dashboard/", "")); + subPath = S.Request.Path.ToString().Replace("dashboard/", ""); } else { - inject = LoadSubPage("pages"); - S.javascript.Add("url", "S.url.push(S.page.title, 'dashboard/pages');"); + subPath = "pages"; } - - //initialize dashboard website info - S.javascript.Add("dash-init", - "S.dashboard.website = {" + - "id:" + page.websiteId + ", title:'" + page.websiteTitle.Replace("'","\\'") + "', domain:'" + domain + "'" + - "};" - ); - - scaffold.Data["body"] = inject.html; + scaffold.Data["body"] = LoadSubPage(subPath); + return scaffold.Render(); } - public override Inject LoadSubPage(string path) + private string LoadSubPage(string path) { //get correct sub page from path - StaticPage service = null; - var inject = new Inject(); + Page service = null; + var html = ""; var paths = path.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries); - var section = ""; - if (paths[0] == "analytics") { - service = new DashboardPages.Analytics(S, page); - inject = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); - section = "analytics"; - } + else if(paths[0] == "downloads") { - service = new DashboardPages.Downloads(S, page); - inject = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); - section = "downloads"; + service = new DashboardPages.Downloads(S); + html = service.Render(string.Join("/", paths.Skip(1).ToArray())); } else if (paths[0] == "pages") { - service = new DashboardPages.Pages(S, page); - inject = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); - section = "pages"; + service = new DashboardPages.Pages(S); + html = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); } else if (paths[0] == "photos") { - service = new DashboardPages.Photos(S, page); - inject = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); - section = "photos"; + service = new DashboardPages.Photos(S); + html = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); } else if (paths[0] == "settings") { @@ -133,33 +115,25 @@ public override Inject LoadSubPage(string path) { if(paths[1] == "themes") { - service = new DashboardPages.Settings.Themes(S, page); - inject = service.LoadSubPage(string.Join("/", paths.Skip(2).ToArray())); + service = new DashboardPages.Settings.Themes(S); + html = service.LoadSubPage(string.Join("/", paths.Skip(2).ToArray())); section = "settings-themes"; } } } else if (paths[0] == "timeline") { - service = new DashboardPages.Timeline(S, page); - inject = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); + service = new DashboardPages.Timeline(S); + html = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); section = "timeline"; } else if (paths[0] == "users") { - service = new DashboardPages.Users(S, page); - inject = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); + service = new DashboardPages.Users(S); + html = service.LoadSubPage(string.Join("/", paths.Skip(1).ToArray())); section = "users"; } - if (service != null) - { - S.javascript.Add("dash-subpage", "S.dashboard.sections.show('" + section + "');"); - inject.element = ".dash-body"; - inject.remove = ".dash-body > .section-" + section; - inject.html = "
    " + inject.html + "
    "; - inject.inject = enumInjectTypes.append; - } - return inject; + return html; } private structMenuItem menuItem(string label, string id, string href, string icon, List submenu = null) diff --git a/App/Editor/Components/Components.cs b/App/Editor/Components/Components.cs deleted file mode 100644 index 20bedf6..0000000 --- a/App/Editor/Components/Components.cs +++ /dev/null @@ -1,329 +0,0 @@ -using System.Collections.Generic; -using System.Text; - -namespace Websilk.Services.Editor -{ - public class Components : Service - { - public Components(Core WebsilkCore) : base(WebsilkCore) - { - } - - public string Load(string category) - { - var ui = new Scaffold(S, "/Editor/Components/ui.html"); - var component = new Scaffold(S, "/Editor/Components/ui-item.html"); - var html = new StringBuilder(); - var sqlEditor = new SqlQueries.Editor(S); - var reader = sqlEditor.GetComponentList(category); - - while (reader.Read()) - { - component.Data["id"] = reader.Get("namespace"); - component.Data["icon"] = reader.Get("componentid"); - component.Data["name"] = reader.Get("name"); - component.Data["summary"] = reader.Get("description"); - html.AppendLine(component.Render()); - } - ui.Data["components"] = html.ToString(); - return ui.Render(); - } - - public Inject Create(string name, int layerId, string panelId, string cellId, string componentId, int append) - { - //create a new component on the page - var inject = new Inject(); - - //load the current page - GetPage(); - var tuple = page.loadPageAndLayout(page.pageId, true); - - //load page(s) from file/cache - var newpage = tuple.Item3; - - //load list of panels - var panels = tuple.Item4; - - //find the correct panel to load the component into - var panel = page.GetPanelById(panels, panelId); - Component component = null; - if(panel != null) - { - component = page.createNewComponent(name, panel.id, cellId, panel.blockId); - } - if(component != null) - { - - //get a list of all panels within the page - var list = page.GetAllPanels(panels); - - //get a list of blocks that belong to the page - var blocks = page.GetBlocks(newpage); - foreach (var block in blocks) - { - if (block.name == panel.blockName) - { - //add component to block - var newblock = block; - var comps = new List(); - var added = false; - if(append == 0 && componentId == "") - { - //add component to beginning of new list - comps.Add(component); - added = true; - } - foreach(var comp in block.components) - { - if(append == 0 && comp.id == componentId) - { - //add new component to new list before adding current component - comps.Add(component); - inject.node = "#c" + comp.id; - inject.inject = enumInjectTypes.beforeNode; - added = true; - } - - //add current component to new list - comps.Add(comp); - - if (append == 1 && comp.id == componentId) - { - //add new component to new list after adding current component - comps.Add(component); - inject.node = "#c" + comp.id; - inject.inject = enumInjectTypes.afterNode; - added = true; - } - } - if(added == false) - { - //add new component to the end of the list - comps.Add(component); - inject.inject = enumInjectTypes.append; - } - - //update page block - newblock.components = comps; - newblock.changed = true; - page.UpdateBlock(ref newpage, newblock); - - if(panel.blockId.IndexOf("page_") == 0) - { - //save page-level block to page - page.SavePage(newpage); - }else - { - //save custom block - page.SaveBlock(newblock); - } - break; - } - } - - //render component to inject onto the page - inject.element = "#cell_" + cellId; - inject.newId = component.id; - inject.html = component.Render(); - inject.js = S.javascriptFiles.renderJavascriptFiles(false, S.javascript.renderJavascript(false)); - inject.css = S.css.renderCss(false); - inject.cssId = "css_component_c" + component.id; - - - //inject html resources - var html = S.html.renderHtml(); - if(html != "") - { - inject.js += "$('.webpage').before('" + html.Replace("'", "\\'").Replace("\n","").Replace("\r","") + "');"; - } - html = S.htmlEditor.renderHtml(); - if (html != "") - { - inject.js += "$('.editor').append('" + html.Replace("'", "\\'").Replace("\n", "").Replace("\r", "") + "');"; - } - } - return inject; - } - - public string Move(string componentId, string blockName, string panelId, string cellId, string targetId, int append) - { - //load the current page - GetPage(); - var tuple = page.loadPageAndLayout(page.pageId, true); - - //load page(s) from file/cache - var newpage = tuple.Item3; - - //load list of panels - var panels = tuple.Item4; - - //find existing component - var components = page.GetAllComponents(panels); - - foreach (var c in components) - { - if (c.id == componentId) - { - //remove component from existing block - var blocks = page.GetBlocks(newpage); - foreach (var block in blocks) - { - if (block.id == c.blockId) - { - //make sure component exists in block - var exists = false; - foreach (var comp in block.components) - { - if (comp.id == componentId) - { - exists = true; - break; - } - } - - if (exists == true) - { - //found existing block - var newblock = block; - var comps = new List(); - - //add all components (excluding existing component) - foreach (var comp in block.components) - { - if (comp.id != componentId) - { - comps.Add(comp); - } - } - - //update existing block - newblock.components = comps; - newblock.changed = true; - page.UpdateBlock(ref newpage, newblock); - - //save page or block - if (block.id.IndexOf("page_") == 0) - { - //save page-level block to page - page.SavePage(newpage); - } - else - { - //save custom block - page.SaveBlock(newblock); - } - break; - } - - } - } - - //add component to new block - blocks = page.GetBlocks(newpage); - foreach (var block in blocks) - { - if (block.name == blockName) - { - //found new block - var newblock = block; - var comps = new List(); - var added = false; - - c.blockId = block.id; - c.panelId = panelId; - c.panelCellId = cellId; - - if (append == 0 && targetId == "") - { - //add component to beginning of new list - comps.Add(c); - added = true; - } - foreach (var comp in block.components) - { - if (append == 0 && comp.id == targetId) - { - //add new component to new list before adding current component - comps.Add(c); - added = true; - } - - //add current component to new list - comps.Add(comp); - - if (append == 1 && comp.id == targetId) - { - //add new component to new list after adding current component - comps.Add(c); - added = true; - } - } - if (added == false) - { - //add new component to the end of the list - comps.Add(c); - } - - //update new block - newblock.components = comps; - newblock.changed = true; - page.UpdateBlock(ref newpage, newblock); - - //save page or block - if (block.id.IndexOf("page_") == 0) - { - //save page-level block to page - page.SavePage(newpage); - } - else - { - //save custom block - page.SaveBlock(newblock); - } - break; - } - } - break; - } - } - return "success"; - } - - public Inject Properties(string componentId, string blockName, string panelId, string cellId) - { - var inject = new Inject(); - var html = new StringBuilder(); - //load the current page - GetPage(); - var tuple = page.loadPageAndLayout(page.pageId, true); - - //load page(s) from file/cache - var newpage = tuple.Item3; - - //load list of panels - var panels = tuple.Item4; - - //find existing component - var components = page.GetAllComponents(panels); - - foreach (var c in components) - { - if (c.id == componentId) - { - //load component properties - c.Load(); - var compProps = c.GetProperties(); - compProps.Load(); - html.Append(compProps.Render()); - break; - } - } - inject.html = html.ToString(); - inject.element = "#winComponentProperties .content"; - inject.inject = enumInjectTypes.replace; - inject.js = RenderJs(); - inject.css = RenderCss(); - return inject; - } - } -} \ No newline at end of file diff --git a/App/Editor/Components/Properties.cs b/App/Editor/Components/Properties.cs deleted file mode 100644 index 636ce0a..0000000 --- a/App/Editor/Components/Properties.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace Websilk.Editor.Component -{ - public class Properties - { - protected Core S; - protected Websilk.Component component; - protected Scaffold scaffold; - protected Scaffold menuitem; - protected Scaffold body; - protected StringBuilder menuitems = new StringBuilder(); - protected bool hasItems = false; - private int menuItemCount = 0; - - public Properties(Core WebsilkCore, Websilk.Component componentInstance) - { - S = WebsilkCore; - component = componentInstance; - scaffold = new Scaffold(S, "/Editor/UI/window-body.html"); - menuitem = new Scaffold(S, "/Editor/UI/window-menu-item.html"); - body = new Scaffold(S, Path + "/properties.html"); - } - - public virtual string Path { get { return ""; } } - - /// - /// Executed when the component properties window is first loaded for a specific component instance - /// - public virtual void Load() { } - - public string Render() - { - scaffold.Data["body"] = body.Render(); - scaffold.Data["menu-items"] = menuitems.ToString(); - return scaffold.Render(); - } - - /// - /// Executed whenever the user clicks the "save" button within the component properties window (in the Page Editor) - /// - /// - public virtual void Save(Dictionary data) { } - - #region "Menu" - public void AddMenuItem(string title, string javascript = "") - { - menuItemCount++; - if (hasItems == false) - { - hasItems = true; - scaffold.Data["menu"] = "1"; - menuitem.Data["selected"] = " selected"; - } - else - { - menuitem.Data["selected"] = ""; - } - menuitem.Data["title"] = title; - menuitem.Data["onclick"] = "S.editor.window.tabMenu.select('ComponentProperties'," + menuItemCount + ");" + javascript; - menuitems.Append(menuitem.Render()); - } -#endregion - } -} diff --git a/App/Editor/Components/ui-item.html b/App/Editor/Components/ui-item.html deleted file mode 100644 index ac6cc84..0000000 --- a/App/Editor/Components/ui-item.html +++ /dev/null @@ -1,7 +0,0 @@ -
    -
    - - - -
    -
    \ No newline at end of file diff --git a/App/Editor/Components/ui.html b/App/Editor/Components/ui.html deleted file mode 100644 index 41ed6aa..0000000 --- a/App/Editor/Components/ui.html +++ /dev/null @@ -1,3 +0,0 @@ -
    - {{components}} -
    \ No newline at end of file diff --git a/App/Editor/Editor.cs b/App/Editor/Editor.cs deleted file mode 100644 index 8e7998b..0000000 --- a/App/Editor/Editor.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System.IO; -using System.Text; -using Newtonsoft.Json; - - -namespace Websilk.Editor -{ - public static class UI - { - - public static string Render(Core S, Page page) - { - var sql = new SqlQueries.Editor(S); - var editor = new Scaffold(S, "/editor/editor.html"); - var dashboard = new Scaffold(S, "/editor/ui/dashboard.html"); - var layout_dialog = new Scaffold(S, "/editor/ui/layout-dialog.html"); - var layout_addblock = new Scaffold(S, "/editor/ui/layout-addblock.html"); - - var paths = new StringBuilder(); - var pathstep = ""; - var pagepaths = page.pagePathName.Split('/'); - var layoutpath = S.Server.MapPath("/Content/themes/" + page.websiteTheme + "/layouts/"); - var fname = ""; - - //get page info for Dashboard - foreach (var path in pagepaths) - { - pathstep += "/"; - if (paths.Length > 0) { paths.Append("/"); } - pathstep += path; - if (path == page.pageTitle) - { - paths.Append(path.Replace(" ", "-")); - } - else - { - paths.Append("" + path.Replace(" ", "-") + ""); - } - - } - dashboard.Data["page-title"] = page.pageTitle; - dashboard.Data["page-path"] = paths.ToString(); - dashboard.Data["page-paths"] = pagepaths.Length > 1 ? "1" : "0"; - - - //load layout list //////////////////////////////////////////////////////////////// - if (!S.Server.Cache.ContainsKey("layout-options-" + page.websiteId)) - { - //get list of layouts for page theme (from disk) - var layoutFiles = Directory.GetFiles(layoutpath, "*.html"); - var layoutOptions = new StringBuilder(); - foreach (var file in layoutFiles) - { - fname = file.Replace(layoutpath, "").Replace(".html", ""); - layoutOptions.Append(""); - } - layout_dialog.Data["layout-list"] = layoutOptions.ToString(); - S.Server.Cache["layout-options-" + page.websiteId] = layoutOptions.ToString(); - } - else - { - //get list of layouts for page theme (from cache) - layout_dialog.Data["layout-list"] = (string)S.Server.Cache["layout-options-" + page.websiteId]; - } - - //check if in-memory page differs from either page on drive or page scheduled to be saved on drive - var pagePath = page.GetPageFilePath(page.pageId, page.editFolder, page.editType); - var absPath = S.Server.MapPath(pagePath); - if (File.Exists(absPath)) - { - var pageMem = S.Util.Serializer.WriteObjectToString(page.loadPageAndLayout(page.pageId, true), Formatting.None, TypeNameHandling.Auto, page.IgnorablePagePropertiesResolver()); - var pageDrive = S.Util.Serializer.WriteObjectToString(page.loadPageAndLayout(page.pageId, true, false), Formatting.None, TypeNameHandling.Auto, page.IgnorablePagePropertiesResolver()); - if (pageMem != pageDrive) - { - //page data differs between page in-memory & page file(s) (including in-memory blocks & block files) - S.javascript.Add("editor-save", "S.editor.save.hasChanges(true);"); - } - } - - - //render Editor UI ////////////////////////////////////////////////////////////////////// - editor.Data["svg-logo"] = S.Server.LoadFileFromCache("/Content/logo-websilk.svg"); - editor.Data["template-window"] = S.Server.LoadFileFromCache("/editor/ui/window.html"); - editor.Data["template-dashboard"] = dashboard.Render(); - editor.Data["template-layout-dialog"] = layout_dialog.Render(); - editor.Data["template-layout-addblock"] = layout_addblock.Render(); - editor.Data["template-layout-options"] = S.Server.LoadFileFromCache("/editor/ui/layout-options.html"); - editor.Data["template-select-menu-props"] = S.Server.LoadFileFromCache("/editor/ui/select-menu-props.html"); - editor.Data["template-select-menu-alignment"] = S.Server.LoadFileFromCache("/editor/ui/select-menu-alignment.html"); - editor.Data["html"] = S.htmlEditor.renderHtml(); - return editor.Render(); - } - } -} diff --git a/App/Editor/Page.cs b/App/Editor/Page.cs deleted file mode 100644 index 53be82a..0000000 --- a/App/Editor/Page.cs +++ /dev/null @@ -1,400 +0,0 @@ -using System.Collections.Generic; -using System.Text; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; - -namespace Websilk.Services.Editor -{ - public class Page : Service - { - public Page(Core WebsilkCore) : base(WebsilkCore) { } - - #region "Save" - public void SaveChanges(string changes) - { - //load the current page - GetPage(); - if (page.hasPageHistory()) { return; } //cannot save a historical page - var tuple = page.loadPageAndLayout(page.pageId, true); - - //load page(s) from file/cache - var newpage = tuple.Item3; - - //load list of panels - var panels = tuple.Item4; - - //get list of blocks - var blocks = page.GetBlocks(newpage); - - //find existing component - var components = page.GetAllComponents(panels); - - Websilk.Page.structBlock block = new Websilk.Page.structBlock(); - Component component; - - //update existing components with json data changes, then save the page to memory & disk - JArray json = JsonConvert.DeserializeObject(changes); - if (json != null) - { - string id = ""; - string type = ""; - string[] str; - int level = -1; - JToken data; - - //process each change within the JSON object - foreach (JObject item in json) - { - id = (string)item["id"]; - - //find component & block reference - component = null; - foreach (var c in components) - { - //find target component - if (c.id == id) - { - foreach (var b in blocks) - { - //find block that component belongs to - if (b.id == c.blockId) - { - //find target component within target block - foreach (var comp in b.components) - { - if (comp.id == id) - { - block = b; - component = comp; - break; - } - } - break; - } - } - break; - } - } - - if(component != null && block.id != "") - { - data = item["data"]; - type = (string)item["type"]; - str = type.Split(':'); - if (str.Length > 0) { - type = str[0]; - } - Component.structPosition pos; - switch (type) - { - case "resize": - //resize component for a specific viewport size - level = int.Parse(str[1]); - pos = component.position[level]; - foreach (JProperty child in data.Children()) - { - if(child.Name == "maxWidth") - { - pos.width = child.Value.ToObject(); - } - } - component.position[level] = pos; - block.changed = true; - break; - - case "alignment": - //change component alignment settings for a specific viewport size - level = int.Parse(str[1]); - pos = component.position[level]; - foreach (JProperty child in data.Children()) - { - switch (child.Name) - { - case "align": - pos.align = (Component.enumAlign)child.Value.ToObject(); - break; - case "fixedAlign": - pos.fixedAlign = (Component.enumIsFixed)child.Value.ToObject(); - break; - case "position": - pos.position = (Component.enumPosition)child.Value.ToObject(); - break; - case "top": - pos.top = child.Value.ToObject(); - break; - case "widthType": - pos.widthType = (Component.enumWidthType)child.Value.ToObject(); - break; - case "heightType": - pos.heightType = (Component.enumHeightType)child.Value.ToObject(); - break; - case "padding": - foreach (JProperty pad in child.First.Children()) - { - switch (pad.Name) - { - case "top": - pos.padding.top = pad.Value.ToObject(); - break; - case "right": - pos.padding.right = pad.Value.ToObject(); - break; - case "bottom": - pos.padding.bottom = pad.Value.ToObject(); - break; - case "left": - pos.padding.left = pad.Value.ToObject(); - break; - } - } - break; - case "forceNewLine": - pos.forceNewLine = (bool)child.Value.ToObject(); - break; - } - } - component.position[level] = pos; - block.changed = true; - break; - default: - //tries saving custom data to component - component.Save(type, data.ToObject(typeof(object))); - block.changed = true; - break; - } - page.UpdateBlock(ref newpage, block); - } - } - } - - //check all blocks for changes, then save changes to filesystem - var savepage = false; - blocks = page.GetBlocks(newpage); - foreach (var b in blocks) - { - if (b.id.IndexOf("page_") == 0 && b.isPage == true && b.changed == true) - { - //save page - savepage = true; - } - else if (b.id.IndexOf("page_") < 0 && b.changed == true) - { - //save block - page.SaveBlock(b, true, true); - } - } - if (savepage == true) - { - page.SavePage(newpage, true, true); - } - } - #endregion - - #region "Blocks" - public string GetBlocksList(string area) - { - var sql = new SqlQueries.Editor(S); - var htm = new StringBuilder(); - htm.Append(""); - GetPage(); - - //load layout list //////////////////////////////////////////////////////////////// - if (!S.Server.Cache.ContainsKey("blocks-" + page.websiteId + '-' + area.ToLower())) - { - //get list of layouts for page theme (from disk) - var reader = sql.GetBlockList(page.websiteId, area.ToLower()); - while (reader.Read()) - { - htm.Append(""); - } - S.Server.Cache["blocks-" + page.websiteId + '-' + area] = htm.ToString(); - return htm.ToString(); - } - else - { - //get list of layouts for page theme (from cache) - return (string)S.Server.Cache["blocks-" + page.websiteId + '-' + area]; - } - } - - public Inject AddBlock(string blockId, int insertAt, string name, string area, string element, bool isPageLevelBlock = false, bool changeOnly = false) - { - var inject = new Inject(); - inject.element = "#" + element; - inject.inject = enumInjectTypes.after; - inject.cssId = "block_" + blockId; - GetPage(); - var sqlEditor = new SqlQueries.Editor(S); - if (blockId == "" && name != "") - { - if (sqlEditor.HasBlock(page.websiteId, name) == true){ - inject.html = "exists"; - return inject; - } - } - var id = blockId; - var tuple = page.loadPageAndLayout(page.pageId, true); - - //load page layout scaffolding - var scaffold = tuple.Item1; - - //load page(s) from file/cache - var newpage = tuple.Item3; - - //load list of panels belonging to page - var panels = tuple.Item4; - - //check if block already exists on the page - for (var x = 0; x < newpage.areas.Count; x++) - { - for(var y = 0; y < newpage.areas[x].blocks.Count; y++) - { - if(newpage.areas[x].blocks[y].id == blockId) - { - inject.html = "duplicate"; - return inject; - } - } - } - - //clean cache - S.Server.Cache.Remove("blocks-" + page.websiteId + '-' + area.ToLower()); - - var block = new Websilk.Page.structBlock() { id = "" }; - for(var x = 0; x < newpage.areas.Count; x++) - { - if (newpage.areas[x].name.ToLower() == area.ToLower()) - { - //found matching area - if(blockId == "") - { - //create new block - id = sqlEditor.CreateBlock(page.websiteId, area.ToLower(), name).ToString(); - inject.cssId = "block_" + id; - } - block = page.loadBlock(id); - newpage.areas[x].blocks.Insert(insertAt, block); - if(changeOnly == true) - { - //remove existing block - newpage.areas[x].blocks.RemoveAt(insertAt - 1); - } - break; - } - } - if(block.id.IndexOf("page_") < 0) - { - //save changes to file - page.SavePage(newpage, true); - - //reset cache for block list - S.Server.Cache.Remove("blocks-" + page.websiteId + '-' + area); - - //load components into block-level panel - var panelId = block.name.Replace(" ", "_").ToLower(); - var panel = page.CreatePanel(panelId, block.name, area, block.id, block.name, block.isPage); - panel.AddCell(panelId); - panel.hasSiblings = true; - panels.Add(panel); - page.loadComponents(block, panel, ref panels); - - //render panel & components - inject.html = panel.Render(); - inject.js = RenderJs(); - inject.css = RenderCss(); - } - return inject; - } - - public Inject ChangeBlock(string blockId, int insertAt, string name, string area, string element, bool isPageLevelBlock = false) - { - return AddBlock(blockId, insertAt, name, area, element, isPageLevelBlock = false, true); - } - - public string RemoveBlock(string blockId, string area) - { - if(blockId.IndexOf("page_") == 0) { return "error"; } - GetPage(); - var id = blockId; - var tuple = page.loadPageAndLayout(page.pageId, true); - - //load page layout scaffolding - var scaffold = tuple.Item1; - - //load page(s) from file/cache - var newpage = tuple.Item3; - - for (var x = 0; x < newpage.areas.Count; x++) - { - if (newpage.areas[x].name.ToLower() == area.ToLower()) - { - //found matching area - for(var y = 0; y < newpage.areas[x].blocks.Count; y++) - { - if(newpage.areas[x].blocks[y].id == blockId) - { - newpage.areas[x].blocks.RemoveAt(y); - } - } - break; - } - } - - //save changes to file - page.SavePage(newpage, true); - return "success"; - } - - public string MoveBlock(string blockId, string area, int index, string direction) - { - GetPage(); - var sqlEditor = new SqlQueries.Editor(S); - var id = blockId; - var tuple = page.loadPageAndLayout(page.pageId, true); - - //load page layout scaffolding - var scaffold = tuple.Item1; - - //load page(s) from file/cache - var newpage = tuple.Item3; - - var block = new Websilk.Page.structBlock() { id = "" }; - for (var x = 0; x < newpage.areas.Count; x++) - { - if (newpage.areas[x].name.ToLower() == area.ToLower()) - { - //found matching area - for (var y = 0; y < newpage.areas[x].blocks.Count; y++) - { - if (newpage.areas[x].blocks[y].id == blockId) - { - //found matching block - block = newpage.areas[x].blocks[y]; - newpage.areas[x].blocks.Remove(newpage.areas[x].blocks[y]); - - if (direction == "up") - { - newpage.areas[x].blocks.Insert(y - 1, block); - } - else - { - newpage.areas[x].blocks.Insert(y + 1, block); - } - break; - } - } - break; - } - } - if (block.id.IndexOf("page_") < 0) - { - //save changes to file - page.SavePage(newpage, true); - return "success"; - } - return "fail"; - } - #endregion - } -} diff --git a/App/Editor/Support/Support.cs b/App/Editor/Support/Support.cs deleted file mode 100644 index b823bdd..0000000 --- a/App/Editor/Support/Support.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Data.SqlClient; - -namespace Websilk.Services.Editor -{ - public class Support : Service - { - public Support(Core WebsilkCore):base(WebsilkCore) { } - - public string Get(string page) - { - var scaffold = new Scaffold(S, "/Editor/Support/support.html"); - scaffold.Data["content"] = S.Server.LoadFileFromCache("/Support/" + page + ".html"); - return scaffold.Render(); - } - - public string Search(string keywords) - { - var scaffold = new Scaffold(S, "/Editor/Support/support.html"); - var result = new Scaffold(S, "/Editor/Support/result.html"); - var htm = new StringBuilder(); - var parms = new List() - { - new SqlParameter("@keywords", keywords) - }; - var reader = new SqlReader(S, "EXEC Documentation_Search @keywords=@keywords", parms); - while (reader.Read()) - { - result.Data["page"] = reader.Get("path"); - result.Data["title"] = reader.Get("title"); - htm.Append(result.Render()); - } - if(reader.Rows.Count == 0) - { - result = new Scaffold(S, "/Editor/Support/noresults.html"); - result.Data["search"] = keywords; - htm.Append(result.Render()); - } - scaffold.Data["search"] = keywords; - scaffold.Data["content"] = htm.ToString(); - return scaffold.Render(); - } - } -} diff --git a/App/Editor/Support/noresults.html b/App/Editor/Support/noresults.html deleted file mode 100644 index c08adab..0000000 --- a/App/Editor/Support/noresults.html +++ /dev/null @@ -1 +0,0 @@ -
    There are no results for '{{search}}'
    \ No newline at end of file diff --git a/App/Editor/Support/result.html b/App/Editor/Support/result.html deleted file mode 100644 index 1e1fe61..0000000 --- a/App/Editor/Support/result.html +++ /dev/null @@ -1,3 +0,0 @@ -
    -
    {{title}}
    -
    diff --git a/App/Editor/Support/support.html b/App/Editor/Support/support.html deleted file mode 100644 index 346e51f..0000000 --- a/App/Editor/Support/support.html +++ /dev/null @@ -1,15 +0,0 @@ -
    -
    - -
    -
    - {{content}} -
    -
    \ No newline at end of file diff --git a/App/Editor/UI/component-properties.html b/App/Editor/UI/component-properties.html deleted file mode 100644 index 330da46..0000000 --- a/App/Editor/UI/component-properties.html +++ /dev/null @@ -1 +0,0 @@ -{{body}} \ No newline at end of file diff --git a/App/Editor/UI/dashboard.html b/App/Editor/UI/dashboard.html deleted file mode 100644 index 12a3e06..0000000 --- a/App/Editor/UI/dashboard.html +++ /dev/null @@ -1,64 +0,0 @@ -
    -
    -
    {{page-title}}
    - - -
    -
    -{{page-paths}} -
    - -
    -{{/page-paths}} -
    -
    -
    -
    - -
    -
    Designer
    -
    -
    -
    - -
    -
    Layout
    -
    -
    -
    - -
    -
    Settings
    -
    -
    -
    diff --git a/App/Editor/UI/layout-addblock.html b/App/Editor/UI/layout-addblock.html deleted file mode 100644 index b6bf858..0000000 --- a/App/Editor/UI/layout-addblock.html +++ /dev/null @@ -1,19 +0,0 @@ -
    -
    -
    Load a Block into the #area# Area
    -
    -
    - -
    -
    -
    - New Block Name -
    -
    - -
    -
    -
    - -
    -
    \ No newline at end of file diff --git a/App/Editor/UI/layout-dialog.html b/App/Editor/UI/layout-dialog.html deleted file mode 100644 index 4ce02d8..0000000 --- a/App/Editor/UI/layout-dialog.html +++ /dev/null @@ -1,18 +0,0 @@ -
    -
    -
    Page Layout
    -
    - -
    - -
    - -
    \ No newline at end of file diff --git a/App/Editor/UI/layout-options.html b/App/Editor/UI/layout-options.html deleted file mode 100644 index 7deb6d8..0000000 --- a/App/Editor/UI/layout-options.html +++ /dev/null @@ -1,69 +0,0 @@ -
    -
    -
    -
    -
    - #area-name# -
    -
    -
    -
    - #block-name# -
    -
    -
    -
    - -
    - - -
    -
    - Change -
    -
    - Add Block -
    - -
    -
    -
    -
    -
    -
    -
    - #area-name# -
    -
    -
    -
    - #block-name# -
    -
    -
    -
    -
    \ No newline at end of file diff --git a/App/Editor/UI/select-menu-alignment.html b/App/Editor/UI/select-menu-alignment.html deleted file mode 100644 index 475549d..0000000 --- a/App/Editor/UI/select-menu-alignment.html +++ /dev/null @@ -1,77 +0,0 @@ - - - \ No newline at end of file diff --git a/App/Editor/UI/select-menu-props.html b/App/Editor/UI/select-menu-props.html deleted file mode 100644 index fbf081a..0000000 --- a/App/Editor/UI/select-menu-props.html +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/App/Editor/UI/window-body.html b/App/Editor/UI/window-body.html deleted file mode 100644 index 8a583bf..0000000 --- a/App/Editor/UI/window-body.html +++ /dev/null @@ -1,6 +0,0 @@ -{{menu}} -
    -
      {{menu-items}}
    -
    -{{/menu}} -
    {{body}}
    \ No newline at end of file diff --git a/App/Editor/UI/window-menu-item.html b/App/Editor/UI/window-menu-item.html deleted file mode 100644 index 51090d9..0000000 --- a/App/Editor/UI/window-menu-item.html +++ /dev/null @@ -1,3 +0,0 @@ -
  • -
    {{title}}
    -
  • \ No newline at end of file diff --git a/App/Editor/UI/window.html b/App/Editor/UI/window.html deleted file mode 100644 index bd5fc98..0000000 --- a/App/Editor/UI/window.html +++ /dev/null @@ -1,16 +0,0 @@ -
    - #arrow# -
    - #/arrow# - #titlebar# -
    -
    -
    #title#
    -
    - #can-maximize##/can-maximize# - #can-close##/can-close# -
    -
    - #/titlebar# -
    #html#
    -
    \ No newline at end of file diff --git a/App/Editor/editor.html b/App/Editor/editor.html deleted file mode 100644 index 2bd87e6..0000000 --- a/App/Editor/editor.html +++ /dev/null @@ -1,100 +0,0 @@ -
    {{svg-logo}}
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - - -
    - - -
    - - - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - {{html}} -
    diff --git a/App/Elements/Button.cs b/App/Elements/Button.cs deleted file mode 100644 index 599d6fd..0000000 --- a/App/Elements/Button.cs +++ /dev/null @@ -1,41 +0,0 @@ - -namespace Websilk.Element -{ - public class Button:Element - { - public Button(Core WebsilkCore, string path, string name = "") : base(WebsilkCore, path, name) - { - - } - - public string Render(string id, string url, string label, bool disabled = false) - { - string aurl = url; - string jsurl = ""; - if(disabled == false) - { - if (aurl.IndexOf("javascript:") == 0) - { - jsurl = url.Replace("javascript:", ""); - aurl = "javascript:"; - } - }else - { - //disabled - aurl = "javascript:"; - jsurl = "return false"; - } - - Data["url"] = aurl; - if(jsurl != "") - { - //use onclick attribute - Data["jsurl"] = jsurl; - Data["click"] = "true"; - } - Data["label"] = label; - Data["id"] = id; - return scaffold.Render(); - } - } -} diff --git a/App/Elements/List.cs b/App/Elements/List.cs deleted file mode 100644 index f252528..0000000 --- a/App/Elements/List.cs +++ /dev/null @@ -1,11 +0,0 @@ - -namespace Websilk.Element -{ - public class List : Element - { - public List(Core WebsilkCore, string path, string name = "") : base(WebsilkCore, path, name) - { - - } - } -} diff --git a/App/Elements/Panel.cs b/App/Elements/Panel.cs deleted file mode 100644 index d358342..0000000 --- a/App/Elements/Panel.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace Websilk.Element -{ - public class Panel : Element - { - public Panel(Core WebsilkCore, string path, string name = "") : base(WebsilkCore, path, name) - { - - } - - public void Render(Websilk.Panel panel) - { - Data["content"] = "[content]"; - string p = scaffold.Render(); - int i = p.IndexOf("[content]"); - if(i >= 0) - { - panel.head = p.Substring(0, i); - panel.foot = p.Substring(i + 9); - } - else - { - panel.head = ""; - panel.foot = ""; - } - } - } -} diff --git a/App/Elements/Textbox.cs b/App/Elements/Textbox.cs deleted file mode 100644 index 6ef40c4..0000000 --- a/App/Elements/Textbox.cs +++ /dev/null @@ -1,55 +0,0 @@ - -namespace Websilk.Element -{ - public class Textbox : Element - { - - public enum enumTextType - { - text = 1, - password = 2, - textarea = 3 - } - - public Textbox(Core WebsilkCore, string path, string name = "") : base(WebsilkCore, path, name) - { - } - - public string Render(string id, string name = "", string value = "", string placeholder = "", string style = "", enumTextType textType = enumTextType.text) - { - string htm = ""; - string styling = style; - string type = "text"; - string val = ""; - string named = ""; - string placeholding = ""; - - switch (textType) - { - case enumTextType.password: - type = "password"; break; - case enumTextType.textarea: - type = "textarea"; break; - } - - //setup attributes - if(styling.Length > 0) { styling = " style=\"" + styling + "\""; } - if (value.Length > 0) { val = " value=\"" + value + "\""; } - if(name != "") { named = " name=\"" + id + "\""; } - if(placeholder != "") { placeholding = " placeholder=\"" + placeholder + "\""; } - - if(textType == enumTextType.textarea) - { - //render textarea - htm = ""; - } - else - { - //render textbox - htm = ""; - } - Data["input"] = htm; - return scaffold.Render(); - } - } -} diff --git a/App/Page.cs b/App/Page.cs new file mode 100644 index 0000000..e834e7e --- /dev/null +++ b/App/Page.cs @@ -0,0 +1,20 @@ +using System; + +namespace Websilk +{ + public class Page + { + + public Core S; + + public Page(Core WebsilkCore) + { + S = WebsilkCore; + } + + public virtual string Render(string[] path, string query) + { + return ""; + } + } +} diff --git a/App/Pipeline/PageRequest.cs b/App/Pipeline/PageRequest.cs index 825e856..a2aaf61 100644 --- a/App/Pipeline/PageRequest.cs +++ b/App/Pipeline/PageRequest.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Http; +using System; +using Microsoft.AspNetCore.Http; namespace Websilk.Pipeline { @@ -12,65 +13,30 @@ public PageRequest(Server server, HttpContext context) //the Pipeline.PageRequest is simply the first page request for a Websilk website. S = new Core(server, context); - var page = new Page(S); - S.isFirstLoad = true; - if (S.isFirstLoad == true) - { - getUserAgent(context); - } - - //parse URL - page.Url = page.parseUrl(S.Request.Path.ToString().ToLower().Replace(" ", "-")); - - //get page Info - page.getPageInfoFromUrl(); - - //register initial javascript - S.javascript.Add("init", "S.init(" + - (S.User.useAjax ? "true" : "false") + "," + - page.pageId + "," + page.pageType + ",'" + - page.pagePathName.ToLower() + "','" + - page.pageTitle + "','" + - page.PageTitleForBrowserTab + "'," + - page.websiteId + ",'" + - page.websiteTitle + "'," + - "'" + (S.Request.IsHttps ? "https://" : "http://") + "'," + - "'" + page.Url.host + "'," + - "'" + page.websiteTheme + "'" + - ");" - ); - - //render the page - var response = page.Render(); - - //unload the core (before sending response) - S.Unload(); + var pathquery = context.Request.Path.ToString().Split('?', 2); + var path = pathquery[0].Split('/'); + var page = GetWebPage("websilk.pages." + path[0]); //render the server response S.Response.ContentType = "text/html"; - S.Response.WriteAsync(response); + S.Response.WriteAsync(page.Render(path, pathquery.Length == 2 ? pathquery[1] : null)); } - private void getUserAgent(HttpContext context) + private Page GetWebPage(string className) { - //check for web bots such as google bot - string agent = context.Request.Headers["User-Agent"].ToString().ToLower(); - if (agent.Contains("bot") | agent.Contains("crawl") | agent.Contains("spider")) + //hard-code all known services to increase server performance + switch (className.ToLower()) { - S.User.useAjax = false; - S.User.isBot = true; - } + case "websilk.pages.dashboard": + return new Pages.Dashboard(S); - //check for mobile agent - if (agent.Contains("mobile") | agent.Contains("blackberry") | agent.Contains("android") | agent.Contains("symbian") | agent.Contains("windows ce") | - agent.Contains("fennec") | agent.Contains("phone") | agent.Contains("iemobile") | agent.Contains("iris") | agent.Contains("midp") | agent.Contains("minimo") | - agent.Contains("kindle") | agent.Contains("opera mini") | agent.Contains("opera mobi") | agent.Contains("ericsson") | agent.Contains("iphone") | agent.Contains("ipad")) - { - S.User.isMobile = true; + default: + //last resort, find service class manually + Type type = Type.GetType(className); + return (Page)Activator.CreateInstance(type, new object[] { S }); } - if (agent.Contains("tablet") | agent.Contains("ipad")) { S.User.isTablet = true; } } } } diff --git a/App/Pipeline/WebService.cs b/App/Pipeline/WebService.cs index 0bf64e7..2321af9 100644 --- a/App/Pipeline/WebService.cs +++ b/App/Pipeline/WebService.cs @@ -21,7 +21,6 @@ public WebService(Server server, HttpContext context, string[] paths, IFormColle var param = ""; byte[] bytes = new byte[0]; string data = ""; - string pageId = ""; int dataType = 0; //0 = ajax, 1 = HTML form post, 2 = multi-part form (with file uploads) //figure out what kind of data was sent with the request @@ -53,13 +52,7 @@ public WebService(Server server, HttpContext context, string[] paths, IFormColle Dictionary attr = JsonConvert.DeserializeObject>(data); foreach (KeyValuePair item in attr) { - if(item.Key == "pageId") - { - pageId = item.Value.ToString(); - }else - { - parms.Add(item.Key.ToLower(), item.Value.ToString()); - } + parms.Add(item.Key.ToLower(), item.Value.ToString()); } } else if (data.IndexOf("=") >= 0) @@ -85,10 +78,6 @@ public WebService(Server server, HttpContext context, string[] paths, IFormColle string methodName = paths[2]; if(paths.Length == 4) { className += "." + paths[2]; methodName = paths[3]; } var service = GetService(className); - if (S.Util.Str.IsNumeric(pageId)) - { - service.pageId = int.Parse(pageId); - } if (dataType == 1) { @@ -165,44 +154,21 @@ public WebService(Server server, HttpContext context, string[] paths, IFormColle //finally, unload the Websilk Core: //close SQL connection, save User info, etc (before sending response) S.Unload(); - + context.Response.ContentType = "text/json"; if (result != null) { - switch (result.GetType().FullName) - { - case "Websilk.Services.WebRequest": - //send raw content (HTML) - var res = (Services.WebRequest)result; - context.Response.ContentType = res.contentType; - context.Response.WriteAsync(res.html); - break; - - default: - //JSON serialize web service response - string serialized = "{\"type\":\"" + result.GetType().FullName + "\", \"d\":" + JsonConvert.SerializeObject(result) + "}"; - - context.Response.ContentType = "text/json"; - context.Response.WriteAsync(serialized); - break; - } + context.Response.WriteAsync((string)result); }else { - context.Response.ContentType = "text/json"; - context.Response.WriteAsync("{\"type\":\"Empty\",\"d\":{}}"); + context.Response.WriteAsync("{\"error\":\"no content returned\"}"); } } - private static bool IsNumeric(string s) - { - float output; - return float.TryParse(s, out output); - } - private Service GetService(string className) { //hard-code all known services to increase server performance switch(className.ToLower()){ - case "websilk.services.components.login": - return new Services.Components.Login(S); + case "websilk.services.users": + return new Services.Users(S); default: //last resort, find service class manually diff --git a/App/Scheduler/EveryMinute.cs b/App/Scheduler/EveryMinute.cs deleted file mode 100644 index cf03bc7..0000000 --- a/App/Scheduler/EveryMinute.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.IO; -using Chroniton; - -namespace Websilk.Schedule -{ - public class EveryMinute - { - private struct saveFile - { - public string file; - public string data; - public DateTime created; - } - - public int saveFileInterval = 20; - - //Scheduler that runs once every 1 minute - public Scheduler scheduleEveryMinute = new Scheduler(); - - //scheduler objects to check every 1 minute - private List scheduleSaveFiles = new List(); - - public EveryMinute() - { - //start 1 minute interval schedule - scheduleEveryMinute.Start(60, () => { CheckScheduleEveryMinute(false); }); - } - - private void CheckScheduleEveryMinute(bool force = false) - { - //check queue for files to save - if (scheduleSaveFiles.Count > 0) - { - var len = scheduleSaveFiles.Count; - for(var x = 0; x < len; x++) - { - var f = scheduleSaveFiles[x]; - if ((DateTime.Now - f.created).TotalMinutes >= saveFileInterval || force == true) - { - ProcessScheduleSaveFile(f); - scheduleSaveFiles.Remove(f); - len -= 1; - } - } - } - } - - private void ProcessScheduleSaveFile(saveFile f) - { - if (!Directory.Exists(Path.GetDirectoryName(f.file))) - { - Directory.CreateDirectory(Path.GetDirectoryName(f.file)); - } - File.WriteAllText(f.file, f.data); - } - - public void ProcessScheduleSaveFile(string filePath) - { - ProcessScheduleSaveFile(GetSaveFile(filePath)); - } - - public void ScheduleSaveFile(string filePath, string data) - { - RemoveScheduledSaveFile(filePath); - scheduleSaveFiles.Add(new saveFile() - { - file = filePath, - data = data, - created = DateTime.Now - }); - } - - private int GetSaveFileIndex(string filePath) - { - return scheduleSaveFiles.FindIndex(a => a.file == filePath); - } - - private saveFile GetSaveFile(string filePath) - { - var i = GetSaveFileIndex(filePath); - if (i >= 0) - { - return scheduleSaveFiles[i]; - } - return new saveFile(); - } - - public void ForceScheduleEveryMinuteToUpdate() - { - //forces schedule to update content - CheckScheduleEveryMinute(true); - } - - public string GetScheduledSaveFileData(string filePath) - { - var file = GetSaveFile(filePath); - return file.data; - } - - public bool HasScheduledSaveFile(string filePath) - { - var file = GetSaveFile(filePath); - if (file.file == null) { return false; } - return true; - } - - public void RemoveScheduledSaveFile(string filePath) - { - var i = GetSaveFileIndex(filePath); - if (i >= 0) - { - scheduleSaveFiles.RemoveAt(i); - } - } - } -} diff --git a/App/Core/Server.cs b/App/Server.cs similarity index 84% rename from App/Core/Server.cs rename to App/Server.cs index 9fe0af9..33e1ce1 100644 --- a/App/Core/Server.cs +++ b/App/Server.cs @@ -1,150 +1,129 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.IO; - -namespace Websilk -{ - public class Server - { - //////////////////////////////////////////////// - //Server (for application-wide memory store) - //////////////////////////////////////////////// - - public enum enumEnvironment - { - development = 0, - staging = 1, - production = 2 - } - - public string Version = ""; - // #.#.#.#.#.# = years since github repo was created (10/22/2016) [#] - // current year, month, day of release [#.#.#] - // revision of the day (optional) [#] - - public Utility.Util Util = new Utility.Util(); - public enumEnvironment environment = enumEnvironment.development; - public DateTime serverStart = DateTime.Now; - public int requestCount = 0; - public float requestTime = 0; - public string sqlActive = ""; - public string sqlConnection = ""; - public Random Random = new Random(); - public bool resetPass = false; - public int bcrypt_workfactor = 10; - private string _path = ""; - - - //Dictionary used for caching non-serialized objects, files from disk, or raw text - //be careful not to leak memory into the cache while causing an implosion! - public Dictionary Cache = new Dictionary(); - - //Dictionary used for HTML scaffolding of various files on the server. - //Value for key/value pair is an array of HTML (scaffold["key"][x].htm), - // separated by scaffold variable name (scaffold["key"][x].name), - // where data is injected in between each array item. - public Dictionary Scaffold = new Dictionary(); - - //schedule that runs once every minute - public Schedule.EveryMinute ScheduleEveryMinute = new Schedule.EveryMinute(); - - #region "System.UI.Web.Page.Server methods" - public string path(string strPath = "") - { - if (_path == "") { _path = Path.GetFullPath(".") + "\\"; } - var str = strPath.Replace("/", "\\"); - if (str.Substring(0, 1) == "\\") { str = str.Substring(1); } - return _path + str; - } - - public string MapPath(string strPath = "") { return path(strPath); } - - public string UrlDecode(string strPath) - { - return Uri.UnescapeDataString(strPath); - } - - public string UrlEncode(string strPath) - { - return Uri.EscapeDataString(strPath); - } - - #endregion - - #region "Startup" - public void CheckAdminPassword() - { - var Sql = new Sql(this, Util); - if ((int)Sql.ExecuteScalar("EXEC Security_HasPassword @userId=1") == 0) - { - resetPass = true; - } - Sql.Close(); - } - #endregion - - #region "Cache" - /// - /// Loads a file from cache. If the file hasn't been cached yet, then load file from a drive. - /// - /// - /// If true, it will not load a file from cache if the app is running in a development environment. Instead, it will always load the file from a drive. - /// - public string LoadFileFromCache(string filename, bool noDevEnvCache = false, bool noCache = false) - { - //first, check scheduled save file list - if (ScheduleEveryMinute.HasScheduledSaveFile(MapPath(filename))) - { - return ScheduleEveryMinute.GetScheduledSaveFileData(MapPath(filename)); - } - - if ((environment != enumEnvironment.development || noDevEnvCache == false) && noCache == false) - { - //next, check cache - if (Cache.ContainsKey(filename)) - { - return (string)Cache[filename]; - } - } - if (File.Exists(MapPath(filename))) - { - //finally, check file system - var file = File.ReadAllText(MapPath(filename)); - if (environment != enumEnvironment.development && noCache == false) - { - Cache.Add(filename, file); - } - return file; - } - return ""; - } - - public void SaveToCache(string key, object value) - { - if (Cache.ContainsKey(key)) - { - Cache[key] = value; - } - else - { - Cache.Add(key, value); - } - } - - public T GetFromCache(string key, Func value, bool serialize = true) - { - if(Cache[key] == null) - { - var obj = value(); - SaveToCache(key, serialize ? (object)Util.Serializer.WriteObjectToString(obj) : obj); - return obj; - } - else - { - return serialize ? (T)Util.Serializer.ReadObject((string)Cache[key], typeof(T)) : (T)Cache[key]; - } - } - #endregion - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.IO; + +namespace Websilk +{ + public class Server + { + //////////////////////////////////////////////// + //Server (for application-wide memory store) + //////////////////////////////////////////////// + + public enum enumEnvironment + { + development = 0, + staging = 1, + production = 2 + } + + public string Version = ""; + // #.#.#.#.#.# = years since github repo was created (10/22/2016) [#] + // current year, month, day of release [#.#.#] + // revision of the day (optional) [#] + + public Utility.Util Util = new Utility.Util(); + public enumEnvironment environment = enumEnvironment.development; + public DateTime serverStart = DateTime.Now; + public int requestCount = 0; + public float requestTime = 0; + public string sqlActive = ""; + public string sqlConnection = ""; + public Random Random = new Random(); + public bool resetPass = false; + public int bcrypt_workfactor = 10; + private string _path = ""; + + + //Dictionary used for caching non-serialized objects, files from disk, or raw text + //be careful not to leak memory into the cache while causing an implosion! + public Dictionary Cache = new Dictionary(); + + //Dictionary used for HTML scaffolding of various files on the server. + //Value for key/value pair is an array of HTML (scaffold["key"][x].htm), + // separated by scaffold variable name (scaffold["key"][x].name), + // where data is injected in between each array item. + public Dictionary Scaffold = new Dictionary(); + + #region "System.UI.Web.Page.Server methods" + public string path(string strPath = "") + { + if (_path == "") { _path = Path.GetFullPath(".") + "\\"; } + var str = strPath.Replace("/", "\\"); + if (str.Substring(0, 1) == "\\") { str = str.Substring(1); } + return _path + str; + } + + public string MapPath(string strPath = "") { return path(strPath); } + + public string UrlDecode(string strPath) + { + return Uri.UnescapeDataString(strPath); + } + + public string UrlEncode(string strPath) + { + return Uri.EscapeDataString(strPath); + } + + #endregion + + #region "Cache" + /// + /// Loads a file from cache. If the file hasn't been cached yet, then load file from a drive. + /// + /// + /// If true, it will not load a file from cache if the app is running in a development environment. Instead, it will always load the file from a drive. + /// + public string LoadFileFromCache(string filename, bool noDevEnvCache = false, bool noCache = false) + { + if ((environment != enumEnvironment.development || noDevEnvCache == false) && noCache == false) + { + //next, check cache + if (Cache.ContainsKey(filename)) + { + return (string)Cache[filename]; + } + } + if (File.Exists(MapPath(filename))) + { + //finally, check file system + var file = File.ReadAllText(MapPath(filename)); + if (environment != enumEnvironment.development && noCache == false) + { + Cache.Add(filename, file); + } + return file; + } + return ""; + } + + public void SaveToCache(string key, object value) + { + if (Cache.ContainsKey(key)) + { + Cache[key] = value; + } + else + { + Cache.Add(key, value); + } + } + + public T GetFromCache(string key, Func value, bool serialize = true) + { + if(Cache[key] == null) + { + var obj = value(); + SaveToCache(key, serialize ? (object)Util.Serializer.WriteObjectToString(obj) : obj); + return obj; + } + else + { + return serialize ? (T)Util.Serializer.ReadObject((string)Cache[key], typeof(T)) : (T)Cache[key]; + } + } + #endregion + } +} diff --git a/App/Service.cs b/App/Service.cs new file mode 100644 index 0000000..d03a056 --- /dev/null +++ b/App/Service.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using Microsoft.AspNetCore.Http; + +namespace Websilk +{ + public class Service + { + protected Core S; + public Dictionary Form = new Dictionary(); + public IFormFileCollection Files; + + public Service(Core WebsilkCore) { + S = WebsilkCore; + } + + } +} diff --git a/App/Sql/SqlUser.cs b/App/Sql/SqlUser.cs deleted file mode 100644 index e78f683..0000000 --- a/App/Sql/SqlUser.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System.Collections.Generic; -using System.Data.SqlClient; - -namespace Websilk.SqlQueries -{ - public class User : SqlQuery - { - public User(Core WebsilkCore) : base(WebsilkCore) - { - } - - #region "Account" - public SqlReader AuthenticateUser(string email, string password) - { - var parameters = new List(); - parameters.Add(new SqlParameter("@email", email)); - parameters.Add(new SqlParameter("@password", password)); - return new SqlReader(S, "EXEC Security_AuthenticateUser @email=@email, @password=@password", parameters); - } - - public SqlReader UpdatePassword(int userId, string password) - { - var parameters = new List(); - parameters.Add(new SqlParameter("@userId", userId.ToString())); - parameters.Add(new SqlParameter("@password", password)); - return new SqlReader(S, "EXEC User_UpdatePassword @userId=@userId, @password=@password", parameters); - } - - public string GetEmail(int userId) - { - var parameters = new List(); - parameters.Add(new SqlParameter("@userId", userId.ToString())); - return (string)S.Sql.ExecuteScalar("EXEC User_GetEmail @userId=@userId", parameters); - } - - public string GetPassword(string email) - { - var parameters = new List(); - parameters.Add(new SqlParameter("@email", email)); - return (string)S.Sql.ExecuteScalar("EXEC User_GetPassword @email=@email", parameters); - } - - public SqlReader UpdateEmail(int userId, string email) - { - var parameters = new List(); - parameters.Add(new SqlParameter("@userId", userId.ToString())); - parameters.Add(new SqlParameter("@email", email)); - return new SqlReader(S, "EXEC User_UpdateEmail @userId=@userId, @email=@email", parameters); - } - #endregion - - #region "Security" - public SqlReader GetWebsiteSecurity(int websiteId, int userId) - { - var parameters = new List(); - parameters.Add(new SqlParameter("@websiteId", websiteId.ToString())); - parameters.Add(new SqlParameter("@userId", userId.ToString())); - return new SqlReader(S, "EXEC Security_GetWebsite @websiteId=@websiteId, @userId=@userId", parameters); - } - - - #endregion - } -} \ No newline at end of file diff --git a/App/Startup.cs b/App/Startup.cs index 1c8d950..c15e88d 100644 --- a/App/Startup.cs +++ b/App/Startup.cs @@ -55,7 +55,6 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) server.sqlActive = config.GetSection("Data:Active").Value; server.sqlConnection = config.GetSection("Data:" + server.sqlActive).Value; - server.ScheduleEveryMinute.saveFileInterval = int.Parse(config.GetSection("Scheduler:saveFileInterval").Value); var isdev = false; switch (config.GetSection("Environment").Value.ToLower()) @@ -74,7 +73,6 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) //configure server security server.bcrypt_workfactor = int.Parse(config.GetSection("Encryption:bcrypt_work_factor").Value); - server.CheckAdminPassword(); //run Websilk application app.Run(async (context) => @@ -100,11 +98,11 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) } server.requestCount += 1; - if (isdev) - { - Console.WriteLine("--------------------------------------------"); - Console.WriteLine("{0} GET {1}", DateTime.Now.ToString("hh:mm:ss"), context.Request.Path); - } + //if (isdev) + //{ + // Console.WriteLine("--------------------------------------------"); + // Console.WriteLine("{0} GET {1}", DateTime.Now.ToString("hh:mm:ss"), context.Request.Path); + //} if (paths.Length > 1) { @@ -144,8 +142,8 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env) requestEnd = DateTime.Now; tspan = requestEnd - requestStart; server.requestTime += (tspan.Seconds); - Console.WriteLine("END GET {0} {1} ms {2}", context.Request.Path, tspan.Milliseconds, requestType); - Console.WriteLine(""); + //Console.WriteLine("END GET {0} {1} ms {2}", context.Request.Path, tspan.Milliseconds, requestType); + //Console.WriteLine(""); } }); } diff --git a/App/Support/Core/areas.md b/App/Support/Core/areas.md deleted file mode 100644 index 8541b18..0000000 --- a/App/Support/Core/areas.md +++ /dev/null @@ -1,3 +0,0 @@ -# Areas - -Each web page loads a [page layout](core/page-layout) that consists of a set of areas where content can exist. For example, the default page layout has areas for the website head, body, and foot. \ No newline at end of file diff --git a/App/Support/Core/blocks.md b/App/Support/Core/blocks.md deleted file mode 100644 index 9f06d74..0000000 --- a/App/Support/Core/blocks.md +++ /dev/null @@ -1,10 +0,0 @@ -# Blocks - -All content within a web page is loaded within blocks, which means that you'll be able to drag & drop [components](core/components) into blocks. Each [area](core/areas) within the [page layout](core/page-layout) will consist of at least one block. If more than one block is loaded into an area, they will be stacked vertically. - -## Custom blocks -Some blocks are page-specific, and other blocks are website-specific and can be loaded across several pages. For example, the website logo & menu would exist within a custom block that is loaded into the head area of every web page. - -## Page-specific Blocks - -Each a[rea](core/areas) within the page layout will consist of a page-specific block that will only load on the page it belongs to. You can add content to these blocks, or you can leave them empty and only use custom blocks to create content with. It's up to you, the designer. \ No newline at end of file diff --git a/App/Support/Core/components.md b/App/Support/Core/components.md deleted file mode 100644 index 437ff04..0000000 --- a/App/Support/Core/components.md +++ /dev/null @@ -1,6 +0,0 @@ -# Components - -Nearly all of the content that you'll create for your websites within the Websilk platform will consist of `components`. You can drag & drop components (such as text, photos, & menus) directly onto your web pages from within the [Page Editor](editor). - -## Custom Properties -When editing the page, you can edit [custom properties](editor/component-properties) for your components. For example, you can upload an image to load within a `photo component`, or you can add a new menu item to your `menu component`. \ No newline at end of file diff --git a/App/Support/Core/page-layout.md b/App/Support/Core/page-layout.md deleted file mode 100644 index 5a4de83..0000000 --- a/App/Support/Core/page-layout.md +++ /dev/null @@ -1,36 +0,0 @@ -# Page Layout -Each page uses a structured layout that separates content into [areas](editor/areas), such as the header, body, & footer areas. When editing a web page, you can drag & drop [components](editor/components) into [blocks](editor/blocks) that are stacked within the various page layout areas. - -## Blocks -All content within a web page is loaded within blocks. Each [area](editor/areas) within the page layout will consist of at least one [block](editor/blocks). Some blocks are page-specific, and other blocks can be loaded across several pages. For example, the website logo & menu would exist within a custom block that is loaded into the head area of every web page. - -## For Developers -The default page layout for your website can be found at `/Content/themes/default/layouts/default.html`. The file contains 3 `areas` consisting of a header, body, & footer. - - {{head}} - {{body}} - {{foot}} - -In HTML, those three elements are useless text nodes, but when loaded into Websilk, they are replaced with rendered HTML content ([blocks](editor/blocks) & [components](editor/components)) that the user added to their web pages via the [Page Editor](editor). - -A more complex example would consist of a three column body with a row above & below. - -
    - {{body name="row 1"}} -
    -
    -
    - {{body name="column 1"}} -
    -
    - {{body name="column 2"}} -
    -
    - {{body name="column 3"}} -
    -
    -
    - {{body name="row 2"}} -
    - -Any unused areas will be removed from the rendered HTML, which could potentially disrupt the flow of the page. If any areas were contained within a styled `
    ` tag, the styling could appear on the page without any content to style. If the tag had no styling (such as `padding` or `border`), the empty tag would not render any pixels on the page \ No newline at end of file diff --git a/App/Support/Core/pages.html b/App/Support/Core/pages.html deleted file mode 100644 index 125a5a8..0000000 --- a/App/Support/Core/pages.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/App/Support/Developers/Component/window.md b/App/Support/Developers/Component/window.md deleted file mode 100644 index 1e2a311..0000000 --- a/App/Support/Developers/Component/window.md +++ /dev/null @@ -1,38 +0,0 @@ -# Window -#### Part of the [Page Editor](../editor) - -The window has a multitude of functionality that can transform a simple window into a drop down menu, dialog box, & side bar. - -The window is part of the Page Editor's fixed toolbar, so windows will be fixed to the browser window when the user scrolls down the web page. - -A window can contain a title bar, tab menu, and content areas. The tab menu determines which content area to display. - -## Developing a custom Window - - -#### Creating a Tab Menu - -When developing a custom window, make sure your content areas are separated in `
    ` tags with the classes `tab-content` and `index-#` replacing the `#` with an incrimental number starting at `1`. This is only required if you want to use the Tab Menu. - -For example: - -``` -
    ...
    -
    ...
    -
    ...
    -``` - -In the backend, within your `Properties.cs` file, add menu items. For example: - -``` -public override void Load() { - //create tab menu - AddMenuItem("Items"); - AddMenuItem("Design"); - AddMenuItem("Settings"); -} -``` - -Each menu item you add will increment the index, starting at 1. - -If at some point, you decide to rearrange the menu items, you must also rearrange the index # for the HTML content (`
    `). \ No newline at end of file diff --git a/App/Support/Developers/applications.md b/App/Support/Developers/applications.md deleted file mode 100644 index 1312e97..0000000 --- a/App/Support/Developers/applications.md +++ /dev/null @@ -1,8 +0,0 @@ -# Developing Applications -#### For the Websilk platform - -Adding custom functionality to your website may require you to develop a vendor application for Websilk. For example, a shopping cart system or user commenting system would require a vendor application to be developed. - -It may sound like a daunting task to create an entire "application" for a CMS platform, but you will be suprised to find that it is extremely easy to do with Websilk. - - diff --git a/App/Support/Developers/component.md b/App/Support/Developers/component.md deleted file mode 100644 index 425d5eb..0000000 --- a/App/Support/Developers/component.md +++ /dev/null @@ -1,39 +0,0 @@ -# Developing Components - -To begin, you should analyze the `Component.cs` class located in the `/Core` folder of this project. Every component within the Websilk platform inherits this class. - -## Creating a new component class - -Your component class should be created in a sub-folder within the `/Vendor` folder of this project. Give your sub-folder a proper name, preferably with no spaces, numbers, or special characters. Also, try to follow the file naming structure used for all native components within the `/Components` folder of this project. - -Your empty component class should look like: - - using ProtoBuf; - - namespace Websilk.Components - { - public class MyComponent: Component - { - [ProtoMember(1)] - public string text = ""; - } - } - -`ProtoBuf` is a Serialization class that highly compresses the component instance when serializing a page after a user saves their page within the [Page Editor](../editor). - -You can find documentation for `ProtoBuf` at [https://github.com/mgravell/protobuf-net](https://github.com/mgravell/protobuf-net) - -1. Replace `MyComponent` with the name of your component. - -2. The property `text` is a custom property specific to the component in this example. Each custom property you create requires a `[ProtoMember(#)]` attribute with an incrementing index #, starting at 1. - -3. Optionally, you can include your own namespace - - namepace Websilk.Components.MyApp { } - -4. Create an Sql file in the `/Vender` sub-folder and name it `init.sql`. - - TODO: Write Sql Source Code Here - - The Sql above will create a reference to your component within the database. Read about [Developing A Websilk Application](developers/applications) - diff --git a/App/Support/Developers/content-folder.md b/App/Support/Developers/content-folder.md deleted file mode 100644 index 948ec34..0000000 --- a/App/Support/Developers/content-folder.md +++ /dev/null @@ -1 +0,0 @@ -# Content Folder \ No newline at end of file diff --git a/App/Support/Editor/component-properties.md b/App/Support/Editor/component-properties.md deleted file mode 100644 index cf55177..0000000 --- a/App/Support/Editor/component-properties.md +++ /dev/null @@ -1 +0,0 @@ -# Component Properties \ No newline at end of file diff --git a/App/Support/Pages/history.md b/App/Support/Pages/history.md deleted file mode 100644 index 2736526..0000000 --- a/App/Support/Pages/history.md +++ /dev/null @@ -1,10 +0,0 @@ -# Page History - -When editing your page & then saving your changes, the new changes applied to the page are saved into history. Within the dashboard, you can view a log of page edits & select one to view. - -When viewing a historical page, all content on the page, including [custom blocks](editor/blocks) will be loaded from the specified time in history. All database-driven content, such as a list of new blog posts or user comments will not be historical because the content is dynamically loaded into the [components](editor/components) from an outside source. Any changes to external resources, such as `.css` or `.js` files will not be historical either since they are not maintained by the Websilk platform. - -## Future releases -Hopefully, the following ideas will make it to a future release of Websilk - -* When the user loads a historical page, Websilk should load historical external resources for that page. This can be done by monitoring file changes (such as `.css` & `.js` files) within various [Content](developers/content-folder) sub-folders, then copying the files into a historical folder when they change. \ No newline at end of file diff --git a/App/Support/core.md b/App/Support/core.md deleted file mode 100644 index 06d06f7..0000000 --- a/App/Support/core.md +++ /dev/null @@ -1,3 +0,0 @@ -# Core - -There are core features that make up the heart of the Websilk platform. Sitting on top of a blazing-fast, custom C# MVC framework, there are several technologies that are used to load content onto your web pages. \ No newline at end of file diff --git a/App/Support/glossary.md b/App/Support/glossary.md deleted file mode 100644 index 4ced10a..0000000 --- a/App/Support/glossary.md +++ /dev/null @@ -1,12 +0,0 @@ -# Glossary - -* [Core](core) - * [Areas](core/areas) - * [Blocks](core/blocks) - * [Components](core/components) - * [Pages](core/pages) - * [Layout](core/page-layout) - * [Page History](pages/history) -* [Developers](developers) - * [Content folder](developers/content-folder) -* [Page Editor](editor) \ No newline at end of file diff --git a/App/Core/User.cs b/App/User.cs similarity index 83% rename from App/Core/User.cs rename to App/User.cs index 4fcb4f3..b74202a 100644 --- a/App/Core/User.cs +++ b/App/User.cs @@ -1,176 +1,176 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Data.SqlClient; -using Newtonsoft.Json; - -namespace Websilk -{ - public class User - { - public enum enumSecurity - { - read = 0, - create = 1, - update = 2, - delete = 3 - } - - public struct structSecurityWebsite - { - public int websiteId; - public int ownerId; - public Dictionary security; - } - - [JsonIgnore] - public Core S; - - public int userId = 0; - public string visitorId = ""; - public string email = ""; - public string photo = ""; - public string displayName = ""; - public bool isBot = false; - public bool useAjax = true; - public bool isMobile = false; - public bool isTablet = false; - - public List security = new List(); - - [JsonIgnore] - public bool saveSession = false; - - public User() - { - } - - public void Load(Core WebsilkCore) - { - S = WebsilkCore; - - //generate visitor id - if (visitorId == "" || visitorId == null) { visitorId = S.Util.Str.CreateID(); saveSession = true; } - } - - /// - /// Authenticate user credentials and log into user account - /// - /// - /// - /// - public bool LogIn(string email, string password, int websiteId, int ownerId) - { - saveSession = true; - var sqlUser = new SqlQueries.User(S); - var dbpass = sqlUser.GetPassword(email); - if(dbpass == "") { return false; } - if(BCrypt.Net.BCrypt.Verify(password, dbpass)) - { - //password verified by Bcrypt - var user = sqlUser.AuthenticateUser(email, dbpass); - if (user.Rows.Count > 0) - { - user.Read(); - userId = user.GetInt("userId"); - this.email = email; - photo = user.Get("photo"); - displayName = user.Get("displayname"); - - //get initial security for this website - if(!security.Any(a => a.websiteId == websiteId)){ - security.Add(GetSecurityForWebsite(userId, websiteId, ownerId)); - } - - return true; - } - } - - return false; - } - - public void LogOut() - { - saveSession = true; - S.Session.Remove("user"); - } - - public bool UpdatePassword(int userId, string password) - { - var update = false; //security check - var emailAddr = email; - if(S.Server.resetPass == true && userId == 1) - { - //securely change admin password - //get admin email address from database - var parameters = new List(); - parameters.Add(new SqlParameter("@_userId", userId.ToString())); - emailAddr = (string)S.Sql.ExecuteScalar("EXEC User_GetEmail @userId=@_userId", parameters); - if (emailAddr != "" && emailAddr != null) { update = true; } - } - if(update == true) - { - var bCrypt = new BCrypt.Net.BCrypt(); - var encrypted = BCrypt.Net.BCrypt.HashPassword(password, S.Server.bcrypt_workfactor); - var sqlUser = new SqlQueries.User(S); - sqlUser.UpdatePassword(userId, encrypted); - S.Server.resetPass = false; - } - return false; - } - - #region "security" - public structSecurityWebsite GetSecurityForWebsite(int userId, int websiteId, int ownerId) - { - var sqlUser = new SqlQueries.User(S); - var security = new structSecurityWebsite(); - var items = new Dictionary(); - security.websiteId = websiteId; - security.ownerId = ownerId; - var reader = sqlUser.GetWebsiteSecurity(websiteId, userId); - if(reader.Rows.Count > 0) - { - while (reader.Read()) - { - var data = reader.Get("security"); - var d = new string[] { }; - var b = new List(); - if(data != "") - { - d = data.Split(','); - foreach(var v in d) - { - if(v == "1") { b.Add(true); }else { b.Add(false); } - } - } - items.Add(reader.Get("feature"), b.ToArray()); - } - } - security.security = items; - return security; - } - - public bool checkSecurity(int websiteId, string feature, enumSecurity securityIndex) - { - var i = security.FindIndex(a => a.websiteId == websiteId); - if(i >= 0) - { - var website = security[i]; - if(website.ownerId == userId) { return true; } //website owner - if (website.security.ContainsKey(feature)) - { - var data = website.security[feature]; - if(data != null) - { - if(data.Length >= (int)securityIndex + 1) - { - return data[(int)securityIndex]; - } - } - } - } - return false; - } - #endregion - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Data.SqlClient; +using Newtonsoft.Json; + +namespace Websilk +{ + public class User + { + public enum enumSecurity + { + read = 0, + create = 1, + update = 2, + delete = 3 + } + + public struct structSecurityWebsite + { + public int websiteId; + public int ownerId; + public Dictionary security; + } + + [JsonIgnore] + public Core S; + + public int userId = 0; + public string visitorId = ""; + public string email = ""; + public string photo = ""; + public string displayName = ""; + public bool isBot = false; + public bool useAjax = true; + public bool isMobile = false; + public bool isTablet = false; + + public List security = new List(); + + [JsonIgnore] + public bool saveSession = false; + + public User() + { + } + + public void Load(Core WebsilkCore) + { + S = WebsilkCore; + + //generate visitor id + if (visitorId == "" || visitorId == null) { visitorId = S.Util.Str.CreateID(); saveSession = true; } + } + + /// + /// Authenticate user credentials and log into user account + /// + /// + /// + /// + public bool LogIn(string email, string password, int websiteId, int ownerId) + { + saveSession = true; + //var sqlUser = new SqlQueries.User(S); + var query = new Query.Users(); + var dbpass = query.GetPassword(email); + if(dbpass == "") { return false; } + if(BCrypt.Net.BCrypt.Verify(password, dbpass)) + { + //password verified by Bcrypt + var user = query.AuthenticateUser(email, dbpass); + if (user != null) + { + userId = user.userId; + this.email = email; + photo = user.photo; + displayName = user.displayname; + + //get initial security for this website + if(!security.Any(a => a.websiteId == websiteId)){ + security.Add(GetSecurityForWebsite(userId, websiteId, ownerId)); + } + + return true; + } + } + + return false; + } + + public void LogOut() + { + saveSession = true; + S.Session.Remove("user"); + } + + public bool UpdatePassword(int userId, string password) + { + var update = false; //security check + var emailAddr = email; + if(S.Server.resetPass == true && userId == 1) + { + //securely change admin password + //get admin email address from database + var parameters = new List(); + parameters.Add(new SqlParameter("@_userId", userId.ToString())); + emailAddr = (string)S.Sql.ExecuteScalar("EXEC User_GetEmail @userId=@_userId", parameters); + if (emailAddr != "" && emailAddr != null) { update = true; } + } + if(update == true) + { + var bCrypt = new BCrypt.Net.BCrypt(); + var encrypted = BCrypt.Net.BCrypt.HashPassword(password, S.Server.bcrypt_workfactor); + var queryUser = new Query.Users(); + queryUser.UpdatePassword(userId, encrypted); + S.Server.resetPass = false; + } + return false; + } + + #region "security" + public structSecurityWebsite GetSecurityForWebsite(int userId, int websiteId, int ownerId) + { + var query = new Query.Security(); + var security = new structSecurityWebsite(); + var items = new Dictionary(); + security.websiteId = websiteId; + security.ownerId = ownerId; + var sec = query.GetSecurity(websiteId, userId); + if(sec != null) + { + foreach(var item in sec) + { + var data = item.security; + var d = new string[] { }; + var b = new List(); + if(data != "") + { + d = data.Split(','); + foreach(var v in d) + { + if(v == "1") { b.Add(true); }else { b.Add(false); } + } + } + items.Add(item.feature, b.ToArray()); + } + } + security.security = items; + return security; + } + + public bool checkSecurity(int websiteId, string feature, enumSecurity securityIndex) + { + var i = security.FindIndex(a => a.websiteId == websiteId); + if(i >= 0) + { + var website = security[i]; + if(website.ownerId == userId) { return true; } //website owner + if (website.security.ContainsKey(feature)) + { + var data = website.security[feature]; + if(data != null) + { + if(data.Length >= (int)securityIndex + 1) + { + return data[(int)securityIndex]; + } + } + } + } + return false; + } + #endregion + } +} diff --git a/App/Core/Scaffold.cs b/App/Utility/Scaffold.cs similarity index 97% rename from App/Core/Scaffold.cs rename to App/Utility/Scaffold.cs index 40512c6..0074670 100644 --- a/App/Core/Scaffold.cs +++ b/App/Utility/Scaffold.cs @@ -1,247 +1,247 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using Newtonsoft.Json; - -namespace Websilk -{ - public struct structScaffold - { - public Dictionary Data; - public Dictionary arguments; - public List elements; - } - - public struct structScaffoldElement - { - public string name; - public string htm; - } - - public class Scaffold - { - [JsonIgnore] - private Core S; - - public Dictionary Data; - public List elements; - public string serializedElements; - - public Scaffold(Core WebsilkCore, string file = "", string html = "", string section = "") - { - S = WebsilkCore; - Data = new Dictionary(); - - if (S.Server.Scaffold.ContainsKey(file + '/' + section) == false) - { - elements = new List(); - - //first, check if html is already provided - var htm = html; - if(htm == "") - { - //try loading file from disk or cache next - if (S.Server.Cache.ContainsKey(file) == false) - { - htm = File.ReadAllText(S.Server.MapPath(file)); - } - else - { - htm = (string)S.Server.Cache[file]; - } - } - - //next, find the group of code matching the scaffold name - int[] e = new int[3]; - if (section != "") - { - string s = ""; - e[0] = -1; - while(e[0] < 0) { - //find starting tag (optionally with arguments) - //for example: {{button (name:submit, style:outline)}} - e[0] = htm.IndexOf("{{" + section); - if(e[0] >= 0) - { - e[1] = e[0] + 2 + section.Length; - s = htm.Substring(e[1], 1); - switch (s) - { - case "}": - //found end of tag - break; - - default: - e[0] = -1; - break; - } - } else { break; } - } - e[1] = htm.IndexOf("{{/" + section + "}}"); - if (e[0] >= 0 & e[1] > e[0]) - { - e[2] = e[0] + 4 + section.Length; - htm = htm.Substring(e[2], e[1] - e[2]); - } - } - - //get scaffold from html code - var arr = htm.Split(new string[] { "{{" }, StringSplitOptions.RemoveEmptyEntries); - var i = 0; - structScaffoldElement scaff; - - for (var x = 0; x < arr.Length; x++) - { - i = arr[x].IndexOf("}}"); - scaff = new structScaffoldElement(); - if (i > 0) - { - scaff.name = arr[x].Substring(0, i); - scaff.htm = arr[x].Substring(i + 2); - } - else - { - scaff.name = ""; - scaff.htm = arr[x]; - } - elements.Add(scaff); - } - if(S.Server.environment != Server.enumEnvironment.development){ - //cache the scaffold file - var scaffold = new structScaffold(); - scaffold.Data = Data; - scaffold.elements = elements; - S.Server.Scaffold.Add(file + '/' + section, scaffold); - } - } - else - { - //get scaffold object from memory - var scaffold = S.Server.Scaffold[file + '/' + section]; - Data = scaffold.Data; - elements = scaffold.elements; - } - serializedElements = S.Util.Serializer.WriteObjectToString(elements); - } - - public string Render() - { - return Render(Data); - } - - public string Render(Dictionary nData) - { - //deserialize list of elements since we will be manipulating the list, - //so we don't want to permanently mutate the public elements array - var elems = (List)S.Util.Serializer.ReadObject(serializedElements, typeof(List)); - if (elems.Count > 0) - { - //render scaffold with paired nData data - var scaff = new StringBuilder(); - var s = ""; - var useScaffold = false; - var closing = new List>(); - - //remove any unwanted blocks of HTML from scaffold - for (var x = 0; x < elems.Count; x++) - { - if (x < elems.Count - 1) - { - for (var y = x + 1; y < elems.Count; y++) - { - //check for closing tag - if (elems[y].name == "/" + elems[x].name) - { - //add enclosed group of HTML to list for removing - List closed = new List(); - closed.Add(elems[x].name); - closed.Add(x.ToString()); - closed.Add(y.ToString()); - - if (nData.ContainsKey(elems[x].name) == true) - { - //check if user wants to include HTML - //that is between start & closing tag - s = nData[elems[x].name]; - if (string.IsNullOrEmpty(s) == true) { s = ""; } - if (s == "true" | s == "1") - { - closed.Add("true"); - } - else { closed.Add(""); } - } - else { closed.Add(""); } - - closing.Add(closed); - } - } - - } - } - - //remove all groups of HTML in list that should not be displayed - List removeIndexes = new List(); - bool isInList = false; - for (int x = 0; x < closing.Count; x++) - { - if (closing[x][3] != "true") - { - //add range of indexes from closing to the removeIndexes list - for (int y = int.Parse(closing[x][1]); y < int.Parse(closing[x][2]); y++) - { - isInList = false; - for (int z = 0; z < removeIndexes.Count; z++) - { - if (removeIndexes[z] == y) { isInList = true; break; } - } - if (isInList == false) { removeIndexes.Add(y); } - } - } - } - - //physically remove HTML list items from scaffold - int offset = 0; - for (int z = 0; z < removeIndexes.Count; z++) - { - elems.RemoveAt(removeIndexes[z] - offset); - offset += 1; - } - - //finally, replace scaffold variables with custom data - for (var x = 0; x < elems.Count; x++) - { - //check if scaffold item is an enclosing tag or just a variable - useScaffold = true; - if (elems[x].name.IndexOf('/') < 0) - { - for (int y = 0; y < closing.Count; y++) - { - if (elems[x].name == closing[y][0]) { useScaffold = false; break; } - } - } - else { useScaffold = false; } - - if ((nData.ContainsKey(elems[x].name) == true - || elems[x].name.IndexOf('/') == 0) & useScaffold == true) - { - //inject string into scaffold variable - s = nData[elems[x].name.Replace("/", "")]; - if (string.IsNullOrEmpty(s) == true) { s = ""; } - scaff.Append(s + elems[x].htm); - } - else - { - //passively add htm, ignoring scaffold variable - scaff.Append(elems[x].htm); - } - } - - //render scaffolding as HTML string - return scaff.ToString(); - } - return ""; - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using Newtonsoft.Json; + +namespace Websilk +{ + public struct structScaffold + { + public Dictionary Data; + public Dictionary arguments; + public List elements; + } + + public struct structScaffoldElement + { + public string name; + public string htm; + } + + public class Scaffold + { + [JsonIgnore] + private Core S; + + public Dictionary Data; + public List elements; + public string serializedElements; + + public Scaffold(Core WebsilkCore, string file = "", string html = "", string section = "") + { + S = WebsilkCore; + Data = new Dictionary(); + + if (S.Server.Scaffold.ContainsKey(file + '/' + section) == false) + { + elements = new List(); + + //first, check if html is already provided + var htm = html; + if(htm == "") + { + //try loading file from disk or cache next + if (S.Server.Cache.ContainsKey(file) == false) + { + htm = File.ReadAllText(S.Server.MapPath(file)); + } + else + { + htm = (string)S.Server.Cache[file]; + } + } + + //next, find the group of code matching the scaffold name + int[] e = new int[3]; + if (section != "") + { + string s = ""; + e[0] = -1; + while(e[0] < 0) { + //find starting tag (optionally with arguments) + //for example: {{button (name:submit, style:outline)}} + e[0] = htm.IndexOf("{{" + section); + if(e[0] >= 0) + { + e[1] = e[0] + 2 + section.Length; + s = htm.Substring(e[1], 1); + switch (s) + { + case "}": + //found end of tag + break; + + default: + e[0] = -1; + break; + } + } else { break; } + } + e[1] = htm.IndexOf("{{/" + section + "}}"); + if (e[0] >= 0 & e[1] > e[0]) + { + e[2] = e[0] + 4 + section.Length; + htm = htm.Substring(e[2], e[1] - e[2]); + } + } + + //get scaffold from html code + var arr = htm.Split(new string[] { "{{" }, StringSplitOptions.RemoveEmptyEntries); + var i = 0; + structScaffoldElement scaff; + + for (var x = 0; x < arr.Length; x++) + { + i = arr[x].IndexOf("}}"); + scaff = new structScaffoldElement(); + if (i > 0) + { + scaff.name = arr[x].Substring(0, i); + scaff.htm = arr[x].Substring(i + 2); + } + else + { + scaff.name = ""; + scaff.htm = arr[x]; + } + elements.Add(scaff); + } + if(S.Server.environment != Server.enumEnvironment.development){ + //cache the scaffold file + var scaffold = new structScaffold(); + scaffold.Data = Data; + scaffold.elements = elements; + S.Server.Scaffold.Add(file + '/' + section, scaffold); + } + } + else + { + //get scaffold object from memory + var scaffold = S.Server.Scaffold[file + '/' + section]; + Data = scaffold.Data; + elements = scaffold.elements; + } + serializedElements = S.Util.Serializer.WriteObjectToString(elements); + } + + public string Render() + { + return Render(Data); + } + + public string Render(Dictionary nData) + { + //deserialize list of elements since we will be manipulating the list, + //so we don't want to permanently mutate the public elements array + var elems = (List)S.Util.Serializer.ReadObject(serializedElements, typeof(List)); + if (elems.Count > 0) + { + //render scaffold with paired nData data + var scaff = new StringBuilder(); + var s = ""; + var useScaffold = false; + var closing = new List>(); + + //remove any unwanted blocks of HTML from scaffold + for (var x = 0; x < elems.Count; x++) + { + if (x < elems.Count - 1) + { + for (var y = x + 1; y < elems.Count; y++) + { + //check for closing tag + if (elems[y].name == "/" + elems[x].name) + { + //add enclosed group of HTML to list for removing + List closed = new List(); + closed.Add(elems[x].name); + closed.Add(x.ToString()); + closed.Add(y.ToString()); + + if (nData.ContainsKey(elems[x].name) == true) + { + //check if user wants to include HTML + //that is between start & closing tag + s = nData[elems[x].name]; + if (string.IsNullOrEmpty(s) == true) { s = ""; } + if (s == "true" | s == "1") + { + closed.Add("true"); + } + else { closed.Add(""); } + } + else { closed.Add(""); } + + closing.Add(closed); + } + } + + } + } + + //remove all groups of HTML in list that should not be displayed + List removeIndexes = new List(); + bool isInList = false; + for (int x = 0; x < closing.Count; x++) + { + if (closing[x][3] != "true") + { + //add range of indexes from closing to the removeIndexes list + for (int y = int.Parse(closing[x][1]); y < int.Parse(closing[x][2]); y++) + { + isInList = false; + for (int z = 0; z < removeIndexes.Count; z++) + { + if (removeIndexes[z] == y) { isInList = true; break; } + } + if (isInList == false) { removeIndexes.Add(y); } + } + } + } + + //physically remove HTML list items from scaffold + int offset = 0; + for (int z = 0; z < removeIndexes.Count; z++) + { + elems.RemoveAt(removeIndexes[z] - offset); + offset += 1; + } + + //finally, replace scaffold variables with custom data + for (var x = 0; x < elems.Count; x++) + { + //check if scaffold item is an enclosing tag or just a variable + useScaffold = true; + if (elems[x].name.IndexOf('/') < 0) + { + for (int y = 0; y < closing.Count; y++) + { + if (elems[x].name == closing[y][0]) { useScaffold = false; break; } + } + } + else { useScaffold = false; } + + if ((nData.ContainsKey(elems[x].name) == true + || elems[x].name.IndexOf('/') == 0) & useScaffold == true) + { + //inject string into scaffold variable + s = nData[elems[x].name.Replace("/", "")]; + if (string.IsNullOrEmpty(s) == true) { s = ""; } + scaff.Append(s + elems[x].htm); + } + else + { + //passively add htm, ignoring scaffold variable + scaff.Append(elems[x].htm); + } + } + + //render scaffolding as HTML string + return scaff.ToString(); + } + return ""; + } + } +} diff --git a/App/Core/Vendor.cs b/App/Vendor.cs similarity index 100% rename from App/Core/Vendor.cs rename to App/Vendor.cs diff --git a/App/Websilk.csproj b/App/Websilk.csproj index 64b541f..e6943f9 100644 --- a/App/Websilk.csproj +++ b/App/Websilk.csproj @@ -1,7 +1,7 @@  - netcoreapp1.1 + netcoreapp2.0 @@ -10,6 +10,7 @@ true + Websilk.Program @@ -20,20 +21,23 @@ - - - - - - - - + + + + + + + + - - - + + + + + + diff --git a/Query/Models/Page.cs b/Query/Models/Page.cs new file mode 100644 index 0000000..dc4d1bf --- /dev/null +++ b/Query/Models/Page.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Websilk.Query.Models +{ + class PageInfo + { + public int websiteid { get; set; } + public int pageid { get; set; } + public int parentid { get; set; } + public int ownerId { get; set; } + public string websitetitle { get; set; } + public string title { get; set; } + public string title_head { get; set; } + public short pagetype { get; set; } + public int shadowId { get; set; } + public int shadowChildId { get; set; } + public string layout { get; set; } + public string service { get; set; } + public string path { get; set; } + public string pathIds { get; set; } + public string parenttitle { get; set; } + public int? subpages { get; set; } + public string theme { get; set; } + public string colors { get; set; } + public string colorsEditor { get; set; } + public string colorsDash { get; set; } + public string description { get; set; } + public int? pagedenied { get; set; } + public int? page404 { get; set; } + public int? status { get; set; } + public bool? icon { get; set; } + public bool security { get; set; } + public DateTime datecreated { get; set; } + public bool enabled { get; set; } + public bool deleted { get; set; } + public string googlewebpropertyid { get; set; } + + } +} diff --git a/Query/Models/Security.cs b/Query/Models/Security.cs new file mode 100644 index 0000000..8bf47d5 --- /dev/null +++ b/Query/Models/Security.cs @@ -0,0 +1,13 @@ +using System; + +namespace Websilk.Query.Models +{ + public class Security + { + public int websiteId { get; set; } + public int pageId { get; set; } + public int userId { get; set; } + public string feature { get; set; } + public string security { get; set; } + } +} diff --git a/Query/Models/User.cs b/Query/Models/User.cs new file mode 100644 index 0000000..82e2488 --- /dev/null +++ b/Query/Models/User.cs @@ -0,0 +1,19 @@ +using System; +namespace Websilk.Query.Models +{ + public class User + { + public int userId { get; set; } + public string email { get; set; } + public string password { get; set; } + public string displayname { get; set; } + public string photo { get; set; } + public DateTime lastlogin { get; set; } + public DateTime datecreated { get; set; } + public int status { get; set; } + public string signupip { get; set; } + public string referrer { get; set; } + public string activation { get; set; } + public bool deleted { get; set; } + } +} diff --git a/Query/Query.csproj b/Query/Query.csproj new file mode 100644 index 0000000..9519787 --- /dev/null +++ b/Query/Query.csproj @@ -0,0 +1,21 @@ + + + + netcoreapp2.0 + Websilk.Query + Websilk.Query + + + + + + + + + + + PreserveNewest + + + + diff --git a/Query/Query/Pages.cs b/Query/Query/Pages.cs new file mode 100644 index 0000000..0d82a48 --- /dev/null +++ b/Query/Query/Pages.cs @@ -0,0 +1,9 @@ +using System; +using System.Collections.Generic; + +namespace Websilk.Query +{ + class Pages + { + } +} diff --git a/Query/Query/Security.cs b/Query/Query/Security.cs new file mode 100644 index 0000000..f79d748 --- /dev/null +++ b/Query/Query/Security.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Websilk.Query +{ + public class Security: QuerySql + { + + public List GetSecurity(int websiteId, int userId) + { + var list = Sql.Populate("Security_GetWebsite", + new Dictionary() + { + {"websiteId", websiteId }, + {"userId", userId } + } + ); + if (list.Count > 0) { return list; } + return null; + } + } +} diff --git a/Query/Query/Users.cs b/Query/Query/Users.cs new file mode 100644 index 0000000..74b0948 --- /dev/null +++ b/Query/Query/Users.cs @@ -0,0 +1,65 @@ +using System.Collections.Generic; + +namespace Websilk.Query +{ + public class Users : QuerySql + { + + #region "Account" + public Models.User AuthenticateUser(string email, string password) + { + var list = Sql.Populate("User_Authenticate", + new Dictionary() + { + {"email", email }, + {"password", password } + } + ); + if (list.Count > 0) { return list[0]; } + return null; + } + + public void UpdatePassword(int userId, string password) + { + Sql.ExecuteNonQuery("User_UpdatePassword", + new Dictionary() + { + {"userId", userId }, + {"password", password } + } + ); + } + + public string GetEmail(int userId) + { + return Sql.ExecuteScalar("User_GetEmail", + new Dictionary() + { + {"userId", userId } + } + ); + } + + public string GetPassword(string email) + { + return Sql.ExecuteScalar("User_GetPassword", + new Dictionary() + { + {"email", email } + } + ); + } + + public void UpdateEmail(int userId, string email) + { + Sql.ExecuteNonQuery("User_UpdateEmail", + new Dictionary() + { + {"userId", userId }, + {"email", email } + } + ); + } + #endregion + } +} diff --git a/Query/QuerySql.cs b/Query/QuerySql.cs new file mode 100644 index 0000000..b0efe93 --- /dev/null +++ b/Query/QuerySql.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Websilk.Query +{ + public class QuerySql + { + + public Sql Sql = new Sql(); + + } +} diff --git a/Query/Sql.cs b/Query/Sql.cs new file mode 100644 index 0000000..e172251 --- /dev/null +++ b/Query/Sql.cs @@ -0,0 +1,140 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; +using Dapper; + +namespace Websilk.Query +{ + public class Sql + { + + private SqlConnection conn = new SqlConnection(); + private SqlCommand cmd = new SqlCommand(); + + + private void Start() + { + if (conn.State == System.Data.ConnectionState.Closed) + { + conn.ConnectionString = GetConnectionString(); + conn.Open(); + } + } + + private string GetConnectionString() + { + var config = new ConfigurationBuilder() + .AddJsonFile(AppContext.BaseDirectory + "\\" + "config.json") + .Build(); + + var sqlActive = config.GetSection("Data:Active").Value; + return config.GetSection("Data:" + sqlActive).Value; + } + + private string GetStoredProc(string storedproc, Dictionary parameters = null) + { + var sql = new StringBuilder("EXEC " + storedproc); + if(parameters != null) + { + var x = 0; + foreach(var parm in parameters) + { + sql.Append(" " + (x > 0 ? "," : "") + "@" + parm.Key + "=@" + parm.Key); + x++; + } + } + return sql.ToString(); + } + + private List GetSqlParameters(Dictionary parameters = null) + { + var parms = new List(); + foreach (var parm in parameters) + { + parms.Add(new SqlParameter("@" + parm.Key, parm.Value)); + } + return parms; + } + + public SqlDataReader ExecuteReader(string storedproc, Dictionary parameters = null) + { + Start(); + cmd.Parameters.Clear(); + cmd.CommandText = GetStoredProc(storedproc, parameters); + try + { + if (parameters != null) { GetSqlParameters(parameters).ForEach(a => cmd.Parameters.Add(a)); } + return cmd.ExecuteReader(); + } + catch (Exception ex) + { + throw ex; + } + } + + public void ExecuteNonQuery(string storedproc, Dictionary parameters = null) + { + Start(); + cmd.Parameters.Clear(); + cmd.CommandText = GetStoredProc(storedproc, parameters); + try + { + if (parameters != null) { GetSqlParameters(parameters).ForEach(a => cmd.Parameters.Add(a)); } + cmd.ExecuteNonQuery(); + } + catch (Exception ex) + { + throw ex; + } + } + + public T ExecuteScalar(string storedproc, Dictionary parameters = null) + { + Start(); + cmd.Parameters.Clear(); + cmd.CommandText = GetStoredProc(storedproc, parameters); + try + { + if (parameters != null) { cmd.Parameters.AddRange(GetSqlParameters(parameters).ToArray()); } + return (T)cmd.ExecuteScalar(); + } + catch (Exception ex) + { + throw ex; + } + } + + public async Task ExecuteNonQueryAsync(string storedproc, Dictionary parameters = null) + { + using (var newConnection = new SqlConnection(GetConnectionString())) + using (var newCommand = new SqlCommand(GetStoredProc(storedproc, parameters), newConnection)) + { + try { + if (parameters != null) newCommand.Parameters.AddRange(GetSqlParameters(parameters).ToArray()); + await newConnection.OpenAsync().ConfigureAwait(false); + return await newCommand.ExecuteNonQueryAsync().ConfigureAwait(false); + + } + catch (Exception ex) + { + throw ex; + } + } + } + + public List Populate(string storedproc, Dictionary parameters = null) + { + Start(); + return conn.Query(GetStoredProc(storedproc, parameters), GetSqlParameters(parameters)).AsList(); + } + + public SqlMapper.GridReader PopulateMultiple(string storedproc, Dictionary parameters = null) + { + Start(); + return conn.QueryMultiple(GetStoredProc(storedproc, parameters), GetSqlParameters(parameters)); + } + } +} diff --git a/Query/config.json b/Query/config.json new file mode 100644 index 0000000..7c4801d --- /dev/null +++ b/Query/config.json @@ -0,0 +1,6 @@ +{ + "data": { + "active": "SqlServerTrusted", + "SqlServerTrusted": "server=.\\SQL2016; database=WebsilkDev; Trusted_Connection=true" + } +} \ No newline at end of file diff --git a/Sql/SqlServer/Security/NT AUTHORITY_NETWORK SERVICE.sql b/Sql/SqlServer/Security/NT AUTHORITY_NETWORK SERVICE.sql deleted file mode 100644 index 5b85c67..0000000 --- a/Sql/SqlServer/Security/NT AUTHORITY_NETWORK SERVICE.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE USER [NT AUTHORITY\NETWORK SERVICE] FOR LOGIN [NT AUTHORITY\NETWORK SERVICE]; - diff --git a/Sql/SqlServer/Security/NT AUTHORITY_SYSTEM.sql b/Sql/SqlServer/Security/NT AUTHORITY_SYSTEM.sql deleted file mode 100644 index fa11bec..0000000 --- a/Sql/SqlServer/Security/NT AUTHORITY_SYSTEM.sql +++ /dev/null @@ -1,2 +0,0 @@ -CREATE USER [NT AUTHORITY\SYSTEM] FOR LOGIN [NT AUTHORITY\SYSTEM]; - diff --git a/Sql/SqlServer/Security/RoleMemberships.sql b/Sql/SqlServer/Security/RoleMemberships.sql deleted file mode 100644 index 350c1d4..0000000 --- a/Sql/SqlServer/Security/RoleMemberships.sql +++ /dev/null @@ -1,26 +0,0 @@ -ALTER ROLE [db_owner] ADD MEMBER [NT AUTHORITY\NETWORK SERVICE]; - - -GO -ALTER ROLE [db_owner] ADD MEMBER [WebsilkDev]; - - -GO -ALTER ROLE [db_owner] ADD MEMBER [NT AUTHORITY\SYSTEM]; - - -GO -ALTER ROLE [db_datareader] ADD MEMBER [NT AUTHORITY\NETWORK SERVICE]; - - -GO -ALTER ROLE [db_datareader] ADD MEMBER [NT AUTHORITY\SYSTEM]; - - -GO -ALTER ROLE [db_datawriter] ADD MEMBER [NT AUTHORITY\NETWORK SERVICE]; - - -GO -ALTER ROLE [db_datawriter] ADD MEMBER [NT AUTHORITY\SYSTEM]; - diff --git a/Sql/SqlServer/Security/WebsilkDev.sql b/Sql/SqlServer/Security/WebsilkDev.sql deleted file mode 100644 index 61c5c38..0000000 --- a/Sql/SqlServer/Security/WebsilkDev.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE LOGIN [WebsilkDev] WITH PASSWORD = 'development'; - -GO - -CREATE USER [WebsilkDev] FOR LOGIN [WebsilkDev]; - diff --git a/Sql/SqlServer/SqlServer.sqlproj b/Sql/SqlServer/Sql.sqlproj similarity index 94% rename from Sql/SqlServer/SqlServer.sqlproj rename to Sql/SqlServer/Sql.sqlproj index a478ce1..5cfea0c 100644 --- a/Sql/SqlServer/SqlServer.sqlproj +++ b/Sql/SqlServer/Sql.sqlproj @@ -1,209 +1,202 @@ - - - - - Debug - AnyCPU - SqlServer - 2.0 - 4.1 - {f550c6ac-987e-4c40-88da-9bcf2cd734cb} - Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider - Database - - - Websilk - Websilk - 1033,CI - BySchemaAndSchemaType - True - v4.6 - CS - Properties - False - True - True - SQL_Latin1_General_CP1_CI_AS - PRIMARY - True - Websilk - - - bin\Release\ - $(MSBuildProjectName).sql - False - pdbonly - true - false - true - prompt - 4 - - - bin\Debug\ - $(MSBuildProjectName).sql - false - true - full - false - true - true - prompt - 4 - Websilk - - - 11.0 - - True - 11.0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\110\SqlSchemas\master.dacpac - False - master - - - $(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\110\SqlSchemas\msdb.dacpac - False - msdb - - - - - - - - - - - - - - - + + + + + Debug + AnyCPU + Sql + 2.0 + 4.1 + {f550c6ac-987e-4c40-88da-9bcf2cd734cb} + Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider + Database + + + Websilk + Websilk + 1033,CI + BySchemaAndSchemaType + True + v4.6 + CS + Properties + False + True + True + SQL_Latin1_General_CP1_CI_AS + PRIMARY + True + Websilk + SqlServer + + + bin\Release\ + $(MSBuildProjectName).sql + False + pdbonly + true + false + true + prompt + 4 + + + bin\Debug\ + $(MSBuildProjectName).sql + false + true + full + false + true + true + prompt + 4 + Websilk + + + 11.0 + + True + 11.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\110\SqlSchemas\master.dacpac + False + master + + + $(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\110\SqlSchemas\msdb.dacpac + False + msdb + + + + + + + + + + + + \ No newline at end of file diff --git a/Sql/SqlServer/SqlServer.refactorlog b/Sql/SqlServer/SqlServer.refactorlog deleted file mode 100644 index 8c1b15d..0000000 --- a/Sql/SqlServer/SqlServer.refactorlog +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Sql/SqlServer/dbo/Stored Procedures/Security/Security_AuthenticateUser.sql b/Sql/SqlServer/dbo/Stored Procedures/Users/User_Authenticate.sql similarity index 86% rename from Sql/SqlServer/dbo/Stored Procedures/Security/Security_AuthenticateUser.sql rename to Sql/SqlServer/dbo/Stored Procedures/Users/User_Authenticate.sql index 7850d03..da15a43 100644 --- a/Sql/SqlServer/dbo/Stored Procedures/Security/Security_AuthenticateUser.sql +++ b/Sql/SqlServer/dbo/Stored Procedures/Users/User_Authenticate.sql @@ -3,7 +3,7 @@ -- Create date: 9/19/2012 6:38 pm -- Description: authenticate login from iframe -- ============================================= -CREATE PROCEDURE [dbo].[Security_AuthenticateUser] +CREATE PROCEDURE [dbo].[User_Authenticate] @email nvarchar(75) = '', @password nvarchar(100) = '' AS diff --git a/Websilk.sln b/Websilk.sln index 818ee66..5eff96d 100644 --- a/Websilk.sln +++ b/Websilk.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26403.3 +VisualStudioVersion = 15.0.26730.12 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{754FB4EF-AD10-4F29-A7D2-B58CC3DEB553}" ProjectSection(SolutionItems) = preProject @@ -10,9 +10,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution README.md = README.md EndProjectSection EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Websilk", "App\Websilk.csproj", "{8BDEA53B-38E6-4527-9162-45D99C7A2640}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Websilk", "App\Websilk.csproj", "{8BDEA53B-38E6-4527-9162-45D99C7A2640}" + ProjectSection(ProjectDependencies) = postProject + {DAA7D506-487D-4E98-BAFB-CE16CB9739FA} = {DAA7D506-487D-4E98-BAFB-CE16CB9739FA} + EndProjectSection +EndProject +Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "Sql", "Sql\SqlServer\Sql.sqlproj", "{F550C6AC-987E-4C40-88DA-9BCF2CD734CB}" EndProject -Project("{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}") = "SqlServer", "Sql\SqlServer\SqlServer.sqlproj", "{F550C6AC-987E-4C40-88DA-9BCF2CD734CB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Query", "Query\Query.csproj", "{DAA7D506-487D-4E98-BAFB-CE16CB9739FA}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -30,8 +35,15 @@ Global {F550C6AC-987E-4C40-88DA-9BCF2CD734CB}.Release|Any CPU.ActiveCfg = Release|Any CPU {F550C6AC-987E-4C40-88DA-9BCF2CD734CB}.Release|Any CPU.Build.0 = Release|Any CPU {F550C6AC-987E-4C40-88DA-9BCF2CD734CB}.Release|Any CPU.Deploy.0 = Release|Any CPU + {DAA7D506-487D-4E98-BAFB-CE16CB9739FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DAA7D506-487D-4E98-BAFB-CE16CB9739FA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DAA7D506-487D-4E98-BAFB-CE16CB9739FA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DAA7D506-487D-4E98-BAFB-CE16CB9739FA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0ECC5725-BCE5-4B17-AB27-BF196D92295E} + EndGlobalSection EndGlobal