├── .gitignore ├── LICENSE ├── appveyor.yml ├── nuget.config ├── readme.md ├── sample ├── back-end │ ├── Sitecore.Js.Presentation.Sample.TDS.Master │ │ ├── Sitecore.Js.Presentation.Sample.TDS.Master.scproj │ │ └── sitecore │ │ │ ├── content.item │ │ │ ├── content │ │ │ ├── Home.item │ │ │ └── Home │ │ │ │ ├── Lodash Content.item │ │ │ │ ├── MVC RichText.item │ │ │ │ ├── React Content.item │ │ │ │ ├── Redux Counter.item │ │ │ │ └── Redux Timer.item │ │ │ ├── layout.item │ │ │ ├── layout │ │ │ ├── Layouts.item │ │ │ ├── Layouts │ │ │ │ └── Js Sample Layout.item │ │ │ ├── Placeholder Settings.item │ │ │ ├── Placeholder Settings │ │ │ │ ├── content.item │ │ │ │ ├── leftColumn.item │ │ │ │ └── rightColumn.item │ │ │ ├── Renderings.item │ │ │ └── Renderings │ │ │ │ ├── Js Sample.item │ │ │ │ └── Js Sample │ │ │ │ ├── Sample Lodash Component.item │ │ │ │ ├── Sample React Component.item │ │ │ │ ├── Sample Redux Counter.item │ │ │ │ ├── Sample Redux Timer.item │ │ │ │ └── Sample Rich Text.item │ │ │ ├── media library.item │ │ │ ├── media library │ │ │ ├── Js Sample.item │ │ │ └── Js Sample │ │ │ │ ├── lodash.item │ │ │ │ └── react.item │ │ │ ├── templates.item │ │ │ └── templates │ │ │ ├── Js Sample.item │ │ │ └── Js Sample │ │ │ ├── Js Sample Item.item │ │ │ └── Js Sample Item │ │ │ ├── Data.item │ │ │ ├── Data │ │ │ ├── Image.item │ │ │ ├── Text.item │ │ │ └── Title.item │ │ │ └── __Standard Values.item │ ├── Sitecore.Js.Presentation.Sample │ │ ├── App_Config │ │ │ └── Include │ │ │ │ └── Sitecore.Js.Presentation │ │ │ │ └── Sitecore.Js.Presentation.config │ │ ├── App_Start │ │ │ └── RouteConfig.cs │ │ ├── Controllers │ │ │ └── ComponentsController.cs │ │ ├── Global.asax │ │ ├── Global.asax.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Sitecore.Js.Presentation.Sample.Web.csproj.DotSettings │ │ ├── Sitecore.Js.Presentation.Sample.csproj │ │ ├── Sitecore.Js.Presentation.Sample.csproj.DotSettings │ │ ├── Views │ │ │ ├── Components │ │ │ │ └── RichText.cshtml │ │ │ ├── Shared │ │ │ │ └── _MainLayout.cshtml │ │ │ └── Web.config │ │ ├── dist │ │ │ ├── assets │ │ │ │ ├── 448c34a56d699c29117adc64c43affeb.woff2 │ │ │ │ ├── 89889688147bd7575d6327160d64e760.svg │ │ │ │ ├── a31b89d40f92dc8bf2c25282d3b3af8c.png │ │ │ │ ├── bootstrap │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ │ ├── common.css │ │ │ │ ├── common.js │ │ │ │ ├── fa2772327f55d8198301fdb8bcfc8158.woff │ │ │ │ ├── shared.js │ │ │ │ ├── vendor.css │ │ │ │ └── vendor.js │ │ │ ├── common │ │ │ │ └── static │ │ │ │ │ ├── fonts │ │ │ │ │ └── readme.md │ │ │ │ │ └── images │ │ │ │ │ ├── readme.md │ │ │ │ │ └── sample.png │ │ │ ├── favicon-16x16.png │ │ │ └── favicon-32x32.png │ │ ├── packages.config │ │ ├── web.Debug.config │ │ ├── web.Release.config │ │ └── web.config │ ├── Sitecore.Js.Presentation.sln │ ├── TdsGlobal.config │ └── readme.md ├── front-end │ ├── .editorconfig │ ├── .eslintrc │ ├── .gitignore │ ├── api-stub │ │ ├── db.json │ │ └── routes.json │ ├── cfg │ │ ├── development.js │ │ ├── production.js │ │ ├── server.dev.js │ │ ├── server.prod.js │ │ └── test.js │ ├── karma.conf.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── Common │ │ │ ├── Components │ │ │ │ ├── counter │ │ │ │ │ ├── counter.actions.js │ │ │ │ │ ├── counter.component.js │ │ │ │ │ ├── counter.reducer.js │ │ │ │ │ └── counter.styles.scss │ │ │ │ ├── header │ │ │ │ │ ├── header.component.js │ │ │ │ │ └── header.styles.sass │ │ │ │ ├── index.js │ │ │ │ ├── lodash-content │ │ │ │ │ ├── lodash-content.component.html │ │ │ │ │ ├── lodash-content.component.js │ │ │ │ │ └── lodash-content.styles.scss │ │ │ │ ├── simple-content │ │ │ │ │ ├── simple-content.component.js │ │ │ │ │ └── simple-content.styles.sass │ │ │ │ ├── store.js │ │ │ │ └── timer │ │ │ │ │ ├── timer.actions.js │ │ │ │ │ ├── timer.component.js │ │ │ │ │ ├── timer.reducer.js │ │ │ │ │ └── timer.styles.scss │ │ │ ├── Pages │ │ │ │ └── sample │ │ │ │ │ ├── sample.js │ │ │ │ │ ├── sample.store.js │ │ │ │ │ └── sample.styles.sass │ │ │ ├── constants.js │ │ │ ├── static │ │ │ │ ├── fonts │ │ │ │ │ └── readme.md │ │ │ │ └── images │ │ │ │ │ ├── readme.md │ │ │ │ │ └── sample.png │ │ │ └── styles │ │ │ │ └── app.sass │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── index.html.tmpl │ │ ├── index.jsx │ │ ├── sample.spec.js │ │ └── test.index.js │ ├── utils │ │ ├── babel-config.js │ │ ├── babel-loader.js │ │ ├── constants.js │ │ ├── defaults.js │ │ ├── entries.js │ │ ├── env.js │ │ ├── get-modules.js │ │ ├── get-plugins.js │ │ └── index.js │ └── webpack.config.js └── sc-packages │ └── Sitecore.Js.Presentation.Sample.Master.update └── src ├── Sitecore.Js.Presentation.Sample.Console ├── Program.cs ├── Properties │ └── AssemblyInfo.cs ├── Resources │ └── common.js ├── Settings.StyleCop ├── Sitecore.Js.Presentation.Sample.Console.csproj ├── app.config └── packages.config ├── Sitecore.Js.Presentation.sln └── Sitecore.Js.Presentation ├── Component.cs ├── Configuration ├── IJsEngineManagerConfiguration.cs └── JsEngineManagerConfiguration.cs ├── Context ├── IPageContext.cs └── PageContext.cs ├── Engine.cs ├── Enum └── RenderingOptions.cs ├── IComponent.cs ├── IEngine.cs ├── Locator.cs ├── Managers ├── IJsEngineManager.cs └── JsEngineManager.cs ├── Mvc ├── HtmlHelperExtentions.cs └── Sitecore.Js.PresentationController.cs ├── Pipelines └── InitializeJsContext.cs ├── Properties └── AssemblyInfo.cs ├── Resources └── init.js ├── Settings.StyleCop ├── Sitecore.Js.Presentation.csproj ├── Sitecore.Js.Presentation.nuspec ├── app.config ├── content ├── App_Config │ └── Include │ │ └── Sitecore.Js.Presentation │ │ └── Sitecore.Js.Presentation.config ├── Views │ └── web.config.transform └── readme.md ├── packages.config └── tools └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/visualstudio 3 | 4 | ### VisualStudio ### 5 | ## Ignore Visual Studio temporary files, build results, and 6 | ## files generated by popular Visual Studio add-ons. 7 | 8 | # User-specific files 9 | *.suo 10 | *.user 11 | *.userosscache 12 | *.sln.docstates 13 | 14 | # User-specific files (MonoDevelop/Xamarin Studio) 15 | *.userprefs 16 | 17 | # Build results 18 | [Dd]ebug/ 19 | [Dd]ebugPublic/ 20 | [Rr]elease/ 21 | [Rr]eleases/ 22 | x64/ 23 | x86/ 24 | bld/ 25 | [Bb]in/ 26 | [Oo]bj/ 27 | [Ll]og/ 28 | 29 | # Visual Studio 2015 cache/options directory 30 | .vs/ 31 | # Uncomment if you have tasks that create the project's static files in wwwroot 32 | #wwwroot/ 33 | 34 | # MSTest test Results 35 | [Tt]est[Rr]esult*/ 36 | [Bb]uild[Ll]og.* 37 | 38 | # NUNIT 39 | *.VisualState.xml 40 | TestResult.xml 41 | 42 | # Build Results of an ATL Project 43 | [Dd]ebugPS/ 44 | [Rr]eleasePS/ 45 | dlldata.c 46 | 47 | # DNX 48 | project.lock.json 49 | project.fragment.lock.json 50 | artifacts/ 51 | Properties/launchSettings.json 52 | 53 | *_i.c 54 | *_p.c 55 | *_i.h 56 | *.ilk 57 | *.meta 58 | *.obj 59 | *.pch 60 | *.pdb 61 | *.pgc 62 | *.pgd 63 | *.rsp 64 | *.sbr 65 | *.tlb 66 | *.tli 67 | *.tlh 68 | *.tmp 69 | *.tmp_proj 70 | *.log 71 | *.vspscc 72 | *.vssscc 73 | .builds 74 | *.pidb 75 | *.svclog 76 | *.scc 77 | 78 | # Chutzpah Test files 79 | _Chutzpah* 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opendb 86 | *.opensdf 87 | *.sdf 88 | *.cachefile 89 | *.VC.db 90 | *.VC.VC.opendb 91 | 92 | # Visual Studio profiler 93 | *.psess 94 | *.vsp 95 | *.vspx 96 | *.sap 97 | 98 | # TFS 2012 Local Workspace 99 | $tf/ 100 | 101 | # Guidance Automation Toolkit 102 | *.gpState 103 | 104 | # ReSharper is a .NET coding add-in 105 | _ReSharper*/ 106 | *.[Rr]e[Ss]harper 107 | *.DotSettings.user 108 | 109 | # JustCode is a .NET coding add-in 110 | .JustCode 111 | 112 | # TeamCity is a build add-in 113 | _TeamCity* 114 | 115 | # DotCover is a Code Coverage Tool 116 | *.dotCover 117 | 118 | # Visual Studio code coverage results 119 | *.coverage 120 | *.coveragexml 121 | 122 | # NCrunch 123 | _NCrunch_* 124 | .*crunch*.local.xml 125 | nCrunchTemp_* 126 | 127 | # MightyMoose 128 | *.mm.* 129 | AutoTest.Net/ 130 | 131 | # Web workbench (sass) 132 | .sass-cache/ 133 | 134 | # Installshield output folder 135 | [Ee]xpress/ 136 | 137 | # DocProject is a documentation generator add-in 138 | DocProject/buildhelp/ 139 | DocProject/Help/*.HxT 140 | DocProject/Help/*.HxC 141 | DocProject/Help/*.hhc 142 | DocProject/Help/*.hhk 143 | DocProject/Help/*.hhp 144 | DocProject/Help/Html2 145 | DocProject/Help/html 146 | 147 | # Click-Once directory 148 | publish/ 149 | 150 | # Publish Web Output 151 | *.[Pp]ublish.xml 152 | *.azurePubxml 153 | # TODO: Comment the next line if you want to checkin your web deploy settings 154 | # but database connection strings (with potential passwords) will be unencrypted 155 | *.pubxml 156 | *.publishproj 157 | 158 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 159 | # checkin your Azure Web App publish settings, but sensitive information contained 160 | # in these scripts will be unencrypted 161 | PublishScripts/ 162 | 163 | # NuGet Packages 164 | *.nupkg 165 | # The packages folder can be ignored because of Package Restore 166 | **/packages/* 167 | # except build/, which is used as an MSBuild target. 168 | !**/packages/build/ 169 | # Uncomment if necessary however generally it will be regenerated when needed 170 | #!**/packages/repositories.config 171 | # NuGet v3's project.json files produces more ignoreable files 172 | *.nuget.props 173 | *.nuget.targets 174 | 175 | # Microsoft Azure Build Output 176 | csx/ 177 | *.build.csdef 178 | 179 | # Microsoft Azure Emulator 180 | ecf/ 181 | rcf/ 182 | 183 | # Windows Store app package directories and files 184 | AppPackages/ 185 | BundleArtifacts/ 186 | Package.StoreAssociation.xml 187 | _pkginfo.txt 188 | 189 | # Visual Studio cache files 190 | # files ending in .cache can be ignored 191 | *.[Cc]ache 192 | # but keep track of directories ending in .cache 193 | !*.[Cc]ache/ 194 | 195 | # Others 196 | ClientBin/ 197 | ~$* 198 | *~ 199 | *.dbmdl 200 | *.dbproj.schemaview 201 | *.jfm 202 | *.pfx 203 | *.publishsettings 204 | node_modules/ 205 | orleans.codegen.cs 206 | 207 | # Since there are multiple workflows, uncomment next line to ignore bower_components 208 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 209 | #bower_components/ 210 | 211 | # RIA/Silverlight projects 212 | Generated_Code/ 213 | 214 | # Backup & report files from converting an old project file 215 | # to a newer Visual Studio version. Backup files are not needed, 216 | # because we have git ;-) 217 | _UpgradeReport_Files/ 218 | Backup*/ 219 | UpgradeLog*.XML 220 | UpgradeLog*.htm 221 | 222 | # SQL Server files 223 | *.mdf 224 | *.ldf 225 | 226 | # Business Intelligence projects 227 | *.rdl.data 228 | *.bim.layout 229 | *.bim_*.settings 230 | 231 | # Microsoft Fakes 232 | FakesAssemblies/ 233 | 234 | # GhostDoc plugin setting file 235 | *.GhostDoc.xml 236 | 237 | # Node.js Tools for Visual Studio 238 | .ntvs_analysis.dat 239 | 240 | # Visual Studio 6 build log 241 | *.plg 242 | 243 | # Visual Studio 6 workspace options file 244 | *.opt 245 | 246 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 247 | *.vbw 248 | 249 | # Visual Studio LightSwitch build output 250 | **/*.HTMLClient/GeneratedArtifacts 251 | **/*.DesktopClient/GeneratedArtifacts 252 | **/*.DesktopClient/ModelManifest.xml 253 | **/*.Server/GeneratedArtifacts 254 | **/*.Server/ModelManifest.xml 255 | _Pvt_Extensions 256 | 257 | # Paket dependency manager 258 | .paket/paket.exe 259 | paket-files/ 260 | 261 | # FAKE - F# Make 262 | .fake/ 263 | 264 | # JetBrains Rider 265 | .idea/ 266 | *.sln.iml 267 | 268 | # CodeRush 269 | .cr/ 270 | 271 | # Python Tools for Visual Studio (PTVS) 272 | __pycache__/ 273 | *.pyc 274 | 275 | # Cake - Uncomment if you are using it 276 | # tools/ 277 | 278 | # Sitecore - prevent license leak 279 | license.xml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Alex Smagin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 1 | version: 0.1.{build} 2 | pull_requests: 3 | do_not_increment_build_number: true 4 | skip_tags: true 5 | configuration: Release 6 | assembly_info: 7 | patch: true 8 | file: '**\AssemblyInfo.*' 9 | assembly_version: '{version}' 10 | assembly_file_version: '{version}' 11 | assembly_informational_version: '{version}' 12 | environment: 13 | nodejs_version: 6 14 | install: 15 | - ps: Install-Product node $env:nodejs_version 16 | before_build: 17 | - cmd: nuget restore .\src\Sitecore.Js.Presentation.sln 18 | after_build: 19 | - node --version 20 | - npm --version 21 | - cd .\sample\front-end 22 | - npm i 23 | - npm run server:dev 24 | - 7z a Sitecore.Js.Presentation.Sample.zip %APPVEYOR_BUILD_FOLDER%\sample\front-end\dist\ 25 | - cd %APPVEYOR_BUILD_FOLDER% 26 | artifacts: 27 | - path: '**\Sitecore.Js.Presentation.Sample.zip' 28 | name: 'UI Sample Package' 29 | type: zip 30 | - path: 'sample\sc-packages\Sitecore.Js.Presentation.Sample.Master.update' 31 | name: 'Sitecore Update Package' 32 | type: zip 33 | build: 34 | project: .\src\Sitecore.Js.Presentation.sln 35 | publish_nuget: true 36 | verbosity: minimal 37 | deploy: 38 | - provider: Environment 39 | name: NuGet.org 40 | on: 41 | branch: master 42 | - provider: Environment 43 | name: GitHub Releases Sitecore.Js.Presentation 44 | on: 45 | branch: master 46 | cache: 47 | - src\packages -> src\**\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified 48 | - sample\front-end\node_modules -> sample\front-end\packages.json # local npm modules 49 | - '%APPDATA%\npm-cache' # npm cache -------------------------------------------------------------------------------- /nuget.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/content/Home/Lodash Content.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {2D98F762-6297-474A-8C57-3B4DE984F0A0} 4 | database: master 5 | path: /sitecore/content/Home/Lodash Content 6 | parent: {110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9} 7 | name: Lodash Content 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 10 | templatekey: Js Sample Item 11 | created: 20170215T060234:636227353541130000 12 | 13 | ----field---- 14 | field: {F1A1FE9E-A60C-4DDB-A3A0-BB5B29FE732E} 15 | name: __Renderings 16 | key: __renderings 17 | content-length: 739 18 | 19 | 20 | ----field---- 21 | field: {A4F985D9-98B3-4B52-AAAF-4344F6E747C6} 22 | name: __Workflow 23 | key: __workflow 24 | content-length: 0 25 | 26 | 27 | ----field---- 28 | field: {CA9B9F52-4FB0-4F87-A79F-24DEA62CDA65} 29 | name: __Default workflow 30 | key: __default workflow 31 | content-length: 0 32 | 33 | 34 | ----version---- 35 | language: en 36 | version: 1 37 | revision: 0ca6664d-c0a2-46e1-afa5-fd43b7044b20 38 | 39 | ----field---- 40 | field: {81E49E48-2C71-456C-A53D-FC4CB18D85D8} 41 | name: Title 42 | key: title 43 | content-length: 14 44 | 45 | Lodash Content 46 | ----field---- 47 | field: {176ECF1B-2054-44EE-A12D-8127256D690F} 48 | name: Text 49 | key: text 50 | content-length: 84 51 | 52 | A modern JavaScript utility library delivering modularity, performance & extras. 53 | ----field---- 54 | field: {F53B94F9-80F3-46F7-99A5-5E93BB8403E1} 55 | name: Image 56 | key: image 57 | content-length: 110 58 | 59 | 60 | ----field---- 61 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 62 | name: __Created 63 | key: __created 64 | content-length: 16 65 | 66 | 20170215T060234Z 67 | ----field---- 68 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 69 | name: __Created by 70 | key: __created by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----field---- 75 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 76 | name: __Revision 77 | key: __revision 78 | content-length: 36 79 | 80 | 0ca6664d-c0a2-46e1-afa5-fd43b7044b20 81 | ----field---- 82 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 83 | name: __Updated 84 | key: __updated 85 | content-length: 16 86 | 87 | 20170215T133737Z 88 | ----field---- 89 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 90 | name: __Updated by 91 | key: __updated by 92 | content-length: 14 93 | 94 | sitecore\admin 95 | ----field---- 96 | field: {3E431DE1-525E-47A3-B6B0-1CCBEC3A8C98} 97 | name: __Workflow state 98 | key: __workflow state 99 | content-length: 0 100 | 101 | 102 | ----field---- 103 | field: {001DD393-96C5-490B-924A-B0F25CD9EFD8} 104 | name: __Lock 105 | key: __lock 106 | content-length: 5 107 | 108 | 109 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/content/Home/MVC RichText.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {D2F42254-1A04-4452-894B-93A8A8CA940E} 4 | database: master 5 | path: /sitecore/content/Home/MVC RichText 6 | parent: {110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9} 7 | name: MVC RichText 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 10 | templatekey: Js Sample Item 11 | created: 20170215T133003:636227622037000000 12 | 13 | ----field---- 14 | field: {F1A1FE9E-A60C-4DDB-A3A0-BB5B29FE732E} 15 | name: __Renderings 16 | key: __renderings 17 | content-length: 0 18 | 19 | 20 | ----field---- 21 | field: {A4F985D9-98B3-4B52-AAAF-4344F6E747C6} 22 | name: __Workflow 23 | key: __workflow 24 | content-length: 0 25 | 26 | 27 | ----field---- 28 | field: {CA9B9F52-4FB0-4F87-A79F-24DEA62CDA65} 29 | name: __Default workflow 30 | key: __default workflow 31 | content-length: 0 32 | 33 | 34 | ----version---- 35 | language: en 36 | version: 1 37 | revision: 7b801ae1-f686-4f1e-b338-3cf6da705aa7 38 | 39 | ----field---- 40 | field: {81E49E48-2C71-456C-A53D-FC4CB18D85D8} 41 | name: Title 42 | key: title 43 | content-length: 22 44 | 45 | Standard MVC Component 46 | ----field---- 47 | field: {176ECF1B-2054-44EE-A12D-8127256D690F} 48 | name: Text 49 | key: text 50 | content-length: 470 51 | 52 |

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quo tandem modo? Tria genera bonorum;

53 |
Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
54 |

Praeteritis, inquit, gaudeo. Quis est tam dissimile homini. Duo Reges: constructio interrete. 

55 | ----field---- 56 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 57 | name: __Created 58 | key: __created 59 | content-length: 16 60 | 61 | 20170215T060250Z 62 | ----field---- 63 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 64 | name: __Created by 65 | key: __created by 66 | content-length: 14 67 | 68 | sitecore\admin 69 | ----field---- 70 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 71 | name: __Revision 72 | key: __revision 73 | content-length: 36 74 | 75 | 7b801ae1-f686-4f1e-b338-3cf6da705aa7 76 | ----field---- 77 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 78 | name: __Updated 79 | key: __updated 80 | content-length: 16 81 | 82 | 20170215T134234Z 83 | ----field---- 84 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 85 | name: __Updated by 86 | key: __updated by 87 | content-length: 14 88 | 89 | sitecore\admin 90 | ----field---- 91 | field: {3E431DE1-525E-47A3-B6B0-1CCBEC3A8C98} 92 | name: __Workflow state 93 | key: __workflow state 94 | content-length: 0 95 | 96 | 97 | ----field---- 98 | field: {001DD393-96C5-490B-924A-B0F25CD9EFD8} 99 | name: __Lock 100 | key: __lock 101 | content-length: 5 102 | 103 | 104 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/content/Home/React Content.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {8AFE0B29-1CAA-44E0-993B-9C9766EF89A3} 4 | database: master 5 | path: /sitecore/content/Home/React Content 6 | parent: {110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9} 7 | name: React Content 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 10 | templatekey: Js Sample Item 11 | created: 20170215T060250:636227353702030000 12 | 13 | ----field---- 14 | field: {F1A1FE9E-A60C-4DDB-A3A0-BB5B29FE732E} 15 | name: __Renderings 16 | key: __renderings 17 | content-length: 577 18 | 19 | 20 | ----field---- 21 | field: {A4F985D9-98B3-4B52-AAAF-4344F6E747C6} 22 | name: __Workflow 23 | key: __workflow 24 | content-length: 0 25 | 26 | 27 | ----field---- 28 | field: {CA9B9F52-4FB0-4F87-A79F-24DEA62CDA65} 29 | name: __Default workflow 30 | key: __default workflow 31 | content-length: 0 32 | 33 | 34 | ----version---- 35 | language: en 36 | version: 1 37 | revision: ceac6fec-f7df-4dd6-8785-d2152255cb20 38 | 39 | ----field---- 40 | field: {81E49E48-2C71-456C-A53D-FC4CB18D85D8} 41 | name: Title 42 | key: title 43 | content-length: 13 44 | 45 | React Content 46 | ----field---- 47 | field: {176ECF1B-2054-44EE-A12D-8127256D690F} 48 | name: Text 49 | key: text 50 | content-length: 316 51 | 52 |

Declarative 53 |

54 |

React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes. 55 | Declarative views make your code more predictable and easier to debug.

56 | ----field---- 57 | field: {F53B94F9-80F3-46F7-99A5-5E93BB8403E1} 58 | name: Image 59 | key: image 60 | content-length: 110 61 | 62 | 63 | ----field---- 64 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 65 | name: __Created 66 | key: __created 67 | content-length: 16 68 | 69 | 20170215T060250Z 70 | ----field---- 71 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 72 | name: __Created by 73 | key: __created by 74 | content-length: 14 75 | 76 | sitecore\admin 77 | ----field---- 78 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 79 | name: __Revision 80 | key: __revision 81 | content-length: 36 82 | 83 | ceac6fec-f7df-4dd6-8785-d2152255cb20 84 | ----field---- 85 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 86 | name: __Updated 87 | key: __updated 88 | content-length: 16 89 | 90 | 20170215T132931Z 91 | ----field---- 92 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 93 | name: __Updated by 94 | key: __updated by 95 | content-length: 14 96 | 97 | sitecore\admin 98 | ----field---- 99 | field: {3E431DE1-525E-47A3-B6B0-1CCBEC3A8C98} 100 | name: __Workflow state 101 | key: __workflow state 102 | content-length: 0 103 | 104 | 105 | ----field---- 106 | field: {001DD393-96C5-490B-924A-B0F25CD9EFD8} 107 | name: __Lock 108 | key: __lock 109 | content-length: 5 110 | 111 | 112 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/content/Home/Redux Counter.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {DD4ADDAC-31C3-4D3F-9873-43D3E16FA3F8} 4 | database: master 5 | path: /sitecore/content/Home/Redux Counter 6 | parent: {110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9} 7 | name: Redux Counter 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 10 | templatekey: Js Sample Item 11 | created: 20170215T060302:636227353824970000 12 | 13 | ----field---- 14 | field: {F1A1FE9E-A60C-4DDB-A3A0-BB5B29FE732E} 15 | name: __Renderings 16 | key: __renderings 17 | content-length: 0 18 | 19 | 20 | ----field---- 21 | field: {A4F985D9-98B3-4B52-AAAF-4344F6E747C6} 22 | name: __Workflow 23 | key: __workflow 24 | content-length: 0 25 | 26 | 27 | ----field---- 28 | field: {CA9B9F52-4FB0-4F87-A79F-24DEA62CDA65} 29 | name: __Default workflow 30 | key: __default workflow 31 | content-length: 0 32 | 33 | 34 | ----version---- 35 | language: en 36 | version: 1 37 | revision: 23acd7be-d855-442f-813c-be497bd8b56c 38 | 39 | ----field---- 40 | field: {81E49E48-2C71-456C-A53D-FC4CB18D85D8} 41 | name: Title 42 | key: title 43 | content-length: 13 44 | 45 | Redux Counter 46 | ----field---- 47 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 48 | name: __Created 49 | key: __created 50 | content-length: 16 51 | 52 | 20170215T060250Z 53 | ----field---- 54 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 55 | name: __Created by 56 | key: __created by 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 62 | name: __Revision 63 | key: __revision 64 | content-length: 36 65 | 66 | 23acd7be-d855-442f-813c-be497bd8b56c 67 | ----field---- 68 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 69 | name: __Updated 70 | key: __updated 71 | content-length: 16 72 | 73 | 20170215T132601Z 74 | ----field---- 75 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 76 | name: __Updated by 77 | key: __updated by 78 | content-length: 14 79 | 80 | sitecore\admin 81 | ----field---- 82 | field: {3E431DE1-525E-47A3-B6B0-1CCBEC3A8C98} 83 | name: __Workflow state 84 | key: __workflow state 85 | content-length: 0 86 | 87 | 88 | ----field---- 89 | field: {001DD393-96C5-490B-924A-B0F25CD9EFD8} 90 | name: __Lock 91 | key: __lock 92 | content-length: 5 93 | 94 | 95 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/content/Home/Redux Timer.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {FA32BC34-CBA3-4741-B63B-BAFC045BE217} 4 | database: master 5 | path: /sitecore/content/Home/Redux Timer 6 | parent: {110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9} 7 | name: Redux Timer 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 10 | templatekey: Js Sample Item 11 | created: 20170215T060312:636227353929930000 12 | 13 | ----field---- 14 | field: {F1A1FE9E-A60C-4DDB-A3A0-BB5B29FE732E} 15 | name: __Renderings 16 | key: __renderings 17 | content-length: 0 18 | 19 | 20 | ----field---- 21 | field: {A4F985D9-98B3-4B52-AAAF-4344F6E747C6} 22 | name: __Workflow 23 | key: __workflow 24 | content-length: 0 25 | 26 | 27 | ----field---- 28 | field: {CA9B9F52-4FB0-4F87-A79F-24DEA62CDA65} 29 | name: __Default workflow 30 | key: __default workflow 31 | content-length: 0 32 | 33 | 34 | ----version---- 35 | language: en 36 | version: 1 37 | revision: fa9703e6-4bee-4128-9e44-f6868f8d25e1 38 | 39 | ----field---- 40 | field: {81E49E48-2C71-456C-A53D-FC4CB18D85D8} 41 | name: Title 42 | key: title 43 | content-length: 11 44 | 45 | Redux Timer 46 | ----field---- 47 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 48 | name: __Created 49 | key: __created 50 | content-length: 16 51 | 52 | 20170215T060250Z 53 | ----field---- 54 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 55 | name: __Created by 56 | key: __created by 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 62 | name: __Revision 63 | key: __revision 64 | content-length: 36 65 | 66 | fa9703e6-4bee-4128-9e44-f6868f8d25e1 67 | ----field---- 68 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 69 | name: __Updated 70 | key: __updated 71 | content-length: 16 72 | 73 | 20170215T132616Z 74 | ----field---- 75 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 76 | name: __Updated by 77 | key: __updated by 78 | content-length: 14 79 | 80 | sitecore\admin 81 | ----field---- 82 | field: {3E431DE1-525E-47A3-B6B0-1CCBEC3A8C98} 83 | name: __Workflow state 84 | key: __workflow state 85 | content-length: 0 86 | 87 | 88 | ----field---- 89 | field: {001DD393-96C5-490B-924A-B0F25CD9EFD8} 90 | name: __Lock 91 | key: __lock 92 | content-length: 5 93 | 94 | 95 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Layouts/Js Sample Layout.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {99DED077-FF71-47BC-9FC2-B24F25D6F34D} 4 | database: master 5 | path: /sitecore/layout/Layouts/Js Sample Layout 6 | parent: {75CC5CE4-8979-4008-9D3C-806477D57619} 7 | name: Js Sample Layout 8 | master: {3F0E643C-3B9A-4E3F-961A-75057BA3C4E8} 9 | template: {3A45A723-64EE-4919-9D41-02FD40FD1466} 10 | templatekey: Layout 11 | created: 20170215T072122:636227400824770000 12 | 13 | ----field---- 14 | field: {A036B2BC-BA04-44F6-A75F-BAE6CD242ABF} 15 | name: Path 16 | key: path 17 | content-length: 32 18 | 19 | /Views/Shared/_MainLayout.cshtml 20 | ----field---- 21 | field: {BA3F86A2-4A1C-4D78-B63D-91C2779C1B5E} 22 | name: __Sortorder 23 | key: __sortorder 24 | content-length: 1 25 | 26 | 0 27 | ----field---- 28 | field: {56776EDF-261C-4ABC-9FE7-70C618795239} 29 | name: __Help link 30 | key: __help link 31 | content-length: 0 32 | 33 | 34 | ----field---- 35 | field: {DEC8D2D5-E3CF-48B6-A653-8E69E2716641} 36 | name: __Security 37 | key: __security 38 | content-length: 0 39 | 40 | 41 | ----version---- 42 | language: da 43 | version: 1 44 | revision: f50191fa-4abc-4098-bc3c-29bc8ed61b1d 45 | 46 | ----field---- 47 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 48 | name: __Display name 49 | key: __display name 50 | content-length: 11 51 | 52 | Prøvelayout 53 | ----field---- 54 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 55 | name: __Owner 56 | key: __owner 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 62 | name: __Created 63 | key: __created 64 | content-length: 16 65 | 66 | 20160729T133408Z 67 | ----field---- 68 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 69 | name: __Created by 70 | key: __created by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----field---- 75 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 76 | name: __Revision 77 | key: __revision 78 | content-length: 36 79 | 80 | f50191fa-4abc-4098-bc3c-29bc8ed61b1d 81 | ----field---- 82 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 83 | name: __Updated 84 | key: __updated 85 | content-length: 16 86 | 87 | 20160729T133408Z 88 | ----field---- 89 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 90 | name: __Updated by 91 | key: __updated by 92 | content-length: 14 93 | 94 | sitecore\admin 95 | ----version---- 96 | language: de-DE 97 | version: 1 98 | revision: 3cb60ded-abc4-4603-a521-1beb20d76229 99 | 100 | ----field---- 101 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 102 | name: __Display name 103 | key: __display name 104 | content-length: 15 105 | 106 | Beispiel Layout 107 | ----field---- 108 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 109 | name: __Owner 110 | key: __owner 111 | content-length: 14 112 | 113 | sitecore\admin 114 | ----field---- 115 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 116 | name: __Created 117 | key: __created 118 | content-length: 16 119 | 120 | 20160729T133538Z 121 | ----field---- 122 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 123 | name: __Created by 124 | key: __created by 125 | content-length: 14 126 | 127 | sitecore\admin 128 | ----field---- 129 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 130 | name: __Revision 131 | key: __revision 132 | content-length: 36 133 | 134 | 3cb60ded-abc4-4603-a521-1beb20d76229 135 | ----field---- 136 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 137 | name: __Updated 138 | key: __updated 139 | content-length: 16 140 | 141 | 20160729T133538Z 142 | ----field---- 143 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 144 | name: __Updated by 145 | key: __updated by 146 | content-length: 14 147 | 148 | sitecore\admin 149 | ----version---- 150 | language: en 151 | version: 1 152 | revision: f272e92e-02bc-457d-830d-fbc6644bba64 153 | 154 | ----field---- 155 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 156 | name: __Created 157 | key: __created 158 | content-length: 16 159 | 160 | 20170215T055606Z 161 | ----field---- 162 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 163 | name: __Created by 164 | key: __created by 165 | content-length: 14 166 | 167 | sitecore\admin 168 | ----field---- 169 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 170 | name: __Revision 171 | key: __revision 172 | content-length: 36 173 | 174 | f272e92e-02bc-457d-830d-fbc6644bba64 175 | ----field---- 176 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 177 | name: __Updated 178 | key: __updated 179 | content-length: 16 180 | 181 | 20170215T133851Z 182 | ----field---- 183 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 184 | name: __Updated by 185 | key: __updated by 186 | content-length: 14 187 | 188 | sitecore\admin 189 | ----version---- 190 | language: ja-JP 191 | version: 1 192 | revision: ff24f1ed-23a5-411b-aab5-ef5283c591bc 193 | 194 | ----field---- 195 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 196 | name: __Display name 197 | key: __display name 198 | content-length: 10 199 | 200 | サンプル レイアウト 201 | ----field---- 202 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 203 | name: __Owner 204 | key: __owner 205 | content-length: 14 206 | 207 | sitecore\admin 208 | ----field---- 209 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 210 | name: __Created 211 | key: __created 212 | content-length: 16 213 | 214 | 20160729T133707Z 215 | ----field---- 216 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 217 | name: __Created by 218 | key: __created by 219 | content-length: 14 220 | 221 | sitecore\admin 222 | ----field---- 223 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 224 | name: __Revision 225 | key: __revision 226 | content-length: 36 227 | 228 | ff24f1ed-23a5-411b-aab5-ef5283c591bc 229 | ----field---- 230 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 231 | name: __Updated 232 | key: __updated 233 | content-length: 16 234 | 235 | 20160729T133707Z 236 | ----field---- 237 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 238 | name: __Updated by 239 | key: __updated by 240 | content-length: 14 241 | 242 | sitecore\admin 243 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Placeholder Settings.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {1CE3B36C-9B0C-4EB5-A996-BFCB4EAA5287} 4 | database: master 5 | path: /sitecore/layout/Placeholder Settings 6 | parent: {EB2E4FFD-2761-4653-B052-26A64D385227} 7 | name: Placeholder Settings 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {A87A00B1-E6DB-45AB-8B54-636FEC3B5523} 10 | templatekey: Folder 11 | created: 20160729T132116:636053952760000000 12 | 13 | ----field---- 14 | field: {9C6106EA-7A5A-48E2-8CAD-F0F693B1E2D4} 15 | name: __Read Only 16 | key: __read only 17 | content-length: 1 18 | 19 | 1 20 | ----field---- 21 | field: {1172F251-DAD4-4EFB-A329-0C63500E4F1E} 22 | name: __Masters 23 | key: __masters 24 | content-length: 77 25 | 26 | {5C547D4E-7111-4995-95B0-6B561751BF2E}|{C3B037A0-46E5-4B67-AC7A-A144B962A56F} 27 | ----field---- 28 | field: {DEC8D2D5-E3CF-48B6-A653-8E69E2716641} 29 | name: __Security 30 | key: __security 31 | content-length: 120 32 | 33 | ar|sitecore\Sitecore Client Developing|pd|+item:delete|+item:create|+item:rename|+item:read|+item:write|pe|+item:create| 34 | ----version---- 35 | language: da 36 | version: 1 37 | revision: 5f0c2df9-f2f5-4d05-9076-124b56a92dfd 38 | 39 | ----field---- 40 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 41 | name: __Display name 42 | key: __display name 43 | content-length: 29 44 | 45 | Indstillinger for placeholder 46 | ----field---- 47 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 48 | name: __Owner 49 | key: __owner 50 | content-length: 14 51 | 52 | sitecore\admin 53 | ----field---- 54 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 55 | name: __Created 56 | key: __created 57 | content-length: 16 58 | 59 | 20160729T133409Z 60 | ----field---- 61 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 62 | name: __Created by 63 | key: __created by 64 | content-length: 14 65 | 66 | sitecore\admin 67 | ----field---- 68 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 69 | name: __Revision 70 | key: __revision 71 | content-length: 36 72 | 73 | 5f0c2df9-f2f5-4d05-9076-124b56a92dfd 74 | ----field---- 75 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 76 | name: __Updated 77 | key: __updated 78 | content-length: 16 79 | 80 | 20160729T133409Z 81 | ----field---- 82 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 83 | name: __Updated by 84 | key: __updated by 85 | content-length: 14 86 | 87 | sitecore\admin 88 | ----version---- 89 | language: de-DE 90 | version: 1 91 | revision: 12d8b695-a9d0-456c-8c2e-70cbe4e4145c 92 | 93 | ----field---- 94 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 95 | name: __Display name 96 | key: __display name 97 | content-length: 24 98 | 99 | Platzhaltereinstellungen 100 | ----field---- 101 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 102 | name: __Owner 103 | key: __owner 104 | content-length: 14 105 | 106 | sitecore\admin 107 | ----field---- 108 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 109 | name: __Created 110 | key: __created 111 | content-length: 16 112 | 113 | 20160729T133538Z 114 | ----field---- 115 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 116 | name: __Created by 117 | key: __created by 118 | content-length: 14 119 | 120 | sitecore\admin 121 | ----field---- 122 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 123 | name: __Revision 124 | key: __revision 125 | content-length: 36 126 | 127 | 12d8b695-a9d0-456c-8c2e-70cbe4e4145c 128 | ----field---- 129 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 130 | name: __Updated 131 | key: __updated 132 | content-length: 16 133 | 134 | 20160729T133538Z 135 | ----field---- 136 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 137 | name: __Updated by 138 | key: __updated by 139 | content-length: 14 140 | 141 | sitecore\admin 142 | ----version---- 143 | language: en 144 | version: 1 145 | revision: a5533dc9-3e0f-43d9-a91f-3a389bc50574 146 | 147 | ----field---- 148 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 149 | name: __Created 150 | key: __created 151 | content-length: 15 152 | 153 | 20080110T095800 154 | ----field---- 155 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 156 | name: __Created by 157 | key: __created by 158 | content-length: 14 159 | 160 | sitecore\admin 161 | ----field---- 162 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 163 | name: __Revision 164 | key: __revision 165 | content-length: 36 166 | 167 | a5533dc9-3e0f-43d9-a91f-3a389bc50574 168 | ----field---- 169 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 170 | name: __Updated 171 | key: __updated 172 | content-length: 34 173 | 174 | 20110928T152142:634528201026463308 175 | ----field---- 176 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 177 | name: __Updated by 178 | key: __updated by 179 | content-length: 14 180 | 181 | sitecore\Admin 182 | ----version---- 183 | language: ja-JP 184 | version: 1 185 | revision: eb867636-5c5e-49bb-96bd-7276744450f7 186 | 187 | ----field---- 188 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 189 | name: __Display name 190 | key: __display name 191 | content-length: 10 192 | 193 | プレースホルダー設定 194 | ----field---- 195 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 196 | name: __Owner 197 | key: __owner 198 | content-length: 14 199 | 200 | sitecore\admin 201 | ----field---- 202 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 203 | name: __Created 204 | key: __created 205 | content-length: 16 206 | 207 | 20160729T133707Z 208 | ----field---- 209 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 210 | name: __Created by 211 | key: __created by 212 | content-length: 14 213 | 214 | sitecore\admin 215 | ----field---- 216 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 217 | name: __Revision 218 | key: __revision 219 | content-length: 36 220 | 221 | eb867636-5c5e-49bb-96bd-7276744450f7 222 | ----field---- 223 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 224 | name: __Updated 225 | key: __updated 226 | content-length: 16 227 | 228 | 20160729T133707Z 229 | ----field---- 230 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 231 | name: __Updated by 232 | key: __updated by 233 | content-length: 14 234 | 235 | sitecore\admin 236 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Renderings/Js Sample.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {F4E688E2-9962-499E-B751-9F9A5D0F74DE} 4 | database: master 5 | path: /sitecore/layout/Renderings/Js Sample 6 | parent: {32566F0E-7686-45F1-A12F-D7260BD78BC3} 7 | name: Js Sample 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {7EE0975B-0698-493E-B3A2-0B2EF33D0522} 10 | templatekey: Rendering Folder 11 | created: 20170215T072151:636227401114670000 12 | 13 | ----version---- 14 | language: en 15 | version: 1 16 | revision: 6c048891-b754-409f-af44-3b7a86f7ae6f 17 | 18 | ----field---- 19 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 20 | name: __Created 21 | key: __created 22 | content-length: 16 23 | 24 | 20170215T072151Z 25 | ----field---- 26 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 27 | name: __Revision 28 | key: __revision 29 | content-length: 36 30 | 31 | 6c048891-b754-409f-af44-3b7a86f7ae6f 32 | ----field---- 33 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 34 | name: __Updated 35 | key: __updated 36 | content-length: 16 37 | 38 | 20170215T072151Z 39 | ----field---- 40 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 41 | name: __Updated by 42 | key: __updated by 43 | content-length: 14 44 | 45 | sitecore\admin 46 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Renderings/Js Sample/Sample Lodash Component.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {3634E8E4-3198-46A2-89FE-76D78836B505} 4 | database: master 5 | path: /sitecore/layout/Renderings/Js Sample/Sample Lodash Component 6 | parent: {F4E688E2-9962-499E-B751-9F9A5D0F74DE} 7 | name: Sample Lodash Component 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {2A3E91A0-7987-44B5-AB34-35C2D9DE83B9} 10 | templatekey: Controller rendering 11 | created: 20170215T060115:636227352758870000 12 | 13 | ----field---- 14 | field: {E64AD073-DFCC-4D20-8C0B-FE5AA6226CD7} 15 | name: Controller 16 | key: controller 17 | content-length: 97 18 | 19 | Sitecore.Js.Presentation.Sample.Controllers.ComponentsController, Sitecore.Js.Presentation.Sample 20 | ----field---- 21 | field: {DED9E431-3604-4921-A4B3-A6EC7636A5B6} 22 | name: Controller Action 23 | key: controller action 24 | content-length: 13 25 | 26 | LodashContent 27 | ----field---- 28 | field: {1C0AF338-70A8-455F-8366-173135E03BE6} 29 | name: Placeholder 30 | key: placeholder 31 | content-length: 7 32 | 33 | content 34 | ----field---- 35 | field: {13F89250-AD6B-4548-882E-118A12C18094} 36 | name: Parameters Template 37 | key: parameters template 38 | content-length: 0 39 | 40 | 41 | ----version---- 42 | language: da 43 | version: 1 44 | revision: 571431ec-c773-4358-8015-004477ec7fc7 45 | 46 | ----field---- 47 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 48 | name: __Display name 49 | key: __display name 50 | content-length: 14 51 | 52 | Google +1-knap 53 | ----field---- 54 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 55 | name: __Owner 56 | key: __owner 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 62 | name: __Created 63 | key: __created 64 | content-length: 16 65 | 66 | 20160729T133416Z 67 | ----field---- 68 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 69 | name: __Created by 70 | key: __created by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----field---- 75 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 76 | name: __Revision 77 | key: __revision 78 | content-length: 36 79 | 80 | 571431ec-c773-4358-8015-004477ec7fc7 81 | ----field---- 82 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 83 | name: __Updated 84 | key: __updated 85 | content-length: 16 86 | 87 | 20160729T133416Z 88 | ----field---- 89 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 90 | name: __Updated by 91 | key: __updated by 92 | content-length: 14 93 | 94 | sitecore\admin 95 | ----version---- 96 | language: de-DE 97 | version: 1 98 | revision: 31234a8d-69aa-4f88-a298-d253af46a8ab 99 | 100 | ----field---- 101 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 102 | name: __Display name 103 | key: __display name 104 | content-length: 16 105 | 106 | Google +1 Button 107 | ----field---- 108 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 109 | name: __Owner 110 | key: __owner 111 | content-length: 14 112 | 113 | sitecore\admin 114 | ----field---- 115 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 116 | name: __Created 117 | key: __created 118 | content-length: 16 119 | 120 | 20160729T133546Z 121 | ----field---- 122 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 123 | name: __Created by 124 | key: __created by 125 | content-length: 14 126 | 127 | sitecore\admin 128 | ----field---- 129 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 130 | name: __Revision 131 | key: __revision 132 | content-length: 36 133 | 134 | 31234a8d-69aa-4f88-a298-d253af46a8ab 135 | ----field---- 136 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 137 | name: __Updated 138 | key: __updated 139 | content-length: 16 140 | 141 | 20160729T133546Z 142 | ----field---- 143 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 144 | name: __Updated by 145 | key: __updated by 146 | content-length: 14 147 | 148 | sitecore\admin 149 | ----version---- 150 | language: en 151 | version: 1 152 | revision: 0b917901-c104-444d-8d34-f2c7158c3dff 153 | 154 | ----field---- 155 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 156 | name: __Display name 157 | key: __display name 158 | content-length: 0 159 | 160 | 161 | ----field---- 162 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 163 | name: __Created 164 | key: __created 165 | content-length: 16 166 | 167 | 20170215T055745Z 168 | ----field---- 169 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 170 | name: __Revision 171 | key: __revision 172 | content-length: 36 173 | 174 | 0b917901-c104-444d-8d34-f2c7158c3dff 175 | ----field---- 176 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 177 | name: __Updated 178 | key: __updated 179 | content-length: 16 180 | 181 | 20170215T072213Z 182 | ----field---- 183 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 184 | name: __Updated by 185 | key: __updated by 186 | content-length: 14 187 | 188 | sitecore\admin 189 | ----version---- 190 | language: ja-JP 191 | version: 1 192 | revision: b3fb8c34-36b3-4996-8632-bef35118615d 193 | 194 | ----field---- 195 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 196 | name: __Display name 197 | key: __display name 198 | content-length: 13 199 | 200 | Google +1 ボタン 201 | ----field---- 202 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 203 | name: __Owner 204 | key: __owner 205 | content-length: 14 206 | 207 | sitecore\admin 208 | ----field---- 209 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 210 | name: __Created 211 | key: __created 212 | content-length: 16 213 | 214 | 20160729T133716Z 215 | ----field---- 216 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 217 | name: __Created by 218 | key: __created by 219 | content-length: 14 220 | 221 | sitecore\admin 222 | ----field---- 223 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 224 | name: __Revision 225 | key: __revision 226 | content-length: 36 227 | 228 | b3fb8c34-36b3-4996-8632-bef35118615d 229 | ----field---- 230 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 231 | name: __Updated 232 | key: __updated 233 | content-length: 16 234 | 235 | 20160729T133716Z 236 | ----field---- 237 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 238 | name: __Updated by 239 | key: __updated by 240 | content-length: 14 241 | 242 | sitecore\admin 243 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Renderings/Js Sample/Sample React Component.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {13A09EED-473F-4205-9F73-81E491E23D39} 4 | database: master 5 | path: /sitecore/layout/Renderings/Js Sample/Sample React Component 6 | parent: {F4E688E2-9962-499E-B751-9F9A5D0F74DE} 7 | name: Sample React Component 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {2A3E91A0-7987-44B5-AB34-35C2D9DE83B9} 10 | templatekey: Controller rendering 11 | created: 20170215T060014:636227352149270000 12 | 13 | ----field---- 14 | field: {E64AD073-DFCC-4D20-8C0B-FE5AA6226CD7} 15 | name: Controller 16 | key: controller 17 | content-length: 97 18 | 19 | Sitecore.Js.Presentation.Sample.Controllers.ComponentsController, Sitecore.Js.Presentation.Sample 20 | ----field---- 21 | field: {DED9E431-3604-4921-A4B3-A6EC7636A5B6} 22 | name: Controller Action 23 | key: controller action 24 | content-length: 13 25 | 26 | SimpleContent 27 | ----field---- 28 | field: {1C0AF338-70A8-455F-8366-173135E03BE6} 29 | name: Placeholder 30 | key: placeholder 31 | content-length: 7 32 | 33 | content 34 | ----field---- 35 | field: {13F89250-AD6B-4548-882E-118A12C18094} 36 | name: Parameters Template 37 | key: parameters template 38 | content-length: 0 39 | 40 | 41 | ----version---- 42 | language: da 43 | version: 1 44 | revision: 571431ec-c773-4358-8015-004477ec7fc7 45 | 46 | ----field---- 47 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 48 | name: __Display name 49 | key: __display name 50 | content-length: 14 51 | 52 | Google +1-knap 53 | ----field---- 54 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 55 | name: __Owner 56 | key: __owner 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 62 | name: __Created 63 | key: __created 64 | content-length: 16 65 | 66 | 20160729T133416Z 67 | ----field---- 68 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 69 | name: __Created by 70 | key: __created by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----field---- 75 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 76 | name: __Revision 77 | key: __revision 78 | content-length: 36 79 | 80 | 571431ec-c773-4358-8015-004477ec7fc7 81 | ----field---- 82 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 83 | name: __Updated 84 | key: __updated 85 | content-length: 16 86 | 87 | 20160729T133416Z 88 | ----field---- 89 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 90 | name: __Updated by 91 | key: __updated by 92 | content-length: 14 93 | 94 | sitecore\admin 95 | ----version---- 96 | language: de-DE 97 | version: 1 98 | revision: 31234a8d-69aa-4f88-a298-d253af46a8ab 99 | 100 | ----field---- 101 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 102 | name: __Display name 103 | key: __display name 104 | content-length: 16 105 | 106 | Google +1 Button 107 | ----field---- 108 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 109 | name: __Owner 110 | key: __owner 111 | content-length: 14 112 | 113 | sitecore\admin 114 | ----field---- 115 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 116 | name: __Created 117 | key: __created 118 | content-length: 16 119 | 120 | 20160729T133546Z 121 | ----field---- 122 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 123 | name: __Created by 124 | key: __created by 125 | content-length: 14 126 | 127 | sitecore\admin 128 | ----field---- 129 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 130 | name: __Revision 131 | key: __revision 132 | content-length: 36 133 | 134 | 31234a8d-69aa-4f88-a298-d253af46a8ab 135 | ----field---- 136 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 137 | name: __Updated 138 | key: __updated 139 | content-length: 16 140 | 141 | 20160729T133546Z 142 | ----field---- 143 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 144 | name: __Updated by 145 | key: __updated by 146 | content-length: 14 147 | 148 | sitecore\admin 149 | ----version---- 150 | language: en 151 | version: 1 152 | revision: b546b962-ad00-4698-8a85-1f8518ffd45a 153 | 154 | ----field---- 155 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 156 | name: __Display name 157 | key: __display name 158 | content-length: 0 159 | 160 | 161 | ----field---- 162 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 163 | name: __Created 164 | key: __created 165 | content-length: 16 166 | 167 | 20170215T055745Z 168 | ----field---- 169 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 170 | name: __Revision 171 | key: __revision 172 | content-length: 36 173 | 174 | b546b962-ad00-4698-8a85-1f8518ffd45a 175 | ----field---- 176 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 177 | name: __Updated 178 | key: __updated 179 | content-length: 16 180 | 181 | 20170215T072210Z 182 | ----field---- 183 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 184 | name: __Updated by 185 | key: __updated by 186 | content-length: 14 187 | 188 | sitecore\admin 189 | ----version---- 190 | language: ja-JP 191 | version: 1 192 | revision: b3fb8c34-36b3-4996-8632-bef35118615d 193 | 194 | ----field---- 195 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 196 | name: __Display name 197 | key: __display name 198 | content-length: 13 199 | 200 | Google +1 ボタン 201 | ----field---- 202 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 203 | name: __Owner 204 | key: __owner 205 | content-length: 14 206 | 207 | sitecore\admin 208 | ----field---- 209 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 210 | name: __Created 211 | key: __created 212 | content-length: 16 213 | 214 | 20160729T133716Z 215 | ----field---- 216 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 217 | name: __Created by 218 | key: __created by 219 | content-length: 14 220 | 221 | sitecore\admin 222 | ----field---- 223 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 224 | name: __Revision 225 | key: __revision 226 | content-length: 36 227 | 228 | b3fb8c34-36b3-4996-8632-bef35118615d 229 | ----field---- 230 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 231 | name: __Updated 232 | key: __updated 233 | content-length: 16 234 | 235 | 20160729T133716Z 236 | ----field---- 237 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 238 | name: __Updated by 239 | key: __updated by 240 | content-length: 14 241 | 242 | sitecore\admin 243 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Renderings/Js Sample/Sample Redux Counter.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {2B2FD742-45D8-4E2C-A639-55A75793AACA} 4 | database: master 5 | path: /sitecore/layout/Renderings/Js Sample/Sample Redux Counter 6 | parent: {F4E688E2-9962-499E-B751-9F9A5D0F74DE} 7 | name: Sample Redux Counter 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {2A3E91A0-7987-44B5-AB34-35C2D9DE83B9} 10 | templatekey: Controller rendering 11 | created: 20170215T060055:636227352558970000 12 | 13 | ----field---- 14 | field: {E64AD073-DFCC-4D20-8C0B-FE5AA6226CD7} 15 | name: Controller 16 | key: controller 17 | content-length: 97 18 | 19 | Sitecore.Js.Presentation.Sample.Controllers.ComponentsController, Sitecore.Js.Presentation.Sample 20 | ----field---- 21 | field: {DED9E431-3604-4921-A4B3-A6EC7636A5B6} 22 | name: Controller Action 23 | key: controller action 24 | content-length: 7 25 | 26 | Counter 27 | ----field---- 28 | field: {1C0AF338-70A8-455F-8366-173135E03BE6} 29 | name: Placeholder 30 | key: placeholder 31 | content-length: 7 32 | 33 | content 34 | ----field---- 35 | field: {13F89250-AD6B-4548-882E-118A12C18094} 36 | name: Parameters Template 37 | key: parameters template 38 | content-length: 0 39 | 40 | 41 | ----version---- 42 | language: da 43 | version: 1 44 | revision: 571431ec-c773-4358-8015-004477ec7fc7 45 | 46 | ----field---- 47 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 48 | name: __Display name 49 | key: __display name 50 | content-length: 14 51 | 52 | Google +1-knap 53 | ----field---- 54 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 55 | name: __Owner 56 | key: __owner 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 62 | name: __Created 63 | key: __created 64 | content-length: 16 65 | 66 | 20160729T133416Z 67 | ----field---- 68 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 69 | name: __Created by 70 | key: __created by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----field---- 75 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 76 | name: __Revision 77 | key: __revision 78 | content-length: 36 79 | 80 | 571431ec-c773-4358-8015-004477ec7fc7 81 | ----field---- 82 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 83 | name: __Updated 84 | key: __updated 85 | content-length: 16 86 | 87 | 20160729T133416Z 88 | ----field---- 89 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 90 | name: __Updated by 91 | key: __updated by 92 | content-length: 14 93 | 94 | sitecore\admin 95 | ----version---- 96 | language: de-DE 97 | version: 1 98 | revision: 31234a8d-69aa-4f88-a298-d253af46a8ab 99 | 100 | ----field---- 101 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 102 | name: __Display name 103 | key: __display name 104 | content-length: 16 105 | 106 | Google +1 Button 107 | ----field---- 108 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 109 | name: __Owner 110 | key: __owner 111 | content-length: 14 112 | 113 | sitecore\admin 114 | ----field---- 115 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 116 | name: __Created 117 | key: __created 118 | content-length: 16 119 | 120 | 20160729T133546Z 121 | ----field---- 122 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 123 | name: __Created by 124 | key: __created by 125 | content-length: 14 126 | 127 | sitecore\admin 128 | ----field---- 129 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 130 | name: __Revision 131 | key: __revision 132 | content-length: 36 133 | 134 | 31234a8d-69aa-4f88-a298-d253af46a8ab 135 | ----field---- 136 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 137 | name: __Updated 138 | key: __updated 139 | content-length: 16 140 | 141 | 20160729T133546Z 142 | ----field---- 143 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 144 | name: __Updated by 145 | key: __updated by 146 | content-length: 14 147 | 148 | sitecore\admin 149 | ----version---- 150 | language: en 151 | version: 1 152 | revision: 0c33f921-b390-46a5-9f64-3a52df00e6b1 153 | 154 | ----field---- 155 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 156 | name: __Display name 157 | key: __display name 158 | content-length: 0 159 | 160 | 161 | ----field---- 162 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 163 | name: __Created 164 | key: __created 165 | content-length: 16 166 | 167 | 20170215T055745Z 168 | ----field---- 169 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 170 | name: __Revision 171 | key: __revision 172 | content-length: 36 173 | 174 | 0c33f921-b390-46a5-9f64-3a52df00e6b1 175 | ----field---- 176 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 177 | name: __Updated 178 | key: __updated 179 | content-length: 16 180 | 181 | 20170215T072207Z 182 | ----field---- 183 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 184 | name: __Updated by 185 | key: __updated by 186 | content-length: 14 187 | 188 | sitecore\admin 189 | ----version---- 190 | language: ja-JP 191 | version: 1 192 | revision: b3fb8c34-36b3-4996-8632-bef35118615d 193 | 194 | ----field---- 195 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 196 | name: __Display name 197 | key: __display name 198 | content-length: 13 199 | 200 | Google +1 ボタン 201 | ----field---- 202 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 203 | name: __Owner 204 | key: __owner 205 | content-length: 14 206 | 207 | sitecore\admin 208 | ----field---- 209 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 210 | name: __Created 211 | key: __created 212 | content-length: 16 213 | 214 | 20160729T133716Z 215 | ----field---- 216 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 217 | name: __Created by 218 | key: __created by 219 | content-length: 14 220 | 221 | sitecore\admin 222 | ----field---- 223 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 224 | name: __Revision 225 | key: __revision 226 | content-length: 36 227 | 228 | b3fb8c34-36b3-4996-8632-bef35118615d 229 | ----field---- 230 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 231 | name: __Updated 232 | key: __updated 233 | content-length: 16 234 | 235 | 20160729T133716Z 236 | ----field---- 237 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 238 | name: __Updated by 239 | key: __updated by 240 | content-length: 14 241 | 242 | sitecore\admin 243 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Renderings/Js Sample/Sample Redux Timer.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {3A1E62D4-97D7-4221-8AC3-AB78720EA965} 4 | database: master 5 | path: /sitecore/layout/Renderings/Js Sample/Sample Redux Timer 6 | parent: {F4E688E2-9962-499E-B751-9F9A5D0F74DE} 7 | name: Sample Redux Timer 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {2A3E91A0-7987-44B5-AB34-35C2D9DE83B9} 10 | templatekey: Controller rendering 11 | created: 20170215T060038:636227352383900000 12 | 13 | ----field---- 14 | field: {E64AD073-DFCC-4D20-8C0B-FE5AA6226CD7} 15 | name: Controller 16 | key: controller 17 | content-length: 97 18 | 19 | Sitecore.Js.Presentation.Sample.Controllers.ComponentsController, Sitecore.Js.Presentation.Sample 20 | ----field---- 21 | field: {DED9E431-3604-4921-A4B3-A6EC7636A5B6} 22 | name: Controller Action 23 | key: controller action 24 | content-length: 5 25 | 26 | Timer 27 | ----field---- 28 | field: {1C0AF338-70A8-455F-8366-173135E03BE6} 29 | name: Placeholder 30 | key: placeholder 31 | content-length: 7 32 | 33 | content 34 | ----field---- 35 | field: {13F89250-AD6B-4548-882E-118A12C18094} 36 | name: Parameters Template 37 | key: parameters template 38 | content-length: 0 39 | 40 | 41 | ----version---- 42 | language: da 43 | version: 1 44 | revision: 571431ec-c773-4358-8015-004477ec7fc7 45 | 46 | ----field---- 47 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 48 | name: __Display name 49 | key: __display name 50 | content-length: 14 51 | 52 | Google +1-knap 53 | ----field---- 54 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 55 | name: __Owner 56 | key: __owner 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 62 | name: __Created 63 | key: __created 64 | content-length: 16 65 | 66 | 20160729T133416Z 67 | ----field---- 68 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 69 | name: __Created by 70 | key: __created by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----field---- 75 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 76 | name: __Revision 77 | key: __revision 78 | content-length: 36 79 | 80 | 571431ec-c773-4358-8015-004477ec7fc7 81 | ----field---- 82 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 83 | name: __Updated 84 | key: __updated 85 | content-length: 16 86 | 87 | 20160729T133416Z 88 | ----field---- 89 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 90 | name: __Updated by 91 | key: __updated by 92 | content-length: 14 93 | 94 | sitecore\admin 95 | ----version---- 96 | language: de-DE 97 | version: 1 98 | revision: 31234a8d-69aa-4f88-a298-d253af46a8ab 99 | 100 | ----field---- 101 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 102 | name: __Display name 103 | key: __display name 104 | content-length: 16 105 | 106 | Google +1 Button 107 | ----field---- 108 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 109 | name: __Owner 110 | key: __owner 111 | content-length: 14 112 | 113 | sitecore\admin 114 | ----field---- 115 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 116 | name: __Created 117 | key: __created 118 | content-length: 16 119 | 120 | 20160729T133546Z 121 | ----field---- 122 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 123 | name: __Created by 124 | key: __created by 125 | content-length: 14 126 | 127 | sitecore\admin 128 | ----field---- 129 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 130 | name: __Revision 131 | key: __revision 132 | content-length: 36 133 | 134 | 31234a8d-69aa-4f88-a298-d253af46a8ab 135 | ----field---- 136 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 137 | name: __Updated 138 | key: __updated 139 | content-length: 16 140 | 141 | 20160729T133546Z 142 | ----field---- 143 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 144 | name: __Updated by 145 | key: __updated by 146 | content-length: 14 147 | 148 | sitecore\admin 149 | ----version---- 150 | language: en 151 | version: 1 152 | revision: 84318c12-9236-4774-9163-636b29be49ad 153 | 154 | ----field---- 155 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 156 | name: __Display name 157 | key: __display name 158 | content-length: 0 159 | 160 | 161 | ----field---- 162 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 163 | name: __Created 164 | key: __created 165 | content-length: 16 166 | 167 | 20170215T055745Z 168 | ----field---- 169 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 170 | name: __Revision 171 | key: __revision 172 | content-length: 36 173 | 174 | 84318c12-9236-4774-9163-636b29be49ad 175 | ----field---- 176 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 177 | name: __Updated 178 | key: __updated 179 | content-length: 16 180 | 181 | 20170215T072204Z 182 | ----field---- 183 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 184 | name: __Updated by 185 | key: __updated by 186 | content-length: 14 187 | 188 | sitecore\admin 189 | ----version---- 190 | language: ja-JP 191 | version: 1 192 | revision: b3fb8c34-36b3-4996-8632-bef35118615d 193 | 194 | ----field---- 195 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 196 | name: __Display name 197 | key: __display name 198 | content-length: 13 199 | 200 | Google +1 ボタン 201 | ----field---- 202 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 203 | name: __Owner 204 | key: __owner 205 | content-length: 14 206 | 207 | sitecore\admin 208 | ----field---- 209 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 210 | name: __Created 211 | key: __created 212 | content-length: 16 213 | 214 | 20160729T133716Z 215 | ----field---- 216 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 217 | name: __Created by 218 | key: __created by 219 | content-length: 14 220 | 221 | sitecore\admin 222 | ----field---- 223 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 224 | name: __Revision 225 | key: __revision 226 | content-length: 36 227 | 228 | b3fb8c34-36b3-4996-8632-bef35118615d 229 | ----field---- 230 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 231 | name: __Updated 232 | key: __updated 233 | content-length: 16 234 | 235 | 20160729T133716Z 236 | ----field---- 237 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 238 | name: __Updated by 239 | key: __updated by 240 | content-length: 14 241 | 242 | sitecore\admin 243 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/layout/Renderings/Js Sample/Sample Rich Text.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {DE328081-87E2-4367-9EF5-F01C83305C45} 4 | database: master 5 | path: /sitecore/layout/Renderings/Js Sample/Sample Rich Text 6 | parent: {F4E688E2-9962-499E-B751-9F9A5D0F74DE} 7 | name: Sample Rich Text 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {2A3E91A0-7987-44B5-AB34-35C2D9DE83B9} 10 | templatekey: Controller rendering 11 | created: 20170215T055656:636227350168030000 12 | 13 | ----field---- 14 | field: {E64AD073-DFCC-4D20-8C0B-FE5AA6226CD7} 15 | name: Controller 16 | key: controller 17 | content-length: 97 18 | 19 | Sitecore.Js.Presentation.Sample.Controllers.ComponentsController, Sitecore.Js.Presentation.Sample 20 | ----field---- 21 | field: {DED9E431-3604-4921-A4B3-A6EC7636A5B6} 22 | name: Controller Action 23 | key: controller action 24 | content-length: 8 25 | 26 | RichText 27 | ----field---- 28 | field: {1C0AF338-70A8-455F-8366-173135E03BE6} 29 | name: Placeholder 30 | key: placeholder 31 | content-length: 7 32 | 33 | content 34 | ----field---- 35 | field: {13F89250-AD6B-4548-882E-118A12C18094} 36 | name: Parameters Template 37 | key: parameters template 38 | content-length: 0 39 | 40 | 41 | ----version---- 42 | language: da 43 | version: 1 44 | revision: 571431ec-c773-4358-8015-004477ec7fc7 45 | 46 | ----field---- 47 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 48 | name: __Display name 49 | key: __display name 50 | content-length: 14 51 | 52 | Google +1-knap 53 | ----field---- 54 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 55 | name: __Owner 56 | key: __owner 57 | content-length: 14 58 | 59 | sitecore\admin 60 | ----field---- 61 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 62 | name: __Created 63 | key: __created 64 | content-length: 16 65 | 66 | 20160729T133416Z 67 | ----field---- 68 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 69 | name: __Created by 70 | key: __created by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----field---- 75 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 76 | name: __Revision 77 | key: __revision 78 | content-length: 36 79 | 80 | 571431ec-c773-4358-8015-004477ec7fc7 81 | ----field---- 82 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 83 | name: __Updated 84 | key: __updated 85 | content-length: 16 86 | 87 | 20160729T133416Z 88 | ----field---- 89 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 90 | name: __Updated by 91 | key: __updated by 92 | content-length: 14 93 | 94 | sitecore\admin 95 | ----version---- 96 | language: de-DE 97 | version: 1 98 | revision: 31234a8d-69aa-4f88-a298-d253af46a8ab 99 | 100 | ----field---- 101 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 102 | name: __Display name 103 | key: __display name 104 | content-length: 16 105 | 106 | Google +1 Button 107 | ----field---- 108 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 109 | name: __Owner 110 | key: __owner 111 | content-length: 14 112 | 113 | sitecore\admin 114 | ----field---- 115 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 116 | name: __Created 117 | key: __created 118 | content-length: 16 119 | 120 | 20160729T133546Z 121 | ----field---- 122 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 123 | name: __Created by 124 | key: __created by 125 | content-length: 14 126 | 127 | sitecore\admin 128 | ----field---- 129 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 130 | name: __Revision 131 | key: __revision 132 | content-length: 36 133 | 134 | 31234a8d-69aa-4f88-a298-d253af46a8ab 135 | ----field---- 136 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 137 | name: __Updated 138 | key: __updated 139 | content-length: 16 140 | 141 | 20160729T133546Z 142 | ----field---- 143 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 144 | name: __Updated by 145 | key: __updated by 146 | content-length: 14 147 | 148 | sitecore\admin 149 | ----version---- 150 | language: en 151 | version: 1 152 | revision: 0669c621-9584-4b7f-ac10-63b563c0a3b9 153 | 154 | ----field---- 155 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 156 | name: __Display name 157 | key: __display name 158 | content-length: 0 159 | 160 | 161 | ----field---- 162 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 163 | name: __Created 164 | key: __created 165 | content-length: 16 166 | 167 | 20170215T055745Z 168 | ----field---- 169 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 170 | name: __Revision 171 | key: __revision 172 | content-length: 36 173 | 174 | 0669c621-9584-4b7f-ac10-63b563c0a3b9 175 | ----field---- 176 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 177 | name: __Updated 178 | key: __updated 179 | content-length: 16 180 | 181 | 20170215T072200Z 182 | ----field---- 183 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 184 | name: __Updated by 185 | key: __updated by 186 | content-length: 14 187 | 188 | sitecore\admin 189 | ----version---- 190 | language: ja-JP 191 | version: 1 192 | revision: b3fb8c34-36b3-4996-8632-bef35118615d 193 | 194 | ----field---- 195 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 196 | name: __Display name 197 | key: __display name 198 | content-length: 13 199 | 200 | Google +1 ボタン 201 | ----field---- 202 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 203 | name: __Owner 204 | key: __owner 205 | content-length: 14 206 | 207 | sitecore\admin 208 | ----field---- 209 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 210 | name: __Created 211 | key: __created 212 | content-length: 16 213 | 214 | 20160729T133716Z 215 | ----field---- 216 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 217 | name: __Created by 218 | key: __created by 219 | content-length: 14 220 | 221 | sitecore\admin 222 | ----field---- 223 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 224 | name: __Revision 225 | key: __revision 226 | content-length: 36 227 | 228 | b3fb8c34-36b3-4996-8632-bef35118615d 229 | ----field---- 230 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 231 | name: __Updated 232 | key: __updated 233 | content-length: 16 234 | 235 | 20160729T133716Z 236 | ----field---- 237 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 238 | name: __Updated by 239 | key: __updated by 240 | content-length: 14 241 | 242 | sitecore\admin 243 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/media library/Js Sample.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {38282890-FBF4-4E84-BF90-E59FDD150592} 4 | database: master 5 | path: /sitecore/media library/Js Sample 6 | parent: {3D6658D8-A0BF-4E75-B3E2-D050FABCF4E1} 7 | name: Js Sample 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {FE5DD826-48C6-436D-B87A-7C4210C7413B} 10 | templatekey: Media folder 11 | created: 20170215T070907:636227393470230000 12 | 13 | ----version---- 14 | language: en 15 | version: 1 16 | revision: 44c9b703-9a82-4acf-9b23-9f0c46c8e40b 17 | 18 | ----field---- 19 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 20 | name: __Created 21 | key: __created 22 | content-length: 16 23 | 24 | 20170215T070907Z 25 | ----field---- 26 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 27 | name: __Created by 28 | key: __created by 29 | content-length: 14 30 | 31 | sitecore\admin 32 | ----field---- 33 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 34 | name: __Revision 35 | key: __revision 36 | content-length: 36 37 | 38 | 44c9b703-9a82-4acf-9b23-9f0c46c8e40b 39 | ----field---- 40 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 41 | name: __Updated 42 | key: __updated 43 | content-length: 16 44 | 45 | 20170215T132355Z 46 | ----field---- 47 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 48 | name: __Updated by 49 | key: __updated by 50 | content-length: 14 51 | 52 | sitecore\admin 53 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/templates/Js Sample.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {073532DC-FC78-44AE-B426-9891CAF1C35D} 4 | database: master 5 | path: /sitecore/templates/Js Sample 6 | parent: {3C1715FE-6A13-4FCF-845F-DE308BA9741D} 7 | name: Js Sample 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {0437FEE2-44C9-46A6-ABE9-28858D9FEE8C} 10 | templatekey: Template Folder 11 | created: 20170215T132409:636227618499670000 12 | 13 | ----field---- 14 | field: {D85DB4EC-FF89-4F9C-9E7C-A9E0654797FC} 15 | name: __Editor 16 | key: __editor 17 | content-length: 0 18 | 19 | 20 | ----field---- 21 | field: {9C6106EA-7A5A-48E2-8CAD-F0F693B1E2D4} 22 | name: __Read Only 23 | key: __read only 24 | content-length: 0 25 | 26 | 27 | ----field---- 28 | field: {DEC8D2D5-E3CF-48B6-A653-8E69E2716641} 29 | name: __Security 30 | key: __security 31 | content-length: 0 32 | 33 | 34 | ----version---- 35 | language: da 36 | version: 1 37 | revision: 5027f84f-0023-4194-af91-d8ee0768b38e 38 | 39 | ----field---- 40 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 41 | name: __Display name 42 | key: __display name 43 | content-length: 8 44 | 45 | Eksempel 46 | ----field---- 47 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 48 | name: __Owner 49 | key: __owner 50 | content-length: 14 51 | 52 | sitecore\admin 53 | ----field---- 54 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 55 | name: __Created 56 | key: __created 57 | content-length: 16 58 | 59 | 20160729T133414Z 60 | ----field---- 61 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 62 | name: __Created by 63 | key: __created by 64 | content-length: 14 65 | 66 | sitecore\admin 67 | ----field---- 68 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 69 | name: __Revision 70 | key: __revision 71 | content-length: 36 72 | 73 | 5027f84f-0023-4194-af91-d8ee0768b38e 74 | ----field---- 75 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 76 | name: __Updated 77 | key: __updated 78 | content-length: 16 79 | 80 | 20160729T133414Z 81 | ----field---- 82 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 83 | name: __Updated by 84 | key: __updated by 85 | content-length: 14 86 | 87 | sitecore\admin 88 | ----version---- 89 | language: de-DE 90 | version: 1 91 | revision: 5ffd3a49-aee5-433e-95f5-e174b44e7fc4 92 | 93 | ----field---- 94 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 95 | name: __Display name 96 | key: __display name 97 | content-length: 8 98 | 99 | Beispiel 100 | ----field---- 101 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 102 | name: __Owner 103 | key: __owner 104 | content-length: 14 105 | 106 | sitecore\admin 107 | ----field---- 108 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 109 | name: __Created 110 | key: __created 111 | content-length: 16 112 | 113 | 20160729T133544Z 114 | ----field---- 115 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 116 | name: __Created by 117 | key: __created by 118 | content-length: 14 119 | 120 | sitecore\admin 121 | ----field---- 122 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 123 | name: __Revision 124 | key: __revision 125 | content-length: 36 126 | 127 | 5ffd3a49-aee5-433e-95f5-e174b44e7fc4 128 | ----field---- 129 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 130 | name: __Updated 131 | key: __updated 132 | content-length: 16 133 | 134 | 20160729T133544Z 135 | ----field---- 136 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 137 | name: __Updated by 138 | key: __updated by 139 | content-length: 14 140 | 141 | sitecore\admin 142 | ----version---- 143 | language: en 144 | version: 1 145 | revision: fe39dc83-46ec-46ad-a5f7-aabb9b7415eb 146 | 147 | ----field---- 148 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 149 | name: __Created 150 | key: __created 151 | content-length: 15 152 | 153 | 20060531T102844 154 | ----field---- 155 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 156 | name: __Created by 157 | key: __created by 158 | content-length: 14 159 | 160 | sitecore\Admin 161 | ----field---- 162 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 163 | name: __Revision 164 | key: __revision 165 | content-length: 36 166 | 167 | fe39dc83-46ec-46ad-a5f7-aabb9b7415eb 168 | ----field---- 169 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 170 | name: __Updated 171 | key: __updated 172 | content-length: 15 173 | 174 | 20080130T091017 175 | ----field---- 176 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 177 | name: __Updated by 178 | key: __updated by 179 | content-length: 14 180 | 181 | sitecore\admin 182 | ----version---- 183 | language: ja-JP 184 | version: 1 185 | revision: f8b86931-aca5-4adc-9fe1-aacf6bbaa712 186 | 187 | ----field---- 188 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 189 | name: __Display name 190 | key: __display name 191 | content-length: 4 192 | 193 | サンプル 194 | ----field---- 195 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 196 | name: __Owner 197 | key: __owner 198 | content-length: 14 199 | 200 | sitecore\admin 201 | ----field---- 202 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 203 | name: __Created 204 | key: __created 205 | content-length: 16 206 | 207 | 20160729T133714Z 208 | ----field---- 209 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 210 | name: __Created by 211 | key: __created by 212 | content-length: 14 213 | 214 | sitecore\admin 215 | ----field---- 216 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 217 | name: __Revision 218 | key: __revision 219 | content-length: 36 220 | 221 | f8b86931-aca5-4adc-9fe1-aacf6bbaa712 222 | ----field---- 223 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 224 | name: __Updated 225 | key: __updated 226 | content-length: 16 227 | 228 | 20160729T133714Z 229 | ----field---- 230 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 231 | name: __Updated by 232 | key: __updated by 233 | content-length: 14 234 | 235 | sitecore\admin 236 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/templates/Js Sample/Js Sample Item.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 4 | database: master 5 | path: /sitecore/templates/Js Sample/Js Sample Item 6 | parent: {073532DC-FC78-44AE-B426-9891CAF1C35D} 7 | name: Js Sample Item 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {AB86861A-6030-46C5-B394-E8F99E8B87DB} 10 | templatekey: Template 11 | created: 20170215T132409:636227618499830000 12 | 13 | ----field---- 14 | field: {12C33F3F-86C5-43A5-AEB4-5598CEC45116} 15 | name: __Base template 16 | key: __base template 17 | content-length: 38 18 | 19 | {1930BBEB-7805-471A-A3BE-4858AC7CF696} 20 | ----field---- 21 | field: {F7D48A55-2158-4F02-9356-756654404F73} 22 | name: __Standard values 23 | key: __standard values 24 | content-length: 38 25 | 26 | {4444EABA-D135-437D-B56F-31459B7B309E} 27 | ----field---- 28 | field: {06D5295C-ED2F-4A54-9BF2-26228D113318} 29 | name: __Icon 30 | key: __icon 31 | content-length: 31 32 | 33 | Applications/16x16/document.png 34 | ----field---- 35 | field: {B03569B1-1534-43F2-8C83-BD064B7D782C} 36 | name: __Renderers 37 | key: __renderers 38 | content-length: 0 39 | 40 | 41 | ----field---- 42 | field: {DEC8D2D5-E3CF-48B6-A653-8E69E2716641} 43 | name: __Security 44 | key: __security 45 | content-length: 0 46 | 47 | 48 | ----version---- 49 | language: da 50 | version: 1 51 | revision: 7b34320e-6040-47ff-9a61-02b7e52a1535 52 | 53 | ----field---- 54 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 55 | name: __Display name 56 | key: __display name 57 | content-length: 19 58 | 59 | Eksempel på element 60 | ----field---- 61 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 62 | name: __Owner 63 | key: __owner 64 | content-length: 14 65 | 66 | sitecore\admin 67 | ----field---- 68 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 69 | name: __Created 70 | key: __created 71 | content-length: 16 72 | 73 | 20160729T133414Z 74 | ----field---- 75 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 76 | name: __Created by 77 | key: __created by 78 | content-length: 14 79 | 80 | sitecore\admin 81 | ----field---- 82 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 83 | name: __Revision 84 | key: __revision 85 | content-length: 36 86 | 87 | 7b34320e-6040-47ff-9a61-02b7e52a1535 88 | ----field---- 89 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 90 | name: __Updated 91 | key: __updated 92 | content-length: 16 93 | 94 | 20160729T133414Z 95 | ----field---- 96 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 97 | name: __Updated by 98 | key: __updated by 99 | content-length: 14 100 | 101 | sitecore\admin 102 | ----version---- 103 | language: de-DE 104 | version: 1 105 | revision: d6bd8d77-1131-449b-8adc-884cbb35ed48 106 | 107 | ----field---- 108 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 109 | name: __Display name 110 | key: __display name 111 | content-length: 13 112 | 113 | Beispiel Item 114 | ----field---- 115 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 116 | name: __Owner 117 | key: __owner 118 | content-length: 14 119 | 120 | sitecore\admin 121 | ----field---- 122 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 123 | name: __Created 124 | key: __created 125 | content-length: 16 126 | 127 | 20160729T133544Z 128 | ----field---- 129 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 130 | name: __Created by 131 | key: __created by 132 | content-length: 14 133 | 134 | sitecore\admin 135 | ----field---- 136 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 137 | name: __Revision 138 | key: __revision 139 | content-length: 36 140 | 141 | d6bd8d77-1131-449b-8adc-884cbb35ed48 142 | ----field---- 143 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 144 | name: __Updated 145 | key: __updated 146 | content-length: 16 147 | 148 | 20160729T133544Z 149 | ----field---- 150 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 151 | name: __Updated by 152 | key: __updated by 153 | content-length: 14 154 | 155 | sitecore\admin 156 | ----version---- 157 | language: en 158 | version: 1 159 | revision: 51ab5dab-526d-4e4c-a52f-c88a8966686c 160 | 161 | ----field---- 162 | field: {9541E67D-CE8C-4225-803D-33F7F29F09EF} 163 | name: __Short description 164 | key: __short description 165 | content-length: 0 166 | 167 | 168 | ----field---- 169 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 170 | name: __Created 171 | key: __created 172 | content-length: 15 173 | 174 | 20080328T085900 175 | ----field---- 176 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 177 | name: __Created by 178 | key: __created by 179 | content-length: 14 180 | 181 | sitecore\admin 182 | ----field---- 183 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 184 | name: __Revision 185 | key: __revision 186 | content-length: 36 187 | 188 | 51ab5dab-526d-4e4c-a52f-c88a8966686c 189 | ----field---- 190 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 191 | name: __Updated 192 | key: __updated 193 | content-length: 16 194 | 195 | 20170215T132453Z 196 | ----field---- 197 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 198 | name: __Updated by 199 | key: __updated by 200 | content-length: 14 201 | 202 | sitecore\admin 203 | ----version---- 204 | language: ja-JP 205 | version: 1 206 | revision: 379a2e57-9963-4082-8100-6185b4e96a45 207 | 208 | ----field---- 209 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 210 | name: __Display name 211 | key: __display name 212 | content-length: 9 213 | 214 | サンプル アイテム 215 | ----field---- 216 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 217 | name: __Owner 218 | key: __owner 219 | content-length: 14 220 | 221 | sitecore\admin 222 | ----field---- 223 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 224 | name: __Created 225 | key: __created 226 | content-length: 16 227 | 228 | 20160729T133714Z 229 | ----field---- 230 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 231 | name: __Created by 232 | key: __created by 233 | content-length: 14 234 | 235 | sitecore\admin 236 | ----field---- 237 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 238 | name: __Revision 239 | key: __revision 240 | content-length: 36 241 | 242 | 379a2e57-9963-4082-8100-6185b4e96a45 243 | ----field---- 244 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 245 | name: __Updated 246 | key: __updated 247 | content-length: 16 248 | 249 | 20160729T133714Z 250 | ----field---- 251 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 252 | name: __Updated by 253 | key: __updated by 254 | content-length: 14 255 | 256 | sitecore\admin 257 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/templates/Js Sample/Js Sample Item/Data.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {E4C7C712-9D52-4C36-9C22-EEB99FD41376} 4 | database: master 5 | path: /sitecore/templates/Js Sample/Js Sample Item/Data 6 | parent: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 7 | name: Data 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {E269FBB5-3750-427A-9149-7AA950B49301} 10 | templatekey: Template section 11 | created: 20170215T132409:636227618499970000 12 | 13 | ----field---- 14 | field: {BA3F86A2-4A1C-4D78-B63D-91C2779C1B5E} 15 | name: __Sortorder 16 | key: __sortorder 17 | content-length: 3 18 | 19 | 100 20 | ----version---- 21 | language: da 22 | version: 1 23 | revision: ae231016-9935-4e1d-849d-c92c68ae68fc 24 | 25 | ----field---- 26 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 27 | name: __Display name 28 | key: __display name 29 | content-length: 4 30 | 31 | Data 32 | ----field---- 33 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 34 | name: __Owner 35 | key: __owner 36 | content-length: 14 37 | 38 | sitecore\admin 39 | ----field---- 40 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 41 | name: __Created 42 | key: __created 43 | content-length: 16 44 | 45 | 20160729T133417Z 46 | ----field---- 47 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 48 | name: __Created by 49 | key: __created by 50 | content-length: 14 51 | 52 | sitecore\admin 53 | ----field---- 54 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 55 | name: __Revision 56 | key: __revision 57 | content-length: 36 58 | 59 | ae231016-9935-4e1d-849d-c92c68ae68fc 60 | ----field---- 61 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 62 | name: __Updated 63 | key: __updated 64 | content-length: 16 65 | 66 | 20160729T133417Z 67 | ----field---- 68 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 69 | name: __Updated by 70 | key: __updated by 71 | content-length: 14 72 | 73 | sitecore\admin 74 | ----version---- 75 | language: de-DE 76 | version: 1 77 | revision: 9ec6ec91-9ec1-4275-b101-b09cb552c3f9 78 | 79 | ----field---- 80 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 81 | name: __Display name 82 | key: __display name 83 | content-length: 5 84 | 85 | Daten 86 | ----field---- 87 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 88 | name: __Owner 89 | key: __owner 90 | content-length: 14 91 | 92 | sitecore\admin 93 | ----field---- 94 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 95 | name: __Created 96 | key: __created 97 | content-length: 16 98 | 99 | 20160729T133548Z 100 | ----field---- 101 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 102 | name: __Created by 103 | key: __created by 104 | content-length: 14 105 | 106 | sitecore\admin 107 | ----field---- 108 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 109 | name: __Revision 110 | key: __revision 111 | content-length: 36 112 | 113 | 9ec6ec91-9ec1-4275-b101-b09cb552c3f9 114 | ----field---- 115 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 116 | name: __Updated 117 | key: __updated 118 | content-length: 16 119 | 120 | 20160729T133548Z 121 | ----field---- 122 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 123 | name: __Updated by 124 | key: __updated by 125 | content-length: 14 126 | 127 | sitecore\admin 128 | ----version---- 129 | language: en 130 | version: 1 131 | revision: 75403163-8752-4861-910e-8c9bafdc7254 132 | 133 | ----field---- 134 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 135 | name: __Created 136 | key: __created 137 | content-length: 34 138 | 139 | 20080307T201110:633405174700676461 140 | ----field---- 141 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 142 | name: __Created by 143 | key: __created by 144 | content-length: 14 145 | 146 | sitecore\admin 147 | ----field---- 148 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 149 | name: __Revision 150 | key: __revision 151 | content-length: 36 152 | 153 | 75403163-8752-4861-910e-8c9bafdc7254 154 | ----field---- 155 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 156 | name: __Updated 157 | key: __updated 158 | content-length: 16 159 | 160 | 20170215T070737Z 161 | ----field---- 162 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 163 | name: __Updated by 164 | key: __updated by 165 | content-length: 14 166 | 167 | sitecore\admin 168 | ----version---- 169 | language: ja-JP 170 | version: 1 171 | revision: ec3a6d01-d686-4898-a04b-e192e5e17982 172 | 173 | ----field---- 174 | field: {B5E02AD9-D56F-4C41-A065-A133DB87BDEB} 175 | name: __Display name 176 | key: __display name 177 | content-length: 3 178 | 179 | データ 180 | ----field---- 181 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 182 | name: __Owner 183 | key: __owner 184 | content-length: 14 185 | 186 | sitecore\admin 187 | ----field---- 188 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 189 | name: __Created 190 | key: __created 191 | content-length: 16 192 | 193 | 20160729T133718Z 194 | ----field---- 195 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 196 | name: __Created by 197 | key: __created by 198 | content-length: 14 199 | 200 | sitecore\admin 201 | ----field---- 202 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 203 | name: __Revision 204 | key: __revision 205 | content-length: 36 206 | 207 | ec3a6d01-d686-4898-a04b-e192e5e17982 208 | ----field---- 209 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 210 | name: __Updated 211 | key: __updated 212 | content-length: 16 213 | 214 | 20160729T133718Z 215 | ----field---- 216 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 217 | name: __Updated by 218 | key: __updated by 219 | content-length: 14 220 | 221 | sitecore\admin 222 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/templates/Js Sample/Js Sample Item/Data/Image.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {F53B94F9-80F3-46F7-99A5-5E93BB8403E1} 4 | database: master 5 | path: /sitecore/templates/Js Sample/Js Sample Item/Data/Image 6 | parent: {E4C7C712-9D52-4C36-9C22-EEB99FD41376} 7 | name: Image 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {455A3E98-A627-4B40-8035-E683A0331AC7} 10 | templatekey: Template field 11 | created: 20170215T132410:636227618500230000 12 | 13 | ----field---- 14 | field: {AB162CC0-DC80-4ABF-8871-998EE5D7BA32} 15 | name: Type 16 | key: type 17 | content-length: 5 18 | 19 | Image 20 | ----field---- 21 | field: {BA3F86A2-4A1C-4D78-B63D-91C2779C1B5E} 22 | name: __Sortorder 23 | key: __sortorder 24 | content-length: 3 25 | 26 | 300 27 | ----version---- 28 | language: en 29 | version: 1 30 | revision: ea8210fa-5fb0-4890-91f7-fc71c1294f75 31 | 32 | ----field---- 33 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 34 | name: __Created 35 | key: __created 36 | content-length: 16 37 | 38 | 20170215T070732Z 39 | ----field---- 40 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 41 | name: __Revision 42 | key: __revision 43 | content-length: 36 44 | 45 | ea8210fa-5fb0-4890-91f7-fc71c1294f75 46 | ----field---- 47 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 48 | name: __Updated 49 | key: __updated 50 | content-length: 16 51 | 52 | 20170215T070737Z 53 | ----field---- 54 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 55 | name: __Updated by 56 | key: __updated by 57 | content-length: 14 58 | 59 | sitecore\admin 60 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample.TDS.Master/sitecore/templates/Js Sample/Js Sample Item/__Standard Values.item: -------------------------------------------------------------------------------- 1 | ----item---- 2 | version: 1 3 | id: {4444EABA-D135-437D-B56F-31459B7B309E} 4 | database: master 5 | path: /sitecore/templates/Js Sample/Js Sample Item/__Standard Values 6 | parent: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 7 | name: __Standard Values 8 | master: {00000000-0000-0000-0000-000000000000} 9 | template: {951E938B-FE24-42EC-BCFC-2630B2AE124F} 10 | templatekey: Js Sample Item 11 | created: 20170215T132410:636227618500270000 12 | 13 | ----field---- 14 | field: {1172F251-DAD4-4EFB-A329-0C63500E4F1E} 15 | name: __Masters 16 | key: __masters 17 | content-length: 77 18 | 19 | {76036F5E-CBCE-46D1-AF0A-4143F9B557AA}|{A87A00B1-E6DB-45AB-8B54-636FEC3B5523} 20 | ----field---- 21 | field: {CA9B9F52-4FB0-4F87-A79F-24DEA62CDA65} 22 | name: __Default workflow 23 | key: __default workflow 24 | content-length: 0 25 | 26 | 27 | ----version---- 28 | language: en 29 | version: 1 30 | revision: 6ff9a247-6bc7-4e66-8672-5745448e9660 31 | 32 | ----field---- 33 | field: {81E49E48-2C71-456C-A53D-FC4CB18D85D8} 34 | name: Title 35 | key: title 36 | content-length: 5 37 | 38 | $name 39 | ----field---- 40 | field: {52807595-0F8F-4B20-8D2A-CB71D28C6103} 41 | name: __Owner 42 | key: __owner 43 | content-length: 14 44 | 45 | sitecore\admin 46 | ----field---- 47 | field: {25BED78C-4957-4165-998A-CA1B52F67497} 48 | name: __Created 49 | key: __created 50 | content-length: 16 51 | 52 | 20061024T144300Z 53 | ----field---- 54 | field: {5DD74568-4D4B-44C1-B513-0AF5F4CDA34F} 55 | name: __Created by 56 | key: __created by 57 | content-length: 14 58 | 59 | sitecore\Admin 60 | ----field---- 61 | field: {8CDC337E-A112-42FB-BBB4-4143751E123F} 62 | name: __Revision 63 | key: __revision 64 | content-length: 36 65 | 66 | 6ff9a247-6bc7-4e66-8672-5745448e9660 67 | ----field---- 68 | field: {D9CF14B1-FA16-4BA6-9288-E8A174D4D522} 69 | name: __Updated 70 | key: __updated 71 | content-length: 16 72 | 73 | 20170215T132643Z 74 | ----field---- 75 | field: {BADD9CF9-53E0-4D0C-BCC0-2D784C282F6A} 76 | name: __Updated by 77 | key: __updated by 78 | content-length: 14 79 | 80 | sitecore\admin 81 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/App_Config/Include/Sitecore.Js.Presentation/Sitecore.Js.Presentation.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 8 | 25 9 | 1000000 10 | 11 | /dist/assets/shared.js 12 | /dist/assets/vendor.js 13 | /dist/assets/common.js 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/App_Start/RouteConfig.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Sample 2 | { 3 | using System.Web.Mvc; 4 | using System.Web.Routing; 5 | 6 | public class RouteConfig 7 | { 8 | public static void RegisterRoutes(RouteCollection routes) 9 | { 10 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 11 | 12 | /* 13 | routes.MapRoute( 14 | name: "Default", 15 | url: "{controller}/{action}/{id}", 16 | defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 17 | ); 18 | */ 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Controllers/ComponentsController.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Sample.Controllers 2 | { 3 | using System.Web.Mvc; 4 | 5 | using Sitecore.Data; 6 | using Sitecore.Data.Items; 7 | using Sitecore.Js.Presentation.Enum; 8 | using Sitecore.Js.Presentation.Mvc; 9 | using Sitecore.Mvc.Presentation; 10 | using Sitecore.Web.UI.WebControls; 11 | 12 | using Context = Sitecore.Context; 13 | 14 | public class ComponentsController : JsController 15 | { 16 | public ActionResult Counter() 17 | { 18 | var dataSource = this.DataSource(); 19 | 20 | var model = new { title = FieldRenderer.Render(dataSource, "Title"), }; 21 | 22 | return this.JsComponent("common__ext.counter", model, RenderingOptions.ClientAndServer); 23 | } 24 | 25 | public Item DataSource() 26 | { 27 | var datasourceId = RenderingContext.Current.Rendering.DataSource; 28 | 29 | if (ID.IsID(datasourceId)) 30 | { 31 | return Context.Database.GetItem(new ID(datasourceId)); 32 | } 33 | 34 | return Context.Item; 35 | } 36 | 37 | public ActionResult LodashContent() 38 | { 39 | var dataSource = this.DataSource(); 40 | 41 | var model = 42 | new 43 | { 44 | title = FieldRenderer.Render(dataSource, "Title"), 45 | text = FieldRenderer.Render(dataSource, "Text"), 46 | image = FieldRenderer.Render(dataSource, "Image") 47 | }; 48 | 49 | return this.JsComponent("common__ext.lodashContent", model, RenderingOptions.ServerOnly); 50 | } 51 | 52 | public ActionResult RichText() 53 | { 54 | return this.View(this.DataSource()); 55 | } 56 | 57 | public ActionResult SimpleContent() 58 | { 59 | var dataSource = this.DataSource(); 60 | 61 | var model = 62 | new 63 | { 64 | title = FieldRenderer.Render(dataSource, "Title"), 65 | text = FieldRenderer.Render(dataSource, "Text"), 66 | image = FieldRenderer.Render(dataSource, "Image") 67 | }; 68 | 69 | return this.JsComponent("common__ext.simpleContent", model, RenderingOptions.ServerOnly); 70 | } 71 | 72 | public ActionResult Timer() 73 | { 74 | var dataSource = this.DataSource(); 75 | 76 | var model = new { title = FieldRenderer.Render(dataSource, "Title"), }; 77 | 78 | return this.JsComponent("common__ext.timer", model, RenderingOptions.ClientAndServer); 79 | } 80 | } 81 | } -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="Sitecore.Js.Presentation.Sample.MvcApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Global.asax.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Sample 2 | { 3 | using System.Web; 4 | using System.Web.Mvc; 5 | using System.Web.Routing; 6 | 7 | public class MvcApplication : HttpApplication 8 | { 9 | protected void Application_Start() 10 | { 11 | AreaRegistration.RegisterAllAreas(); 12 | RouteConfig.RegisterRoutes(RouteTable.Routes); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/Properties/AssemblyInfo.cs -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Sitecore.Js.Presentation.Sample.Web.csproj.DotSettings: -------------------------------------------------------------------------------- 1 | 2 | True 3 | 4 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Sitecore.Js.Presentation.Sample.csproj.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Views/Components/RichText.cshtml: -------------------------------------------------------------------------------- 1 |
2 | This is an MVC component
3 |

@Html.Sitecore().Field("Title")

4 |
@Html.Sitecore().Field("Text")
5 |
-------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Views/Shared/_MainLayout.cshtml: -------------------------------------------------------------------------------- 1 | @using Sitecore.Js.Presentation.Mvc 2 | @{ 3 | Layout = null; 4 | } 5 | 6 | 7 | 8 | 9 | 10 | @Html.Sitecore().Field("Title") 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | @Html.RenderComponent("common__ext.header", new { }) 24 |
25 |
26 | @Html.Sitecore().Placeholder("content") 27 |
28 | 29 | 30 | 31 | 32 | 33 | 34 | @Html.RenderScripts() 35 | 36 | 37 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/Views/Web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 |
7 | 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 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/448c34a56d699c29117adc64c43affeb.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/448c34a56d699c29117adc64c43affeb.woff2 -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/a31b89d40f92dc8bf2c25282d3b3af8c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/a31b89d40f92dc8bf2c25282d3b3af8c.png -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/bootstrap/glyphicons-halflings-regular.svg: -------------------------------------------------------------------------------- 1 | module.exports = __webpack_public_path__ + "89889688147bd7575d6327160d64e760.svg"; -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- 1 | module.exports = __webpack_public_path__ + "fa2772327f55d8198301fdb8bcfc8158.woff"; -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- 1 | module.exports = __webpack_public_path__ + "448c34a56d699c29117adc64c43affeb.woff2"; -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/common.css: -------------------------------------------------------------------------------- 1 | .route-active { 2 | font-weight: bold; 3 | text-decoration: underline; 4 | } 5 | 6 | .header { 7 | border: 0; 8 | border-radius: 0; 9 | background-color: #39C2D7; 10 | } 11 | 12 | .header > .container .navbar-brand, 13 | .header > .container-fluid .navbar-brand { 14 | color: #fff; 15 | font-weight: bold; 16 | } 17 | 18 | .header .navbar-nav > .active > a { 19 | background-color: #1A9CB0; 20 | } 21 | 22 | .header .navbar-nav > li > a { 23 | color: #fff; 24 | } 25 | 26 | .header .navbar-nav > li > a:hover { 27 | color: #464547; 28 | } 29 | .simple-content { 30 | border: 1px dashed #1A9CB0; 31 | background-color: rgba(57, 194, 215, 0.15); 32 | } 33 | 34 | .simple-content .placeholder { 35 | margin: 5px; 36 | padding: 5px; 37 | border: 3px dotted red; 38 | background-color: rgba(57, 194, 215, 0.15); 39 | } 40 | .counter { 41 | border: 1px dashed #7F993A; 42 | background-color: rgba(163, 198, 68, 0.15); 43 | } 44 | 45 | .placeholder .container.counter { 46 | width: 100%; 47 | } 48 | .timer { 49 | border: 1px dashed #7F993A; 50 | background-color: rgba(178, 39, 70, 0.15); 51 | } 52 | 53 | .placeholder .container.timer { 54 | width: 100%; 55 | } 56 | .lodash-content { 57 | border: 1px dashed #1A9CB0; 58 | background-color: rgba(57, 194, 215, 0.15); 59 | } 60 | 61 | .lodash-content .placeholder { 62 | margin: 5px; 63 | padding: 5px; 64 | border: 3px dotted red; 65 | background-color: rgba(57, 194, 215, 0.15); 66 | } 67 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/fa2772327f55d8198301fdb8bcfc8158.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/fa2772327f55d8198301fdb8bcfc8158.woff -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/assets/shared.js: -------------------------------------------------------------------------------- 1 | /******/ (function(modules) { // webpackBootstrap 2 | /******/ // install a JSONP callback for chunk loading 3 | /******/ var parentJsonpFunction = window["webpackJsonp_name___ext"]; 4 | /******/ window["webpackJsonp_name___ext"] = function webpackJsonpCallback(chunkIds, moreModules) { 5 | /******/ // add "moreModules" to the modules object, 6 | /******/ // then flag all "chunkIds" as loaded and fire callback 7 | /******/ var moduleId, chunkId, i = 0, callbacks = []; 8 | /******/ for(;i < chunkIds.length; i++) { 9 | /******/ chunkId = chunkIds[i]; 10 | /******/ if(installedChunks[chunkId]) 11 | /******/ callbacks.push.apply(callbacks, installedChunks[chunkId]); 12 | /******/ installedChunks[chunkId] = 0; 13 | /******/ } 14 | /******/ for(moduleId in moreModules) { 15 | /******/ modules[moduleId] = moreModules[moduleId]; 16 | /******/ } 17 | /******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules); 18 | /******/ while(callbacks.length) 19 | /******/ callbacks.shift().call(null, __webpack_require__); 20 | /******/ if(moreModules[0]) { 21 | /******/ installedModules[0] = 0; 22 | /******/ return __webpack_require__(0); 23 | /******/ } 24 | /******/ }; 25 | 26 | /******/ // The module cache 27 | /******/ var installedModules = {}; 28 | 29 | /******/ // object to store loaded and loading chunks 30 | /******/ // "0" means "already loaded" 31 | /******/ // Array means "loading", array contains callbacks 32 | /******/ var installedChunks = { 33 | /******/ 2:0 34 | /******/ }; 35 | 36 | /******/ // The require function 37 | /******/ function __webpack_require__(moduleId) { 38 | 39 | /******/ // Check if module is in cache 40 | /******/ if(installedModules[moduleId]) 41 | /******/ return installedModules[moduleId].exports; 42 | 43 | /******/ // Create a new module (and put it into the cache) 44 | /******/ var module = installedModules[moduleId] = { 45 | /******/ exports: {}, 46 | /******/ id: moduleId, 47 | /******/ loaded: false 48 | /******/ }; 49 | 50 | /******/ // Execute the module function 51 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 52 | 53 | /******/ // Flag the module as loaded 54 | /******/ module.loaded = true; 55 | 56 | /******/ // Return the exports of the module 57 | /******/ return module.exports; 58 | /******/ } 59 | 60 | /******/ // This file contains only the entry chunk. 61 | /******/ // The chunk loading function for additional chunks 62 | /******/ __webpack_require__.e = function requireEnsure(chunkId, callback) { 63 | /******/ // "0" is the signal for "already loaded" 64 | /******/ if(installedChunks[chunkId] === 0) 65 | /******/ return callback.call(null, __webpack_require__); 66 | 67 | /******/ // an array means "currently loading". 68 | /******/ if(installedChunks[chunkId] !== undefined) { 69 | /******/ installedChunks[chunkId].push(callback); 70 | /******/ } else { 71 | /******/ // start chunk loading 72 | /******/ installedChunks[chunkId] = [callback]; 73 | /******/ var head = document.getElementsByTagName('head')[0]; 74 | /******/ var script = document.createElement('script'); 75 | /******/ script.type = 'text/javascript'; 76 | /******/ script.charset = 'utf-8'; 77 | /******/ script.async = true; 78 | 79 | /******/ script.src = __webpack_require__.p + "" + chunkId + "." + ({"0":"common","1":"vendor"}[chunkId]||chunkId) + ".js"; 80 | /******/ head.appendChild(script); 81 | /******/ } 82 | /******/ }; 83 | 84 | /******/ // expose the modules object (__webpack_modules__) 85 | /******/ __webpack_require__.m = modules; 86 | 87 | /******/ // expose the module cache 88 | /******/ __webpack_require__.c = installedModules; 89 | 90 | /******/ // __webpack_public_path__ 91 | /******/ __webpack_require__.p = "/assets/"; 92 | /******/ }) 93 | /************************************************************************/ 94 | /******/ ([]); -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/common/static/fonts/readme.md: -------------------------------------------------------------------------------- 1 | # About this folder 2 | This folder will hold all of your **fonts** -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/common/static/images/readme.md: -------------------------------------------------------------------------------- 1 | # About this folder 2 | This folder will hold all of your **images** -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/common/static/images/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/common/static/images/sample.png -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/favicon-16x16.png -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/dist/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/Sitecore.Js.Presentation.Sample/dist/favicon-32x32.png -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 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 | 41 | 42 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/web.Debug.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.Sample/web.Release.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /sample/back-end/Sitecore.Js.Presentation.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 12.00 2 | # Visual Studio 14 3 | VisualStudioVersion = 14.0.25420.1 4 | MinimumVisualStudioVersion = 10.0.40219.1 5 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sitecore.Js.Presentation.Sample", "Sitecore.Js.Presentation.Sample\Sitecore.Js.Presentation.Sample.csproj", "{D9D50A5C-26FE-4CB2-94FE-E15DD3A8A4C7}" 6 | EndProject 7 | Project("{CAA73BB0-EF22-4D79-A57E-DF67B3BA9C80}") = "Sitecore.Js.Presentation.Sample.TDS.Master", "Sitecore.Js.Presentation.Sample.TDS.Master\Sitecore.Js.Presentation.Sample.TDS.Master.scproj", "{EE59E117-2C3B-4A9B-941F-A46AC7BAC4EC}" 8 | EndProject 9 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".tds", ".tds", "{1C942B4F-FE34-48B9-BA5A-474262586FD2}" 10 | ProjectSection(SolutionItems) = preProject 11 | TdsGlobal.config = TdsGlobal.config 12 | EndProjectSection 13 | EndProject 14 | Global 15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 16 | Debug|Any CPU = Debug|Any CPU 17 | Release|Any CPU = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {D9D50A5C-26FE-4CB2-94FE-E15DD3A8A4C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {D9D50A5C-26FE-4CB2-94FE-E15DD3A8A4C7}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {D9D50A5C-26FE-4CB2-94FE-E15DD3A8A4C7}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {D9D50A5C-26FE-4CB2-94FE-E15DD3A8A4C7}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {EE59E117-2C3B-4A9B-941F-A46AC7BAC4EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {EE59E117-2C3B-4A9B-941F-A46AC7BAC4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {EE59E117-2C3B-4A9B-941F-A46AC7BAC4EC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU 27 | {EE59E117-2C3B-4A9B-941F-A46AC7BAC4EC}.Release|Any CPU.ActiveCfg = Release|Any CPU 28 | {EE59E117-2C3B-4A9B-941F-A46AC7BAC4EC}.Release|Any CPU.Build.0 = Release|Any CPU 29 | EndGlobalSection 30 | GlobalSection(SolutionProperties) = preSolution 31 | HideSolutionNode = FALSE 32 | EndGlobalSection 33 | EndGlobal 34 | -------------------------------------------------------------------------------- /sample/back-end/TdsGlobal.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 20 | 21 | Alex Smagin 22 | Alex Smagin 23 | 24 | True 25 | False 26 | True 27 | False 28 | 36 | 37 | 45 | False 46 | Alex Smagin 47 | Alex Smagin 48 | Copyright 2016 Alex Smagin. All Rights Reserved. 49 | 69 | 70 | 74 | 75 | 76 | http://Sitecore.Js.local 77 | ..\..\..\sandbox\Website 78 | .\bin\Debug\ 79 | 80 | 81 | 82 | 83 | .\bin\Release\ 84 | 85 | 86 | -------------------------------------------------------------------------------- /sample/back-end/readme.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/back-end/readme.md -------------------------------------------------------------------------------- /sample/front-end/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /sample/front-end/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "globals": { 3 | "HMR": false 4 | }, 5 | "parser": "babel-eslint", 6 | "plugins": [ 7 | "react" 8 | ], 9 | "parserOptions": { 10 | "ecmaVersion": 6, 11 | "sourceType": "module", 12 | "ecmaFeatures": { 13 | "jsx": true 14 | } 15 | }, 16 | "env": { 17 | "browser": true, 18 | "amd": true, 19 | "es6": true, 20 | "node": true, 21 | "mocha": true 22 | }, 23 | "rules": { 24 | "comma-dangle": 1, 25 | "quotes": [ 1, "single" ], 26 | "no-undef": 1, 27 | "strict": 0, 28 | "global-strict": 0, 29 | "no-extra-semi": 1, 30 | "no-underscore-dangle": 0, 31 | "no-console": 1, 32 | "no-unused-vars": 1, 33 | "no-trailing-spaces": [1, { "skipBlankLines": true }], 34 | "no-unreachable": 1, 35 | "no-alert": 0, 36 | "react/jsx-uses-react": 1, 37 | "react/jsx-uses-vars": 1 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /sample/front-end/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # node-waf configuration 20 | .lock-wscript 21 | 22 | # Compiled binary addons (http://nodejs.org/api/addons.html) 23 | build/Release 24 | cache/ 25 | dist/ 26 | 27 | # Dependency directory 28 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git 29 | node_modules 30 | 31 | # Bower 32 | bower_components/ 33 | -------------------------------------------------------------------------------- /sample/front-end/api-stub/db.json: -------------------------------------------------------------------------------- 1 | { 2 | "products": [ 3 | { 4 | "id": "580e2d7b74bce595476c68a2", 5 | "price": 689.98, 6 | "currency": "USD", 7 | "amount": 12, 8 | "name": "Soprano", 9 | "brand": "Exotechno", 10 | "status": "In Stock", 11 | "image": "" 12 | }, 13 | { 14 | "id": "580e2d7b87ff15dd0afe17dc", 15 | "price": 134.82, 16 | "currency": "USD", 17 | "amount": 9, 18 | "name": "Coriander", 19 | "brand": "Zilphur", 20 | "status": "Sold Out", 21 | "image": "" 22 | }, 23 | { 24 | "id": "580e2d7b26e3f92972379b26", 25 | "price": 647.78, 26 | "currency": "BYN", 27 | "amount": 8, 28 | "name": "Centrexin", 29 | "brand": "Accruex", 30 | "status": "Sold Out", 31 | "image": "" 32 | }, 33 | { 34 | "id": "580e2d7b8875c663bfe058f6", 35 | "price": 713.96, 36 | "currency": "BYN", 37 | "amount": 13, 38 | "name": "Infotrips", 39 | "brand": "Earthmark", 40 | "status": "Leaves warehouse in a week", 41 | "image": "" 42 | }, 43 | { 44 | "id": "580e2d7b3dfa8ce3e067896e", 45 | "price": 522.4, 46 | "currency": "EUR", 47 | "amount": 12, 48 | "name": "Bolax", 49 | "brand": "Pulze", 50 | "status": "In Stock", 51 | "image": "" 52 | }, 53 | { 54 | "id": "580e2d7b236774f9603f41b0", 55 | "price": 36.37, 56 | "currency": "BYN", 57 | "amount": 6, 58 | "name": "Zytrax", 59 | "brand": "Overplex", 60 | "status": "In Stock", 61 | "image": "" 62 | }, 63 | { 64 | "id": "580e2d7b14b7ed6181d71510", 65 | "price": 651.82, 66 | "currency": "EUR", 67 | "amount": 10, 68 | "name": "Dadabase", 69 | "brand": "Billmed", 70 | "status": "Last call", 71 | "image": "" 72 | }, 73 | { 74 | "id": "580e2d7b3be70e9adf3f8c2f", 75 | "price": 705.13, 76 | "currency": "RUB", 77 | "amount": 6, 78 | "name": "Imant", 79 | "brand": "Eplode", 80 | "status": "Leaves warehouse in a week", 81 | "image": "" 82 | }, 83 | { 84 | "id": "580e2d7b842138cabab029b5", 85 | "price": 644.89, 86 | "currency": "USD", 87 | "amount": 6, 88 | "name": "Aquafire", 89 | "brand": "Rodeocean", 90 | "status": "Leaves warehouse in a week", 91 | "image": "" 92 | }, 93 | { 94 | "id": "580e2d7b53e69bdee2afaada", 95 | "price": 985.61, 96 | "currency": "EUR", 97 | "amount": 10, 98 | "name": "Keeg", 99 | "brand": "Quotezart", 100 | "status": "In Stock", 101 | "image": "" 102 | } 103 | ] 104 | } 105 | -------------------------------------------------------------------------------- /sample/front-end/api-stub/routes.json: -------------------------------------------------------------------------------- 1 | { 2 | "/api/": "/" 3 | } 4 | -------------------------------------------------------------------------------- /sample/front-end/cfg/development.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const webpack = require('webpack'); 4 | const BowerWebpackPlugin = require('bower-webpack-plugin'); 5 | const ExtractTextPlugin = require('extract-text-webpack-plugin'); 6 | var HtmlWebpackPlugin = require('html-webpack-plugin'); 7 | 8 | const defaults = require('./../utils/defaults'); 9 | const utils = require('../utils'); 10 | 11 | let chunks = { 12 | name: ['vendor', 'shared'], 13 | minChunks: 2 14 | }; 15 | 16 | const config = { 17 | port: defaults.port, 18 | debug: true, 19 | devtool: 'source-map', 20 | entry: utils.entries, 21 | module: utils.getModules(utils.babelLoader), 22 | output: { 23 | path: defaults.assetsPath, 24 | library: '[name]__ext', 25 | filename: '[name].js?[hash]', 26 | chunkFilename: '[id].js?[chunkhash]', 27 | publicPath: defaults.publicPath 28 | }, 29 | devServer: { 30 | contentBase: defaults.distPath, 31 | historyApiFallback: true, 32 | hot: true, 33 | port: defaults.port, 34 | publicPath: defaults.publicPath, 35 | noInfo: false, 36 | proxy: { 37 | '/api': { 38 | target: `http://localhost:3000`, //${defaults.port}`, 39 | secure: false 40 | } 41 | } 42 | }, 43 | resolve: { 44 | extensions: ['', '.js', '.jsx'] 45 | }, 46 | plugins: utils.getPlugins([ 47 | new HtmlWebpackPlugin({ 48 | filename: `${defaults.distPath}/index.html`, 49 | template: `${defaults.srcPath}/index.html.tmpl` 50 | }), 51 | new ExtractTextPlugin('[name].css?[hash]', { 52 | allChunks: true, 53 | disable: utils.isDevServerMode 54 | }), 55 | new webpack.optimize.CommonsChunkPlugin(chunks), 56 | new BowerWebpackPlugin({ 57 | searchResolveModulesDirectories: false 58 | }) 59 | ]) 60 | }; 61 | 62 | if (utils.isDevServerMode) { 63 | config.entry.app.unshift( 64 | 'react-hot-loader/patch', 65 | `webpack-dev-server/client?http://localhost:${defaults.port}`, 66 | 'webpack/hot/only-dev-server' 67 | ); 68 | config.plugins.push(new webpack.HotModuleReplacementPlugin()); 69 | } 70 | 71 | module.exports = config; 72 | -------------------------------------------------------------------------------- /sample/front-end/cfg/production.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const webpack = require('webpack'); 4 | const BowerWebpackPlugin = require('bower-webpack-plugin'); 5 | const ExtractTextPlugin = require('extract-text-webpack-plugin'); 6 | 7 | const defaults = require('./../utils/defaults'); 8 | const utils = require('../utils'); 9 | 10 | let chunks = { 11 | name: ['vendor', 'shared'], 12 | minChunks: 2 13 | }; 14 | 15 | const config = { 16 | port: defaults.port, 17 | debug: true, 18 | devtool: 'source-map', 19 | entry: utils.entries, 20 | module: utils.getModules(utils.babelLoader), 21 | output: { 22 | path: defaults.assetsPath, 23 | library: '[name]__ext', 24 | filename: '[name].[hash].js', 25 | chunkFilename: '[id].[chunkhash].js', 26 | publicPath: defaults.publicPath 27 | }, 28 | resolve: { 29 | extensions: ['', '.js', '.jsx'] 30 | }, 31 | plugins: utils.getPlugins([ 32 | new ExtractTextPlugin('[name].[hash].css', { 33 | allChunks: true, 34 | disable: utils.isDevServerMode 35 | }), 36 | new webpack.optimize.DedupePlugin(), 37 | new webpack.DefinePlugin({ 38 | 'process.env.NODE_ENV': JSON.stringify('production') 39 | }), 40 | new BowerWebpackPlugin({ 41 | searchResolveModulesDirectories: false 42 | }), 43 | new webpack.optimize.UglifyJsPlugin(), 44 | new webpack.optimize.OccurenceOrderPlugin(), 45 | new webpack.optimize.AggressiveMergingPlugin(), 46 | new webpack.NoErrorsPlugin(), 47 | new webpack.optimize.CommonsChunkPlugin(chunks), 48 | new BowerWebpackPlugin({ 49 | searchResolveModulesDirectories: false 50 | }) 51 | ]) 52 | }; 53 | 54 | 55 | module.exports = config; 56 | -------------------------------------------------------------------------------- /sample/front-end/cfg/server.dev.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | const BowerWebpackPlugin = require('bower-webpack-plugin'); 3 | const ExtractTextPlugin = require('extract-text-webpack-plugin'); 4 | 5 | const omit = require('lodash/omit'); 6 | const defaults = require('./../utils/defaults'); 7 | const utils = require('../utils'); 8 | 9 | let chunks = { 10 | name: ['vendor', 'shared'], 11 | minChunks: 2 12 | }; 13 | 14 | const config = { 15 | port: defaults.port, 16 | debug: true, 17 | entry: omit(utils.entries, 'app'), 18 | module: utils.getModules(utils.babelLoader), 19 | output: { 20 | path: defaults.assetsPath, 21 | library: '[name]__ext', 22 | filename: '[name].js', 23 | publicPath: defaults.publicPath 24 | }, 25 | resolve: { 26 | extensions: ['', '.js', '.jsx'] 27 | }, 28 | plugins: utils.getPlugins([ 29 | new ExtractTextPlugin('[name].css?[hash]', { 30 | allChunks: true 31 | }), 32 | new webpack.optimize.CommonsChunkPlugin(chunks), 33 | new BowerWebpackPlugin({ 34 | searchResolveModulesDirectories: false 35 | }) 36 | ]) 37 | }; 38 | 39 | module.exports = config; 40 | -------------------------------------------------------------------------------- /sample/front-end/cfg/server.prod.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | const BowerWebpackPlugin = require('bower-webpack-plugin'); 3 | 4 | const omit = require('lodash/omit'); 5 | const defaults = require('./../utils/defaults'); 6 | const utils = require('../utils'); 7 | 8 | const config = { 9 | port: defaults.port, 10 | debug: true, 11 | entry: omit(utils.entries, 'app'), 12 | module: utils.getModules(utils.babelLoader, false), 13 | output: { 14 | path: defaults.assetsPath, 15 | library: '[name]__ext', 16 | filename: '[name].js', 17 | publicPath: defaults.publicPath 18 | }, 19 | resolve: { 20 | extensions: ['', '.js', '.jsx'] 21 | }, 22 | plugins: utils.getPlugins([ 23 | new webpack.optimize.CommonsChunkPlugin({ 24 | name: ['vendor', 'shared'], 25 | minChunks: 2 26 | }), 27 | new BowerWebpackPlugin({ 28 | searchResolveModulesDirectories: false 29 | }) 30 | ]) 31 | }; 32 | 33 | module.exports = config; 34 | -------------------------------------------------------------------------------- /sample/front-end/cfg/test.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const BowerWebpackPlugin = require('bower-webpack-plugin'); 3 | 4 | const defaults = require('../utils/defaults'); 5 | 6 | const config = { 7 | devtool: 'inline-source-map', 8 | module: { 9 | preLoaders: [ 10 | { 11 | test: /\.(js|jsx)$/, 12 | include: defaults.srcPath, 13 | loader: 'eslint-loader' 14 | } 15 | ], 16 | loaders: [ 17 | { 18 | // normalize.css and bootstrap css 19 | test: /\.css$/, 20 | include: [ 21 | path.join(__dirname, '../node_modules/bootstrap'), 22 | path.join(__dirname, '../node_modules/normalize.css') 23 | ], 24 | loader: 'style!css?minimize' 25 | }, 26 | { 27 | // bootstrap fonts 28 | test: /\.(svg|ttf|eot|woff|woff2)$/, 29 | include: [ 30 | path.join(__dirname, '../node_modules/bootstrap') 31 | ], 32 | loader: 'file?name=bootstrap/[name].[ext]' 33 | }, 34 | { 35 | test: /\.sass$/, 36 | loader: 'style!css!sass?outputStyle=expanded&indentedSyntax' 37 | }, 38 | { 39 | test: /\.scss$/, 40 | loader: 'style!css!sass?outputStyle=expanded&indentedSyntax' 41 | }, 42 | { 43 | test: /\.less$/, 44 | loader: 'style!css!less' 45 | }, 46 | { 47 | test: /\.(svg|png|jpg|gif|woff|woff2)$/, 48 | loader: 'url-loader?limit=8192' 49 | } 50 | ].concat(require('../utils/babel-loader')) 51 | }, 52 | resolve: { 53 | extensions: ['', '.js', '.jsx'] 54 | }, 55 | plugins: [ 56 | new BowerWebpackPlugin({ 57 | searchResolveModulesDirectories: false 58 | }) 59 | ] 60 | }; 61 | 62 | module.exports = config; 63 | -------------------------------------------------------------------------------- /sample/front-end/karma.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = function (config) { 2 | config.set({ 3 | 4 | browsers: [ 5 | 'PhantomJS' 6 | // 'Firefox', 7 | // 'Chrome' 8 | // for IE @see https://www.npmjs.com/package/karma-ievms 9 | // 'IE8 - WinXP', 10 | // 'IE9 - Win7', 11 | // 'IE10 - Win7' 12 | ], 13 | 14 | singleRun: false, 15 | 16 | frameworks: ['mocha', 'sinon-chai'], 17 | 18 | plugins: [ 19 | 'karma-mocha', 20 | 'karma-sinon-chai', 21 | 'karma-webpack', 22 | 'karma-phantomjs-launcher', 23 | 'karma-firefox-launcher', 24 | 'karma-chrome-launcher', 25 | 'karma-ievms', 26 | 'karma-sourcemap-loader', 27 | 'karma-mocha-reporter' 28 | ], 29 | 30 | files: [ 31 | 'node_modules/babel-polyfill/browser.js', 32 | 'node_modules/whatwg-fetch/fetch.js', 33 | './src/test.index.js' 34 | ], 35 | 36 | preprocessors: { 37 | './src/test.index.js': ['webpack', 'sourcemap'] 38 | }, 39 | 40 | reporters: [ 41 | 'mocha' 42 | ], 43 | 44 | autoWatch: true, 45 | 46 | webpack: require('./webpack.config'), 47 | 48 | webpackServer: { 49 | noInfo: true, 50 | quiet: false 51 | } 52 | }); 53 | }; 54 | -------------------------------------------------------------------------------- /sample/front-end/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sitecore.js.presenation.sample", 3 | "private": true, 4 | "version": "0.0.1", 5 | "description": "Sitecore project demo", 6 | "main": "", 7 | "repository": "", 8 | "keywords": [], 9 | "author": "Alex Smagin", 10 | "scripts": { 11 | "dev": "npm run build:dev && concurrently --kill-others \"webpack-dev-server\" \"json-server --watch ./api-stub/db.json --routes ./api-stub/routes.json\"", 12 | "build:prod": "cross-env NODE_ENV=production webpack --progress", 13 | "build:dev": "cross-env NODE_ENV=development webpack --progress", 14 | "server:dev": "cross-env NODE_ENV=server.dev webpack", 15 | "server:prod": "cross-env NODE_ENV=server.prod webpack", 16 | "start": "npm run dev", 17 | "test:dev": "cross-env NODE_ENV=test karma start", 18 | "test:ci": "cross-env NODE_ENV=test karma start --no-auto-watch --single-run" 19 | }, 20 | "devDependencies": { 21 | "babel-core": "~6.17.0", 22 | "babel-eslint": "~7.0.0", 23 | "babel-loader": "~6.2.5", 24 | "babel-plugin-react-hot": "^1.0.4", 25 | "babel-polyfill": "~6.16.0", 26 | "babel-preset-es2015": "~6.16.0", 27 | "babel-preset-react": "~6.16.0", 28 | "babel-preset-stage-0": "~6.16.0", 29 | "bower-webpack-plugin": "~0.1.9", 30 | "chai": "~3.2.0", 31 | "clean-webpack-plugin": "^0.1.13", 32 | "concurrently": "~3.1.0", 33 | "copy-webpack-plugin": "~3.0.1", 34 | "copyfiles": "~1.0.0", 35 | "cross-env": "^3.1.3", 36 | "css-loader": "~0.25.0", 37 | "eslint": "~3.8.0", 38 | "eslint-loader": "~1.5.0", 39 | "eslint-plugin-react": "~6.4.1", 40 | "expose-loader": "~0.7.1", 41 | "extract-text-webpack-plugin": "^1.0.1", 42 | "file-loader": "^0.9.0", 43 | "glob": "~7.0.0", 44 | "html-loader": "^0.4.4", 45 | "html-webpack-plugin": "^2.26.0", 46 | "isomorphic-style-loader": "~1.0.0", 47 | "isparta-instrumenter-loader": "~1.0.1", 48 | "json-server": "~0.8.22", 49 | "karma": "~1.3.0", 50 | "karma-chai": "~0.1.0", 51 | "karma-chrome-launcher": "^2.0.0", 52 | "karma-coverage": "~1.0.0", 53 | "karma-firefox-launcher": "^1.0.0", 54 | "karma-ievms": "^0.1.0", 55 | "karma-mocha": "~1.2.0", 56 | "karma-mocha-reporter": "~2.2.0", 57 | "karma-phantomjs-launcher": "~1.0.2", 58 | "karma-sinon-chai": "~1.2.4", 59 | "karma-sourcemap-loader": "~0.3.7", 60 | "karma-webpack": "~1.8.0", 61 | "less": "~2.7.1", 62 | "less-loader": "~2.2.3", 63 | "lolex": "^1.5.1", 64 | "minimist": "~1.2.0", 65 | "mocha": "~3.0.0", 66 | "node-sass": "^4.5.3", 67 | "null-loader": "~0.1.1", 68 | "open": "0.0.5", 69 | "phantomjs-prebuilt": "~2.1.13", 70 | "react-addons-test-utils": "~15.3.2", 71 | "react-hot-loader": "~3.0.0-beta.6", 72 | "rimraf": "~2.4.3", 73 | "sass-loader": "~4.0.2", 74 | "sinon": "~1.17.6", 75 | "sinon-chai": "~2.8.0", 76 | "style-loader": "~0.13.1", 77 | "url-loader": "~0.5.6", 78 | "webpack": "~1.13.2", 79 | "webpack-clean": "~1.0.0", 80 | "webpack-dev-server": "~1.16.2" 81 | }, 82 | "dependencies": { 83 | "bootstrap": "~3.3.7", 84 | "core-js": "~2.4.1", 85 | "lodash": "~4.16.4", 86 | "node-gyp": "^3.6.2", 87 | "normalize.css": "~5.0.0", 88 | "react": "~15.3.2", 89 | "react-bootstrap": "~0.30.5", 90 | "react-dom": "~15.3.2", 91 | "react-redux": "~4.4.5", 92 | "redux": "~3.6.0", 93 | "redux-logger": "~2.7.0", 94 | "redux-saga": "~0.12.0", 95 | "redux-ui": "0.0.15", 96 | "whatwg-fetch": "~1.0.0" 97 | }, 98 | "babel": { 99 | "presets": [ 100 | "es2015", 101 | "stage-0", 102 | "react" 103 | ], 104 | "plugins": [] 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/counter/counter.actions.js: -------------------------------------------------------------------------------- 1 | export function onIncrement() { 2 | return { 3 | type: 'INCREMENT' 4 | }; 5 | } 6 | 7 | export function onDecrement() { 8 | return { 9 | type: 'DECREMENT' 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/counter/counter.component.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { connect } from 'react-redux' 3 | import { Grid, Row, Col } from 'react-bootstrap' 4 | import { bindActionCreators } from 'redux' 5 | import * as actionCreators from './counter.actions'; 6 | 7 | require('./counter.styles.scss'); 8 | 9 | class Counter extends React.Component { 10 | render() { 11 | return ( 12 | 13 | 14 | 15 |

16 | 17 | { this.props.counter } 18 | 19 | 20 |
21 |
22 | ) 23 | } 24 | } 25 | 26 | Counter.defaultProps = { 27 | 'title': 'This is counter' 28 | } 29 | 30 | function mapStateToProps(state) { 31 | return { counter: state.counter } 32 | } 33 | 34 | function mapDispatchToProps(dispatch) { 35 | return bindActionCreators(actionCreators, dispatch) 36 | } 37 | 38 | export default connect(mapStateToProps, mapDispatchToProps)(Counter); -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/counter/counter.reducer.js: -------------------------------------------------------------------------------- 1 | const counter = (state = 0, action) => { 2 | switch (action.type) { 3 | case 'INCREMENT': 4 | return state + 1 5 | case 'DECREMENT': 6 | return state - 1 7 | default: 8 | return state 9 | } 10 | } 11 | 12 | export default counter; -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/counter/counter.styles.scss: -------------------------------------------------------------------------------- 1 | .counter { 2 | border: 1px dashed #7F993A; 3 | background-color: rgba(163, 198, 68, 0.15); 4 | } 5 | 6 | .placeholder .container.counter { 7 | width: 100%; 8 | } -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/header/header.component.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { Navbar, Nav, NavItem } from 'react-bootstrap'; 3 | 4 | require('./header.styles.sass'); 5 | 6 | const Header = (props) => ( 7 | 8 | 9 | 10 | Sample Header Component 11 | 12 | 13 | 14 | 15 | 19 |
{props.children}
20 |
21 |
22 | ); 23 | 24 | export default Header; 25 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/header/header.styles.sass: -------------------------------------------------------------------------------- 1 | .route-active 2 | font-weight: bold 3 | text-decoration: underline 4 | 5 | .header 6 | border: 0 7 | border-radius: 0 8 | background-color: #39C2D7 9 | &>.container .navbar-brand, 10 | &>.container-fluid .navbar-brand 11 | color: #fff 12 | font-weight: bold 13 | 14 | & .navbar-nav 15 | &>.active>a 16 | background-color: #1A9CB0 17 | 18 | &>li>a 19 | color: #fff 20 | &:hover 21 | color: #464547 22 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | import ReactDOMServer from 'react-dom/server' 4 | import { Provider } from 'react-redux' 5 | 6 | import { Store } from './store'; 7 | 8 | import headerComp from './header/header.component'; 9 | import simpleContentComp from './simple-content/simple-content.component'; 10 | import counterComp from './counter/counter.component'; 11 | import timerComp from './timer/timer.component'; 12 | 13 | import lodashContentComp from './lodash-content/lodash-content.component'; 14 | 15 | const decorate = (element, isContainer) => ( 16 | { 17 | element, 18 | renderToDOM(props, node) { 19 | var el = React.createElement(element, { data: props.data, placeholders: props.placeholders }); 20 | if (isContainer) { 21 | el = React.createElement(Provider, { store: Store }, el); 22 | } 23 | ReactDOM.render(el, document.getElementById(node)) 24 | }, 25 | renderToString(props) { 26 | var el = React.createElement(element, { data: props.data, placeholders: props.placeholders }); 27 | if (isContainer) { 28 | el = React.createElement(Provider, { store: Store }, el); 29 | } 30 | return ReactDOMServer.renderToString(el) 31 | }, 32 | renderToStaticMarkup(props) { 33 | var el = React.createElement(element, { data: props.data, placeholders: props.placeholders }); 34 | if (isContainer) { 35 | el = React.createElement(Provider, { store: Store }, el); 36 | } 37 | return ReactDOMServer.renderToStaticMarkup(el) 38 | }, 39 | getPlaceholders(){ 40 | if(typeof(element) === 'undefined' 41 | || typeof(element.placeholders) === 'undefined') { 42 | return ''; 43 | } 44 | 45 | return JSON.stringify(element.placeholders) 46 | } 47 | } 48 | ) 49 | 50 | // exports 51 | export const header = decorate(headerComp); 52 | export const simpleContent = decorate(simpleContentComp); 53 | 54 | export const counter = decorate(counterComp, true); 55 | export const timer = decorate(timerComp, true); 56 | 57 | const decorateLodash = (element) => ( 58 | { 59 | element, 60 | renderToDOM(props, node) { 61 | var div = document.createElement('div'); 62 | div.innerHTML = new element(props).render(); 63 | document.getElementById(node).appendChild(div) 64 | }, 65 | renderToString(props) { 66 | return new element(props).render(); 67 | }, 68 | renderToStaticMarkup(props) { 69 | return new element(props).render(); 70 | }, 71 | getPlaceholders(){ 72 | if(typeof(element) === 'undefined' 73 | || typeof(element.placeholders) === 'undefined') { 74 | return ''; 75 | } 76 | 77 | return JSON.stringify(element.placeholders) 78 | } 79 | } 80 | ) 81 | 82 | export const lodashContent = decorateLodash(lodashContentComp); -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/lodash-content/lodash-content.component.html: -------------------------------------------------------------------------------- 1 |
2 |
** lodash component **
3 |
4 |
5 | <%= image %> 6 |
7 |
8 |

9 | <%= title %> 10 |

11 |
12 | <%= text %> 13 |
14 |
15 |
16 |
17 |
18 |
19 | <%= placeholders.leftColumn %> 20 |
21 |
22 |
23 |
24 | <%= placeholders.rightColumn %> 25 |
26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/lodash-content/lodash-content.component.js: -------------------------------------------------------------------------------- 1 | require('./lodash-content.styles.scss'); 2 | 3 | import templateContent from './lodash-content.component.html'; 4 | import logo from '../../static/images/sample.png'; 5 | 6 | import _ from 'lodash'; 7 | 8 | class LodashContent { 9 | 10 | constructor(props) { 11 | 12 | this.defaultProps = { 13 | title: 'TITLE', 14 | text: 'TEXT', 15 | image: '', 16 | placeholders: { 17 | leftColumn: '
LEFT COLUMNT CONTENT
', 18 | rightColumn: '
RIGHT COLUMNT CONTENT
' 19 | } 20 | } 21 | 22 | this.props = Object.assign({}, props || this.defaultProps); 23 | } 24 | 25 | render() { 26 | return _.template(templateContent)(this.props); 27 | } 28 | } 29 | 30 | // this function would be called by ReactJS.NET to identify placeholders avaliable in a component. 31 | LodashContent.placeholders = [ 32 | 'leftColumn', 33 | 'rightColumn' 34 | ]; 35 | 36 | // this function would be called by ReactJS.NET to identify placeholders 37 | // avaliable in a component. 38 | export default LodashContent; 39 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/lodash-content/lodash-content.styles.scss: -------------------------------------------------------------------------------- 1 | .lodash-content { 2 | border: 1px dashed #1A9CB0; 3 | background-color: rgba( 57, 194, 215, 0.15); 4 | 5 | .placeholder { 6 | margin: 5px; 7 | padding: 5px; 8 | border: 3px dotted red; 9 | background-color: rgba( 57, 194, 215, 0.15); 10 | } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/simple-content/simple-content.component.js: -------------------------------------------------------------------------------- 1 | require('./simple-content.styles.sass'); 2 | 3 | import React from 'react'; 4 | import { Grid, Row, Col } from 'react-bootstrap' 5 | 6 | import logo from '../../static/images/sample.png'; 7 | 8 | class SimpleContent extends React.Component { 9 | render() { 10 | return ( 11 | 12 |
** react component **
13 | 14 | 15 |
16 | 17 |

18 |
19 |
20 |
21 | 22 | 23 | 24 | 25 | { 26 | React.isValidElement(this.props.placeholders.leftColumn) 27 | ?
{ this.props.placeholders.leftColumn }
28 | :
29 | } 30 | 31 | 32 | { 33 | React.isValidElement(this.props.placeholders.rightColumn) 34 | ?
{ this.props.placeholders.rightColumn }
35 | :
36 | } 37 | 38 | 39 | 40 | ) 41 | } 42 | } 43 | 44 | SimpleContent.propTypes = { 45 | image: React.PropTypes.string, 46 | title: React.PropTypes.string, 47 | text: React.PropTypes.string 48 | }; 49 | 50 | SimpleContent.defaultProps = { 51 | 'title': 'HTML Ipsum Presents', 52 | 'text': '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis.

', 53 | 'image': '', 54 | placeholders: { 55 | leftColumn: '

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

', 56 | rightColumn: '
  1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
  2. Aliquam tincidunt mauris eu risus.
  3. Vestibulum auctor dapibus neque.
' 57 | } 58 | }; 59 | 60 | // this function would be called by ReactJS.NET to identify placeholders avaliable in a component. 61 | SimpleContent.placeholders = [ 62 | 'leftColumn', 63 | 'rightColumn' 64 | ]; 65 | 66 | export default SimpleContent; -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/simple-content/simple-content.styles.sass: -------------------------------------------------------------------------------- 1 | .simple-content 2 | border: 1px dashed #1A9CB0 3 | background-color: rgba( 57, 194, 215, 0.15) 4 | 5 | .placeholder 6 | margin: 5px 7 | padding: 5px 8 | border: 3px dotted red 9 | background-color: rgba( 57, 194, 215, 0.15) -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | import { combineReducers } from 'redux'; 3 | 4 | import counter from './counter/counter.reducer' 5 | import timer from './timer/timer.reducer' 6 | 7 | const reducer = combineReducers ( { counter, timer } ) 8 | 9 | // exports 10 | export const Store = (typeof(window) !== 'undefined') 11 | ? createStore(reducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()) 12 | : createStore(reducer); 13 | 14 | export const InitialState = JSON.stringify(Store.getState()); -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/timer/timer.actions.js: -------------------------------------------------------------------------------- 1 | export function onTick() { 2 | return { 3 | type: 'TICK' 4 | }; 5 | } -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/timer/timer.component.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { connect } from 'react-redux' 3 | import { Grid, Row, Col } from 'react-bootstrap' 4 | import { bindActionCreators } from 'redux' 5 | import * as actionCreators from './timer.actions'; 6 | 7 | require('./timer.styles.scss'); 8 | 9 | class Timer extends React.Component { 10 | 11 | componentDidMount() { 12 | this.interval = setInterval(this.props.onTick, 1000); 13 | } 14 | 15 | componentWillUnmount() { 16 | clearInterval(this.interval); 17 | } 18 | 19 | render() { 20 | return ( 21 | 22 | 23 | 24 |

{ this.props.timer }s

25 | 26 |
27 |
28 | ) 29 | } 30 | } 31 | 32 | Timer.defaultProps = { 33 | 'title': 'This is timer' 34 | } 35 | 36 | function mapStateToProps(state) { 37 | return { timer: state.timer } 38 | } 39 | 40 | function mapDispatchToProps(dispatch) { 41 | return bindActionCreators(actionCreators, dispatch) 42 | } 43 | 44 | export default connect(mapStateToProps, mapDispatchToProps)(Timer); -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/timer/timer.reducer.js: -------------------------------------------------------------------------------- 1 | const timer = (state = 0, action) => { 2 | switch (action.type) { 3 | case 'TICK': 4 | return state + 1 5 | default: 6 | return state 7 | } 8 | } 9 | 10 | export default timer; -------------------------------------------------------------------------------- /sample/front-end/src/Common/Components/timer/timer.styles.scss: -------------------------------------------------------------------------------- 1 | .timer { 2 | border: 1px dashed #7F993A; 3 | background-color: rgba( 178, 39, 70, 0.15) 4 | } 5 | 6 | .placeholder .container.timer { 7 | width: 100%; 8 | } -------------------------------------------------------------------------------- /sample/front-end/src/Common/Pages/sample/sample.js: -------------------------------------------------------------------------------- 1 | require('normalize.css'); 2 | require('./sample.styles.sass'); 3 | 4 | import React from 'react'; 5 | import ReactDOMServer from 'react-dom/server' 6 | import { Provider } from 'react-redux'; 7 | 8 | import Header from '../../components/header/header.component'; 9 | import SimpleContent from '../../components/simple-content/simple-content.component'; 10 | import Counter from '../../components/counter/counter.component'; 11 | import Timer from '../../components/timer/timer.component'; 12 | 13 | import { store } from './sample.store'; 14 | 15 | const nestedElement = 16 | const someText =

Some JSX component
Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.

17 | 18 | const App = () => ( 19 | 20 |
21 |
22 | 23 | 24 | 25 |
26 |
27 | ) 28 | 29 | export default App; 30 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Pages/sample/sample.store.js: -------------------------------------------------------------------------------- 1 | import { createStore, combineReducers } from 'redux'; 2 | 3 | import counter from '../../components/counter/counter.reducer'; 4 | import timer from '../../components/timer/timer.reducer'; 5 | 6 | const reducer = combineReducers({ counter, timer }); 7 | 8 | export const store = createStore(reducer); 9 | 10 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/Pages/sample/sample.styles.sass: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/front-end/src/Common/Pages/sample/sample.styles.sass -------------------------------------------------------------------------------- /sample/front-end/src/Common/constants.js: -------------------------------------------------------------------------------- 1 | // @todo: generate or provide a hook to this file ? 2 | const constants = { 3 | api: { 4 | serverPath: '/api' 5 | } 6 | }; 7 | 8 | export default constants; 9 | -------------------------------------------------------------------------------- /sample/front-end/src/Common/static/fonts/readme.md: -------------------------------------------------------------------------------- 1 | # About this folder 2 | This folder will hold all of your **fonts** -------------------------------------------------------------------------------- /sample/front-end/src/Common/static/images/readme.md: -------------------------------------------------------------------------------- 1 | # About this folder 2 | This folder will hold all of your **images** -------------------------------------------------------------------------------- /sample/front-end/src/Common/static/images/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/front-end/src/Common/static/images/sample.png -------------------------------------------------------------------------------- /sample/front-end/src/Common/styles/app.sass: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/front-end/src/Common/styles/app.sass -------------------------------------------------------------------------------- /sample/front-end/src/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/front-end/src/favicon-16x16.png -------------------------------------------------------------------------------- /sample/front-end/src/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/front-end/src/favicon-32x32.png -------------------------------------------------------------------------------- /sample/front-end/src/index.html.tmpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | React Webpack Template Title 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /sample/front-end/src/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import {AppContainer} from 'react-hot-loader'; 4 | import App from './common/pages/sample/sample'; 5 | 6 | require('whatwg-fetch'); 7 | require('babel-polyfill'); 8 | 9 | function render(node) { 10 | if (typeof document === 'undefined') { 11 | return null; 12 | } else if (module.hot) { 13 | ReactDOM.render( 14 | , node); 15 | 16 | module 17 | .hot 18 | .accept('./common/pages/sample/sample', () => { 19 | const App = require('./common/pages/sample/sample').default; 20 | 21 | ReactDOM.render( 22 | 23 | 24 | , document.getElementById('app')); 25 | }); 26 | } 27 | ReactDOM.render( 28 | , node); 29 | } 30 | 31 | render(document.getElementById('app')); -------------------------------------------------------------------------------- /sample/front-end/src/sample.spec.js: -------------------------------------------------------------------------------- 1 | /* global describe, it */ 2 | 3 | import * as chai from 'chai'; 4 | 5 | const {expect} = chai; 6 | 7 | const lolex = require('lolex'); 8 | const fakedMethods = ['setTimeout', 'clearTimeout', 'setImmediate', 'clearImmediate', 'setInterval', 9 | 'clearInterval', 'Date']; 10 | 11 | describe('Sample tests scaffolding', () => { 12 | describe('Verify simple case', () => { 13 | it('1 should be equals to 1', () => { 14 | expect(1).to.equal(1); 15 | }); 16 | }); 17 | 18 | describe('Simple async case with setTimeout', () => { 19 | let clock; 20 | 21 | beforeEach(() => { 22 | clock = lolex.install((new Date()).getTime(), fakedMethods); 23 | }); 24 | 25 | afterEach(() => { 26 | clock.uninstall(); 27 | }); 28 | 29 | it('timestamp before timer should be less than before', done => { 30 | let d = Date.now(); 31 | setTimeout(() => { 32 | expect(Date.now()).to.greaterThan(d + 1000); 33 | done(); 34 | }, 1005); 35 | clock.tick(1010); 36 | }); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /sample/front-end/src/test.index.js: -------------------------------------------------------------------------------- 1 | var context = require.context('.', true, /spec\.(js|jsx)$/); 2 | context.keys().forEach(context); 3 | -------------------------------------------------------------------------------- /sample/front-end/utils/babel-config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const env = require('./env'); 3 | const defaults = require('./defaults'); 4 | const assign = require('lodash/assign'); 5 | 6 | const cacheDirectory = path.join(defaults.srcPath, '..', 'cache'); 7 | 8 | const babelConfig = assign({}, require('../package.json').babel, { 9 | babelrc: false, 10 | cacheDirectory 11 | }); 12 | 13 | if (env.isDevServerMode) { 14 | babelConfig.plugins.unshift('react-hot-loader/babel'); 15 | } 16 | 17 | module.exports = babelConfig; 18 | -------------------------------------------------------------------------------- /sample/front-end/utils/babel-loader.js: -------------------------------------------------------------------------------- 1 | const babelConfig = require('./babel-config'); 2 | const defaults = require('./defaults'); 3 | 4 | module.exports = { 5 | test: /\.(js|jsx)$/, 6 | loader: `babel-loader?${JSON.stringify(babelConfig)}`, 7 | include: [].concat(defaults.additionalPaths, defaults.srcPath) 8 | }; 9 | -------------------------------------------------------------------------------- /sample/front-end/utils/constants.js: -------------------------------------------------------------------------------- 1 | const DEV = 'development'; 2 | const SERVER_DEV = 'server.dev'; 3 | const SERVER_PROD = 'server.prod'; 4 | const PROD = 'production'; 5 | const TEST = 'test'; 6 | 7 | module.exports = {DEV, PROD, TEST, SERVER_DEV, SERVER_PROD}; 8 | -------------------------------------------------------------------------------- /sample/front-end/utils/defaults.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const assets = 'assets'; 3 | 4 | const additionalPaths = []; 5 | const srcPath = path.join(__dirname, '..', 'src'); 6 | const distPath = path.join(__dirname, '..', 'dist'); 7 | const assetsPath = path.join(distPath, assets); 8 | 9 | module.exports = { 10 | srcPath, 11 | distPath, 12 | assetsPath, 13 | additionalPaths, 14 | publicPath: `/${assets}/`, 15 | port: 8000 16 | }; 17 | -------------------------------------------------------------------------------- /sample/front-end/utils/entries.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | vendor: [ 3 | 'normalize.css/normalize.css', 4 | 'bootstrap/dist/css/bootstrap.min.css', 5 | 'babel-polyfill', 6 | 'whatwg-fetch', 7 | 'react', 8 | 'react-dom', 9 | 'lodash', 10 | 'redux', 11 | 'react-redux', 12 | 'redux-logger', 13 | 'redux-saga' 14 | ], 15 | common: ['./src/common/components'], 16 | app: ['./src/index.jsx'] 17 | }; 18 | -------------------------------------------------------------------------------- /sample/front-end/utils/env.js: -------------------------------------------------------------------------------- 1 | const C = require('./constants'); 2 | const env = process.env.NODE_ENV; 3 | const isDevServerMode = process.argv[1].indexOf('webpack-dev-server') !== -1; 4 | 5 | module.exports = { 6 | isDevServerMode: isDevServerMode, 7 | 8 | environment: env, 9 | 10 | isBrowser: env === C.PROD || env === C.DEV, 11 | 12 | isServer: env === C.SERVER_DEV || env === C.SERVER_PROD 13 | }; 14 | -------------------------------------------------------------------------------- /sample/front-end/utils/get-modules.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const ExtractTextPlugin = require('extract-text-webpack-plugin'); 3 | const srcPath = path.join(__dirname, '../src'); 4 | 5 | function getCssLoader(loader, isExtractCssMode) { 6 | return isExtractCssMode ? ExtractTextPlugin.extract('isomorphic-style', loader) : `isomorphic-style!${loader}`; 7 | } 8 | 9 | /** 10 | * 11 | * @param {Array|Object} [loaders] 12 | * @param {Boolean} [isExtractCssMode] 13 | * @returns {{preLoaders: *[], loaders: *[]}} 14 | */ 15 | module.exports = function getDefaultModules(loaders, isExtractCssMode) { 16 | const cssMode = (typeof isExtractCssMode === 'boolean') ? isExtractCssMode : true; 17 | return { 18 | preLoaders: [ 19 | { 20 | test: /\.(js|jsx)$/, 21 | include: srcPath, 22 | loader: 'eslint-loader' 23 | } 24 | ], 25 | loaders: [ 26 | { 27 | // normalize.css and bootstrap css 28 | test: /\.css$/, 29 | include: [ 30 | path.join(__dirname, '../node_modules/bootstrap'), 31 | path.join(__dirname, '../node_modules/normalize.css') 32 | ], 33 | loader: getCssLoader('css?minimize', cssMode) 34 | }, 35 | { 36 | // bootstrap fonts 37 | test: /\.(svg|ttf|eot|woff|woff2)$/, 38 | include: [ 39 | path.join(__dirname, '../node_modules/bootstrap') 40 | ], 41 | loader: 'file?name=bootstrap/[name].[ext]' 42 | }, 43 | { 44 | test: /\.sass$/, 45 | loader: getCssLoader('css!sass?outputStyle=expanded&indentedSyntax', cssMode) 46 | }, 47 | { 48 | test: /\.scss$/, 49 | loader: getCssLoader('css!sass?outputStyle=expanded', cssMode) 50 | }, 51 | { 52 | test: /\.less$/, 53 | loader: getCssLoader('css!less', cssMode) 54 | }, 55 | { 56 | test: /\.(png|jpg|gif|woff|woff2)$/, 57 | loader: 'url-loader?limit=8192' 58 | }, 59 | { 60 | test: /\.(mp4|ogg|svg)$/, 61 | loader: 'file-loader' 62 | }, 63 | { 64 | test: /\.html$/, 65 | loader: "html" 66 | } 67 | ].concat(loaders || []) 68 | }; 69 | }; 70 | -------------------------------------------------------------------------------- /sample/front-end/utils/get-plugins.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const CopyWebpackPlugin = require('copy-webpack-plugin'); 3 | const CleanWebpackPlugin = require('clean-webpack-plugin'); 4 | 5 | const env = require('./env'); 6 | const isDevServerMode = env.isDevServerMode; 7 | const defaults = require('./defaults'); 8 | 9 | /** 10 | * @param {Array} plugins 11 | * @returns {Array} 12 | */ 13 | module.exports = function getPlugins(plugins) { 14 | return (isDevServerMode ? [] : [new CleanWebpackPlugin([defaults.distPath], {root: process.cwd()})]) 15 | .concat([ 16 | new CopyWebpackPlugin([ 17 | { 18 | from: path.join(defaults.srcPath, './favicon-32x32.png'), 19 | to: defaults.distPath 20 | }, 21 | { 22 | from: path.join(defaults.srcPath, './favicon-16x16.png'), 23 | to: defaults.distPath 24 | }, 25 | { 26 | from: path.join(defaults.srcPath, './common/static'), 27 | to: path.join(defaults.distPath, './common/static') 28 | } 29 | ]) 30 | ]) 31 | .concat(plugins || []); 32 | }; 33 | -------------------------------------------------------------------------------- /sample/front-end/utils/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: require('./env'), 3 | entries: require('./entries'), 4 | constants: require('./constants'), 5 | getPlugins: require('./get-plugins'), 6 | getModules: require('./get-modules'), 7 | babelConfig: require('./babel-config'), 8 | babelLoader: require('./babel-loader') 9 | }; 10 | -------------------------------------------------------------------------------- /sample/front-end/webpack.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const path = require('path'); 4 | const C = require('./utils/constants'); 5 | const allowedEnvs = Object.keys(C); 6 | 7 | const env = process.env.NODE_ENV || C.DEV; 8 | 9 | if (allowedEnvs.indexOf(env) !== -1) { 10 | process.env.NODE_ENV = env; 11 | } else { 12 | process.env.NODE_ENV = C.DEV; 13 | } 14 | 15 | module.exports = require(path.join(__dirname, 'cfg/' + env)); 16 | -------------------------------------------------------------------------------- /sample/sc-packages/Sitecore.Js.Presentation.Sample.Master.update: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/sample/sc-packages/Sitecore.Js.Presentation.Sample.Master.update -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation.Sample.Console/Program.cs: -------------------------------------------------------------------------------- 1 | namespace Sparrow.Sample.Console 2 | { 3 | using System; 4 | 5 | using Sitecore.Js.Presentation.Configuration; 6 | using Sitecore.Js.Presentation.Managers; 7 | 8 | internal class Program 9 | { 10 | private static void Main(string[] args) 11 | { 12 | try 13 | { 14 | // System.Console.WriteLine("Test #\t\tInit time, s\t\tExec time, s"); 15 | 16 | // for (var j = 0; j < 1; j++) 17 | // { 18 | 19 | // var start = DateTime.Now; 20 | // using (var engine = new Engine()) 21 | // { 22 | // var inittime = (DateTime.Now - start).TotalSeconds; 23 | 24 | // var command = @"common__ext.header.renderToString({})"; 25 | // start = DateTime.Now; 26 | 27 | // for (var i = 0; i < 1; i++) 28 | // { 29 | // var result = engine.Execute(command); 30 | // // System.Console.WriteLine(i); 31 | // } 32 | 33 | // var time = (DateTime.Now - start).TotalSeconds; 34 | // System.Console.WriteLine($"{j}\t\t{inittime}\t\t{time}"); 35 | // } 36 | // } 37 | using ( 38 | var manager = 39 | new JsEngineManager( 40 | new JsEngineManagerConfiguration 41 | { 42 | Modules = 43 | { 44 | @"d:\.projects\Asmagin\src\client\dist\assets\shared.js", 45 | @"d:\.projects\Asmagin\src\client\dist\assets\vendor.js", 46 | @"d:\.projects\Asmagin\src\client\dist\assets\common.js" 47 | } 48 | })) 49 | { 50 | using (var engine = manager.GetEngine()) 51 | { 52 | var command = @"ContentComponents__ext.components.Welcome.renderToString({ })"; 53 | try 54 | { 55 | var result = engine.Execute(command); 56 | System.Console.WriteLine(result); 57 | } 58 | catch (Exception ex) 59 | { 60 | System.Console.WriteLine(ex.Message); 61 | } 62 | System.Console.WriteLine(engine.Execute("console.getCalls()")); 63 | } 64 | 65 | using (var engine = manager.GetEngine()) 66 | { 67 | var command = @"main__ext.components.Welcome.renderToString({ })"; 68 | try 69 | { 70 | var result = engine.Execute(command); 71 | System.Console.WriteLine(result); 72 | } 73 | catch (Exception ex) 74 | { 75 | System.Console.WriteLine(ex.Message); 76 | } 77 | System.Console.WriteLine(engine.Execute("console.getCalls()")); 78 | } 79 | 80 | 81 | while (true) 82 | { 83 | using (var engine = manager.GetEngine()) 84 | { 85 | System.Console.WriteLine("> "); 86 | var command = System.Console.ReadLine(); 87 | try 88 | { 89 | var result = engine.Execute(command); 90 | System.Console.WriteLine(result); 91 | } 92 | catch (Exception ex) 93 | { 94 | System.Console.WriteLine(ex.Message); 95 | } 96 | 97 | System.Console.WriteLine(engine.Execute("console.getCalls()")); 98 | } 99 | } 100 | } 101 | } 102 | catch (Exception ex) 103 | { 104 | System.Console.WriteLine(ex.Message); 105 | 106 | if (ex.InnerException != null) 107 | { 108 | Console.WriteLine(ex.InnerException.Message); 109 | } 110 | } 111 | } 112 | } 113 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation.Sample.Console/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Sitecore.Js.Presentation.Sample.Console")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("Sitecore.Js.Presentation.Sample.Console")] 12 | [assembly: AssemblyCopyright("Alexander Smagin © 2016")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("c11bf1e5-bee3-4551-bb37-ad93238fa983")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // Major Version 26 | // Minor Version 27 | // Build Number 28 | // Revision 29 | // You can specify all the values or you can default the Build and Revision Numbers 30 | // by using the '*' as shown below: 31 | // [assembly: AssemblyVersion("1.0.*")] 32 | [assembly: AssemblyVersion("1.0.0.0")] 33 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation.Sample.Console/Sitecore.Js.Presentation.Sample.Console.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Debug 7 | AnyCPU 8 | {C11BF1E5-BEE3-4551-BB37-AD93238FA983} 9 | Exe 10 | Properties 11 | Sparrow.Sample.Console 12 | Sparrow.Sample.Console 13 | v4.5.2 14 | 512 15 | true 16 | 17 | 18 | 19 | 20 | AnyCPU 21 | true 22 | full 23 | false 24 | bin\Debug\ 25 | DEBUG;TRACE 26 | prompt 27 | 4 28 | 29 | 30 | AnyCPU 31 | pdbonly 32 | true 33 | bin\Release\ 34 | TRACE 35 | prompt 36 | 4 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | {44a5ab5b-7329-4146-b3d8-3f78cd5d9ef2} 59 | Sitecore.Js.Presentation 60 | 61 | 62 | 63 | 64 | 65 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. 66 | 67 | 68 | 69 | 76 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation.Sample.Console/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation.Sample.Console/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sitecore.Js.Presentation", "Sitecore.Js.Presentation\Sitecore.Js.Presentation.csproj", "{44A5AB5B-7329-4146-B3D8-3F78CD5D9EF2}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "source", "source", "{70A5FFA5-20C9-4F11-94D2-DD9DC6158F0A}" 9 | EndProject 10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D85477BD-187E-44FB-BD09-88745DEE96D8}" 11 | EndProject 12 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sample", "sample", "{5A9D46D4-436E-4774-9145-46877232F18E}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sitecore.Js.Presentation.Sample.Console", "Sitecore.Js.Presentation.Sample.Console\Sitecore.Js.Presentation.Sample.Console.csproj", "{C11BF1E5-BEE3-4551-BB37-AD93238FA983}" 15 | EndProject 16 | Global 17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 18 | Debug|Any CPU = Debug|Any CPU 19 | Release|Any CPU = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {44A5AB5B-7329-4146-B3D8-3F78CD5D9EF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {44A5AB5B-7329-4146-B3D8-3F78CD5D9EF2}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {44A5AB5B-7329-4146-B3D8-3F78CD5D9EF2}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {44A5AB5B-7329-4146-B3D8-3F78CD5D9EF2}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {C11BF1E5-BEE3-4551-BB37-AD93238FA983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {C11BF1E5-BEE3-4551-BB37-AD93238FA983}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {C11BF1E5-BEE3-4551-BB37-AD93238FA983}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {C11BF1E5-BEE3-4551-BB37-AD93238FA983}.Release|Any CPU.Build.0 = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(NestedProjects) = preSolution 35 | {44A5AB5B-7329-4146-B3D8-3F78CD5D9EF2} = {70A5FFA5-20C9-4F11-94D2-DD9DC6158F0A} 36 | {C11BF1E5-BEE3-4551-BB37-AD93238FA983} = {5A9D46D4-436E-4774-9145-46877232F18E} 37 | EndGlobalSection 38 | EndGlobal 39 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Configuration/IJsEngineManagerConfiguration.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Configuration 2 | { 3 | using System.Collections.Generic; 4 | 5 | public interface IJsEngineManagerConfiguration 6 | { 7 | /// 8 | /// Gets or sets the maximum number of engines that will be created in the pool. 9 | /// Defaults to 25. 10 | /// 11 | int? MaxEngines { get; set; } 12 | 13 | int? MaxUsagesPerEngine { get; set; } 14 | 15 | IList Modules { get; set; } 16 | 17 | /// 18 | /// Gets or sets the number of engines to initially start when a pool is created. 19 | /// Defaults to 10. 20 | /// 21 | int? StartEngines { get; set; } 22 | 23 | void AddModule(string module); 24 | } 25 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Configuration/JsEngineManagerConfiguration.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Configuration 2 | { 3 | using System.Collections.Generic; 4 | 5 | using Sitecore.Diagnostics; 6 | 7 | public class JsEngineManagerConfiguration : IJsEngineManagerConfiguration 8 | { 9 | public JsEngineManagerConfiguration() 10 | { 11 | this.Modules = new List(); 12 | } 13 | 14 | public int? MaxEngines { get; set; } 15 | 16 | public int? MaxUsagesPerEngine { get; set; } 17 | 18 | public IList Modules { get; set; } 19 | 20 | public int? StartEngines { get; set; } 21 | 22 | public void AddModule(string module) 23 | { 24 | Assert.ArgumentNotNull(module, "module"); 25 | this.Modules.Add(module); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Context/IPageContext.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Context 2 | { 3 | using System.Collections.Generic; 4 | 5 | public interface IPageContext 6 | { 7 | List InitScripts { get; } 8 | 9 | void Add(string client); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Context/PageContext.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Context 2 | { 3 | using System.Collections.Generic; 4 | using System.Web; 5 | 6 | public class PageContext : IPageContext 7 | { 8 | private const string ComponentsStorageNameInHttpContext = "300C5ADADC894A128C4A59A9BB530117"; 9 | 10 | public List InitScripts 11 | { 12 | get 13 | { 14 | var obj = HttpContext.Current.Items[ComponentsStorageNameInHttpContext]; 15 | 16 | if (obj != null) 17 | { 18 | return (List)obj; 19 | } 20 | 21 | var list = new List(); 22 | HttpContext.Current.Items[ComponentsStorageNameInHttpContext] = list; 23 | return list; 24 | } 25 | } 26 | 27 | public void Add(string script) 28 | { 29 | this.InitScripts.Insert(0, script); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Engine.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-Present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | namespace Sitecore.Js.Presentation 11 | { 12 | using System; 13 | 14 | using JavaScriptEngineSwitcher.Core; 15 | 16 | /// 17 | /// Request-specific ReactJS.NET environment. This is unique to the individual request and is 18 | /// not shared. 19 | /// 20 | public class Engine : IEngine 21 | { 22 | /// 23 | /// Contains an engine acquired from a pool of engines. 24 | /// 25 | protected Lazy EngineFromPool; 26 | 27 | private readonly Func _areScriptsLoaded; 28 | 29 | private bool _disposed = false; 30 | 31 | public Engine( 32 | Func getEngineAction, 33 | Func areScriptsLoaded) 34 | { 35 | this._areScriptsLoaded = areScriptsLoaded; 36 | 37 | this.EngineFromPool = new Lazy(getEngineAction); 38 | } 39 | 40 | protected IJsEngine JsEngine => this.EngineFromPool.Value; 41 | 42 | public virtual bool CheckScriptsReadiness() 43 | { 44 | if (!this._areScriptsLoaded(this.JsEngine)) 45 | { 46 | throw new InvalidOperationException("Scripts are not ready for further execution"); 47 | } 48 | 49 | return true; 50 | } 51 | 52 | /// 53 | /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. 54 | /// 55 | /// 56 | public void Dispose() 57 | { 58 | // Dispose of unmanaged resources. 59 | Dispose(true); 60 | // Suppress finalization. 61 | GC.SuppressFinalize(this); 62 | } 63 | 64 | // Protected implementation of Dispose pattern. 65 | protected virtual void Dispose(bool disposing) 66 | { 67 | if (_disposed) 68 | return; 69 | 70 | if (disposing) 71 | { 72 | // Free any other managed objects here. 73 | EngineFromPool?.Value?.Dispose(); 74 | this.EngineFromPool = null; 75 | } 76 | 77 | // Free any unmanaged objects here. 78 | _disposed = true; 79 | } 80 | 81 | /// 82 | /// Executes the provided JavaScript code. 83 | /// 84 | /// JavaScript to execute 85 | public virtual void Execute(string code) 86 | { 87 | try 88 | { 89 | this.JsEngine.Execute(code); 90 | } 91 | catch (JsRuntimeException ex) 92 | { 93 | throw this.WrapJavaScriptRuntimeException(ex); 94 | } 95 | } 96 | 97 | /// 98 | /// Executes the provided JavaScript code, returning a result of the specified type. 99 | /// 100 | /// Type to return 101 | /// Code to execute 102 | /// Result of the JavaScript code 103 | public virtual T Execute(string code) 104 | { 105 | try 106 | { 107 | return this.JsEngine.Evaluate(code); 108 | } 109 | catch (JsRuntimeException ex) 110 | { 111 | throw this.WrapJavaScriptRuntimeException(ex); 112 | } 113 | } 114 | 115 | /// 116 | /// Executes the provided JavaScript function, returning a result of the specified type. 117 | /// 118 | /// Type to return 119 | /// JavaScript function to execute 120 | /// Arguments to pass to function 121 | /// Result of the JavaScript code 122 | public virtual T Execute(string function, params object[] args) 123 | { 124 | try 125 | { 126 | return this.JsEngine.CallFunction(function, args); 127 | } 128 | catch (JsRuntimeException ex) 129 | { 130 | throw this.WrapJavaScriptRuntimeException(ex); 131 | } 132 | } 133 | 134 | /// 135 | /// Determines if the specified variable exists in the JavaScript engine 136 | /// 137 | /// Name of the variable 138 | /// true if the variable exists; false otherwise 139 | public virtual bool HasVariable(string name) 140 | { 141 | try 142 | { 143 | return this.JsEngine.HasVariable(name); 144 | } 145 | catch (JsRuntimeException ex) 146 | { 147 | throw this.WrapJavaScriptRuntimeException(ex); 148 | } 149 | } 150 | 151 | /// 152 | /// Updates the Message of a to be more useful, containing 153 | /// the line and column numbers. 154 | /// 155 | /// Original exception 156 | /// New exception 157 | protected virtual JsRuntimeException WrapJavaScriptRuntimeException(JsRuntimeException ex) 158 | { 159 | return 160 | new JsRuntimeException( 161 | string.Format("{0}\r\nLine: {1}\r\nColumn:{2}", ex.Message, ex.LineNumber, ex.ColumnNumber), 162 | ex.EngineName, 163 | ex.EngineVersion) 164 | { 165 | ErrorCode = ex.ErrorCode, 166 | Category = ex.Category, 167 | LineNumber = ex.LineNumber, 168 | ColumnNumber = ex.ColumnNumber, 169 | SourceFragment = ex.SourceFragment, 170 | Source = ex.Source 171 | }; 172 | } 173 | } 174 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Enum/RenderingOptions.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Enum 2 | { 3 | public enum RenderingOptions 4 | { 5 | ServerOnly, 6 | 7 | ClientOnly, 8 | 9 | ClientAndServer 10 | } 11 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/IComponent.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-Present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | namespace Sitecore.Js.Presentation 11 | { 12 | using Sitecore.Js.Presentation.Enum; 13 | 14 | /// 15 | /// Represents a React JavaScript component. 16 | /// 17 | public interface IComponent 18 | { 19 | /// 20 | /// Gets or sets the name of the component 21 | /// 22 | string ComponentName { get; } 23 | 24 | /// 25 | /// Gets or sets the HTML class for the container of this component 26 | /// 27 | string ContainerClass { get; set; } 28 | 29 | /// 30 | /// Gets or sets the unique ID for the container of this component 31 | /// 32 | string ContainerId { get; } 33 | 34 | /// 35 | /// Gets or sets the HTML tag the component is wrapped in 36 | /// 37 | string ContainerTag { get; set; } 38 | 39 | /// 40 | /// Gets or sets the props for this component 41 | /// 42 | object Model { get; set; } 43 | 44 | /// 45 | /// Renders the HTML for this component. This will execute the component server-side and 46 | /// return the rendered HTML. 47 | /// 48 | /// HTML 49 | string Render(RenderingOptions options); 50 | } 51 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/IEngine.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-Present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | namespace Sitecore.Js.Presentation 11 | { 12 | using System; 13 | 14 | /// 15 | /// Request-specific ReactJS.NET environment. This is unique to the individual request and is 16 | /// not shared. 17 | /// 18 | public interface IEngine : IDisposable 19 | { 20 | /// 21 | /// Executes the provided JavaScript code. 22 | /// 23 | /// JavaScript to execute 24 | void Execute(string code); 25 | 26 | /// 27 | /// Executes the provided JavaScript code, returning a result of the specified type. 28 | /// 29 | /// Type to return 30 | /// Code to execute 31 | /// Result of the JavaScript code 32 | T Execute(string code); 33 | 34 | /// 35 | /// Executes the provided JavaScript function, returning a result of the specified type. 36 | /// 37 | /// Type to return 38 | /// JavaScript function to execute 39 | /// Arguments to pass to function 40 | /// Result of the JavaScript code 41 | T Execute(string function, params object[] args); 42 | } 43 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Locator.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation 2 | { 3 | using System; 4 | 5 | using Sitecore.Js.Presentation.Configuration; 6 | using Sitecore.Js.Presentation.Context; 7 | using Sitecore.Js.Presentation.Managers; 8 | 9 | public class Locator 10 | { 11 | private static readonly object SyncObject = new object(); 12 | 13 | private static Locator _current; 14 | 15 | protected Locator(IJsEngineManagerConfiguration config) 16 | { 17 | this.Page = new PageContext(); 18 | this.Manager = new JsEngineManager(config); 19 | } 20 | 21 | public static Locator Current 22 | { 23 | get 24 | { 25 | if (_current == null) 26 | { 27 | throw new Exception("JsEngine is not initialized yet"); 28 | } 29 | 30 | return _current; 31 | } 32 | } 33 | 34 | // ReSharper disable once ConvertToAutoProperty 35 | public IJsEngineManager Manager { get; } 36 | 37 | public IPageContext Page { get; } 38 | 39 | public static void Initialize(IJsEngineManagerConfiguration config) 40 | { 41 | if (_current != null) 42 | { 43 | throw new Exception("JsEngine is already initialized"); 44 | } 45 | 46 | lock (SyncObject) 47 | { 48 | if (_current == null) 49 | { 50 | _current = new Locator(config); 51 | } 52 | } 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Managers/IJsEngineManager.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Managers 2 | { 3 | using System; 4 | 5 | public interface IJsEngineManager : IDisposable 6 | { 7 | string CombineInitializationScripts(); 8 | 9 | IEngine GetEngine(); 10 | } 11 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Mvc/HtmlHelperExtentions.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Mvc 2 | { 3 | using System.Text; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | 7 | using Sitecore.Js.Presentation.Enum; 8 | using Sitecore.Mvc.Presentation; 9 | 10 | public static class HtmlHelperExtentions 11 | { 12 | public static IHtmlString RenderComponent(this HtmlHelper htmlHelper, string componentName, object model) 13 | { 14 | // Render ReactJS component 15 | return RenderComponent(htmlHelper, componentName, model, RenderingOptions.ClientAndServer); 16 | } 17 | 18 | public static IHtmlString RenderComponent( 19 | this HtmlHelper htmlHelper, 20 | string componentName, 21 | object model, 22 | RenderingOptions renderOptions) 23 | { 24 | var server = Locator.Current.Manager; 25 | var page = Locator.Current.Page; 26 | var rendering = RenderingContext.Current.Rendering; 27 | 28 | var component = new Component(server, page, componentName, model, rendering); 29 | 30 | // Render ReactJS component 31 | return new HtmlString(component.Render(renderOptions)); 32 | } 33 | 34 | public static IHtmlString RenderScripts(this HtmlHelper htmlHelper) 35 | { 36 | var sb = new StringBuilder(); 37 | 38 | foreach (var str in Locator.Current.Page.InitScripts) 39 | { 40 | sb.AppendLine(str); 41 | } 42 | 43 | var tag = new TagBuilder("script") { InnerHtml = sb.ToString() }; 44 | return new HtmlString(tag.ToString()); 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Mvc/Sitecore.Js.PresentationController.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Mvc 2 | { 3 | using System.IO; 4 | using System.Web.Mvc; 5 | 6 | using Sitecore.Diagnostics; 7 | using Sitecore.Js.Presentation.Enum; 8 | using Sitecore.Mvc.Controllers; 9 | using Sitecore.Mvc.Pipelines; 10 | using Sitecore.Mvc.Pipelines.Response.RenderPlaceholder; 11 | using Sitecore.Mvc.Presentation; 12 | 13 | public class JsController : SitecoreController 14 | { 15 | /// 16 | /// Generate component ReactJS action results 17 | /// 18 | /// Name of a component exposed from a js package 19 | /// Data to be passed into a component 20 | /// 21 | /// ActionResult object 22 | public virtual ActionResult JsComponent(string componentName, object model, RenderingOptions renderOptions) 23 | { 24 | return this.JsComponent(componentName, model, renderOptions, RenderingContext.Current.Rendering); 25 | } 26 | 27 | /// 28 | /// Generate component ReactJS action results 29 | /// 30 | /// Name of a component exposed from a js package 31 | /// Data to be passed into a component 32 | /// Rendering definition object 33 | /// 34 | /// ActionResult object 35 | public virtual ActionResult JsComponent( 36 | string componentName, 37 | object model, 38 | RenderingOptions renderOptions, 39 | Rendering rendering) 40 | { 41 | var currentManager = Locator.Current.Manager; 42 | var page = Locator.Current.Page; 43 | 44 | var component = new Component(currentManager, page, componentName, model, rendering); 45 | 46 | // Render ReactJS component 47 | return this.Content(component.Render(renderOptions)); 48 | } 49 | 50 | /// 51 | /// Generate a content of a placeholder into a string 52 | /// 53 | /// Name of a placeholder 54 | /// Rendering definition object 55 | /// Returns string with a rendered placeholder content 56 | protected virtual string Placeholder(string placeholderName, Rendering rendering) 57 | { 58 | Assert.ArgumentNotNull(placeholderName, "placeholderName"); 59 | 60 | var stringWriter = new StringWriter(); 61 | PipelineService.Get() 62 | .RunPipeline( 63 | "mvc.renderPlaceholder", 64 | new RenderPlaceholderArgs(placeholderName, stringWriter, rendering)); 65 | return stringWriter.ToString(); 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Pipelines/InitializeJsContext.cs: -------------------------------------------------------------------------------- 1 | namespace Sitecore.Js.Presentation.Pipelines 2 | { 3 | using Sitecore.Js.Presentation.Configuration; 4 | using Sitecore.Pipelines; 5 | 6 | public class InitializeJsContext 7 | { 8 | public IJsEngineManagerConfiguration Config { get; set; } 9 | 10 | public void Process(PipelineArgs args) 11 | { 12 | Locator.Initialize(this.Config); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("Sitecore.Js.Presentation")] 8 | [assembly: AssemblyDescription("Embedded JavaScript Engine for Sitecore")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("Alexander Smagin")] 11 | [assembly: AssemblyProduct("Sitecore.Js.Presentation")] 12 | [assembly: AssemblyCopyright("Alexander Smagin © 2016")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("91743228-c61a-466f-9a7f-7b6a0b6f773d")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // Major Version 26 | // Minor Version 27 | // Build Number 28 | // Revision 29 | // You can specify all the values or you can default the Build and Revision Numbers 30 | // by using the '*' as shown below: 31 | // [assembly: AssemblyVersion("1.0.*")] 32 | [assembly: AssemblyVersion("1.0.0.0")] 33 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Resources/init.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-Present, Facebook, Inc. 3 | * All rights reserved. 4 | * 5 | * This source code is licensed under the BSD-style license found in the 6 | * LICENSE file in the root directory of this source tree. An additional grant 7 | * of patent rights can be found in the PATENTS file in the same directory. 8 | */ 9 | 10 | // Basic console shim. Caches all calls to console methods. 11 | function MockConsole() { 12 | this._calls = []; 13 | ['log', 'error', 'warn', 'debug', 'info', 'dir', 'group', 'groupEnd', 'groupCollapsed'].forEach(function (methodName) { 14 | this[methodName] = this._handleCall.bind(this, methodName); 15 | }, this); 16 | } 17 | MockConsole.prototype = { 18 | _handleCall: function (methodName/*, ...args*/) { 19 | var serializedArgs = []; 20 | for (var i = 1; i < arguments.length; i++) { 21 | serializedArgs.push(JSON.stringify(arguments[i])); 22 | } 23 | this._calls.push({ 24 | method: methodName, 25 | args: serializedArgs 26 | }); 27 | }, 28 | _formatCall: function (call) { 29 | return 'console.' + call.method + '("[server]", ' + call.args.join(', ') + ');'; 30 | }, 31 | getCalls: function () { 32 | var output = this._calls.map(this._formatCall).join('\n'); 33 | this._calls = []; 34 | return output; 35 | } 36 | }; 37 | 38 | var console = new MockConsole(); 39 | 40 | var window = this || {}; -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/Sitecore.Js.Presentation.nuspec: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Sitecore.Js.Presentation 5 | $version$ 6 | Sitecore JavaScript Presentation Module 7 | Alex Smagin 8 | Alex Smagin 9 | https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/master/LICENSE 10 | https://github.com/asmagin/sitecore-js-presentation 11 | false 12 | A module for creating Sitecore components using embedded JavaScript engine 13 | https://github.com/asmagin/sitecore-js-presentation 14 | Alex Smagin (c) 2016 15 | 16 | Sitecore, JavaScript, React, ReactJS 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/content/App_Config/Include/Sitecore.Js.Presentation/Sitecore.Js.Presentation.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 8 | 25 9 | 1000000 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/content/Views/web.config.transform: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/content/readme.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/src/Sitecore.Js.Presentation/content/readme.md -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 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 | -------------------------------------------------------------------------------- /src/Sitecore.Js.Presentation/tools/readme.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asmagin/sitecore-js-presentation/a9ac20e3bad8d72ddf3fcb866d2cbc317baa7256/src/Sitecore.Js.Presentation/tools/readme.md --------------------------------------------------------------------------------