├── .gitignore ├── LICENSE ├── README.md ├── code-samples ├── drivers │ ├── csharp │ │ └── sample │ │ │ ├── Program.cs │ │ │ ├── README.md │ │ │ └── sample.csproj │ ├── java │ │ ├── .project │ │ ├── README.md │ │ └── sample │ │ │ ├── pom.xml │ │ │ └── src │ │ │ ├── main │ │ │ ├── java │ │ │ │ ├── TestFileFolder.java │ │ │ │ ├── TestGitana.java │ │ │ │ ├── TestGlobalAccess.java │ │ │ │ └── TestNodeRead.java │ │ │ └── resources │ │ │ │ ├── gitana-environments.properties │ │ │ │ └── log4j2.xml │ │ │ └── test │ │ │ └── java │ │ │ ├── GlobalAccessTest.java │ │ │ ├── TestNodeRead.java │ │ │ ├── Tests.java │ │ │ └── Tests2.java │ ├── nodejs │ │ └── sample │ │ │ ├── README.md │ │ │ ├── app.js │ │ │ ├── content │ │ │ ├── article1.json │ │ │ ├── article2.json │ │ │ └── article3.json │ │ │ ├── package.json │ │ │ ├── public │ │ │ └── stylesheets │ │ │ │ └── style.css │ │ │ └── views │ │ │ ├── error.jade │ │ │ ├── index.jade │ │ │ ├── layout.jade │ │ │ ├── setup.jade │ │ │ └── teardown.jade │ ├── php │ │ └── sample │ │ │ ├── README.md │ │ │ ├── author.json │ │ │ ├── composer.json │ │ │ ├── config.php │ │ │ ├── createNode.php │ │ │ ├── driver.php │ │ │ ├── j.k.rowling.jpg │ │ │ ├── listRepositories.php │ │ │ └── readNode.php │ ├── python3 │ │ ├── README.md │ │ └── sample │ │ │ └── sample.py │ └── ruby │ │ ├── README.md │ │ └── sample │ │ ├── Gemfile │ │ ├── Gemfile.lock │ │ └── sample.rb ├── http │ ├── curl │ │ ├── README.md │ │ ├── assets │ │ │ ├── burns.jpg │ │ │ ├── miyagi.jpg │ │ │ └── miyagi.json │ │ ├── create-node-with-attachment.sh │ │ ├── download-node-attachment.sh │ │ ├── list-domains.sh │ │ ├── list-repositories.sh │ │ ├── read-node.sh │ │ ├── touch-node.sh │ │ └── upload-files.sh │ └── postman │ │ ├── README.md │ │ ├── cloud-cms.json │ │ └── env.json └── middleware │ ├── auth-sample │ ├── README.md │ ├── app.js │ ├── package.json │ ├── routes │ │ ├── auth-server.js │ │ └── resource-server.js │ └── scenarios │ │ ├── facebook │ │ └── setup.js │ │ ├── jwt │ │ ├── authenticator.js │ │ └── setup.js │ │ └── session │ │ └── setup.js │ └── sample │ ├── README │ ├── app.js │ ├── package.json │ └── public │ ├── details.html │ └── index.html ├── containers └── 32 │ ├── docker-compose │ └── mongodb-replicaset │ │ ├── README.md │ │ ├── activemq1 │ │ ├── Dockerfile │ │ ├── activemq.env │ │ └── activemq.xml │ │ ├── activemq2 │ │ ├── Dockerfile │ │ ├── activemq.env │ │ └── activemq.xml │ │ ├── api1 │ │ ├── Dockerfile │ │ ├── api.env │ │ └── classes │ │ │ ├── gitana │ │ │ ├── distributions │ │ │ │ ├── cloudcms-docker-activemq-context.xml.sample │ │ │ │ ├── cloudcms-docker-context.xml │ │ │ │ └── cloudcms-docker-sns-context.xml.sample │ │ │ ├── docker.properties │ │ │ └── license │ │ │ │ └── drop-your-license-file-here.txt │ │ │ └── log4j2-docker.xml │ │ ├── api2 │ │ ├── Dockerfile │ │ ├── api.env │ │ └── classes │ │ │ ├── gitana │ │ │ ├── distributions │ │ │ │ ├── cloudcms-docker-activemq-context.xml.sample │ │ │ │ ├── cloudcms-docker-context.xml │ │ │ │ └── cloudcms-docker-sns-context.xml.sample │ │ │ ├── docker.properties │ │ │ └── license │ │ │ │ └── drop-your-license-file-here.txt │ │ │ └── log4j2-docker.xml │ │ ├── docker-compose.yml │ │ ├── init-replicaset.sh │ │ ├── mongod1.conf │ │ ├── mongod2.conf │ │ └── mongod3.conf │ ├── ecs │ └── simple │ │ ├── README.md │ │ ├── api.json │ │ ├── av.json │ │ ├── clamav.json │ │ ├── ui.json │ │ └── upload.sh │ └── kubernetes │ ├── clustered-workers │ ├── README.md │ ├── activemq.xml │ ├── activemq.yaml │ ├── api-worker.yaml │ ├── api.yaml │ ├── av.yaml │ ├── es.yaml │ ├── mongodb.yaml │ ├── redis.yaml │ ├── start.sh │ ├── stop.sh │ └── ui.yaml │ ├── clustered │ ├── README.md │ ├── activemq.xml │ ├── activemq.yaml │ ├── api.yaml │ ├── av.yaml │ ├── es.yaml │ ├── mongodb.yaml │ ├── redis.yaml │ ├── start.sh │ ├── stop.sh │ └── ui.yaml │ └── simple │ ├── README.md │ ├── activemq.xml │ ├── activemq.yaml │ ├── api.yaml │ ├── av.yaml │ ├── es.yaml │ ├── mongodb.yaml │ ├── start.sh │ ├── stop.sh │ └── ui.yaml ├── http-deployment-receiver ├── README.md ├── app.js └── package.json ├── packager ├── content-model │ ├── README.md │ ├── cloudcms-login-template.sh │ ├── deploy-content-model.sh │ ├── package.js │ ├── package.json │ ├── types │ │ ├── custom_attachment-array │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_attachment │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_attachment1 │ │ │ └── node.json │ │ ├── custom_datetypes │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_dependency │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_dependency_relator │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_inherit1-feature │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_inherit1 │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_objectarray │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_reference1 │ │ │ └── node.json │ │ ├── custom_reference1a │ │ │ └── node.json │ │ ├── custom_reference2 │ │ │ └── node.json │ │ ├── custom_reference3 │ │ │ └── node.json │ │ ├── custom_tabbed-view │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_type1 │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ ├── custom_type2 │ │ │ ├── forms │ │ │ │ └── master.json │ │ │ └── node.json │ │ └── custom_wizard-view │ │ │ ├── forms │ │ │ └── master.json │ │ │ └── node.json │ └── vscode-snippets.json └── sample │ ├── README.md │ ├── package.js │ └── types │ ├── my_article │ └── node.json │ ├── my_author │ └── node.json │ └── my_authored_by │ └── node.json ├── ui-extensions ├── arrested-development-ext │ ├── README │ ├── custom-application.json │ ├── services │ │ └── audio.html │ └── web │ │ ├── arrested-development.mp3 │ │ ├── banana-stand.png │ │ ├── custom-favicon.png │ │ └── custom.css ├── forms │ ├── node-search-field │ │ ├── .bowerrc │ │ ├── README.md │ │ ├── bower.json │ │ ├── cloudcms-config.js │ │ ├── index.html │ │ ├── index.js │ │ └── node-search-field.js │ ├── node-selector-field │ │ ├── .bowerrc │ │ ├── README.md │ │ ├── bower.json │ │ ├── cloudcms-config.js │ │ ├── index.html │ │ ├── index.js │ │ └── node-selector-field.js │ ├── node-typeahead-field │ │ ├── .bowerrc │ │ ├── README.md │ │ ├── bower.json │ │ ├── cloudcms-config.js │ │ ├── index.html │ │ ├── index.js │ │ └── node-typeahead-field.js │ └── sample-registration-form │ │ ├── .bowerrc │ │ ├── README │ │ ├── bower.json │ │ ├── css │ │ └── sample.css │ │ ├── index.html │ │ ├── js │ │ └── sample.js │ │ └── thankyou.html └── modules │ ├── ckeditor-plugins │ └── helloworld │ │ ├── README.md │ │ ├── demo.png │ │ ├── index.js │ │ ├── install.js │ │ ├── module.json │ │ ├── plugins │ │ └── ckeditor │ │ │ └── helloworld │ │ │ ├── icons │ │ │ └── helloworld.png │ │ │ ├── index.js │ │ │ └── plugin.js │ │ └── uninstall.js │ ├── content-instances │ ├── README.md │ ├── config │ │ └── custom-content-instances │ │ │ └── blocks │ │ │ └── default │ │ │ └── config.json │ ├── gadgets │ │ └── content-instances.js │ ├── index.js │ ├── install.js │ ├── module.json │ └── uninstall.js │ ├── content-model │ └── content-model-field │ │ ├── README.md │ │ ├── config │ │ └── content-model-field │ │ │ └── blocks │ │ │ └── default │ │ │ └── project-field-templates │ │ │ └── project.json │ │ ├── field-types │ │ └── content-field.js │ │ ├── index.js │ │ ├── install.js │ │ ├── module.json │ │ └── uninstall.js │ ├── custom-action │ ├── .gitignore │ ├── README.md │ ├── actions │ │ └── attachments │ │ │ └── add-attachment.js │ ├── config │ │ └── custom-action │ │ │ └── blocks │ │ │ └── default │ │ │ └── actions │ │ │ └── default.json │ ├── index.js │ ├── install.js │ ├── module.json │ ├── screenshots │ │ ├── after.png │ │ └── before.png │ └── uninstall.js │ ├── custom-folder │ ├── README.md │ ├── actions │ │ └── documents │ │ │ └── new_folder.js │ ├── config │ │ └── custom-folder │ │ │ └── blocks │ │ │ └── default │ │ │ └── ui │ │ │ └── new-folder-types.json │ ├── index.js │ ├── install.js │ ├── module.json │ └── uninstall.js │ ├── custom-iframe-action │ ├── README.md │ ├── module │ │ ├── actions │ │ │ ├── create-product │ │ │ │ └── create-product.js │ │ │ ├── delete-product │ │ │ │ └── delete-product.js │ │ │ └── edit-product │ │ │ │ └── edit-product.js │ │ ├── config │ │ │ └── custom │ │ │ │ └── blocks │ │ │ │ └── default │ │ │ │ ├── document-actions │ │ │ │ ├── delete-product.json │ │ │ │ └── edit-product.json │ │ │ │ └── documents-list-buttons │ │ │ │ └── create-product.json │ │ ├── index.js │ │ ├── install.js │ │ ├── module.json │ │ └── uninstall.js │ └── server │ │ ├── app.js │ │ ├── package.json │ │ └── views │ │ ├── create.hbs │ │ ├── delete.hbs │ │ ├── edit.hbs │ │ └── layouts │ │ └── main.hbs │ ├── editors │ └── embedded-media │ │ ├── README.md │ │ ├── config │ │ └── embedded-media │ │ │ └── blocks │ │ │ └── default │ │ │ └── project-media-types │ │ │ └── project.json │ │ ├── index.js │ │ ├── install.js │ │ ├── media-types │ │ ├── instagram-link.js │ │ ├── thinglink-link.js │ │ └── youtube-link.js │ │ ├── module.json │ │ └── uninstall.js │ ├── fields │ ├── custom-copier-field │ │ ├── README.MD │ │ ├── fields │ │ │ └── custom-copier-field.js │ │ ├── index.js │ │ ├── install.js │ │ ├── module.json │ │ ├── sample-definition.json │ │ ├── sample-form.json │ │ └── uninstall.js │ ├── custom-country-field │ │ ├── README.MD │ │ ├── fields │ │ │ └── custom-country-field.js │ │ ├── index.js │ │ ├── install.js │ │ ├── module.json │ │ ├── sample-definition.json │ │ ├── sample-form.json │ │ └── uninstall.js │ └── custom-soccer-field │ │ ├── README.MD │ │ ├── fields │ │ └── custom-soccer-field.js │ │ ├── index.js │ │ ├── install.js │ │ ├── module.json │ │ ├── sample-definition.json │ │ ├── sample-form.json │ │ └── uninstall.js │ ├── sample-ui │ ├── config │ │ └── sample-ui │ │ │ ├── blocks │ │ │ └── context │ │ │ │ └── project.json │ │ │ └── pages │ │ │ └── account-list-page │ │ │ ├── center.json │ │ │ └── page.json │ ├── gadgets │ │ └── sample-ui │ │ │ ├── account-list.css │ │ │ ├── account-list.html │ │ │ └── account-list.js │ ├── index.js │ ├── module.json │ ├── styles │ │ └── sample-ui.css │ ├── templates │ │ └── account-list-template.html │ └── themes │ │ └── sample │ │ ├── sample-logo.png │ │ ├── screenshot.png │ │ ├── theme.json │ │ └── theme.scss │ └── wondertwins-theme │ ├── index.js │ ├── module.json │ └── themes │ └── wondertwins │ ├── screenshot.png │ ├── theme.json │ └── theme.scss ├── ui-frameworks ├── angular │ └── bookstore │ │ ├── .angulardoc.json │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── app.js │ │ ├── e2e │ │ ├── protractor.conf.js │ │ ├── src │ │ │ ├── app.e2e-spec.ts │ │ │ └── app.po.ts │ │ └── tsconfig.e2e.json │ │ ├── package.json │ │ ├── src │ │ ├── app │ │ │ ├── Authorlist │ │ │ │ ├── authorlist.component.html │ │ │ │ └── authorlist.component.ts │ │ │ ├── Bookcarousel │ │ │ │ ├── bookcarousel.component.html │ │ │ │ └── bookcarousel.component.ts │ │ │ ├── Bookdetail │ │ │ │ ├── book-detail.component.html │ │ │ │ └── book-detail.component.ts │ │ │ ├── Bookitem │ │ │ │ ├── bookitem.component.html │ │ │ │ └── bookitem.component.ts │ │ │ ├── Header │ │ │ │ ├── header.component.html │ │ │ │ └── header.component.ts │ │ │ ├── Herobook │ │ │ │ ├── herobook.component.html │ │ │ │ └── herobook.component.ts │ │ │ ├── Main │ │ │ │ ├── main.component.html │ │ │ │ └── main.component.ts │ │ │ ├── Search │ │ │ │ ├── search.component.html │ │ │ │ └── search.component.ts │ │ │ ├── app-routing.module.ts │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ ├── author.ts │ │ │ ├── book.service.ts │ │ │ └── book.ts │ │ ├── assets │ │ │ ├── css │ │ │ │ ├── animate.min.css │ │ │ │ ├── blue.css │ │ │ │ ├── bootstrap-select.min.css │ │ │ │ ├── bootstrap.min.css │ │ │ │ ├── custom.css │ │ │ │ ├── dark-green.css │ │ │ │ ├── elegant-fonts.css │ │ │ │ ├── font-awesome.min.css │ │ │ │ ├── green.css │ │ │ │ ├── jquery-ui.min.css │ │ │ │ ├── main.css │ │ │ │ ├── navy.css │ │ │ │ ├── orange.css │ │ │ │ ├── owl.carousel.css │ │ │ │ ├── owl.transitions.css │ │ │ │ ├── pink.css │ │ │ │ └── red.css │ │ │ ├── filters.svg │ │ │ ├── fonts │ │ │ │ ├── ElegantIcons.eot │ │ │ │ ├── ElegantIcons.svg │ │ │ │ ├── ElegantIcons.ttf │ │ │ │ ├── ElegantIcons.woff │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ ├── roboto-black.eot │ │ │ │ ├── roboto-black.svg │ │ │ │ ├── roboto-black.ttf │ │ │ │ └── roboto-black.woff │ │ │ ├── js │ │ │ │ ├── bootstrap-hover-dropdown.min.js │ │ │ │ ├── bootstrap-select.min.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── echo.min.js │ │ │ │ ├── jquery-1.12.0.min.js │ │ │ │ ├── jquery-ui.min.js │ │ │ │ ├── jquery.easing.min.js │ │ │ │ ├── lte-ie7.js │ │ │ │ ├── owl.carousel.min.js │ │ │ │ ├── scripts.js │ │ │ │ └── wow.min.js │ │ │ └── less │ │ │ │ ├── blue.less │ │ │ │ ├── book-cover.less │ │ │ │ ├── brand-carousel.less │ │ │ │ ├── breadcrumb-search-box.less │ │ │ │ ├── breadcrumb.less │ │ │ │ ├── button.less │ │ │ │ ├── carousel.less │ │ │ │ ├── color.less │ │ │ │ ├── dark-green.less │ │ │ │ ├── featured-block.less │ │ │ │ ├── footer.less │ │ │ │ ├── general.less │ │ │ │ ├── green.less │ │ │ │ ├── header.less │ │ │ │ ├── home-slider.less │ │ │ │ ├── index-dropdown.less │ │ │ │ ├── main-footer.less │ │ │ │ ├── main.less │ │ │ │ ├── megamenu.less │ │ │ │ ├── mixins.less │ │ │ │ ├── module-block.less │ │ │ │ ├── navbar-bottom.less │ │ │ │ ├── orange.less │ │ │ │ ├── owl-carousel.less │ │ │ │ ├── page-404.less │ │ │ │ ├── page-category.less │ │ │ │ ├── page-checkout.less │ │ │ │ ├── page-detail.less │ │ │ │ ├── pagination.less │ │ │ │ ├── pink.less │ │ │ │ ├── quantity-button.less │ │ │ │ ├── radio-button.less │ │ │ │ ├── red.less │ │ │ │ ├── responsive.less │ │ │ │ ├── ribbon.less │ │ │ │ ├── scrolltop.less │ │ │ │ ├── select-picker.less │ │ │ │ ├── sidebar.less │ │ │ │ ├── slider.less │ │ │ │ ├── star-rating.less │ │ │ │ ├── sub-footer.less │ │ │ │ ├── variables.less │ │ │ │ └── view-switcher.less │ │ ├── browserslist │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── karma.conf.js │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── test.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── tslint.json │ │ ├── tsconfig.json │ │ └── tslint.json ├── gatsbyjs │ └── bookstore │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── LICENSE │ │ ├── README.md │ │ ├── gatsby-browser.js │ │ ├── gatsby-config.js │ │ ├── gatsby-node.js │ │ ├── gatsby-ssr.js │ │ ├── package.json │ │ ├── src │ │ ├── components │ │ │ ├── Author.js │ │ │ ├── AuthorsContainer.js │ │ │ ├── Book.js │ │ │ ├── BookTags.js │ │ │ ├── BooksContainer.js │ │ │ ├── Header.js │ │ │ ├── Layout.js │ │ │ ├── Navbar.js │ │ │ ├── Navmain.js │ │ │ └── Slider.js │ │ ├── pages │ │ │ └── index.js │ │ └── templates │ │ │ └── BookPage.js │ │ └── static │ │ ├── css │ │ ├── animate.min.css │ │ ├── blue.css │ │ ├── bootstrap-select.min.css │ │ ├── bootstrap.min.css │ │ ├── custom.css │ │ ├── dark-green.css │ │ ├── elegant-fonts.css │ │ ├── font-awesome.min.css │ │ ├── green.css │ │ ├── jquery-ui.min.css │ │ ├── main.css │ │ ├── navy.css │ │ ├── orange.css │ │ ├── owl.carousel.css │ │ ├── owl.transitions.css │ │ ├── pink.css │ │ └── red.css │ │ ├── filters.svg │ │ ├── fonts │ │ ├── ElegantIcons.eot │ │ ├── ElegantIcons.svg │ │ ├── ElegantIcons.ttf │ │ ├── ElegantIcons.woff │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── roboto-black.eot │ │ ├── roboto-black.svg │ │ ├── roboto-black.ttf │ │ └── roboto-black.woff │ │ ├── js │ │ ├── bootstrap-hover-dropdown.min.js │ │ ├── bootstrap-select.min.js │ │ ├── bootstrap.min.js │ │ ├── echo.min.js │ │ ├── jquery-1.12.0.min.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.easing.min.js │ │ ├── lte-ie7.js │ │ ├── owl.carousel.min.js │ │ ├── scripts.js │ │ └── wow.min.js │ │ └── less │ │ ├── blue.less │ │ ├── book-cover.less │ │ ├── brand-carousel.less │ │ ├── breadcrumb-search-box.less │ │ ├── breadcrumb.less │ │ ├── button.less │ │ ├── carousel.less │ │ ├── color.less │ │ ├── dark-green.less │ │ ├── featured-block.less │ │ ├── footer.less │ │ ├── general.less │ │ ├── green.less │ │ ├── header.less │ │ ├── home-slider.less │ │ ├── index-dropdown.less │ │ ├── main-footer.less │ │ ├── main.less │ │ ├── megamenu.less │ │ ├── mixins.less │ │ ├── module-block.less │ │ ├── navbar-bottom.less │ │ ├── orange.less │ │ ├── owl-carousel.less │ │ ├── page-404.less │ │ ├── page-category.less │ │ ├── page-checkout.less │ │ ├── page-detail.less │ │ ├── pagination.less │ │ ├── pink.less │ │ ├── quantity-button.less │ │ ├── radio-button.less │ │ ├── red.less │ │ ├── responsive.less │ │ ├── ribbon.less │ │ ├── scrolltop.less │ │ ├── select-picker.less │ │ ├── sidebar.less │ │ ├── slider.less │ │ ├── star-rating.less │ │ ├── sub-footer.less │ │ ├── variables.less │ │ └── view-switcher.less ├── nextjs │ └── bookstore │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── README.md │ │ ├── components │ │ ├── Author.js │ │ ├── AuthorsContainer.js │ │ ├── Book.js │ │ ├── BookTags.js │ │ ├── BooksContainer.js │ │ ├── Header.js │ │ ├── Layout.js │ │ ├── Navbar.js │ │ ├── Navmain.js │ │ ├── Slider.js │ │ ├── Tag.js │ │ └── TagsContainer.js │ │ ├── jsconfig.json │ │ ├── lib │ │ └── cloudcms.js │ │ ├── next.config.js │ │ ├── package.json │ │ ├── pages │ │ ├── _app.js │ │ ├── _document.js │ │ ├── api │ │ │ ├── [nodeId] │ │ │ │ └── [attachmentId].js │ │ │ └── preview.js │ │ ├── author │ │ │ └── [slug].js │ │ ├── authors.js │ │ ├── book │ │ │ └── [slug].js │ │ ├── books.js │ │ ├── index.js │ │ ├── tag │ │ │ └── [tag].js │ │ └── tags.js │ │ ├── public │ │ ├── css │ │ │ ├── animate.min.css │ │ │ ├── blue.css │ │ │ ├── bootstrap-select.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── custom.css │ │ │ ├── dark-green.css │ │ │ ├── elegant-fonts.css │ │ │ ├── font-awesome.min.css │ │ │ ├── green.css │ │ │ ├── jquery-ui.min.css │ │ │ ├── main.css │ │ │ ├── navy.css │ │ │ ├── orange.css │ │ │ ├── owl.carousel.css │ │ │ ├── owl.transitions.css │ │ │ ├── pink.css │ │ │ └── red.css │ │ ├── filters.svg │ │ ├── fonts │ │ │ ├── ElegantIcons.eot │ │ │ ├── ElegantIcons.svg │ │ │ ├── ElegantIcons.ttf │ │ │ ├── ElegantIcons.woff │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ ├── roboto-black.eot │ │ │ ├── roboto-black.svg │ │ │ ├── roboto-black.ttf │ │ │ └── roboto-black.woff │ │ ├── images │ │ │ ├── book-flat.png │ │ │ └── favicon.ico │ │ ├── js │ │ │ ├── bootstrap-hover-dropdown.min.js │ │ │ ├── bootstrap-select.min.js │ │ │ ├── bootstrap.min.js │ │ │ ├── echo.min.js │ │ │ ├── jquery-1.12.0.min.js │ │ │ ├── jquery-ui.min.js │ │ │ ├── jquery.easing.min.js │ │ │ ├── lte-ie7.js │ │ │ ├── owl.carousel.min.js │ │ │ ├── scripts.js │ │ │ └── wow.min.js │ │ └── less │ │ │ ├── blue.less │ │ │ ├── book-cover.less │ │ │ ├── brand-carousel.less │ │ │ ├── breadcrumb-search-box.less │ │ │ ├── breadcrumb.less │ │ │ ├── button.less │ │ │ ├── carousel.less │ │ │ ├── color.less │ │ │ ├── dark-green.less │ │ │ ├── featured-block.less │ │ │ ├── footer.less │ │ │ ├── general.less │ │ │ ├── green.less │ │ │ ├── header.less │ │ │ ├── home-slider.less │ │ │ ├── index-dropdown.less │ │ │ ├── main-footer.less │ │ │ ├── main.less │ │ │ ├── megamenu.less │ │ │ ├── mixins.less │ │ │ ├── module-block.less │ │ │ ├── navbar-bottom.less │ │ │ ├── orange.less │ │ │ ├── owl-carousel.less │ │ │ ├── page-404.less │ │ │ ├── page-category.less │ │ │ ├── page-checkout.less │ │ │ ├── page-detail.less │ │ │ ├── pagination.less │ │ │ ├── pink.less │ │ │ ├── quantity-button.less │ │ │ ├── radio-button.less │ │ │ ├── red.less │ │ │ ├── responsive.less │ │ │ ├── ribbon.less │ │ │ ├── scrolltop.less │ │ │ ├── select-picker.less │ │ │ ├── sidebar.less │ │ │ ├── slider.less │ │ │ ├── star-rating.less │ │ │ ├── sub-footer.less │ │ │ ├── variables.less │ │ │ └── view-switcher.less │ │ └── styles │ │ ├── Home.module.css │ │ └── globals.css ├── nuxtjs │ └── bookstore │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── appServer.js │ │ ├── components │ │ ├── Author.vue │ │ ├── AuthorList.vue │ │ ├── Book.vue │ │ ├── BookList.vue │ │ ├── Header.vue │ │ ├── HeroBook.vue │ │ ├── Tag.vue │ │ └── TagList.vue │ │ ├── layouts │ │ └── default.vue │ │ ├── nuxt.config.js │ │ ├── package.json │ │ ├── pages │ │ ├── author │ │ │ └── _id.vue │ │ ├── authors.vue │ │ ├── book │ │ │ └── _id.vue │ │ ├── books.vue │ │ ├── index.vue │ │ ├── tag │ │ │ └── _id.vue │ │ └── tags.vue │ │ ├── router.js │ │ └── static │ │ ├── book-flat.png │ │ ├── css │ │ ├── animate.min.css │ │ ├── blue.css │ │ ├── bootstrap-select.min.css │ │ ├── bootstrap.min.css │ │ ├── custom.css │ │ ├── dark-green.css │ │ ├── elegant-fonts.css │ │ ├── font-awesome.min.css │ │ ├── green.css │ │ ├── jquery-ui.min.css │ │ ├── main.css │ │ ├── navy.css │ │ ├── orange.css │ │ ├── owl.carousel.css │ │ ├── owl.transitions.css │ │ ├── pink.css │ │ └── red.css │ │ ├── favicon.ico │ │ ├── filters.svg │ │ ├── fonts │ │ ├── ElegantIcons.eot │ │ ├── ElegantIcons.svg │ │ ├── ElegantIcons.ttf │ │ ├── ElegantIcons.woff │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── roboto-black.eot │ │ ├── roboto-black.svg │ │ ├── roboto-black.ttf │ │ └── roboto-black.woff │ │ ├── js │ │ ├── bootstrap-hover-dropdown.min.js │ │ ├── bootstrap-select.min.js │ │ ├── bootstrap.min.js │ │ ├── echo.min.js │ │ ├── jquery-1.12.0.min.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.easing.min.js │ │ ├── lte-ie7.js │ │ ├── owl.carousel.min.js │ │ ├── scripts.js │ │ └── wow.min.js │ │ └── less │ │ ├── blue.less │ │ ├── book-cover.less │ │ ├── brand-carousel.less │ │ ├── breadcrumb-search-box.less │ │ ├── breadcrumb.less │ │ ├── button.less │ │ ├── carousel.less │ │ ├── color.less │ │ ├── dark-green.less │ │ ├── featured-block.less │ │ ├── footer.less │ │ ├── general.less │ │ ├── green.less │ │ ├── header.less │ │ ├── home-slider.less │ │ ├── index-dropdown.less │ │ ├── main-footer.less │ │ ├── main.less │ │ ├── megamenu.less │ │ ├── mixins.less │ │ ├── module-block.less │ │ ├── navbar-bottom.less │ │ ├── orange.less │ │ ├── owl-carousel.less │ │ ├── page-404.less │ │ ├── page-category.less │ │ ├── page-checkout.less │ │ ├── page-detail.less │ │ ├── pagination.less │ │ ├── pink.less │ │ ├── quantity-button.less │ │ ├── radio-button.less │ │ ├── red.less │ │ ├── responsive.less │ │ ├── ribbon.less │ │ ├── scrolltop.less │ │ ├── select-picker.less │ │ ├── sidebar.less │ │ ├── slider.less │ │ ├── star-rating.less │ │ ├── sub-footer.less │ │ ├── variables.less │ │ └── view-switcher.less ├── react │ └── bookstore │ │ ├── README.md │ │ ├── app.js │ │ ├── package.json │ │ └── public │ │ ├── .babelrc │ │ ├── App.js │ │ ├── assets │ │ ├── css │ │ │ ├── animate.min.css │ │ │ ├── blue.css │ │ │ ├── bootstrap-select.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── custom.css │ │ │ ├── dark-green.css │ │ │ ├── elegant-fonts.css │ │ │ ├── font-awesome.min.css │ │ │ ├── green.css │ │ │ ├── jquery-ui.min.css │ │ │ ├── main.css │ │ │ ├── navy.css │ │ │ ├── orange.css │ │ │ ├── owl.carousel.css │ │ │ ├── owl.transitions.css │ │ │ ├── pink.css │ │ │ └── red.css │ │ ├── filters.svg │ │ ├── fonts │ │ │ ├── ElegantIcons.eot │ │ │ ├── ElegantIcons.svg │ │ │ ├── ElegantIcons.ttf │ │ │ ├── ElegantIcons.woff │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ ├── roboto-black.eot │ │ │ ├── roboto-black.svg │ │ │ ├── roboto-black.ttf │ │ │ └── roboto-black.woff │ │ ├── js │ │ │ ├── bootstrap-hover-dropdown.min.js │ │ │ ├── bootstrap-select.min.js │ │ │ ├── bootstrap.min.js │ │ │ ├── echo.min.js │ │ │ ├── jquery-1.12.0.min.js │ │ │ ├── jquery-ui.min.js │ │ │ ├── jquery.easing.min.js │ │ │ ├── lte-ie7.js │ │ │ ├── owl.carousel.min.js │ │ │ ├── scripts.js │ │ │ └── wow.min.js │ │ └── less │ │ │ ├── blue.less │ │ │ ├── book-cover.less │ │ │ ├── brand-carousel.less │ │ │ ├── breadcrumb-search-box.less │ │ │ ├── breadcrumb.less │ │ │ ├── button.less │ │ │ ├── carousel.less │ │ │ ├── color.less │ │ │ ├── dark-green.less │ │ │ ├── featured-block.less │ │ │ ├── footer.less │ │ │ ├── general.less │ │ │ ├── green.less │ │ │ ├── header.less │ │ │ ├── home-slider.less │ │ │ ├── index-dropdown.less │ │ │ ├── main-footer.less │ │ │ ├── main.less │ │ │ ├── megamenu.less │ │ │ ├── mixins.less │ │ │ ├── module-block.less │ │ │ ├── navbar-bottom.less │ │ │ ├── orange.less │ │ │ ├── owl-carousel.less │ │ │ ├── page-404.less │ │ │ ├── page-category.less │ │ │ ├── page-checkout.less │ │ │ ├── page-detail.less │ │ │ ├── pagination.less │ │ │ ├── pink.less │ │ │ ├── quantity-button.less │ │ │ ├── radio-button.less │ │ │ ├── red.less │ │ │ ├── responsive.less │ │ │ ├── ribbon.less │ │ │ ├── scrolltop.less │ │ │ ├── select-picker.less │ │ │ ├── sidebar.less │ │ │ ├── slider.less │ │ │ ├── star-rating.less │ │ │ ├── sub-footer.less │ │ │ ├── variables.less │ │ │ └── view-switcher.less │ │ ├── components │ │ ├── Author.js │ │ ├── AuthorsContainer.js │ │ ├── Book.js │ │ ├── BookTags.js │ │ ├── BooksContainer.js │ │ ├── Content.js │ │ ├── Header.js │ │ ├── Layout.js │ │ ├── NavForm.js │ │ ├── Navbar.js │ │ ├── Navmain.js │ │ └── Slider.js │ │ ├── dist │ │ └── bundle.js │ │ ├── index.html │ │ ├── pages │ │ ├── BookPage.js │ │ ├── HomePage.js │ │ └── SearchPage.js │ │ └── webpack.config.js ├── sveltekit │ └── bookstore │ │ ├── .gitignore │ │ ├── README.md │ │ ├── jsconfig.json │ │ ├── package.json │ │ ├── src │ │ ├── app.html │ │ ├── global.d.ts │ │ ├── hooks.js │ │ ├── lib │ │ │ ├── api │ │ │ │ └── cloudcms.js │ │ │ └── components │ │ │ │ ├── Author.svelte │ │ │ │ ├── AuthorsContainer.svelte │ │ │ │ ├── Book.svelte │ │ │ │ ├── BookTags.svelte │ │ │ │ ├── BooksContainer.svelte │ │ │ │ ├── Header.svelte │ │ │ │ ├── Navbar.svelte │ │ │ │ ├── Navmain.svelte │ │ │ │ ├── Slider.svelte │ │ │ │ ├── Tag.svelte │ │ │ │ └── TagsContainer.svelte │ │ └── routes │ │ │ ├── __layout.svelte │ │ │ ├── api │ │ │ ├── attachment │ │ │ │ └── [nodeId] │ │ │ │ │ └── [attachmentId].js │ │ │ ├── authors.js │ │ │ ├── book │ │ │ │ └── [slug].js │ │ │ ├── books.js │ │ │ └── tags.js │ │ │ ├── author │ │ │ └── [slug].svelte │ │ │ ├── authors.svelte │ │ │ ├── book │ │ │ └── [slug].svelte │ │ │ ├── books.svelte │ │ │ ├── index.svelte │ │ │ ├── tag │ │ │ └── [tag].svelte │ │ │ └── tags.svelte │ │ ├── static │ │ ├── css │ │ │ ├── animate.min.css │ │ │ ├── blue.css │ │ │ ├── bootstrap-select.min.css │ │ │ ├── bootstrap.min.css │ │ │ ├── custom.css │ │ │ ├── dark-green.css │ │ │ ├── elegant-fonts.css │ │ │ ├── font-awesome.min.css │ │ │ ├── green.css │ │ │ ├── jquery-ui.min.css │ │ │ ├── main.css │ │ │ ├── navy.css │ │ │ ├── orange.css │ │ │ ├── owl.carousel.css │ │ │ ├── owl.transitions.css │ │ │ ├── pink.css │ │ │ └── red.css │ │ ├── filters.svg │ │ ├── fonts │ │ │ ├── ElegantIcons.eot │ │ │ ├── ElegantIcons.svg │ │ │ ├── ElegantIcons.ttf │ │ │ ├── ElegantIcons.woff │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ ├── roboto-black.eot │ │ │ ├── roboto-black.svg │ │ │ ├── roboto-black.ttf │ │ │ └── roboto-black.woff │ │ ├── images │ │ │ ├── book-flat.png │ │ │ └── favicon.ico │ │ ├── js │ │ │ ├── bootstrap-hover-dropdown.min.js │ │ │ ├── bootstrap-select.min.js │ │ │ ├── bootstrap.min.js │ │ │ ├── echo.min.js │ │ │ ├── jquery-1.12.0.min.js │ │ │ ├── jquery-ui.min.js │ │ │ ├── jquery.easing.min.js │ │ │ ├── lte-ie7.js │ │ │ ├── owl.carousel.min.js │ │ │ ├── scripts.js │ │ │ └── wow.min.js │ │ └── less │ │ │ ├── blue.less │ │ │ ├── book-cover.less │ │ │ ├── brand-carousel.less │ │ │ ├── breadcrumb-search-box.less │ │ │ ├── breadcrumb.less │ │ │ ├── button.less │ │ │ ├── carousel.less │ │ │ ├── color.less │ │ │ ├── dark-green.less │ │ │ ├── featured-block.less │ │ │ ├── footer.less │ │ │ ├── general.less │ │ │ ├── green.less │ │ │ ├── header.less │ │ │ ├── home-slider.less │ │ │ ├── index-dropdown.less │ │ │ ├── main-footer.less │ │ │ ├── main.less │ │ │ ├── megamenu.less │ │ │ ├── mixins.less │ │ │ ├── module-block.less │ │ │ ├── navbar-bottom.less │ │ │ ├── orange.less │ │ │ ├── owl-carousel.less │ │ │ ├── page-404.less │ │ │ ├── page-category.less │ │ │ ├── page-checkout.less │ │ │ ├── page-detail.less │ │ │ ├── pagination.less │ │ │ ├── pink.less │ │ │ ├── quantity-button.less │ │ │ ├── radio-button.less │ │ │ ├── red.less │ │ │ ├── responsive.less │ │ │ ├── ribbon.less │ │ │ ├── scrolltop.less │ │ │ ├── select-picker.less │ │ │ ├── sidebar.less │ │ │ ├── slider.less │ │ │ ├── star-rating.less │ │ │ ├── sub-footer.less │ │ │ ├── variables.less │ │ │ └── view-switcher.less │ │ └── svelte.config.js └── vuejs │ └── bookstore │ ├── README.md │ ├── app.js │ ├── package.json │ └── public │ ├── App.vue │ ├── assets │ ├── css │ │ ├── animate.min.css │ │ ├── blue.css │ │ ├── bootstrap-select.min.css │ │ ├── bootstrap.min.css │ │ ├── custom.css │ │ ├── dark-green.css │ │ ├── elegant-fonts.css │ │ ├── font-awesome.min.css │ │ ├── green.css │ │ ├── jquery-ui.min.css │ │ ├── main.css │ │ ├── navy.css │ │ ├── orange.css │ │ ├── owl.carousel.css │ │ ├── owl.transitions.css │ │ ├── pink.css │ │ └── red.css │ ├── filters.svg │ ├── fonts │ │ ├── ElegantIcons.eot │ │ ├── ElegantIcons.svg │ │ ├── ElegantIcons.ttf │ │ ├── ElegantIcons.woff │ │ ├── FontAwesome.otf │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── roboto-black.eot │ │ ├── roboto-black.svg │ │ ├── roboto-black.ttf │ │ └── roboto-black.woff │ ├── js │ │ ├── bootstrap-hover-dropdown.min.js │ │ ├── bootstrap-select.min.js │ │ ├── bootstrap.min.js │ │ ├── echo.min.js │ │ ├── jquery-1.12.0.min.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.easing.min.js │ │ ├── lte-ie7.js │ │ ├── owl.carousel.min.js │ │ ├── scripts.js │ │ └── wow.min.js │ └── less │ │ ├── blue.less │ │ ├── book-cover.less │ │ ├── brand-carousel.less │ │ ├── breadcrumb-search-box.less │ │ ├── breadcrumb.less │ │ ├── button.less │ │ ├── carousel.less │ │ ├── color.less │ │ ├── dark-green.less │ │ ├── featured-block.less │ │ ├── footer.less │ │ ├── general.less │ │ ├── green.less │ │ ├── header.less │ │ ├── home-slider.less │ │ ├── index-dropdown.less │ │ ├── main-footer.less │ │ ├── main.less │ │ ├── megamenu.less │ │ ├── mixins.less │ │ ├── module-block.less │ │ ├── navbar-bottom.less │ │ ├── orange.less │ │ ├── owl-carousel.less │ │ ├── page-404.less │ │ ├── page-category.less │ │ ├── page-checkout.less │ │ ├── page-detail.less │ │ ├── pagination.less │ │ ├── pink.less │ │ ├── quantity-button.less │ │ ├── radio-button.less │ │ ├── red.less │ │ ├── responsive.less │ │ ├── ribbon.less │ │ ├── scrolltop.less │ │ ├── select-picker.less │ │ ├── sidebar.less │ │ ├── slider.less │ │ ├── star-rating.less │ │ ├── sub-footer.less │ │ ├── variables.less │ │ └── view-switcher.less │ ├── components │ ├── Author.vue │ ├── AuthorList.vue │ ├── Book.vue │ ├── BookList.vue │ ├── Header.vue │ └── HeroBook.vue │ ├── dist │ ├── 4699347fadb2623ca26146a72c2abe76.png │ ├── 60f62bc8e9ee1df35780b8f96753f433.png │ └── index.js │ ├── index.html │ ├── index.js │ ├── views │ ├── BookView.vue │ ├── Main.vue │ └── SearchView.vue │ └── webpack.config.js └── webhook-server ├── README.md ├── package.json └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | */node_modules/ 3 | target/ 4 | */target/ 5 | build/ 6 | */build/ 7 | 8 | *.iml 9 | .idea 10 | 11 | # vim 12 | *.swp 13 | 14 | # don't check in gitana.json files 15 | gitana.json 16 | gitana.json* 17 | */gitana.json 18 | 19 | composer.lock 20 | composer.phar 21 | 22 | customer.* 23 | 24 | sessions 25 | sessions/*.json 26 | 27 | *.temp 28 | _temp 29 | 30 | target 31 | 32 | # license files 33 | *.lic 34 | 35 | # local binary 36 | .DS_Store 37 | 38 | _old 39 | 40 | package-lock.json -------------------------------------------------------------------------------- /code-samples/drivers/csharp/sample/Program.cs: -------------------------------------------------------------------------------- 1 | using CloudCMS; 2 | using Xunit; 3 | 4 | IPlatform platform = await CloudCMSDriver.ConnectAsync("gitana.json"); 5 | 6 | IRepository repository = await platform.ReadRepositoryAsync("4f2b3fc5132e02668ffb"); 7 | if (repository == null) 8 | { 9 | throw new SystemException("Unable to read repository: 4f2b3fc5132e02668ffb"); 10 | } 11 | 12 | IBranch branch = await repository.ReadBranchAsync("master"); 13 | if (branch == null) 14 | { 15 | throw new SystemException("Unable to read master branch"); 16 | } 17 | 18 | List results = await branch.SearchNodesAsync("test"); 19 | Console.WriteLine("The size was: " + results.Count); 20 | -------------------------------------------------------------------------------- /code-samples/drivers/csharp/sample/README.md: -------------------------------------------------------------------------------- 1 | # Gitana Platform - C# sample 2 | 3 | Connects to the Gitana platform and retrieves data. 4 | 5 | ## Run 6 | 7 | 1. Create gitana.json in this folder 8 | 2. Set the parameter of the ReadRepositoryAsync method call line #6 of Program.cs to the repository id of your project's content repository 9 | 3. run 'dotnet build' 10 | 4. run 'dotnet run' 11 | 12 | ## Further Reading 13 | 14 | Please check out the following for more information. 15 | 16 | [Gitana - C# Cookbook](https://gitana.io/documentation/gitana/4.0/developers/cookbooks/csharp.html) 17 | [Gitana - C# Driver](https://gitana.io/documentation/gitana/4.0/developers/drivers/csharp.html) 18 | -------------------------------------------------------------------------------- /code-samples/drivers/csharp/sample/sample.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net6.0 6 | enable 7 | enable 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /code-samples/drivers/java/sample/src/main/resources/gitana-environments.properties: -------------------------------------------------------------------------------- 1 | # override to point to localhost for test 2 | gitana.environment.default.uri=https://api.cloudcms.com 3 | #gitana.environment.default.uri=http://localhost:63750 4 | -------------------------------------------------------------------------------- /code-samples/drivers/java/sample/src/test/java/GlobalAccessTest.java: -------------------------------------------------------------------------------- 1 | import junit.framework.TestCase; 2 | import org.junit.Test; 3 | 4 | public class GlobalAccessTest extends TestCase { 5 | @Test 6 | public void testGlobalAccess() throws Exception { 7 | TestGlobalAccess testGlobalAccess = new TestGlobalAccess(); 8 | testGlobalAccess.run(); 9 | } 10 | } -------------------------------------------------------------------------------- /code-samples/drivers/java/sample/src/test/java/TestNodeRead.java: -------------------------------------------------------------------------------- 1 | import junit.framework.TestCase; 2 | import org.junit.Test; 3 | 4 | public class TestNodeRead extends TestCase { 5 | @Test 6 | public void testNodeRead1() throws Exception { 7 | TestNodeRead testNodeRead = new TestNodeRead(); 8 | testNodeRead.run(); 9 | assert(true); 10 | } 11 | } -------------------------------------------------------------------------------- /code-samples/drivers/java/sample/src/test/java/Tests.java: -------------------------------------------------------------------------------- 1 | import com.fasterxml.jackson.databind.node.ObjectNode; 2 | import junit.framework.TestCase; 3 | import org.gitana.platform.client.Driver; 4 | import org.gitana.platform.client.node.BaseNode; 5 | import org.gitana.platform.client.node.Node; 6 | import org.gitana.platform.client.support.DriverContext; 7 | import org.gitana.platform.client.support.Remote; 8 | import org.gitana.platform.client.support.Response; 9 | import org.gitana.platform.support.QueryBuilder; 10 | import org.gitana.platform.support.ResultMap; 11 | import org.junit.Test; 12 | 13 | import java.io.InputStream; 14 | 15 | public class Tests extends TestCase { 16 | @Test 17 | public void testGitana() throws Exception { 18 | TestGitana testGitana = new TestGitana(); 19 | testGitana.run(); 20 | } 21 | } -------------------------------------------------------------------------------- /code-samples/drivers/java/sample/src/test/java/Tests2.java: -------------------------------------------------------------------------------- 1 | import junit.framework.TestCase; 2 | import org.junit.Test; 3 | 4 | public class Tests2 extends TestCase { 5 | @Test 6 | public void testFileFolder() throws Exception { 7 | TestNodeRead testFileFolder = new TestNodeRead(); 8 | testFileFolder.run(); 9 | } 10 | } -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/content/article1.json: -------------------------------------------------------------------------------- 1 | { 2 | "example": "helloworld", 3 | "title": "hello world", 4 | "body": "hello world is a simple program that demonstrates a roundtrip." 5 | } -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/content/article2.json: -------------------------------------------------------------------------------- 1 | { 2 | "example": "helloworld", 3 | "title": "foobar", 4 | "body": "foobar is a common placeholder name for a variable." 5 | } -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/content/article3.json: -------------------------------------------------------------------------------- 1 | { 2 | "example": "helloworld", 3 | "title": "kludge", 4 | "body": "kludge is a word that suggests that a solution is clumsy" 5 | } -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "helloworld-express", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node app.js" 7 | }, 8 | "dependencies": { 9 | "express": "^4.17.3", 10 | "gitana": "*", 11 | "jade": "^0.29.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/public/stylesheets/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding: 50px; 3 | font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; 4 | } 5 | 6 | a { 7 | color: #00B7FF; 8 | } 9 | 10 | div.list { 11 | max-width: 40em; 12 | } 13 | 14 | p.did { 15 | float: right; 16 | font-size: smaller; 17 | color: grey; 18 | } 19 | 20 | p.article { 21 | padding: 0 0 0 1em; 22 | } -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/views/error.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1= message 5 | h2= error.status 6 | pre #{error.stack} 7 | -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/views/index.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1!= "View Content Items" 5 | p We found #{nodes.length} content items. 6 | each node in nodes 7 | div 8 | h2= node.title 9 | p= node.body 10 | -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/views/layout.jade: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | title= title 5 | link(rel='stylesheet', href='/stylesheets/style.css') 6 | body 7 | div 8 | a(href='/teardown') Teardown example Content Items 9 | br 10 | a(href='/setup') Create new Content Items 11 | br 12 | a(href='/') View Content Items 13 | br 14 | block content -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/views/setup.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1!= "Create Content Items" 5 | p We created #{nodes.length} content items. 6 | p The following content items were created: 7 | ul 8 | each node in nodes 9 | li= node.title 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /code-samples/drivers/nodejs/sample/views/teardown.jade: -------------------------------------------------------------------------------- 1 | extends layout 2 | 3 | block content 4 | h1!= "Tear down Content Items" 5 | p We deleted #{nodes.length} content items. 6 | p The following content items were deleted: 7 | ul 8 | each node in nodes 9 | li= node.title 10 | 11 | -------------------------------------------------------------------------------- /code-samples/drivers/php/sample/author.json: -------------------------------------------------------------------------------- 1 | { "_type": "store:author", "title": "J.K.Rowling" } 2 | -------------------------------------------------------------------------------- /code-samples/drivers/php/sample/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cloudcms-sdk/sample-connect", 3 | "description": "Sample Cloud CMS PHP Project", 4 | "license": "Apache 2.0", 5 | "type": "project", 6 | "require": { 7 | "php": ">=5.5.9", 8 | "league/oauth2-client": "^1.3" 9 | } 10 | } -------------------------------------------------------------------------------- /code-samples/drivers/php/sample/config.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /code-samples/drivers/php/sample/j.k.rowling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/code-samples/drivers/php/sample/j.k.rowling.jpg -------------------------------------------------------------------------------- /code-samples/drivers/php/sample/readNode.php: -------------------------------------------------------------------------------- 1 | getAuthenticatedRequest( 13 | 'GET', 14 | $url, 15 | $accessToken 16 | ); 17 | 18 | $response = $provider->getResponse($request); 19 | 20 | echo "\n"; 21 | 22 | echo "The _doc of node is - " . $response[_doc] ."\n"; 23 | 24 | echo "The Node is of type - " . $response[_type] ."\n"; 25 | 26 | echo "The title of node is - " . $response[title] ."\n"; 27 | 28 | echo "Body - " . $response[body] ."\n"; 29 | ?> 30 | 31 | 32 | -------------------------------------------------------------------------------- /code-samples/drivers/python3/README.md: -------------------------------------------------------------------------------- 1 | # Gitana Platform - Python 3 sample 2 | 3 | Sample of using Gitana Python driver. 4 | 5 | ## Usage 6 | 1. cd sample 7 | 2. run `pip install cloudcms` 8 | 3. run python3 sample.py 9 | 10 | ## Further Reading 11 | 12 | Please check out the following for more information. 13 | 14 | [Gitana - Python Cookbook](https://gitana.io/documentation/gitana/4.0/developers/cookbooks/python.html) 15 | [Gitana - Python Driver](https://gitana.io/documentation/gitana/4.0/developers/drivers/python.html) 16 | -------------------------------------------------------------------------------- /code-samples/drivers/ruby/README.md: -------------------------------------------------------------------------------- 1 | # Gitana Platform - Ruby sample 2 | 3 | Please check out the Ruby cookbook! 4 | 5 | [Gitana Platform - Ruby Cookbook](https://gitana.io/documentation/gitana/4.0/developers/cookbooks/ruby.html) 6 | 7 | and 8 | 9 | [Gitana Platform - Ruby Driver](https://gitana.io/documentation/gitana/4.0/developers/drivers/ruby.html) 10 | 11 | # Usage 12 | 13 | 1. cd sample 14 | 2. create your gitana.json file in this folder 15 | 3. run 'bundle install' 16 | 4. run 'ruby sample.rb' 17 | 18 | ## Further Reading 19 | 20 | Please check out the following for more information. 21 | 22 | [Gitana - Ruby Cookbook](https://gitana.io/documentation/gitana/4.0/developers/cookbooks/ruby.html) 23 | [Gitana - Ruby Driver](https://gitana.io/documentation/gitana/4.0/developers/drivers/ruby.html) 24 | -------------------------------------------------------------------------------- /code-samples/drivers/ruby/sample/Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | gem 'cloudcms' 4 | -------------------------------------------------------------------------------- /code-samples/http/curl/README.md: -------------------------------------------------------------------------------- 1 | # Gitana API via cURL 2 | 3 | This folder provides a few sample scripts that show you how to use cURL to retrieve content from Cloud CMS. 4 | 5 | The scripts here are written in bash and use cURL to connect to Cloud CMS and pull down content. 6 | This demonstrates how to do the OAuth 2.0 handshake as well as pass the access token to the Cloud CMS API. 7 | 8 | These sample scripts utilize JQ to parse the JSON response within bash. 9 | You will need to install this ahead of trying these out. 10 | 11 | https://stedolan.github.io/jq/ 12 | 13 | For more information, please visit: 14 | 15 | [Using cURL with the Gitana API](https://gitana.io/documentation/gitana/4.0/developers/frameworks/curl.html) 16 | -------------------------------------------------------------------------------- /code-samples/http/curl/assets/burns.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/code-samples/http/curl/assets/burns.jpg -------------------------------------------------------------------------------- /code-samples/http/curl/assets/miyagi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/code-samples/http/curl/assets/miyagi.jpg -------------------------------------------------------------------------------- /code-samples/http/curl/assets/miyagi.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Kesuke Miyagi", 3 | "students": [ 4 | "Daniel LaRusso" 5 | ] 6 | } -------------------------------------------------------------------------------- /code-samples/http/curl/list-domains.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BASE_URL=https://api.cloudcms.com 4 | 5 | # plug in your API keys here 6 | CLIENT_KEY= 7 | CLIENT_SECRET= 8 | USERNAME= 9 | PASSWORD= 10 | 11 | # request the access token 12 | ACCESS_TOKEN_REQUEST_RESPONSE=$(curl -X POST -u "$CLIENT_KEY:$CLIENT_SECRET" --data-urlencode "grant_type=password" --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "$BASE_URL/oauth/token") 13 | ACCESS_TOKEN=$(echo $ACCESS_TOKEN_REQUEST_RESPONSE | jq -r '.access_token') 14 | 15 | # pull back a list of domains 16 | DOMAINS_JSON=$(curl -v -X GET -H "Content-Type: application/json" -H "Authorization: bearer $ACCESS_TOKEN" "$BASE_URL/domains") 17 | 18 | # show repositories json 19 | echo $DOMAINS_JSON 20 | echo 21 | 22 | -------------------------------------------------------------------------------- /code-samples/http/curl/list-repositories.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BASE_URL=https://api.cloudcms.com 4 | 5 | # plug in your API keys here 6 | CLIENT_KEY= 7 | CLIENT_SECRET= 8 | USERNAME= 9 | PASSWORD= 10 | 11 | # request the access token 12 | ACCESS_TOKEN_REQUEST_RESPONSE=$(curl -X POST -u "$CLIENT_KEY:$CLIENT_SECRET" --data-urlencode "grant_type=password" --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "$BASE_URL/oauth/token") 13 | ACCESS_TOKEN=$(echo $ACCESS_TOKEN_REQUEST_RESPONSE | jq -r '.access_token') 14 | 15 | # pull back a list of repositories 16 | REPOSITORIES_JSON=$(curl -v -X GET -H "Content-Type: application/json" -H "Authorization: bearer $ACCESS_TOKEN" "$BASE_URL/repositories") 17 | 18 | # show repositories json 19 | echo $REPOSITORIES_JSON 20 | echo 21 | 22 | -------------------------------------------------------------------------------- /code-samples/http/curl/read-node.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | BASE_URL=https://api.cloudcms.com 4 | 5 | # plug in your API keys here 6 | CLIENT_KEY= 7 | CLIENT_SECRET= 8 | USERNAME= 9 | PASSWORD= 10 | 11 | # plug in your node information here 12 | REPOSITORY_ID= 13 | BRANCH_ID=master 14 | NODE_ID= 15 | 16 | # request the access token 17 | ACCESS_TOKEN_REQUEST_RESPONSE=$(curl -X POST -u "$CLIENT_KEY:$CLIENT_SECRET" --data-urlencode "grant_type=password" --data-urlencode "username=$USERNAME" --data-urlencode "password=$PASSWORD" "$BASE_URL/oauth/token") 18 | ACCESS_TOKEN=$(echo $ACCESS_TOKEN_REQUEST_RESPONSE | jq -r '.access_token') 19 | 20 | # pull back the node json 21 | NODE_JSON=$(curl -v -X GET -H "Content-Type: application/json" -H "Authorization: bearer $ACCESS_TOKEN" "$BASE_URL/repositories/$REPOSITORY_ID/branches/$BRANCH_ID/nodes/$NODE_ID") 22 | 23 | # show node json 24 | echo $NODE_JSON 25 | echo 26 | 27 | -------------------------------------------------------------------------------- /code-samples/http/postman/README.md: -------------------------------------------------------------------------------- 1 | # Gitana API via Postman / Newman 2 | 3 | The *postman* folder contains a Postman **Collection** of example API calls. 4 | Including automatic authentication. 5 | 6 | For more information, please visit: 7 | 8 | [Using Postman with the Gitana API](https://gitana.io/documentation/gitana/4.0/developers/frameworks/postman.html) 9 | 10 | ## Run with Postman 11 | 12 | Steps: 13 | 14 | 1. Open Postman 15 | 2. Import the collection cloudcms-api.json 16 | 3. Set Authentication variables in Postman 17 | 4. Run the collection in Postman 18 | 19 | ## Run using newman 20 | 21 | Please read through: 22 | https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/ 23 | 24 | Steps: 25 | 26 | 1. Edit env.json with data from gitana.json 27 | 2. run 'newman run cloud-cms.json -g env.json' 28 | 29 | -------------------------------------------------------------------------------- /code-samples/middleware/auth-sample/app.js: -------------------------------------------------------------------------------- 1 | const server = require("cloudcms-server/server"); 2 | 3 | const gitanaConfig = require("./gitana.json"); 4 | 5 | // set which example authentication strategy to use 6 | var example = "jwt"; 7 | //var example = "session"; 8 | //var example = "facebook"; 9 | 10 | // logging on startup 11 | server.report(function(callback) { 12 | console.log("Web Server: http://localhost:" + process.env.PORT); 13 | console.log(""); 14 | callback(); 15 | }); 16 | 17 | // register some routes 18 | server.routes(function(app, callback) { 19 | require("./routes/auth-server")(app, gitanaConfig); 20 | require("./routes/resource-server")(app, gitanaConfig); 21 | callback(); 22 | }); 23 | 24 | // to run the server using JWT, uncomment this 25 | require("./scenarios/" + example + "/setup")(server); 26 | -------------------------------------------------------------------------------- /code-samples/middleware/auth-sample/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "appserver-example-auth", 3 | "description": "Cloud CMS Application Server - Authentication Examples", 4 | "version": "0.0.1", 5 | "private": true, 6 | "dependencies": { 7 | "cloudcms-server": "0.9.254", 8 | "jsonwebtoken": "^8.5.1" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /code-samples/middleware/sample/README: -------------------------------------------------------------------------------- 1 | # cloudcms-server sample 2 | 3 | This is a sample of using https://github.com/gitana/cloudcms-server 4 | 5 | See documentation: https://www.cloudcms.com/documentation/appserver.html 6 | 7 | 1. Add your `gitana.json` file. You can get it by: Creating a sample project > Manage Project > API Keys 8 | 2. Run `npm install` 9 | 3. Run `npm start` to start the app server. 10 | 4. Navigate to localhost:2999 11 | -------------------------------------------------------------------------------- /code-samples/middleware/sample/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "helloworld-express", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node app.js" 7 | }, 8 | "dependencies": { 9 | "cloudcms-server": "0.9.254" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/activemq1/activemq.env: -------------------------------------------------------------------------------- 1 | ACTIVEMQ_NAME=amq 2 | ACTIVEMQ_REMOVE_DEFAULT_ACCOUNT=True 3 | ACTIVEMQ_ADMIN_LOGIN=admin 4 | ACTIVEMQ_ADMIN_PASSWORD=admin 5 | -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/activemq2/activemq.env: -------------------------------------------------------------------------------- 1 | ACTIVEMQ_NAME=amq 2 | ACTIVEMQ_REMOVE_DEFAULT_ACCOUNT=True 3 | ACTIVEMQ_ADMIN_LOGIN=admin 4 | ACTIVEMQ_ADMIN_PASSWORD=admin 5 | -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/api1/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM cloudcms/api-server:3.2.79 2 | 3 | MAINTAINER Cloud CMS 4 | 5 | # copy the custom properties and classes into place 6 | # this includes the license file in the ./classes/gitana/license directory 7 | COPY classes /opt/tomcat/shared/classes/ 8 | -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/api1/api.env: -------------------------------------------------------------------------------- 1 | JAVA_OPTS=-Xmx2048m -server -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -Dsun.net.inetaddr.ttl=60 -Djava.net.preferIPv4Stack=true 2 | -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/api1/classes/gitana/license/drop-your-license-file-here.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/containers/32/docker-compose/mongodb-replicaset/api1/classes/gitana/license/drop-your-license-file-here.txt -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/api2/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM cloudcms/api-server:3.2.79 2 | 3 | MAINTAINER Cloud CMS 4 | 5 | # copy the custom properties and classes into place 6 | # this includes the license file in the ./classes/gitana/license directory 7 | COPY classes /opt/tomcat/shared/classes/ 8 | -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/api2/api.env: -------------------------------------------------------------------------------- 1 | JAVA_OPTS=-Xmx2048m -server -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -Dsun.net.inetaddr.ttl=60 -Djava.net.preferIPv4Stack=true 2 | -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/api2/classes/gitana/license/drop-your-license-file-here.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/containers/32/docker-compose/mongodb-replicaset/api2/classes/gitana/license/drop-your-license-file-here.txt -------------------------------------------------------------------------------- /containers/32/docker-compose/mongodb-replicaset/init-replicaset.sh: -------------------------------------------------------------------------------- 1 | # initial replica set 2 | mongo localhost:27027 --eval 'rs.initiate( {_id : "cloudcms-replicaset",members: [ { _id: 0, host: "mongodb1:27017" },{ _id: 1, host: "mongodb2:27017" },{ _id: 2, host: "mongodb3:27017" }]})' -------------------------------------------------------------------------------- /containers/32/ecs/simple/README.md: -------------------------------------------------------------------------------- 1 | # Gitana - Simple Amazon ECS Example 2 | 3 | This directory provides sample configuration files for how you might set up Gitana 3.2 to operate within 4 | Amazon ECS. 5 | 6 | For more information, please see: 7 | 8 | https://gitana.io/documentation/gitana/3.2/guide/guide/docker/container-frameworks/ecs.html -------------------------------------------------------------------------------- /containers/32/ecs/simple/upload.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # copy the config files to s3 4 | aws s3 rm --recursive s3://gitana-fgt/config 5 | aws s3 sync config s3://gitana-fgt/config 6 | -------------------------------------------------------------------------------- /containers/32/kubernetes/clustered-workers/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ui 4 | kubectl delete -f ui.yaml 5 | 6 | # redis 7 | kubectl delete -f redis.yaml 8 | 9 | # api (web) 10 | kubectl delete -f api.yaml 11 | 12 | # api (worker) 13 | kubectl delete -f api-worker.yaml 14 | 15 | # es 16 | kubectl delete -f es.yaml 17 | 18 | # mongodb 19 | kubectl delete -f mongodb.yaml 20 | 21 | # av 22 | kubectl delete -f av.yaml 23 | 24 | # activemq 25 | kubectl delete -f activemq.yaml 26 | kubectl delete configmap activemq-xml --ignore-not-found 27 | 28 | # secrets 29 | kubectl delete secret gitana-env 30 | kubectl delete secret gitana-api-files 31 | -------------------------------------------------------------------------------- /containers/32/kubernetes/clustered/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ui 4 | kubectl delete -f ui.yaml 5 | 6 | # redis 7 | kubectl delete -f redis.yaml 8 | 9 | # api 10 | kubectl delete -f api.yaml 11 | 12 | # es 13 | kubectl delete -f es.yaml 14 | 15 | # mongodb 16 | kubectl delete -f mongodb.yaml 17 | 18 | # av 19 | kubectl delete -f av.yaml 20 | 21 | # activemq 22 | kubectl delete -f activemq.yaml 23 | kubectl delete configmap activemq-xml --ignore-not-found 24 | 25 | # secrets 26 | kubectl delete secret gitana-env 27 | kubectl delete secret gitana-api-files 28 | -------------------------------------------------------------------------------- /containers/32/kubernetes/simple/README.md: -------------------------------------------------------------------------------- 1 | # Gitana - Simple Kubernetes Example 2 | 3 | This directory provides sample configuration files for how you might set up Gitana 3.2 to operate within 4 | Kubernetes. 5 | 6 | This example shows how to start things up in the simplest way -- without clustering or redundancy. 7 | 8 | ## NOT FOR PRODUCTION USE 9 | 10 | These examples are provided for reference only. They are for use within a DEVELOPMENT environment solely 11 | and are NOT FOR PRODUCTION USE. 12 | 13 | For more information, please see: 14 | 15 | https://gitana.io/documentation/gitana/3.2/guide/guide/docker/container-frameworks/kubernetes.html -------------------------------------------------------------------------------- /containers/32/kubernetes/simple/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ui 4 | kubectl delete -f ui.yaml 5 | 6 | # api 7 | kubectl delete -f api.yaml 8 | 9 | # es 10 | kubectl delete -f es.yaml 11 | 12 | # mongodb 13 | kubectl delete -f mongodb.yaml 14 | 15 | # av 16 | kubectl delete -f av.yaml 17 | 18 | # activemq 19 | kubectl delete -f activemq.yaml 20 | kubectl delete configmap activemq-xml --ignore-not-found 21 | 22 | # secrets 23 | kubectl delete secret gitana-env 24 | kubectl delete secret gitana-api-files 25 | -------------------------------------------------------------------------------- /http-deployment-receiver/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-http-deployment-receiver", 3 | "description": "Custom HTTP Deployment Receiver for Cloud CMS", 4 | "version": "1.0.0", 5 | "private": true, 6 | "dependencies": { 7 | "cloudcms-http-deployment-receiver": "1.0.2", 8 | "fs-extra": "^7.0.0", 9 | "tmp": "0.0.33" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packager/content-model/cloudcms-login-template.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cloudcms init --ui https://cloudcms-subdomain.cloudcms.net --api https://api.cloudcms.com --username myName --password myPassword -------------------------------------------------------------------------------- /packager/content-model/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "content-model", 3 | "version": "1.0.0", 4 | "description": "package content model", 5 | "main": "package.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "cloudcms-packager": "^1.1.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_attachment-array/forms/master.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Default Form", 3 | "engineId": "alpaca1", 4 | "fields": { 5 | "file": { 6 | "label": "array of attachments", 7 | "type": "attachment-picker", 8 | "items": { 9 | "type": "text" 10 | } 11 | } 12 | }, 13 | "_type": "n:form" 14 | } 15 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_attachment-array/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Attachment Array", 3 | "type": "object", 4 | "properties": { 5 | "files": { 6 | "title": "Files", 7 | "type": "array", 8 | "items": { 9 | "type": "object" 10 | }, 11 | "_attachment": { 12 | "id": "default" 13 | } 14 | } 15 | }, 16 | "_parent": "n:node", 17 | "description": "demo _attachment property", 18 | "$schema": "http://json-schema.org/draft-04/schema#", 19 | "_qname": "custom:attachment-array1", 20 | "_type": "d:type" 21 | } 22 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_attachment/forms/master.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Default Form", 3 | "engineId": "alpaca1", 4 | "fields": { 5 | "file": { 6 | "label": "File Attachment", 7 | "type": "attachment-picker" 8 | } 9 | }, 10 | "_type": "n:form" 11 | } 12 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_attachment/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Attachment", 3 | "type": "object", 4 | "properties": { 5 | "file": { 6 | "type": "object", 7 | "title": "File Attachment", 8 | "_attachment": { 9 | "id": "default" 10 | } 11 | } 12 | }, 13 | "_parent": "n:node", 14 | "description": "demo _attachment property", 15 | "$schema": "http://json-schema.org/draft-04/schema#", 16 | "_qname": "custom:attachment1", 17 | "_type": "d:type" 18 | } 19 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_attachment1/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Attachment", 3 | "type": "object", 4 | "properties": { 5 | "file": { 6 | "type": "object", 7 | "title": "File", 8 | "_attachment": { 9 | "id": "default" 10 | } 11 | } 12 | }, 13 | "_parent": "n:node", 14 | "description": "demo _attachment property", 15 | "$schema": "http://json-schema.org/draft-04/schema#", 16 | "_qname": "custom:attachment1", 17 | "_type": "d:type" 18 | } 19 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_datetypes/forms/master.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Default Form", 3 | "engineId": "alpaca1", 4 | "fields": { 5 | "title": { 6 | "type": "text", 7 | "label": "Title" 8 | }, 9 | "date1": { 10 | "type": "date", 11 | "label": "Date1", 12 | "dateFormat": "YYYY-MM-DD" 13 | }, 14 | "date2": { 15 | "type": "date", 16 | "label": "Date1", 17 | "dateFormat": "YYYY-MM-DD" 18 | }, 19 | "date3": { 20 | "type": "date", 21 | "label": "Date1", 22 | "dateFormat": "YYYY-MM-DD" 23 | } 24 | }, 25 | "_form_key": "default", 26 | "_type": "n:form" 27 | } 28 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_datetypes/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "date-types", 3 | "type": "object", 4 | "properties": { 5 | "date1": { 6 | "type": "string" 7 | }, 8 | "date2": { 9 | "type": "string", 10 | "format": "date" 11 | }, 12 | "date3": { 13 | "type": "string", 14 | "format": "date-time" 15 | } 16 | }, 17 | "_parent": "n:node", 18 | "description": "custom:datetypes", 19 | "$schema": "http://json-schema.org/draft-04/schema#", 20 | "_qname": "custom:datetypes", 21 | "_type": "d:type" 22 | } 23 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_inherit1-feature/forms/master.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "inherit1", 3 | "engineId": "alpaca1", 4 | "fields": { 5 | "prop1": { 6 | "type": "text", 7 | "title": "prop1", 8 | "required": true 9 | } 10 | }, 11 | "_type": "n:form", 12 | "description": "" 13 | } 14 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_inherit1-feature/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "inherit1-feature", 3 | "description": "", 4 | "type": "object", 5 | "properties": { 6 | "prop1": { 7 | "type": "string", 8 | "title": "prop1", 9 | "required": true 10 | } 11 | }, 12 | "_qname": "custom:inherit1-feature", 13 | "_type": "d:feature" 14 | } 15 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_inherit1/forms/master.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "inherit1", 3 | "engineId": "alpaca1", 4 | "fields": { 5 | "title": { 6 | "type": "text", 7 | "label": "Title", 8 | "required": true 9 | }, 10 | "prop1": { 11 | "type": "text", 12 | "label": "prop1", 13 | "required": true 14 | } 15 | }, 16 | "description": "", 17 | "_type": "n:form" 18 | } 19 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_inherit1/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "inherit1", 3 | "description": "", 4 | "type": "object", 5 | "_parent": "n:node", 6 | "properties": {}, 7 | "mandatoryFeatures": { 8 | "custom:inherit1-feature": {} 9 | }, 10 | "_qname": "custom:inherit1", 11 | "_type": "d:type" 12 | } 13 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_reference1/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "shared", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "type": "string", 7 | "title": "Title" 8 | }, 9 | "preview": { 10 | "$ref": "qname://custom/reference1#/definitions/link-target" 11 | }, 12 | "fromType1": { 13 | "$ref": "qname://custom/type1" 14 | }, 15 | "fromFeature": { 16 | "$ref": "qname://custom/reference1a" 17 | } 18 | }, 19 | "_parent": "n:node", 20 | "description": "custom:shared", 21 | "$schema": "http://json-schema.org/draft-04/schema#", 22 | "definitions": { 23 | "link-target": { 24 | "type": "string", 25 | "title": "link-target", 26 | "enum": [ 27 | "BLANK", 28 | "SELF", 29 | "PARENT", 30 | "TOP" 31 | ] 32 | } 33 | }, 34 | "_qname": "custom:reference1", 35 | "_type": "d:type" 36 | } 37 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_reference1a/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "reference1a", 3 | "type": "object", 4 | "properties": { 5 | "testFromReference1a": { 6 | "type": "string" 7 | } 8 | }, 9 | "description": "custom:reference1a", 10 | "$schema": "http://json-schema.org/draft-04/schema#", 11 | "_qname": "custom:reference1a", 12 | "_type": "d:feature" 13 | } 14 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_reference2/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "link", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "type": "string", 7 | "title": "Title" 8 | }, 9 | "perview": { 10 | "$ref": "qname://custom/reference1#/definitions/link" 11 | } 12 | }, 13 | "_parent": "n:node", 14 | "description": "custom:link", 15 | "$schema": "http://json-schema.org/draft-04/schema#", 16 | "definitions": { 17 | "link": { 18 | "type": "object", 19 | "title": "link", 20 | "description": "link", 21 | "properties": { 22 | "url": { 23 | "title": "Url", 24 | "type": "string" 25 | }, 26 | "ratget": { 27 | "$ref": "qname://custom/reference1#/definitions/link-target" 28 | } 29 | } 30 | } 31 | }, 32 | "_qname": "custom:reference2", 33 | "_type": "d:type" 34 | } 35 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_reference3/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "page", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "type": "string", 7 | "title": "Title" 8 | }, 9 | "one-link": { 10 | "$ref": "qname://custom/reference1", 11 | "type": "object" 12 | }, 13 | "another-link": { 14 | "$ref": "qname://custom/reference1", 15 | "type": "object" 16 | } 17 | }, 18 | "_parent": "n:node", 19 | "description": "custom:page", 20 | "$schema": "http://json-schema.org/draft-04/schema#", 21 | "_qname": "custom:reference3", 22 | "_type": "d:type" 23 | } 24 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_tabbed-view/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "tabbed-view", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "type": "string" 7 | }, 8 | "text1": { 9 | "type": "string" 10 | }, 11 | "text2": { 12 | "type": "string" 13 | }, 14 | "text3": { 15 | "type": "string" 16 | }, 17 | "text4": { 18 | "type": "string" 19 | } 20 | }, 21 | "_parent": "n:node", 22 | "_qname": "custom:tabbed-view", 23 | "description": "custom:tabbed-view", 24 | "$schema": "http://json-schema.org/draft-04/schema#", 25 | "_type": "d:type" 26 | } 27 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_type1/forms/master.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Default Form", 3 | "engineId": "alpaca1", 4 | "fields": { 5 | "title": { 6 | "type": "text", 7 | "label": "Name", 8 | "order": 1 9 | }, 10 | "date": { 11 | "type": "date", 12 | "title": "Post Date", 13 | "helper": "The date that will display with the content", 14 | "order": 2, 15 | "validate": true, 16 | "showMessages": true 17 | }, 18 | "content": { 19 | "type": "markdown", 20 | "markdown": { 21 | "toolbar": [ 22 | "preview", 23 | "|", 24 | "bold", 25 | "italic" 26 | ] 27 | } 28 | } 29 | }, 30 | "_form_key": "default", 31 | "_type": "n:form" 32 | } 33 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_type1/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "type1", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "type": "string", 7 | "title": "Title" 8 | }, 9 | "date": { 10 | "type": "string", 11 | "title": "Date", 12 | "format": "date" 13 | }, 14 | "content": { 15 | "type": "string" 16 | } 17 | }, 18 | "_parent": "n:node", 19 | "description": "custom:type1", 20 | "$schema": "http://json-schema.org/draft-04/schema#", 21 | "_qname": "custom:type1", 22 | "_type": "d:type" 23 | } 24 | -------------------------------------------------------------------------------- /packager/content-model/types/custom_wizard-view/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "wizard-view", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "type": "string" 7 | }, 8 | "text1": { 9 | "type": "string" 10 | }, 11 | "text2": { 12 | "type": "string" 13 | }, 14 | "text3": { 15 | "type": "string" 16 | }, 17 | "text4": { 18 | "type": "string" 19 | } 20 | }, 21 | "_parent": "n:node", 22 | "_qname": "custom:wizard-view", 23 | "description": "custom:wizard-view", 24 | "$schema": "http://json-schema.org/draft-04/schema#", 25 | "_type": "d:type" 26 | } 27 | -------------------------------------------------------------------------------- /packager/sample/types/my_article/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Article", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "title": "Title", 7 | "type": "string" 8 | }, 9 | "body": { 10 | "title": "Body", 11 | "type": "string" 12 | }, 13 | "authoredBy": { 14 | "title": "Authored By", 15 | "type": "object", 16 | "_relator": { 17 | "nodeType": "my:author", 18 | "associationType": "my:authored-by" 19 | } 20 | } 21 | }, 22 | "_qname": "my:article", 23 | "_type": "d:type", 24 | "_parent": "n:node" 25 | } -------------------------------------------------------------------------------- /packager/sample/types/my_author/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Author", 3 | "type": "object", 4 | "properties": { 5 | "title": { 6 | "title": "Title", 7 | "type": "string" 8 | }, 9 | "firstName": { 10 | "title": "First Name", 11 | "type": "string" 12 | }, 13 | "lastName": { 14 | "title": "Last Name", 15 | "type": "string" 16 | } 17 | }, 18 | "_qname": "my:author", 19 | "_type": "d:type", 20 | "_parent": "n:node" 21 | } -------------------------------------------------------------------------------- /packager/sample/types/my_authored_by/node.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Authored By", 3 | "type": "object", 4 | "properties": {}, 5 | "_qname": "my:authored-by", 6 | "_type": "d:association", 7 | "_parent": "a:linked" 8 | } -------------------------------------------------------------------------------- /ui-extensions/arrested-development-ext/services/audio.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /ui-extensions/arrested-development-ext/web/arrested-development.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/arrested-development-ext/web/arrested-development.mp3 -------------------------------------------------------------------------------- /ui-extensions/arrested-development-ext/web/banana-stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/arrested-development-ext/web/banana-stand.png -------------------------------------------------------------------------------- /ui-extensions/arrested-development-ext/web/custom-favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/arrested-development-ext/web/custom-favicon.png -------------------------------------------------------------------------------- /ui-extensions/arrested-development-ext/web/custom.css: -------------------------------------------------------------------------------- 1 | div.logo-header 2 | { 3 | background: url(/ext/banana-stand.png) no-repeat center !important; 4 | height: 150px !important; 5 | background-size: 250px !important; 6 | } 7 | 8 | /** change the color of the splash spinner **/ 9 | #splash-spinner .sk-circle .sk-child:before 10 | { 11 | background-color: orange !important; 12 | } 13 | 14 | /** change the color over the page load spinner **/ 15 | .sk-three-bounce.page-transition .sk-child 16 | { 17 | background-color: orange !important; 18 | } -------------------------------------------------------------------------------- /ui-extensions/forms/node-search-field/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "vendor" 3 | } -------------------------------------------------------------------------------- /ui-extensions/forms/node-search-field/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-typeahead-field", 3 | "private": true, 4 | "dependencies": { 5 | "alpaca": "1.5.23", 6 | "bootstrap": "3.3.4", 7 | "gitana": "1.0.239", 8 | "handlebars": "4.0.5", 9 | "jquery": "1.11.1", 10 | "typeahead.js": "0.10.5" 11 | }, 12 | "resolutions": { 13 | "jquery": ">= 2.1.0", 14 | "bootstrap": "3.3.2", 15 | "tinycolor": "1.3.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ui-extensions/forms/node-search-field/cloudcms-config.js: -------------------------------------------------------------------------------- 1 | // paste in your API keys here 2 | 3 | CLOUDCMS_CONFIG = { 4 | "clientKey": null, 5 | "clientSecret": null, 6 | "username": null, 7 | "password": null, 8 | "baseURL": null, 9 | "application": null 10 | }; 11 | -------------------------------------------------------------------------------- /ui-extensions/forms/node-search-field/index.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | $("#form").alpaca({ 3 | "view": "bootstrap-create", 4 | "schema": { 5 | "title": "Node ID", 6 | "type": "string" 7 | }, 8 | "options": { 9 | "type": "node-search" 10 | }, 11 | "postRender": function(control) { 12 | 13 | // when the control's value changes, print out the node ID 14 | control.on("change", function() { 15 | console.log(this.getValue()); 16 | }); 17 | } 18 | }); 19 | }); -------------------------------------------------------------------------------- /ui-extensions/forms/node-selector-field/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "vendor" 3 | } -------------------------------------------------------------------------------- /ui-extensions/forms/node-selector-field/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-selector-field", 3 | "private": true, 4 | "dependencies": { 5 | "alpaca": "1.5.23", 6 | "bootstrap": "3.3.4", 7 | "gitana": "1.0.239", 8 | "handlebars": "4.0.5", 9 | "jquery": "1.11.1" 10 | }, 11 | "resolutions": { 12 | "jquery": ">= 2.1.0", 13 | "bootstrap": "3.3.2", 14 | "tinycolor": "1.3.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ui-extensions/forms/node-selector-field/cloudcms-config.js: -------------------------------------------------------------------------------- 1 | // paste in your API keys here 2 | 3 | CLOUDCMS_CONFIG = { 4 | "clientKey": null, 5 | "clientSecret": null, 6 | "username": null, 7 | "password": null, 8 | "baseURL": null, 9 | "application": null 10 | }; 11 | -------------------------------------------------------------------------------- /ui-extensions/forms/node-selector-field/index.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | $("#form").alpaca({ 3 | "view": "bootstrap-create", 4 | "schema": { 5 | "title": "Node ID", 6 | "type": "string" 7 | }, 8 | "options": { 9 | "type": "node-selector" 10 | } 11 | }); 12 | }); -------------------------------------------------------------------------------- /ui-extensions/forms/node-typeahead-field/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "vendor" 3 | } -------------------------------------------------------------------------------- /ui-extensions/forms/node-typeahead-field/README.md: -------------------------------------------------------------------------------- 1 | # Node Typeahead Field 2 | 3 | This directory provides an example of a custom Node typeahead field that connects to Cloud CMS to retrieve potential typeahead values, list suggestions and make selection easier. It uses Twitter's Typeahead and Bloodhound plugins in conjunction with Alpaca's support for these modules in rendering 4 | typeahead suggestions. 5 | 6 | It exists to demonstrate how you can load values from a remote query to Cloud CMS and then use those values within a custom Cloud CMS field. 7 | 8 | ## How to run this 9 | 10 | Be sure to update `cloudcms-config.js` with API keys from your tenant. 11 | 12 | These files must be served from a web server. 13 | 14 | If you're on a Mac, you can start a simple web server like this: 15 | 16 | python -m SimpleHTTPServer 17 | 18 | And then go to http://localhost:8000/index.html 19 | 20 | 21 | -------------------------------------------------------------------------------- /ui-extensions/forms/node-typeahead-field/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-typeahead-field", 3 | "private": true, 4 | "dependencies": { 5 | "alpaca": "1.5.23", 6 | "bootstrap": "3.3.4", 7 | "gitana": "1.0.239", 8 | "handlebars": "4.0.5", 9 | "jquery": "1.11.1", 10 | "typeahead.js": "0.10.5" 11 | }, 12 | "resolutions": { 13 | "jquery": ">= 2.1.0", 14 | "bootstrap": "3.3.2", 15 | "tinycolor": "1.3.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ui-extensions/forms/node-typeahead-field/cloudcms-config.js: -------------------------------------------------------------------------------- 1 | // paste in your API keys here 2 | 3 | CLOUDCMS_CONFIG = { 4 | "clientKey": null, 5 | "clientSecret": null, 6 | "username": null, 7 | "password": null, 8 | "baseURL": null, 9 | "application": null 10 | }; 11 | -------------------------------------------------------------------------------- /ui-extensions/forms/node-typeahead-field/index.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | $("#form").alpaca({ 3 | "view": "bootstrap-create", 4 | "schema": { 5 | "title": "Node ID", 6 | "type": "string" 7 | }, 8 | "options": { 9 | "type": "node-selector-typeahead" 10 | }, 11 | "postRender": function(control) { 12 | 13 | // when the control's value changes, print out the node ID 14 | control.on("change", function() { 15 | console.log(this.getValue()); 16 | }); 17 | } 18 | }); 19 | }); -------------------------------------------------------------------------------- /ui-extensions/forms/sample-registration-form/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "vendor" 3 | } -------------------------------------------------------------------------------- /ui-extensions/forms/sample-registration-form/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sample-registration-form", 3 | "private": true, 4 | "dependencies": { 5 | "jquery": "1.11.1", 6 | "gitana": "1.0.162", 7 | "alpaca": "1.5.9", 8 | "handlebars": "3.0.3", 9 | "bootstrap": "3.3.4" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ui-extensions/forms/sample-registration-form/css/sample.css: -------------------------------------------------------------------------------- 1 | .container { 2 | margin-top: 20px; 3 | } 4 | 5 | .header { 6 | margin-bottom: 20px; 7 | } -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/ckeditor-plugins/helloworld/demo.png -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | require("./plugins/ckeditor/helloworld"); 3 | }); 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "helloworld" 3 | } -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/plugins/ckeditor/helloworld/icons/helloworld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/ckeditor-plugins/helloworld/plugins/ckeditor/helloworld/icons/helloworld.png -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/plugins/ckeditor/helloworld/index.js: -------------------------------------------------------------------------------- 1 | define(function(require, exports, module) { 2 | 3 | var CKEditorTools = require("ckeditor-tools"); 4 | 5 | CKEditorTools.registerPlugin("helloworld", { 6 | "filepath": "plugin.js", 7 | "module": module 8 | }); 9 | 10 | }); 11 | -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/plugins/ckeditor/helloworld/plugin.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | /** 4 | * Supports configuration like this: 5 | * 6 | * { 7 | * } 8 | */ 9 | 10 | var CKEDITOR = window.CKEDITOR; 11 | 12 | var pluginName = "helloworld"; 13 | 14 | CKEDITOR.plugins.add(pluginName, { 15 | icons: pluginName, 16 | init: function (editor) { 17 | 18 | // button 19 | editor.ui.addButton(pluginName, { 20 | label: 'Hello World!', 21 | command: pluginName 22 | }); 23 | 24 | editor.addCommand(pluginName, { 25 | exec: function (editor) { 26 | editor.insertHtml("Hello World!"); 27 | } 28 | }); 29 | } 30 | }); 31 | 32 | })(); -------------------------------------------------------------------------------- /ui-extensions/modules/ckeditor-plugins/helloworld/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/content-instances/README.md: -------------------------------------------------------------------------------- 1 | # cloudcms-search-filter 2 | Cloud CMS module to modify the content list filter box search to include custom properties. 3 | 4 | ## install the module 5 | From Manage Platform / Modules register and deploy a new module: 6 | ID: custom-content-instances 7 | Title: custom-content-instances 8 | Type: github 9 | URL: https://github.com/gitana/devkit 10 | Path: /ui/modules/content-instances 11 | Branch: master 12 | 13 | Deploy the module 14 | -------------------------------------------------------------------------------- /ui-extensions/modules/content-instances/index.js: -------------------------------------------------------------------------------- 1 | define(function(require, exports, module) { 2 | require("./gadgets/content-instances.js"); 3 | }); 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/content-instances/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) { 6 | callback(); 7 | }; 8 | 9 | return r; 10 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/content-instances/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-content-instances" 3 | } 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/content-instances/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) { 6 | callback(); 7 | }; 8 | 9 | return r; 10 | 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/content-model/content-model-field/README.md: -------------------------------------------------------------------------------- 1 | # Custom Content Model Field 2 | 3 | This module demonstrate how you can customize the Content Model Field for each project. 4 | 5 | To use this module, you must deploy it to your platform. 6 | 7 | ## Installation 8 | 9 | Deploy this module to your Cloud CMS Platform (Manage Platform > Modules > Register New Module) 10 | 11 | ID: content-model-field 12 | Source Type: GitHub 13 | Source URL: https://github.com/gitana/sdk.git 14 | Path: /ui/modules/content-model/content-model-field/ 15 | -------------------------------------------------------------------------------- /ui-extensions/modules/content-model/content-model-field/config/content-model-field/blocks/default/project-field-templates/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "evaluator": "context-project", 3 | "config": { 4 | "project-field-templates": { 5 | "templates": [{ 6 | "key": "string/summernote", 7 | "title": "Content", 8 | "description": "Fully functional text editor. e.g. article, body", 9 | "icon": "fa fa-pencil-square-o" 10 | }] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ui-extensions/modules/content-model/content-model-field/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | require("./field-types/content-field.js"); 3 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/content-model/content-model-field/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/content-model/content-model-field/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "content-model-field" 3 | } -------------------------------------------------------------------------------- /ui-extensions/modules/content-model/content-model-field/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/config/custom-action/blocks/default/actions/default.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "actions": { 4 | "add-attachment": { 5 | "idReadonly": true, 6 | "helperText": "Add helper text here..." 7 | } 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | require("./actions/attachments/add-attachment.js"); 4 | 5 | }); 6 | -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-action" 3 | } -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/screenshots/after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/custom-action/screenshots/after.png -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/screenshots/before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/custom-action/screenshots/before.png -------------------------------------------------------------------------------- /ui-extensions/modules/custom-action/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/custom-folder/config/custom-folder/blocks/default/ui/new-folder-types.json: -------------------------------------------------------------------------------- 1 | { 2 | "evaluator":"and", 3 | "condition":[ 4 | { 5 | "evaluator":"current-user-has-team", 6 | "condition":"myeditors" 7 | }, 8 | { 9 | "evaluator":"context-document-has-type", 10 | "condition":"custom:book" 11 | } 12 | ], 13 | "config": { 14 | "new-folder-types": [{ 15 | "qname": "custom:fiction", 16 | "title": "Fiction" 17 | }] 18 | } 19 | } -------------------------------------------------------------------------------- /ui-extensions/modules/custom-folder/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | require("./actions/documents/new_folder.js"); 4 | 5 | }); 6 | -------------------------------------------------------------------------------- /ui-extensions/modules/custom-folder/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/custom-folder/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-folder" 3 | } -------------------------------------------------------------------------------- /ui-extensions/modules/custom-folder/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/module/config/custom/blocks/default/document-actions/delete-product.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "document-actions": [{ 4 | "key": "delete-product", 5 | "title": "Delete Product", 6 | "iconClass": "fa fa-book", 7 | "action": "delete-product" 8 | }] 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/module/config/custom/blocks/default/document-actions/edit-product.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "config": { 4 | "document-actions": [{ 5 | "key": "edit-product", 6 | "title": "Edit Product", 7 | "iconClass": "fa fa-book", 8 | "action": "edit-product" 9 | }] 10 | } 11 | } -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/module/config/custom/blocks/default/documents-list-buttons/create-product.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "documents-list-buttons": [{ 4 | "key": "new", 5 | "buttons": [{ 6 | "key": "create-product", 7 | "title": "Create Product", 8 | "iconClass": "fa fa-plus", 9 | "align": "left", 10 | "action": "create-product", 11 | "allowPermission": [ 12 | "create_subobjects" 13 | ] 14 | }] 15 | }] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/module/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | // actions 4 | require("./actions/create-product/create-product.js"); 5 | require("./actions/edit-product/edit-product.js"); 6 | require("./actions/delete-product/delete-product.js"); 7 | 8 | }); 9 | -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/module/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) { 6 | 7 | // TODO: any functions that you want to run on install 8 | 9 | callback(); 10 | }; 11 | 12 | return r; 13 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/module/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-iframe-action" 3 | } -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/module/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) { 6 | 7 | // TODO: any functions that you want to run on uninstall 8 | 9 | callback(); 10 | }; 11 | 12 | return r; 13 | 14 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/custom-iframe-action/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-iframe-action", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "private": true, 7 | "dependencies": { 8 | "express": "^4.16.2", 9 | "express-handlebars": "^3.1.0", 10 | "gitana": "^1.0.309", 11 | "handlebars-helpers": "^0.10.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ui-extensions/modules/editors/embedded-media/README.md: -------------------------------------------------------------------------------- 1 | # Custom Embedded Media Editor 2 | 3 | This module demonstrate how you can customize the Embedded Media Editor for each project. 4 | 5 | To use this module, you must deploy it to your platform. 6 | 7 | ## Installation 8 | 9 | Deploy this module to your Cloud CMS Platform (Manage Platform > Modules > Register New Module) 10 | 11 | ID: embedded-media 12 | Source Type: GitHub 13 | Source URL: https://github.com/gitana/sdk.git 14 | Path: /ui/modules/editors/embedded-media/ 15 | -------------------------------------------------------------------------------- /ui-extensions/modules/editors/embedded-media/config/embedded-media/blocks/default/project-media-types/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "evaluator": "context-project", 3 | "config": { 4 | "project-media-types": { 5 | "mediatypes": [{ 6 | "key": "youtube", 7 | "label": "YouTubeAHa!" 8 | }, { 9 | "key": "instagram", 10 | "label": "InstagramTest" 11 | }, { 12 | "key": "thinglink", 13 | "label": "Thinglink" 14 | }] 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ui-extensions/modules/editors/embedded-media/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | require("./media-types/youtube-link.js"); 3 | require("./media-types/instagram-link.js"); 4 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/editors/embedded-media/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/editors/embedded-media/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "embedded-media" 3 | } -------------------------------------------------------------------------------- /ui-extensions/modules/editors/embedded-media/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-copier-field/README.MD: -------------------------------------------------------------------------------- 1 | Custom "Copier" Field 2 | ================================================== 3 | 4 | This is a custom form field which copies the value of a dependent field and applies it to the current field after 5 | transforming it to uppercase. 6 | 7 | To use this field, you must deploy it to your platform and then include it into your forms. 8 | The field type is "custom-copier". 9 | 10 | ## Installation 11 | 12 | Deploy this module to your Cloud CMS Platform (Platform Settings > Modules) 13 | 14 | ID: custom-copier-field 15 | TITLE: Custom Copier Field 16 | Source Type: GitHub 17 | Source URL: https://github.com/gitana/sdk 18 | Path: /ui/modules/fields/custom-copier-field 19 | 20 | A sample definition (sample-definition.json) and a sample form (sample-form.json) are provided. 21 | 22 | -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-copier-field/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | require("./fields/custom-copier-field.js"); 3 | }); 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-copier-field/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-copier-field/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-copier-field" 3 | } 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-copier-field/sample-definition.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Example", 3 | "type": "object", 4 | "properties": { 5 | "source": { 6 | "type": "string", 7 | "title": "Source Text" 8 | }, 9 | "copy": { 10 | "type": "string", 11 | "title": "Copied Text" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-copier-field/sample-form.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": { 3 | "copy": { 4 | "type": "custom-copier", 5 | "dependentField": "/source", 6 | "required": false 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-copier-field/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-country-field/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | require("./fields/custom-country-field.js"); 3 | }); 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-country-field/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-country-field/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-country-field" 3 | } 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-country-field/sample-definition.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Registration", 3 | "type": "object", 4 | "properties": { 5 | "country": { 6 | "type": "string", 7 | "title": "Country" 8 | }, 9 | "countries": { 10 | "type": "array", 11 | "title": "Countries" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-country-field/sample-form.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": { 3 | "country": { 4 | "type": "custom-country" 5 | }, 6 | "countries": { 7 | "type": "custom-country", 8 | "multiple": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-country-field/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-soccer-field/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | require("./fields/custom-soccer-field.js"); 3 | }); 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-soccer-field/install.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.install = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-soccer-field/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "custom-soccer-field" 3 | } 4 | -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-soccer-field/sample-definition.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Registration", 3 | "type": "object", 4 | "properties": { 5 | "game": { 6 | "type": "string", 7 | "title": "Game" 8 | }, 9 | "games": { 10 | "type": "array", 11 | "title": "Games" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-soccer-field/sample-form.json: -------------------------------------------------------------------------------- 1 | { 2 | "fields": { 3 | "game": { 4 | "type": "custom-soccer" 5 | }, 6 | "games": { 7 | "type": "custom-soccer", 8 | "multiple": true 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /ui-extensions/modules/fields/custom-soccer-field/uninstall.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | 3 | var r = {}; 4 | 5 | r.uninstall = function(observableHolder, project, callback) 6 | { 7 | callback(); 8 | }; 9 | 10 | return r; 11 | 12 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/config/sample-ui/pages/account-list-page/page.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Accounts", 3 | "uri": "/projects/{projectId}/branches/{branchId}/sample-ui-account-list", 4 | "extends": "project/_project", 5 | "xtemplate": "account-list-template", 6 | "template": "default" 7 | } -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/gadgets/sample-ui/account-list.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/sample-ui/gadgets/sample-ui/account-list.css -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/index.js: -------------------------------------------------------------------------------- 1 | define(function(require) { 2 | require("css!./styles/sample-ui.css"); 3 | require("./gadgets/sample-ui/account-list.js"); 4 | }); 5 | -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sample-ui" 3 | } -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/styles/sample-ui.css: -------------------------------------------------------------------------------- 1 | .group-sample 2 | { 3 | background-color: #00563F; 4 | } 5 | -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/templates/account-list-template.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | 9 |
10 | 11 |
12 | 13 | 14 |
15 |
16 |
17 | 18 |
19 | 20 |
21 | 24 | -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/themes/sample/sample-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/sample-ui/themes/sample/sample-logo.png -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/themes/sample/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/sample-ui/themes/sample/screenshot.png -------------------------------------------------------------------------------- /ui-extensions/modules/sample-ui/themes/sample/theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "sample", 3 | "title": "Sample Theme", 4 | "description": "Theme for Sample", 5 | "template": "default", 6 | "editorTheme": { 7 | "ace": "ace/theme/github" 8 | } 9 | } -------------------------------------------------------------------------------- /ui-extensions/modules/wondertwins-theme/index.js: -------------------------------------------------------------------------------- 1 | define(function(require, exports, module) { 2 | 3 | console.log("Wonder Twins... activate!"); 4 | 5 | }); -------------------------------------------------------------------------------- /ui-extensions/modules/wondertwins-theme/module.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wondertwins-theme", 3 | "type": "theme" 4 | } -------------------------------------------------------------------------------- /ui-extensions/modules/wondertwins-theme/themes/wondertwins/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-extensions/modules/wondertwins-theme/themes/wondertwins/screenshot.png -------------------------------------------------------------------------------- /ui-extensions/modules/wondertwins-theme/themes/wondertwins/theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "key": "wondertwins", 3 | "title": "Wonder Twins Theme", 4 | "description": "A sample theme for Cloud CMS that implements the Wonder Twins color scheme", 5 | "template": "default", 6 | "editorTheme": { 7 | "ace": "ace/theme/github" 8 | } 9 | } -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/.angulardoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "repoId": "96b2434b-f7d7-45a4-bf74-1cebf086e16d", 3 | "lastSync": 0 4 | } -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 4 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | .angular 2 | public -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get('/'); 6 | } 7 | 8 | getParagraphText() { 9 | return element(by.css('app-root h1')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Authorlist/authorlist.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | import { BookService } from '../book.service'; 4 | 5 | @Component({ 6 | selector: 'app-authorlist', 7 | templateUrl: './authorlist.component.html' 8 | }) 9 | export class AuthorlistComponent implements OnInit { 10 | 11 | authors; 12 | 13 | constructor(private bookService: BookService) { } 14 | 15 | ngOnInit() { 16 | this.getAuthors(); 17 | } 18 | 19 | getAuthors(): void { 20 | this.bookService.getAuthors() 21 | .subscribe(authors => { 22 | this.authors = Object.values(authors); 23 | this.authors = this.authors.slice(0, Math.min(4, this.authors.length)); 24 | } 25 | ); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Bookcarousel/bookcarousel.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |

New Books

6 |

Do eiusmod tempor incididunt ut labore et dolore magna aliqua

7 |
8 | 9 |
10 |
11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Bookitem/bookitem.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 |
8 |
9 |

10 | {{book.title}} 11 |

12 |

{{book.authorTitle}}

13 |
14 |
15 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Bookitem/bookitem.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from "@angular/core"; 2 | 3 | import { Book } from '../book'; 4 | 5 | @Component({ 6 | selector: 'app-book', 7 | templateUrl: './bookitem.component.html' 8 | }) 9 | export class BookItemComponent { 10 | @Input() width: string; 11 | @Input() height: string; 12 | @Input() book: Book; 13 | 14 | }; -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Header/header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Router } from '@angular/router'; 3 | 4 | import { 5 | debounceTime, distinctUntilChanged, switchMap 6 | } from 'rxjs/operators'; 7 | 8 | 9 | @Component({ 10 | selector: 'app-header', 11 | templateUrl: './header.component.html' 12 | }) 13 | export class HeaderComponent { 14 | 15 | constructor(private router: Router) { } 16 | 17 | search(term: string): void { 18 | this.router.navigate(['/search'], { 19 | queryParams: { 20 | text: term 21 | } 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Herobook/herobook.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | import { Book } from '../book'; 4 | 5 | @Component({ 6 | selector: 'app-herobook', 7 | templateUrl: './herobook.component.html' 8 | }) 9 | export class HeroBookComponent { 10 | 11 | @Input() 12 | book: Book; 13 | 14 | constructor() { } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Main/main.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 |
7 | 8 |
9 | 10 |
11 |
12 | 13 | 14 | 15 | 16 | 19 | 20 |
21 |
22 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/Main/main.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Book } from '../book'; 3 | import { BookService } from '../book.service'; 4 | 5 | @Component({ 6 | selector: 'app-main', 7 | templateUrl: './main.component.html' 8 | }) 9 | export class MainComponent implements OnInit { 10 | books: Book[] = []; 11 | 12 | constructor(private bookService: BookService) { } 13 | 14 | ngOnInit() { 15 | this.getBooks(); 16 | } 17 | 18 | getBooks(): void { 19 | this.bookService.getBooks() 20 | .subscribe(books => this.books = Object.values(books)); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | 4 | import { MainComponent } from './Main/main.component'; 5 | import { BookDetailComponent } from './Bookdetail/book-detail.component'; 6 | import {SearchComponent} from "./Search/search.component"; 7 | 8 | const routes: Routes = [ 9 | { path: '', component: MainComponent }, 10 | { path: 'book/:id', component: BookDetailComponent }, 11 | { path: 'search', component: SearchComponent } 12 | ]; 13 | 14 | @NgModule({ 15 | imports: [ RouterModule.forRoot(routes) ], 16 | exports: [ RouterModule ] 17 | }) 18 | export class AppRoutingModule {} 19 | 20 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | /* AppComponent's private CSS styles */ 2 | h1 { 3 | font-size: 1.2em; 4 | color: #999; 5 | margin-bottom: 0; 6 | } 7 | h2 { 8 | font-size: 2em; 9 | margin-top: 0; 10 | padding-top: 0; 11 | } 12 | nav a { 13 | padding: 5px 10px; 14 | text-decoration: none; 15 | margin-top: 10px; 16 | display: inline-block; 17 | background-color: #eee; 18 | border-radius: 4px; 19 | } 20 | nav a:visited, a:link { 21 | color: #607D8B; 22 | } 23 | nav a:hover { 24 | color: #039be5; 25 | background-color: #CFD8DC; 26 | } 27 | nav a.active { 28 | color: #039be5; 29 | } 30 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 |
8 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'Sample Angular Books Application'; 10 | } 11 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/author.ts: -------------------------------------------------------------------------------- 1 | export class Author { 2 | id: string; 3 | name: string; 4 | title: string; 5 | imageUrl:string; 6 | description:string; 7 | summary:string; 8 | authorTitle:string; 9 | 10 | constructor(name: string, id: string, title:string, authorTitle:string, description:string, summary:string, imageUrl: string) { 11 | this.name = name; 12 | this.id = id; 13 | this.title = title; 14 | this.authorTitle = authorTitle; 15 | this.description = description; 16 | this.summary = summary; 17 | this.imageUrl = imageUrl; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/app/book.ts: -------------------------------------------------------------------------------- 1 | export class Book { 2 | _doc: string; 3 | id: string; 4 | name: string; 5 | title: string; 6 | imageUrl:string; 7 | description:string; 8 | summary:string; 9 | authorTitle:string; 10 | tags:Array; 11 | recommendations:Array; 12 | 13 | constructor(name: string, id: string, title:string, authorTitle:string, description:string, summary:string, tags:Array, recommendations:Array) { 14 | this.name = name; 15 | this._doc = this.id = id; 16 | this.title = title; 17 | this.authorTitle = authorTitle; 18 | this.description = description; 19 | this.summary = summary; 20 | this.tags = tags; 21 | this.recommendations = recommendations; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/roboto-black.eot -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/angular/bookstore/src/assets/fonts/roboto-black.woff -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/blue.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Blue Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @blue-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/dark-green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* DARK GREEN Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @dark-green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Green Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/main-footer.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* MAIN FOOTER LESS 3 | /*===================================================================================*/ 4 | .list-link { 5 | li { 6 | margin-bottom:17px; 7 | font-weight:bold; 8 | } 9 | } 10 | .footer-widgets { 11 | .module-title { 12 | margin-bottom:40px; 13 | } 14 | } 15 | .payment-list { 16 | li { 17 | margin-right:2px; 18 | } 19 | } -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/orange.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Orange Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @orange-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/page-404.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* 404 LESS 3 | /*===================================================================================*/ 4 | .not-found-page-content { 5 | text-align:center; 6 | } 7 | .not-found.page { 8 | margin:100px 0px; 9 | } 10 | #notFound-search { 11 | .btn-search-notfound { 12 | padding:16px; 13 | font-size:21px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/pink.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Pink Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @pink-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/red.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Red Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @red-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/scrolltop.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* SCROLL TOP LESS 3 | /*===================================================================================*/ 4 | .scrollup { 5 | bottom: 3px; 6 | display: none; 7 | height:66px; 8 | position: fixed; 9 | right: 10px; 10 | width: 66px; 11 | z-index:9999; 12 | img{ 13 | position:relative; 14 | top:21px; 15 | right:-20px; 16 | } 17 | &:focus, 18 | &:hover{ 19 | outline:none; 20 | background:#463f39; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/slider.less: -------------------------------------------------------------------------------- 1 | .ui-slider.ui-widget-content{ 2 | -webkit-border-radius:0px; 3 | -moz-border-radius:0px; 4 | border-radius:0px; 5 | background: url("images/ui-bg_flat_75_f3f3f3_40x100.png") repeat-x scroll 50% 50% #F3F3F3; 6 | border: none; 7 | color: #222222; 8 | .ui-state-default{ 9 | border: 1px solid #c1552e; 10 | font-weight: normal; 11 | } 12 | } 13 | 14 | .ui-widget-header { 15 | font-weight: bold; 16 | .ui-state-default{ 17 | border: 1px solid #c1552e; 18 | font-weight: normal; 19 | } 20 | } 21 | #slider-range{ 22 | margin:10px 0px; 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/assets/less/star-rating.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* STAR RATING LESS 3 | /*===================================================================================*/ 4 | .star-rating .fa-star{ 5 | color:#cccccc; 6 | } 7 | .star-rating{ 8 | margin-top:-5px; 9 | } -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 12 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "types": [] 6 | }, 7 | "exclude": [ 8 | "test.ts", 9 | "**/*.spec.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "test.ts", 12 | "polyfills.ts" 13 | ], 14 | "include": [ 15 | "**/*.spec.ts", 16 | "**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "app", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "app", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ui-frameworks/angular/bookstore/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "module": "es2015", 9 | "moduleResolution": "node", 10 | "emitDecoratorMetadata": true, 11 | "experimentalDecorators": true, 12 | "target": "ES2015", 13 | "typeRoots": [ 14 | "node_modules/@types" 15 | ], 16 | "lib": [ 17 | "es2018", 18 | "dom" 19 | ] 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | public/ 2 | .cache/ 3 | yarn.lock 4 | gitana.json 5 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "trailingComma": "es5" 5 | } 6 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/gatsby-browser.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's Browser APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/browser-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/gatsby-config.js: -------------------------------------------------------------------------------- 1 | const gitanaJson = require('./gitana.json'); 2 | 3 | module.exports = { 4 | siteMetadata: { 5 | title: `Quick Start Books`, 6 | author: `@cloudcms`, 7 | }, 8 | plugins: [ 9 | `gatsby-plugin-react-helmet`, 10 | { 11 | resolve: `gatsby-source-filesystem`, 12 | options: { 13 | name: `images`, 14 | path: `${__dirname}/src/images`, 15 | }, 16 | }, 17 | { 18 | resolve: `gatsby-source-cloudcms`, 19 | options: { 20 | keys: gitanaJson 21 | } 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/gatsby-node.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | exports.createPages = ({graphql, actions}) => { 4 | const { createPage } = actions; 5 | 6 | return graphql(` 7 | { 8 | allStoreBook { 9 | nodes { 10 | _doc 11 | } 12 | } 13 | } 14 | `).then(result => { 15 | result.data.allStoreBook.nodes.forEach(book => { 16 | console.log("Create " + book._doc); 17 | createPage({ 18 | path: `book/${book._doc}`, 19 | component: path.resolve("./src/templates/BookPage.js"), 20 | context: { 21 | bookId: book._doc 22 | } 23 | }); 24 | }); 25 | }).catch(error => { 26 | console.log(error); 27 | }); 28 | }; 29 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/gatsby-ssr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Implement Gatsby's SSR (Server Side Rendering) APIs in this file. 3 | * 4 | * See: https://www.gatsbyjs.org/docs/ssr-apis/ 5 | */ 6 | 7 | // You can delete this file if you're not using it 8 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/src/components/Author.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Link } from "gatsby"; 3 | 4 | const Author = ({ author }) => ( 5 |
6 | 7 |
8 | {author.title} 9 |
10 | 11 |
12 |

13 | 14 | {author.title} 15 | 16 |

17 | 18 | View Books 19 | 20 |
21 |
22 | ) 23 | 24 | export default Author -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/src/components/BookTags.js: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from "react"; 2 | 3 | const styleH4 = { 4 | display: "inline-block" 5 | } 6 | 7 | const styleA = { 8 | color: "white" 9 | } 10 | 11 | const BookTags = ({ book }) => ( 12 | 13 |

Tags

14 |
15 | { 16 | book.tags.map((tag) => ( 17 |

18 | 19 | {tag} 20 | 21 |

22 | )) 23 | } 24 |
25 |
26 | ) 27 | 28 | export default BookTags -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/src/components/Header.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Navbar from './Navbar' 3 | import Navmain from './Navmain' 4 | 5 | const Header = () => ( 6 |
7 | 8 | 9 |
10 | ) 11 | 12 | export default Header 13 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/src/components/Navbar.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Link } from "gatsby"; 3 | 4 | const Navbar = () => ( 5 | 16 | ) 17 | 18 | export default Navbar 19 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/roboto-black.eot -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/gatsbyjs/bookstore/static/fonts/roboto-black.woff -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/blue.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Blue Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @blue-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/dark-green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* DARK GREEN Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @dark-green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Green Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/main-footer.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* MAIN FOOTER LESS 3 | /*===================================================================================*/ 4 | .list-link { 5 | li { 6 | margin-bottom:17px; 7 | font-weight:bold; 8 | } 9 | } 10 | .footer-widgets { 11 | .module-title { 12 | margin-bottom:40px; 13 | } 14 | } 15 | .payment-list { 16 | li { 17 | margin-right:2px; 18 | } 19 | } -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/orange.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Orange Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @orange-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/page-404.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* 404 LESS 3 | /*===================================================================================*/ 4 | .not-found-page-content { 5 | text-align:center; 6 | } 7 | .not-found.page { 8 | margin:100px 0px; 9 | } 10 | #notFound-search { 11 | .btn-search-notfound { 12 | padding:16px; 13 | font-size:21px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/pink.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Pink Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @pink-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/red.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Red Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @red-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/scrolltop.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* SCROLL TOP LESS 3 | /*===================================================================================*/ 4 | .scrollup { 5 | bottom: 3px; 6 | display: none; 7 | height:66px; 8 | position: fixed; 9 | right: 10px; 10 | width: 66px; 11 | z-index:9999; 12 | img{ 13 | position:relative; 14 | top:21px; 15 | right:-20px; 16 | } 17 | &:focus, 18 | &:hover{ 19 | outline:none; 20 | background:#463f39; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/slider.less: -------------------------------------------------------------------------------- 1 | .ui-slider.ui-widget-content{ 2 | -webkit-border-radius:0px; 3 | -moz-border-radius:0px; 4 | border-radius:0px; 5 | background: url("images/ui-bg_flat_75_f3f3f3_40x100.png") repeat-x scroll 50% 50% #F3F3F3; 6 | border: none; 7 | color: #222222; 8 | .ui-state-default{ 9 | border: 1px solid #c1552e; 10 | font-weight: normal; 11 | } 12 | } 13 | 14 | .ui-widget-header { 15 | font-weight: bold; 16 | .ui-state-default{ 17 | border: 1px solid #c1552e; 18 | font-weight: normal; 19 | } 20 | } 21 | #slider-range{ 22 | margin:10px 0px; 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/gatsbyjs/bookstore/static/less/star-rating.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* STAR RATING LESS 3 | /*===================================================================================*/ 4 | .star-rating .fa-star{ 5 | color:#cccccc; 6 | } 7 | .star-rating{ 8 | margin-top:-5px; 9 | } -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | .next 36 | 37 | gitana.json 38 | package-lock.json -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/components/Header.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Navbar from './Navbar' 3 | import Navmain from './Navmain' 4 | 5 | const Header = () => ( 6 |
7 | 8 | 9 |
10 | ) 11 | 12 | export default Header 13 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/components/Tag.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Link from "next/link"; 3 | 4 | const Tag = ({ tag }) => { 5 | const tagLink = `/tag/${tag.tag}`; 6 | 7 | return ( 8 |
9 |
10 |

11 | 12 | {tag.title} 13 | 14 |

15 |
16 | 17 |
18 | ) 19 | } 20 | 21 | export default Tag; -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./" 4 | } 5 | } -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/next.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | reactStrictMode: false, 3 | webpack5: true, 4 | webpack: (config) => { 5 | config.resolve.fallback = { 6 | }; 7 | 8 | return config; 9 | }, 10 | env: { 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sample", 3 | "version": "0.1.2", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "export": "next build && next export", 9 | "start": "next start", 10 | "lint": "next lint" 11 | }, 12 | "dependencies": { 13 | "cloudcms": "^0.2.6", 14 | "mime-types": "^2.1.33", 15 | "next": "^12.0.4", 16 | "react": "17.0.2", 17 | "react-dom": "17.0.2", 18 | "swr": "^1.0.1" 19 | }, 20 | "devDependencies": { 21 | "eslint": "^7.32.0", 22 | "eslint-config-next": "^12.0.2" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/pages/_app.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | function MyApp({ Component, pageProps }) { 4 | return ( 5 | 6 | ) 7 | } 8 | 9 | export default MyApp 10 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/pages/api/preview.js: -------------------------------------------------------------------------------- 1 | 2 | export default async function handler (req, res) 3 | { 4 | const repository = req.query.repository || process.env.repositoryId; 5 | const branch = req.query.branch || process.env.branchId; 6 | const url = req.query.url || "/"; 7 | 8 | res.setPreviewData({ repository, branch }); 9 | res.redirect(url); 10 | } -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/pages/books.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Layout from '../components/Layout'; 3 | import BooksContainer from '../components/BooksContainer'; 4 | import { getCurrentBranch } from '../lib/cloudcms'; 5 | 6 | const BooksPage = ({ books }) => { 7 | return ( 8 | 9 | 13 | 14 | ); 15 | } 16 | 17 | export async function getStaticProps(context) 18 | { 19 | const branch = await getCurrentBranch(context); 20 | let books = (await branch.queryNodes({ _type: "store:book" }, { limit: -1 })).rows; 21 | 22 | return { 23 | props: { 24 | books, 25 | } 26 | } 27 | } 28 | 29 | export default BooksPage; 30 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/pages/tags.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Layout from '../components/Layout'; 3 | import TagsContainer from '../components/TagsContainer'; 4 | import { getCurrentBranch } from '../lib/cloudcms'; 5 | 6 | const TagsPage = (props) => { 7 | const title = props.title || "Tags"; 8 | return ( 9 | 10 | 11 | 12 | ); 13 | } 14 | 15 | export async function getStaticProps(context) 16 | { 17 | const branch = await getCurrentBranch(context); 18 | let tags = (await branch.queryNodes({ _type: "n:tag" }, { limit: 1000 })).rows; 19 | 20 | return { 21 | props: { 22 | tags, 23 | } 24 | } 25 | } 26 | 27 | export default TagsPage; 28 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/roboto-black.eot -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/fonts/roboto-black.woff -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/images/book-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/images/book-flat.png -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nextjs/bookstore/public/images/favicon.ico -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/blue.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Blue Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @blue-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/dark-green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* DARK GREEN Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @dark-green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Green Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/main-footer.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* MAIN FOOTER LESS 3 | /*===================================================================================*/ 4 | .list-link { 5 | li { 6 | margin-bottom:17px; 7 | font-weight:bold; 8 | } 9 | } 10 | .footer-widgets { 11 | .module-title { 12 | margin-bottom:40px; 13 | } 14 | } 15 | .payment-list { 16 | li { 17 | margin-right:2px; 18 | } 19 | } -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/orange.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Orange Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @orange-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/page-404.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* 404 LESS 3 | /*===================================================================================*/ 4 | .not-found-page-content { 5 | text-align:center; 6 | } 7 | .not-found.page { 8 | margin:100px 0px; 9 | } 10 | #notFound-search { 11 | .btn-search-notfound { 12 | padding:16px; 13 | font-size:21px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/pink.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Pink Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @pink-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/red.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Red Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @red-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/scrolltop.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* SCROLL TOP LESS 3 | /*===================================================================================*/ 4 | .scrollup { 5 | bottom: 3px; 6 | display: none; 7 | height:66px; 8 | position: fixed; 9 | right: 10px; 10 | width: 66px; 11 | z-index:9999; 12 | img{ 13 | position:relative; 14 | top:21px; 15 | right:-20px; 16 | } 17 | &:focus, 18 | &:hover{ 19 | outline:none; 20 | background:#463f39; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/slider.less: -------------------------------------------------------------------------------- 1 | .ui-slider.ui-widget-content{ 2 | -webkit-border-radius:0px; 3 | -moz-border-radius:0px; 4 | border-radius:0px; 5 | background: url("images/ui-bg_flat_75_f3f3f3_40x100.png") repeat-x scroll 50% 50% #F3F3F3; 6 | border: none; 7 | color: #222222; 8 | .ui-state-default{ 9 | border: 1px solid #c1552e; 10 | font-weight: normal; 11 | } 12 | } 13 | 14 | .ui-widget-header { 15 | font-weight: bold; 16 | .ui-state-default{ 17 | border: 1px solid #c1552e; 18 | font-weight: normal; 19 | } 20 | } 21 | #slider-range{ 22 | margin:10px 0px; 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/public/less/star-rating.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* STAR RATING LESS 3 | /*===================================================================================*/ 4 | .star-rating .fa-star{ 5 | color:#cccccc; 6 | } 7 | .star-rating{ 8 | margin-top:-5px; 9 | } -------------------------------------------------------------------------------- /ui-frameworks/nextjs/bookstore/styles/globals.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | padding: 0; 4 | margin: 0; 5 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, 6 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 7 | } 8 | 9 | a { 10 | color: inherit; 11 | text-decoration: none; 12 | } 13 | 14 | * { 15 | box-sizing: border-box; 16 | } 17 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/components/Tag.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 28 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Bookstore", 3 | "version": "1.0.1", 4 | "description": "Clooud CMS Bookstore NuxtJS project", 5 | "author": "Michael Whitman", 6 | "private": true, 7 | "scripts": { 8 | "dev": "nuxt", 9 | "build": "nuxt build", 10 | "start": "nuxt start", 11 | "generate": "nuxt generate" 12 | }, 13 | "dependencies": { 14 | "bootstrap": "^4.1.3", 15 | "bootstrap-vue": "^2.0.0-rc.11", 16 | "cloudcms-nuxt": "^1.2.4", 17 | "cross-env": "^5.2.0", 18 | "fs": "0.0.1-security", 19 | "nuxt": "^2.13.3" 20 | }, 21 | "devDependencies": { 22 | "express": "^4.17.1", 23 | "nodemon": "^2.0.15" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/pages/authors.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 29 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/pages/books.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 29 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/pages/tags.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 29 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/router.js: -------------------------------------------------------------------------------- 1 | import { createRouter as createDefaultRouter } from './defaultRouter'; 2 | import Router from 'vue-router'; 3 | 4 | export function createRouter(ssrContext) { 5 | const defaultRouter = createDefaultRouter(ssrContext) 6 | 7 | var routes = defaultRouter.options.routes; 8 | 9 | return new Router({ 10 | ...defaultRouter.options, 11 | routes: routes 12 | }) 13 | } -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/book-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/book-flat.png -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/favicon.ico -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/roboto-black.eot -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/nuxtjs/bookstore/static/fonts/roboto-black.woff -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/blue.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Blue Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @blue-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/dark-green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* DARK GREEN Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @dark-green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Green Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/main-footer.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* MAIN FOOTER LESS 3 | /*===================================================================================*/ 4 | .list-link { 5 | li { 6 | margin-bottom:17px; 7 | font-weight:bold; 8 | } 9 | } 10 | .footer-widgets { 11 | .module-title { 12 | margin-bottom:40px; 13 | } 14 | } 15 | .payment-list { 16 | li { 17 | margin-right:2px; 18 | } 19 | } -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/orange.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Orange Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @orange-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/page-404.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* 404 LESS 3 | /*===================================================================================*/ 4 | .not-found-page-content { 5 | text-align:center; 6 | } 7 | .not-found.page { 8 | margin:100px 0px; 9 | } 10 | #notFound-search { 11 | .btn-search-notfound { 12 | padding:16px; 13 | font-size:21px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/pink.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Pink Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @pink-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/red.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Red Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @red-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/scrolltop.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* SCROLL TOP LESS 3 | /*===================================================================================*/ 4 | .scrollup { 5 | bottom: 3px; 6 | display: none; 7 | height:66px; 8 | position: fixed; 9 | right: 10px; 10 | width: 66px; 11 | z-index:9999; 12 | img{ 13 | position:relative; 14 | top:21px; 15 | right:-20px; 16 | } 17 | &:focus, 18 | &:hover{ 19 | outline:none; 20 | background:#463f39; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/slider.less: -------------------------------------------------------------------------------- 1 | .ui-slider.ui-widget-content{ 2 | -webkit-border-radius:0px; 3 | -moz-border-radius:0px; 4 | border-radius:0px; 5 | background: url("images/ui-bg_flat_75_f3f3f3_40x100.png") repeat-x scroll 50% 50% #F3F3F3; 6 | border: none; 7 | color: #222222; 8 | .ui-state-default{ 9 | border: 1px solid #c1552e; 10 | font-weight: normal; 11 | } 12 | } 13 | 14 | .ui-widget-header { 15 | font-weight: bold; 16 | .ui-state-default{ 17 | border: 1px solid #c1552e; 18 | font-weight: normal; 19 | } 20 | } 21 | #slider-range{ 22 | margin:10px 0px; 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/nuxtjs/bookstore/static/less/star-rating.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* STAR RATING LESS 3 | /*===================================================================================*/ 4 | .star-rating .fa-star{ 5 | color:#cccccc; 6 | } 7 | .star-rating{ 8 | margin-top:-5px; 9 | } -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/README.md: -------------------------------------------------------------------------------- 1 | # React Sample Site Example 2 | 3 | This is an example website which uses a Cloud CMS sample project as a backend and a React application as its frontend. 4 | 5 | To run, in the react/sample directory: 6 | 7 | 1. Add your `gitana.json` file. You can get it by: Creating a sample project > Manage Project > API Keys 8 | 2. Run `npm install` 9 | 3. Run `npm run build` to build the react app. (`npm run build-dev` for a development build) 10 | 4. Run `npm start` to start the app server. 11 | 5. Navigate to localhost:2999 12 | 13 | This example is not intended for production use, but rather to demonstrate how Cloud CMS might integrate with your React application. 14 | 15 | ## Further Reading 16 | 17 | Please check out the following for more information. 18 | 19 | [Gitana Platform and React](https://gitana.io/documentation/gitana/4.0/developers/frameworks/react.html) 20 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/env", "@babel/preset-react"] 3 | } -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/roboto-black.eot -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/react/bookstore/public/assets/fonts/roboto-black.woff -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/blue.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Blue Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @blue-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/dark-green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* DARK GREEN Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @dark-green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Green Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/main-footer.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* MAIN FOOTER LESS 3 | /*===================================================================================*/ 4 | .list-link { 5 | li { 6 | margin-bottom:17px; 7 | font-weight:bold; 8 | } 9 | } 10 | .footer-widgets { 11 | .module-title { 12 | margin-bottom:40px; 13 | } 14 | } 15 | .payment-list { 16 | li { 17 | margin-right:2px; 18 | } 19 | } -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/orange.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Orange Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @orange-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/page-404.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* 404 LESS 3 | /*===================================================================================*/ 4 | .not-found-page-content { 5 | text-align:center; 6 | } 7 | .not-found.page { 8 | margin:100px 0px; 9 | } 10 | #notFound-search { 11 | .btn-search-notfound { 12 | padding:16px; 13 | font-size:21px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/pink.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Pink Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @pink-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/red.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Red Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @red-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/scrolltop.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* SCROLL TOP LESS 3 | /*===================================================================================*/ 4 | .scrollup { 5 | bottom: 3px; 6 | display: none; 7 | height:66px; 8 | position: fixed; 9 | right: 10px; 10 | width: 66px; 11 | z-index:9999; 12 | img{ 13 | position:relative; 14 | top:21px; 15 | right:-20px; 16 | } 17 | &:focus, 18 | &:hover{ 19 | outline:none; 20 | background:#463f39; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/slider.less: -------------------------------------------------------------------------------- 1 | .ui-slider.ui-widget-content{ 2 | -webkit-border-radius:0px; 3 | -moz-border-radius:0px; 4 | border-radius:0px; 5 | background: url("images/ui-bg_flat_75_f3f3f3_40x100.png") repeat-x scroll 50% 50% #F3F3F3; 6 | border: none; 7 | color: #222222; 8 | .ui-state-default{ 9 | border: 1px solid #c1552e; 10 | font-weight: normal; 11 | } 12 | } 13 | 14 | .ui-widget-header { 15 | font-weight: bold; 16 | .ui-state-default{ 17 | border: 1px solid #c1552e; 18 | font-weight: normal; 19 | } 20 | } 21 | #slider-range{ 22 | margin:10px 0px; 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/assets/less/star-rating.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* STAR RATING LESS 3 | /*===================================================================================*/ 4 | .star-rating .fa-star{ 5 | color:#cccccc; 6 | } 7 | .star-rating{ 8 | margin-top:-5px; 9 | } -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/components/Author.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Link } from "react-router-dom"; 3 | 4 | const Author = ({ author }) => ( 5 |
6 | 7 |
8 | {author.title} 9 |
10 | 11 |
12 |

13 | 14 | {author.title} 15 | 16 |

17 | 18 | View Books 19 | 20 |
21 |
22 | ) 23 | 24 | export default Author -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/components/BookTags.js: -------------------------------------------------------------------------------- 1 | import React, { Fragment } from "react"; 2 | import { Link } from "react-router-dom"; 3 | 4 | const styleH4 = { 5 | display: "inline-block" 6 | } 7 | 8 | const styleA = { 9 | color: "white" 10 | } 11 | 12 | const BookTags = ({ book }) => ( 13 | 14 |

Tags

15 |
16 | { 17 | book.tags.map((tag) => ( 18 |

19 | 20 | {tag} 21 | 22 |

23 | )) 24 | } 25 |
26 |
27 | ) 28 | 29 | export default BookTags -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/components/Content.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const Content = ({ children }) => ( 4 |
5 | {children} 6 |
7 | ) 8 | 9 | export default Content 10 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/components/Header.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Navbar from './Navbar' 3 | import Navmain from './Navmain' 4 | 5 | const Header = () => ( 6 |
7 | 8 | 9 |
10 | ) 11 | 12 | export default Header 13 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/components/Layout.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Header from './Header' 3 | 4 | const Layout = ({children}) => ( 5 |
6 |
7 | {children} 8 |
9 | ) 10 | 11 | export default Layout 12 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/components/Navbar.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Link } from "react-router-dom"; 3 | import NavForm from "./NavForm"; 4 | 5 | const Navbar = () => ( 6 | 20 | ) 21 | 22 | export default Navbar 23 | -------------------------------------------------------------------------------- /ui-frameworks/react/bookstore/public/webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | module.exports = { 4 | entry: __dirname + '/App.js', 5 | output: { 6 | path: path.join(__dirname, 'dist'), 7 | filename: 'bundle.js' 8 | }, 9 | module: { 10 | rules: [ 11 | { 12 | test: /\.js$/, 13 | exclude: /node_modules/, 14 | use: { 15 | loader: "babel-loader", 16 | options: { 17 | "presets": ["@babel/env", "@babel/preset-react"] 18 | } 19 | } 20 | } 21 | ] 22 | } 23 | }; -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | 7 | gitana.json -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./", 4 | "paths": { 5 | "$lib": ["src/lib"], 6 | "$lib/*": ["src/lib/*"] 7 | } 8 | }, 9 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 10 | } 11 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sample", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "dev": "svelte-kit dev", 6 | "build": "svelte-kit build", 7 | "preview": "svelte-kit preview" 8 | }, 9 | "devDependencies": { 10 | "@babel/preset-env": "^7.16.11", 11 | "@sveltejs/adapter-static": "^1.0.0-next.26", 12 | "@sveltejs/kit": "^1.0.0-next.259", 13 | "svelte": "^3.46.3" 14 | }, 15 | "type": "module", 16 | "dependencies": { 17 | "@fontsource/fira-mono": "^4.5.1", 18 | "@lukeed/uuid": "^2.0.0", 19 | "cloudcms": "^0.2.8", 20 | "cookie": "^0.4.2", 21 | "svelte-preprocess": "^4.10.2" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/global.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/lib/components/Author.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 |
10 | {author.title} 11 |
12 |
13 |
14 |

15 | 16 | {author.title} 17 | 18 |

19 |
20 |
21 | 22 | 24 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/lib/components/Book.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 |
9 | 10 | {book.title} 11 | 12 |
13 |
14 |
15 |
16 |

17 | 18 | {book.title} 19 | 20 |

21 | {#if book.author} 22 |

{book.author.title}

23 | {/if} 24 |
25 |
26 | 27 | 29 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/lib/components/BookTags.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 17 | 18 | 27 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/lib/components/Header.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | 9 | 10 |
11 | 12 | 14 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/lib/components/Navbar.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 23 | 24 | 26 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/lib/components/Tag.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 |

9 | 10 | {tag.title} 11 | 12 |

13 |
14 |
15 | 16 | 19 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/routes/__layout.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 | 9 |
10 |
11 | 12 | 14 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/routes/api/authors.js: -------------------------------------------------------------------------------- 1 | import { connect } from '$lib/api/cloudcms.js'; 2 | 3 | // POST /api/authors 4 | export const post = async (event) => { 5 | const request = event.request; 6 | const params = event.url.searchParams; 7 | 8 | let query = (await request.json()) || {}; 9 | query._type = "store:author"; 10 | 11 | const pagination = Object.fromEntries(params); 12 | 13 | const session = await connect(fetch); 14 | const branch = await session.getCurrentBranch(event); 15 | 16 | let authors = (await branch.queryNodes(query, pagination)).rows; 17 | for (let author of authors) 18 | { 19 | author.defaultAttachmentUrl = session.attachmentUrl(author); 20 | } 21 | 22 | return { 23 | body: { 24 | authors 25 | } 26 | }; 27 | }; 28 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/routes/api/books.js: -------------------------------------------------------------------------------- 1 | import { connect } from '$lib/api/cloudcms.js'; 2 | 3 | // POST /api/books 4 | export const post = async (event) => { 5 | const request = event.request; 6 | const params = event.url.searchParams; 7 | 8 | let query = (await request.json()) || {}; 9 | query._type = "store:book"; 10 | 11 | const pagination = Object.fromEntries(params); 12 | 13 | const cloudcms = await connect(fetch); 14 | const branch = await cloudcms.getCurrentBranch(event); 15 | 16 | let books = (await branch.queryNodes(query, pagination)).rows; 17 | for (let book of books) 18 | { 19 | book.defaultAttachmentUrl = cloudcms.attachmentUrl(book); 20 | } 21 | 22 | return { 23 | body: { 24 | books 25 | } 26 | }; 27 | }; 28 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/routes/api/tags.js: -------------------------------------------------------------------------------- 1 | import { connect } from '$lib/api/cloudcms.js'; 2 | 3 | // POST /api/tags 4 | export const post = async (event) => { 5 | const request = event.request; 6 | const params = event.url.searchParams; 7 | 8 | let query = (await request.json()) || {}; 9 | query._type = "n:tag"; 10 | 11 | const pagination = Object.fromEntries(params); 12 | 13 | const session = await connect(fetch); 14 | const branch = await session.getCurrentBranch(event); 15 | 16 | let tags = (await branch.queryNodes(query, pagination)).rows; 17 | 18 | 19 | return { 20 | body: { 21 | tags 22 | } 23 | }; 24 | }; 25 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/routes/authors.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | 21 | 22 | Authors 23 | 24 | 25 |
26 | 30 |
> 31 | 32 | 34 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/routes/books.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | 21 | 22 | Books 23 | 24 | 25 |
26 | 30 |
> 31 | 32 | 34 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/src/routes/tags.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 | 19 | 20 | 21 | Tags 22 | 23 | 24 |
25 | 29 |
30 | 31 | 33 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/roboto-black.eot -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/fonts/roboto-black.woff -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/images/book-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/images/book-flat.png -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/sveltekit/bookstore/static/images/favicon.ico -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/blue.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Blue Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @blue-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/dark-green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* DARK GREEN Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @dark-green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Green Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/main-footer.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* MAIN FOOTER LESS 3 | /*===================================================================================*/ 4 | .list-link { 5 | li { 6 | margin-bottom:17px; 7 | font-weight:bold; 8 | } 9 | } 10 | .footer-widgets { 11 | .module-title { 12 | margin-bottom:40px; 13 | } 14 | } 15 | .payment-list { 16 | li { 17 | margin-right:2px; 18 | } 19 | } -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/orange.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Orange Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @orange-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/page-404.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* 404 LESS 3 | /*===================================================================================*/ 4 | .not-found-page-content { 5 | text-align:center; 6 | } 7 | .not-found.page { 8 | margin:100px 0px; 9 | } 10 | #notFound-search { 11 | .btn-search-notfound { 12 | padding:16px; 13 | font-size:21px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/pink.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Pink Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @pink-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/red.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Red Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @red-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/scrolltop.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* SCROLL TOP LESS 3 | /*===================================================================================*/ 4 | .scrollup { 5 | bottom: 3px; 6 | display: none; 7 | height:66px; 8 | position: fixed; 9 | right: 10px; 10 | width: 66px; 11 | z-index:9999; 12 | img{ 13 | position:relative; 14 | top:21px; 15 | right:-20px; 16 | } 17 | &:focus, 18 | &:hover{ 19 | outline:none; 20 | background:#463f39; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/slider.less: -------------------------------------------------------------------------------- 1 | .ui-slider.ui-widget-content{ 2 | -webkit-border-radius:0px; 3 | -moz-border-radius:0px; 4 | border-radius:0px; 5 | background: url("images/ui-bg_flat_75_f3f3f3_40x100.png") repeat-x scroll 50% 50% #F3F3F3; 6 | border: none; 7 | color: #222222; 8 | .ui-state-default{ 9 | border: 1px solid #c1552e; 10 | font-weight: normal; 11 | } 12 | } 13 | 14 | .ui-widget-header { 15 | font-weight: bold; 16 | .ui-state-default{ 17 | border: 1px solid #c1552e; 18 | font-weight: normal; 19 | } 20 | } 21 | #slider-range{ 22 | margin:10px 0px; 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/static/less/star-rating.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* STAR RATING LESS 3 | /*===================================================================================*/ 4 | .star-rating .fa-star{ 5 | color:#cccccc; 6 | } 7 | .star-rating{ 8 | margin-top:-5px; 9 | } -------------------------------------------------------------------------------- /ui-frameworks/sveltekit/bookstore/svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-static'; 2 | 3 | /** @type {import('@sveltejs/kit').Config} */ 4 | const config = { 5 | kit: { 6 | // hydrate the
element in src/app.html 7 | adapter: adapter() 8 | } 9 | }; 10 | 11 | export default config; 12 | -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/README.md: -------------------------------------------------------------------------------- 1 | # Vue.js Sample Site Example 2 | 3 | This is an example website which uses a Cloud CMS sample project as a backend and a Vue.js application as its frontend. 4 | 5 | To run, in the vuejs/sample directory: 6 | 7 | 1. Add your `gitana.json` file. You can get it by: Creating a sample project > Manage Project > API Keys 8 | 2. Run `npm install` 9 | 3. Run `npm run build` to build the vue app. 10 | 4. Run `npm start` to start the app server. 11 | 5. Navigate to localhost:2999/index.html 12 | 13 | This example is not intended for production use, but rather to demonstrate how Cloud CMS might integrate with your Vue.js application. 14 | 15 | ## Further Reading 16 | 17 | Please check out the following for more information. 18 | 19 | [Gitana Platform and Vue.js](https://gitana.io/documentation/gitana/4.0/developers/frameworks/vuejs.html) 20 | -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | 24 | -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/filters.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/ElegantIcons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/ElegantIcons.eot -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/ElegantIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/ElegantIcons.ttf -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/ElegantIcons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/ElegantIcons.woff -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/roboto-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/roboto-black.eot -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/roboto-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/roboto-black.ttf -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/fonts/roboto-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/assets/fonts/roboto-black.woff -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/blue.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Blue Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @blue-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/dark-green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* DARK GREEN Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @dark-green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/green.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Green Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @green-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/main-footer.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* MAIN FOOTER LESS 3 | /*===================================================================================*/ 4 | .list-link { 5 | li { 6 | margin-bottom:17px; 7 | font-weight:bold; 8 | } 9 | } 10 | .footer-widgets { 11 | .module-title { 12 | margin-bottom:40px; 13 | } 14 | } 15 | .payment-list { 16 | li { 17 | margin-right:2px; 18 | } 19 | } -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/orange.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Orange Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @orange-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/page-404.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* 404 LESS 3 | /*===================================================================================*/ 4 | .not-found-page-content { 5 | text-align:center; 6 | } 7 | .not-found.page { 8 | margin:100px 0px; 9 | } 10 | #notFound-search { 11 | .btn-search-notfound { 12 | padding:16px; 13 | font-size:21px; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/pink.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Pink Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @pink-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/red.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* Red Color 3 | /*===================================================================================*/ 4 | 5 | @import "variables.less"; 6 | 7 | @primary-color : @red-color; 8 | 9 | @import "color.less"; -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/scrolltop.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* SCROLL TOP LESS 3 | /*===================================================================================*/ 4 | .scrollup { 5 | bottom: 3px; 6 | display: none; 7 | height:66px; 8 | position: fixed; 9 | right: 10px; 10 | width: 66px; 11 | z-index:9999; 12 | img{ 13 | position:relative; 14 | top:21px; 15 | right:-20px; 16 | } 17 | &:focus, 18 | &:hover{ 19 | outline:none; 20 | background:#463f39; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/slider.less: -------------------------------------------------------------------------------- 1 | .ui-slider.ui-widget-content{ 2 | -webkit-border-radius:0px; 3 | -moz-border-radius:0px; 4 | border-radius:0px; 5 | background: url("images/ui-bg_flat_75_f3f3f3_40x100.png") repeat-x scroll 50% 50% #F3F3F3; 6 | border: none; 7 | color: #222222; 8 | .ui-state-default{ 9 | border: 1px solid #c1552e; 10 | font-weight: normal; 11 | } 12 | } 13 | 14 | .ui-widget-header { 15 | font-weight: bold; 16 | .ui-state-default{ 17 | border: 1px solid #c1552e; 18 | font-weight: normal; 19 | } 20 | } 21 | #slider-range{ 22 | margin:10px 0px; 23 | } 24 | -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/assets/less/star-rating.less: -------------------------------------------------------------------------------- 1 | /*===================================================================================*/ 2 | /* STAR RATING LESS 3 | /*===================================================================================*/ 4 | .star-rating .fa-star{ 5 | color:#cccccc; 6 | } 7 | .star-rating{ 8 | margin-top:-5px; 9 | } -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/dist/4699347fadb2623ca26146a72c2abe76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/dist/4699347fadb2623ca26146a72c2abe76.png -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/dist/60f62bc8e9ee1df35780b8f96753f433.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitana/sdk/41db4484e5575dddfe2573c952042e8c78c07f87/ui-frameworks/vuejs/bookstore/public/dist/60f62bc8e9ee1df35780b8f96753f433.png -------------------------------------------------------------------------------- /ui-frameworks/vuejs/bookstore/public/index.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import VueRouter from "vue-router"; 3 | import App from "./App.vue"; 4 | 5 | import Main from "./views/Main.vue"; 6 | import BookView from "./views/BookView.vue"; 7 | import SearchView from "./views/SearchView.vue"; 8 | 9 | Vue.use(VueRouter); 10 | 11 | const routes = [ 12 | { 13 | path: "/", 14 | component: Main 15 | }, 16 | { 17 | path: "/book/:id", 18 | component: BookView 19 | }, 20 | { 21 | path: "/search", 22 | component: SearchView 23 | }, 24 | ]; 25 | 26 | const router = new VueRouter({ 27 | routes: routes 28 | }); 29 | 30 | 31 | new Vue({ 32 | el: "#app", 33 | router: router, 34 | render: h => h(App) 35 | }); -------------------------------------------------------------------------------- /webhook-server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cloudcms-webhook-server", 3 | "owner": "harrymoore@yahoo.com", 4 | "description": "example RESTful server for use as Cloud CMS Workflow Webhooks", 5 | "repository" : { 6 | "type" : "git", 7 | "url" : "https://github.com/harrymoore/ccms-webhook-server.git" 8 | }, 9 | "main": "server.js", 10 | "dependencies": { 11 | "express": "*", 12 | "body-parser": "*", 13 | "moment": "*" 14 | } 15 | } --------------------------------------------------------------------------------