diff --git a/example-admin-materializecss-sidemenu/README.md b/example-admin-materializecss-sidemenu/README.md new file mode 100644 index 0000000..83a648c --- /dev/null +++ b/example-admin-materializecss-sidemenu/README.md @@ -0,0 +1,51 @@ +Admin panel sidemenu example with materializecss (http://materializecss.com/) +============================================================================ + +This example shows the usage of sidemenu layout and component. + +This input file for Meteor Kitchen will build meteor application with user account system and admin panel. + +To generate and run application, inside this directory type: + +``` +meteor-kitchen ./example-admin-materializecss-sidemenu.json ./example-admin-materializecss-sidemenu +cd ./example-admin-materializecss-sidemenu +meteor +``` + +**JSON** and **YAML** files are the same example in different formats. + +Meteor-kitchen natively supports input files written in **JSON**. To use the **YAML** example you'll need to have js-yaml converter installed. The following is the most common example of how to accomplish this: + +``` +npm install -g js-yaml +``` + +How to use application +---------------------- + +When you start the application and register, your user account will have role "user" by default and you will not be able to see admin panel. + +To make yourself admin, you first need to find your user ID. Open mongo shell and type: + +``` +db.users.find().pretty() +``` + +Copy your user id and then type: + +``` +db.users.update({ _id: "YOUR_USER_ID" }, { $set: { roles: ["admin"] } }) +``` + +Now, you have admin panel in your application and you can manage users. + +This example has three user roles: + +- `user` can login but cannot access admin panel + +- `admin` can access admin panel + +- `blocked` user is blocked and cannot login + +That's it :) diff --git a/example-admin-materializecss-sidemenu/example-admin-materializecss-sidemenu.json b/example-admin-materializecss-sidemenu/example-admin-materializecss-sidemenu.json new file mode 100644 index 0000000..a1c7cd0 --- /dev/null +++ b/example-admin-materializecss-sidemenu/example-admin-materializecss-sidemenu.json @@ -0,0 +1,297 @@ + { + "application": { + "title": "Example application", + "frontend": "materialize", + "roles": [ "admin", "user" ], + "default_role": "user", + "send_verification_email": true, + + "collections": [ + { + "name": "customers" + } + ], + + "queries": [ + { + "name": "admin_users", + "collection": "users", + "filter": {} + }, + { + "name": "admin_user", + "collection": "users", + "filter": { "_id": ":userId" }, + "find_one": true + }, + { + "name": "users_null", + "collection": "users", + "filter": { "_id": null }, + "find_one": true + }, + { + "name": "current_user_data", + "collection": "users", + "filter": { "_id": "Meteor.userId()" }, + "find_one": true + } + ], + + "public_zone": { + "layout": "sidemenu", + "pages": [ + { + "name": "home_public", + "title": "", + "components": [ + { + "name": "home_jumbotron", + "title": "Example application", + "type": "jumbotron", + "text": "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here.", + "button_title": "Continue »", + "button_route": "login" + } + ] + }, + { "name": "login", "template": "login" }, + { "name": "register", "template": "register" }, + { "name": "verify_email", "template": "verify_email", "route_params": ["verifyEmailToken"] }, + { "name": "forgot_password", "template": "forgot_password" }, + { "name": "reset_password", "template": "reset_password", "route_params": ["resetPasswordToken"] } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "template":"sidemenu", + "class": "", + "title": "Left menu", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_public","icon_class":"store" } + ] + }, + + { + "name": "right_menu", + "type": "menu", + "template":"sidemenu", + "class": "", + "dest_selector": "#menu", + "title": "Right menu", + "items": [ + { "title": "Register", "route": "register","icon_class":"assignment_ind" }, + { "title": "Login", "route": "login","icon_class":"lock_open" } + ] + } + ] + }, + + "private_zone": { + "layout":"sidemenu", + "pages": [ + { "name": "home_private", "title": "Welcome {{userFullName}}!" }, + + + { + "name": "admin", + "roles": ["admin"], + "pages": [ + { + "name": "users", + "components": [ + { + "name": "view", + "type": "data_view", + "title": "Users", + "text_if_empty": "No users yet", + "query_name": "admin_users", + "query_params": [], + + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail" }, + { "name": "roles", "title": "Role" } + ], + + "insert_route": "admin.users.insert", + + "edit_route": "admin.users.edit", + "edit_route_params": [ + { "name": "userId", "value": "this._id" } + ], + + "details_route": "admin.users.details", + "details_route_params": [ + { "name": "userId", "value": "this._id" } + ] + } + ], + "pages": [ + { + "name": "details", + "route_params": ["userId"], + "components": [ + { + "name": "details_form", + "type": "form", + "mode": "read_only", + "title": "User details", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail", "type": "email" }, + { "name": "roles", "title": "Role" } + ], + "close_route": "admin.users", + "back_route": "admin.users" + } + ] + }, + { + "name": "insert", + "components": [ + { + "name": "insert_form", + "type": "form", + "mode": "insert", + "title": "Add new user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "users_null", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "password", "title": "Password", "input": "password", "required": true } + ] + } + ] + }, + { + "name": "edit", + "route_params": ["userId"], + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { + "name": "roles", + "type": "array", + "title": "Role", + "input": "radio", + "input_items": [ + { "value": "user", "title": "User" }, + { "value": "admin", "title": "Admin" }, + { "value": "blocked", "title": "Blocked" } + ] + } + ] + } + ] + } + ] + } + + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "nav nav-stacked nav-pills", + "items": [ + { "title": "Users", "route": "admin.users" } + ] + } + ] + }, + + { + "name": "user_settings", + "roles": ["user", "admin"], + "pages": [ + { + "name": "profile", + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit your profile", + "submit_route": "user_settings.profile", + "query_name": "current_user_data", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "profile.facebook", "title": "Facebook URL" }, + { "name": "profile.google", "title": "Google+ URL" }, + { "name": "profile.twitter", "title": "Twitter ID" }, + { "name": "profile.website", "title": "Website URL" } + ] + } + ] + }, + + { "name": "change_pass", "template": "change_pass" } + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "ui vertical menu", + "items": [ + { "title": "Profile", "route": "user_settings.profile" }, + { "title": "Change password", "route": "user_settings.change_pass" } + ] + } + ] + }, + + { "name": "logout", "template": "logout" } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "title": "Left menu", + "template":"sidemenu", + "class": "", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_private", "icon_class": "home" } + ] + }, + { + "name": "right_menu", + "type": "menu", + "title": "Right menu", + "template":"sidemenu", + "class": "", + "dest_selector": "#menu", + "items": [ + { "title": "Admin", "route": "admin", "icon_class": "brightness_auto" }, + { "title": "Settings", "route": "user_settings","icon_class":"settings" }, + { "title": "Logout", "route": "logout","icon_class":"power_settings_new" } + ] + } + ] + } + } +} diff --git a/example-admin-materializecss-sidemenu/example-admin-materializecss-sidemenu.yaml b/example-admin-materializecss-sidemenu/example-admin-materializecss-sidemenu.yaml new file mode 100644 index 0000000..497368c --- /dev/null +++ b/example-admin-materializecss-sidemenu/example-admin-materializecss-sidemenu.yaml @@ -0,0 +1,331 @@ +--- + application: + title: "Example application" + frontend: "materialize" + roles: + - "admin" + - "user" + default_role: "user" + send_verification_email: true + collections: + - + name: "customers" + queries: + - + name: "admin_users" + collection: "users" + filter: {} + - + name: "admin_user" + collection: "users" + filter: + _id: ":userId" + find_one: true + - + name: "users_null" + collection: "users" + filter: + _id: null + find_one: true + - + name: "current_user_data" + collection: "users" + filter: + _id: "Meteor.userId()" + find_one: true + public_zone: + layout: "sidemenu" + pages: + - + name: "home_public" + title: "" + components: + - + name: "home_jumbotron" + title: "Example application" + type: "jumbotron" + text: "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here." + button_title: "Continue »" + button_route: "login" + - + name: "login" + template: "login" + - + name: "register" + template: "register" + - + name: "verify_email" + template: "verify_email" + route_params: + - "verifyEmailToken" + - + name: "forgot_password" + template: "forgot_password" + - + name: "reset_password" + template: "reset_password" + route_params: + - "resetPasswordToken" + components: + - + name: "left_menu" + type: "menu" + template: "sidemenu" + class: "" + title: "Left menu" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_public" + icon_class: "store" + - + name: "right_menu" + type: "menu" + template: "sidemenu" + class: "" + dest_selector: "#menu" + title: "Right menu" + items: + - + title: "Register" + route: "register" + icon_class: "assignment_ind" + - + title: "Login" + route: "login" + icon_class: "lock_open" + private_zone: + layout: "sidemenu" + pages: + - + name: "home_private" + title: "Welcome {{userFullName}}!" + - + name: "admin" + roles: + - "admin" + pages: + - + name: "users" + components: + - + name: "view" + type: "data_view" + title: "Users" + text_if_empty: "No users yet" + query_name: "admin_users" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + - + name: "roles" + title: "Role" + insert_route: "admin.users.insert" + edit_route: "admin.users.edit" + edit_route_params: + - + name: "userId" + value: "this._id" + details_route: "admin.users.details" + details_route_params: + - + name: "userId" + value: "this._id" + pages: + - + name: "details" + route_params: + - "userId" + components: + - + name: "details_form" + type: "form" + mode: "read_only" + title: "User details" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + type: "email" + - + name: "roles" + title: "Role" + close_route: "admin.users" + back_route: "admin.users" + - + name: "insert" + components: + - + name: "insert_form" + type: "form" + mode: "insert" + title: "Add new user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "users_null" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "password" + title: "Password" + input: "password" + required: true + - + name: "edit" + route_params: + - "userId" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "roles" + type: "array" + title: "Role" + input: "radio" + input_items: + - + value: "user" + title: "User" + - + value: "admin" + title: "Admin" + - + value: "blocked" + title: "Blocked" + components: + - + name: "side_menu" + type: "menu" + class: "nav nav-stacked nav-pills" + items: + - + title: "Users" + route: "admin.users" + - + name: "user_settings" + roles: + - "user" + - "admin" + pages: + - + name: "profile" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit your profile" + submit_route: "user_settings.profile" + query_name: "current_user_data" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "profile.facebook" + title: "Facebook URL" + - + name: "profile.google" + title: "Google+ URL" + - + name: "profile.twitter" + title: "Twitter ID" + - + name: "profile.website" + title: "Website URL" + - + name: "change_pass" + template: "change_pass" + components: + - + name: "side_menu" + type: "menu" + class: "ui vertical menu" + items: + - + title: "Profile" + route: "user_settings.profile" + - + title: "Change password" + route: "user_settings.change_pass" + - + name: "logout" + template: "logout" + components: + - + name: "left_menu" + type: "menu" + title: "Left menu" + template: "sidemenu" + class: "" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_private" + icon_class: "home" + - + name: "right_menu" + type: "menu" + title: "Right menu" + template: "sidemenu" + class: "" + dest_selector: "#menu" + items: + - + title: "Admin" + route: "admin" + icon_class: "brightness_auto" + - + title: "Settings" + route: "user_settings" + icon_class: "settings" + - + title: "Logout" + route: "logout" + icon_class: "power_settings_new" + diff --git a/example-admin-materializecss/README.md b/example-admin-materializecss/README.md new file mode 100644 index 0000000..549eb11 --- /dev/null +++ b/example-admin-materializecss/README.md @@ -0,0 +1,49 @@ +Admin panel example with materializecss (http://materializecss.com/) +==================================================================== + +This input file for Meteor Kitchen will build meteor application with user account system and admin panel. + +To generate and run application, inside this directory type: + +``` +meteor-kitchen ./example-admin-materializecss.json ./example-admin-materializecss +cd ./example-admin-materializecss +meteor +``` + +**JSON** and **YAML** files are the same example in different formats. + +Meteor-kitchen natively supports input files written in **JSON**. To use the **YAML** example you'll need to have js-yaml converter installed. The following is the most common example of how to accomplish this: + +``` +npm install -g js-yaml +``` + +How to use application +---------------------- + +When you start the application and register, your user account will have role "user" by default and you will not be able to see admin panel. + +To make yourself admin, you first need to find your user ID. Open mongo shell and type: + +``` +db.users.find().pretty() +``` + +Copy your user id and then type: + +``` +db.users.update({ _id: "YOUR_USER_ID" }, { $set: { roles: ["admin"] } }) +``` + +Now, you have admin panel in your application and you can manage users. + +This example has three user roles: + +- `user` can login but cannot access admin panel + +- `admin` can access admin panel + +- `blocked` user is blocked and cannot login + +That's it :) diff --git a/example-admin-materializecss/example-admin-materializecss.json b/example-admin-materializecss/example-admin-materializecss.json new file mode 100644 index 0000000..28a3897 --- /dev/null +++ b/example-admin-materializecss/example-admin-materializecss.json @@ -0,0 +1,295 @@ + { + "application": { + "title": "Example application", + "frontend": "materialize", + "roles": [ "admin", "user" ], + "default_role": "user", + "send_verification_email": true, + + "collections": [ + { + "name": "customers" + } + ], + + "queries": [ + { + "name": "admin_users", + "collection": "users", + "filter": {} + }, + { + "name": "admin_user", + "collection": "users", + "filter": { "_id": ":userId" }, + "find_one": true + }, + { + "name": "users_null", + "collection": "users", + "filter": { "_id": null }, + "find_one": true + }, + { + "name": "current_user_data", + "collection": "users", + "filter": { "_id": "Meteor.userId()" }, + "find_one": true + } + ], + + "public_zone": { + "pages": [ + { + "name": "home_public", + "title": "", + "components": [ + { + "name": "home_jumbotron", + "title": "Example application", + "type": "jumbotron", + "text": "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here.", + "button_title": "Continue »", + "button_route": "login" + } + ] + }, + { "name": "login", "template": "login" }, + { "name": "register", "template": "register" }, + { "name": "verify_email", "template": "verify_email", "route_params": ["verifyEmailToken"] }, + { "name": "forgot_password", "template": "forgot_password" }, + { "name": "reset_password", "template": "reset_password", "route_params": ["resetPasswordToken"] } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "class": "left", + "title": "Left menu", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_public","icon_class":"store" } + ] + }, + + { + "name": "right_menu", + "type": "menu", + "class": "right", + "dest_selector": "#menu", + "title": "Right menu", + "items": [ + { "title": "Register", "route": "register","icon_class":"assignment_ind" }, + { "title": "Login", "route": "login","icon_class":"lock_open" } + ] + } + ] + }, + + "private_zone": { + "pages": [ + { "name": "home_private", "title": "Welcome {{userFullName}}!" }, + { + "name": "admin", + "roles": ["admin"], + "pages": [ + { + "name": "users", + "components": [ + { + "name": "view", + "type": "data_view", + "title": "Users", + "text_if_empty": "No users yet", + "query_name": "admin_users", + "query_params": [], + + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail" }, + { "name": "roles", "title": "Role" } + ], + + "insert_route": "admin.users.insert", + + "edit_route": "admin.users.edit", + "edit_route_params": [ + { "name": "userId", "value": "this._id" } + ], + + "details_route": "admin.users.details", + "details_route_params": [ + { "name": "userId", "value": "this._id" } + ] + } + ], + "pages": [ + { + "name": "details", + "route_params": ["userId"], + "components": [ + { + "name": "details_form", + "type": "form", + "mode": "read_only", + "title": "User details", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail", "type": "email" }, + { "name": "roles", "title": "Role" } + ], + "close_route": "admin.users", + "back_route": "admin.users" + } + ] + }, + { + "name": "insert", + "components": [ + { + "name": "insert_form", + "type": "form", + "mode": "insert", + "title": "Add new user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "users_null", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "password", "title": "Password", "input": "password", "required": true } + ] + } + ] + }, + { + "name": "edit", + "route_params": ["userId"], + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { + "name": "roles", + "type": "array", + "title": "Role", + "input": "radio", + "input_items": [ + { "value": "user", "title": "User" }, + { "value": "admin", "title": "Admin" }, + { "value": "blocked", "title": "Blocked" } + ] + } + ] + } + ] + } + ] + } + + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "collection", + "items": [ + { "title": "Users", "route": "admin.users","class": "collection-item"} + ] + } + ] + }, + + { + "name": "user_settings", + "roles": ["user", "admin"], + "pages": [ + { + "name": "profile", + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit your profile", + "submit_route": "user_settings.profile", + "query_name": "current_user_data", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "profile.facebook", "title": "Facebook URL" }, + { "name": "profile.google", "title": "Google+ URL" }, + { "name": "profile.twitter", "title": "Twitter ID" }, + { "name": "profile.website", "title": "Website URL" } + ] + } + ] + }, + + { "name": "change_pass", "template": "change_pass" } + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "collection", + "items": [ + { "title": "Profile", "route": "user_settings.profile","class":"collection-item" }, + { "title": "Change password", "route": "user_settings.change_pass","class":"collection-item" } + ] + } + ] + }, + + { "name": "logout", "template": "logout" } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "title": "Left menu", + "class": "", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_private", "icon_class": "home" } + ] + }, + { + "name": "right_menu", + "type": "menu", + "title": "Right menu", + "class": "right", + "dest_selector": "#menu", + "items": [ + { "title": "Admin", "route": "admin", "icon_class": "brightness_auto" }, + { + "title": "{{userEmail}}", + "items": [ + { "title": "Settings", "route": "user_settings","icon_class":"settings" }, + { "title": "Logout", "route": "logout","icon_class":"power_settings_new" } + ], + "icon_class": "settings" + } + ] + } + ] + } + } +} diff --git a/example-admin-materializecss/example-admin-materializecss.yaml b/example-admin-materializecss/example-admin-materializecss.yaml new file mode 100644 index 0000000..9e8c255 --- /dev/null +++ b/example-admin-materializecss/example-admin-materializecss.yaml @@ -0,0 +1,332 @@ +--- + application: + title: "Example application" + frontend: "materialize" + roles: + - "admin" + - "user" + default_role: "user" + send_verification_email: true + collections: + - + name: "customers" + queries: + - + name: "admin_users" + collection: "users" + filter: {} + - + name: "admin_user" + collection: "users" + filter: + _id: ":userId" + find_one: true + - + name: "users_null" + collection: "users" + filter: + _id: null + find_one: true + - + name: "current_user_data" + collection: "users" + filter: + _id: "Meteor.userId()" + find_one: true + public_zone: + pages: + - + name: "home_public" + title: "" + components: + - + name: "home_jumbotron" + title: "Example application" + type: "jumbotron" + text: "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here." + button_title: "Continue »" + button_route: "login" + - + name: "login" + template: "login" + - + name: "register" + template: "register" + - + name: "verify_email" + template: "verify_email" + route_params: + - "verifyEmailToken" + - + name: "forgot_password" + template: "forgot_password" + - + name: "reset_password" + template: "reset_password" + route_params: + - "resetPasswordToken" + components: + - + name: "left_menu" + type: "menu" + class: "left" + title: "Left menu" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_public" + icon_class: "store" + - + name: "right_menu" + type: "menu" + class: "right" + dest_selector: "#menu" + title: "Right menu" + items: + - + title: "Register" + route: "register" + icon_class: "assignment_ind" + - + title: "Login" + route: "login" + icon_class: "lock_open" + private_zone: + pages: + - + name: "home_private" + title: "Welcome {{userFullName}}!" + - + name: "admin" + roles: + - "admin" + pages: + - + name: "users" + components: + - + name: "view" + type: "data_view" + title: "Users" + text_if_empty: "No users yet" + query_name: "admin_users" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + - + name: "roles" + title: "Role" + insert_route: "admin.users.insert" + edit_route: "admin.users.edit" + edit_route_params: + - + name: "userId" + value: "this._id" + details_route: "admin.users.details" + details_route_params: + - + name: "userId" + value: "this._id" + pages: + - + name: "details" + route_params: + - "userId" + components: + - + name: "details_form" + type: "form" + mode: "read_only" + title: "User details" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + type: "email" + - + name: "roles" + title: "Role" + close_route: "admin.users" + back_route: "admin.users" + - + name: "insert" + components: + - + name: "insert_form" + type: "form" + mode: "insert" + title: "Add new user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "users_null" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "password" + title: "Password" + input: "password" + required: true + - + name: "edit" + route_params: + - "userId" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "roles" + type: "array" + title: "Role" + input: "radio" + input_items: + - + value: "user" + title: "User" + - + value: "admin" + title: "Admin" + - + value: "blocked" + title: "Blocked" + components: + - + name: "side_menu" + type: "menu" + class: "collection" + items: + - + title: "Users" + route: "admin.users" + class: "collection-item" + - + name: "user_settings" + roles: + - "user" + - "admin" + pages: + - + name: "profile" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit your profile" + submit_route: "user_settings.profile" + query_name: "current_user_data" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "profile.facebook" + title: "Facebook URL" + - + name: "profile.google" + title: "Google+ URL" + - + name: "profile.twitter" + title: "Twitter ID" + - + name: "profile.website" + title: "Website URL" + - + name: "change_pass" + template: "change_pass" + components: + - + name: "side_menu" + type: "menu" + class: "collection" + items: + - + title: "Profile" + route: "user_settings.profile" + class: "collection-item" + - + title: "Change password" + route: "user_settings.change_pass" + class: "collection-item" + - + name: "logout" + template: "logout" + components: + - + name: "left_menu" + type: "menu" + title: "Left menu" + class: "" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_private" + icon_class: "home" + - + name: "right_menu" + type: "menu" + title: "Right menu" + class: "right" + dest_selector: "#menu" + items: + - + title: "Admin" + route: "admin" + icon_class: "brightness_auto" + - + title: "{{userEmail}}" + items: + - + title: "Settings" + route: "user_settings" + icon_class: "settings" + - + title: "Logout" + route: "logout" + icon_class: "power_settings_new" + icon_class: "settings" + diff --git a/example-admin-semanticui-sidemenu/README.md b/example-admin-semanticui-sidemenu/README.md new file mode 100644 index 0000000..33404aa --- /dev/null +++ b/example-admin-semanticui-sidemenu/README.md @@ -0,0 +1,51 @@ +Admin panel sidemenu example with semantic-ui (http://semantic-ui.com/) +======================================================================= + +This example shows the usage of sidemenu layout and component. + +This input file for Meteor Kitchen will build meteor application with user account system and admin panel. + +To generate and run application, inside this directory type: + +``` +meteor-kitchen ./example-admin-semanticui-sidemenu.json ./example-admin-semanticui-sidemenu +cd ./example-admin-semanticui-sidemenu +meteor +``` + +**JSON** and **YAML** files are the same example in different formats. + +Meteor-kitchen natively supports input files written in **JSON**. To use the **YAML** example you'll need to have js-yaml converter installed. The following is the most common example of how to accomplish this: + +``` +npm install -g js-yaml +``` + +How to use application +---------------------- + +When you start the application and register, your user account will have role "user" by default and you will not be able to see admin panel. + +To make yourself admin, you first need to find your user ID. Open mongo shell and type: + +``` +db.users.find().pretty() +``` + +Copy your user id and then type: + +``` +db.users.update({ _id: "YOUR_USER_ID" }, { $set: { roles: ["admin"] } }) +``` + +Now, you have admin panel in your application and you can manage users. + +This example has three user roles: + +- `user` can login but cannot access admin panel + +- `admin` can access admin panel + +- `blocked` user is blocked and cannot login + +That's it :) diff --git a/example-admin-semanticui-sidemenu/example-admin-semanticui-sidemenu.json b/example-admin-semanticui-sidemenu/example-admin-semanticui-sidemenu.json new file mode 100644 index 0000000..8ed74e7 --- /dev/null +++ b/example-admin-semanticui-sidemenu/example-admin-semanticui-sidemenu.json @@ -0,0 +1,295 @@ + { + "application": { + "title": "Example application", + "frontend": "semantic-ui", + "roles": [ "admin", "user" ], + "default_role": "user", + "send_verification_email": true, + + "collections": [ + { + "name": "customers" + } + ], + + "queries": [ + { + "name": "admin_users", + "collection": "users", + "filter": {} + }, + { + "name": "admin_user", + "collection": "users", + "filter": { "_id": ":userId" }, + "find_one": true + }, + { + "name": "users_null", + "collection": "users", + "filter": { "_id": null }, + "find_one": true + }, + { + "name": "current_user_data", + "collection": "users", + "filter": { "_id": "Meteor.userId()" }, + "find_one": true + } + ], + + "public_zone": { + "layout": "sidemenu", + "footer_class": "sticky_footer", + "pages": [ + { + "name": "home_public", + "title": "", + "components": [ + { + "name": "home_jumbotron", + "title": "Example application", + "type": "jumbotron", + "text": "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here.", + "button_title": "Continue »", + "button_route": "login" + } + ] + }, + { "name": "login", "template": "login" }, + { "name": "register", "template": "register" }, + { "name": "verify_email", "template": "verify_email", "route_params": ["verifyEmailToken"] }, + { "name": "forgot_password", "template": "forgot_password" }, + { "name": "reset_password", "template": "reset_password", "route_params": ["resetPasswordToken"] } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "template":"sidemenu", + "class": "ui icon left inline vertical sidebar menu left_menu", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_public","icon_class":"blue home icon" } + ] + }, + + { + "name": "right_menu", + "type": "menu", + "template":"sidemenu", + "class": "ui icon right inline vertical sidebar menu right_menu", + "dest_selector": "#menu", + "items": [ + { "title": "Register", "route": "register","icon_class":"orange add user icon" }, + { "title": "Login", "route": "login","icon_class":"blue sign in icon" } + ] + } + ] + }, + + "private_zone": { + "layout":"sidemenu", + "footer_class": "sticky_footer", + "pages": [ + { "name": "home_private", "title": "Welcome {{userFullName}}!" }, + + + { + "name": "admin", + "roles": ["admin"], + "pages": [ + { + "name": "users", + "components": [ + { + "name": "view", + "type": "data_view", + "title": "Users", + "text_if_empty": "No users yet", + "query_name": "admin_users", + "query_params": [], + + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail" }, + { "name": "roles", "title": "Role" } + ], + + "insert_route": "admin.users.insert", + + "edit_route": "admin.users.edit", + "edit_route_params": [ + { "name": "userId", "value": "this._id" } + ], + + "details_route": "admin.users.details", + "details_route_params": [ + { "name": "userId", "value": "this._id" } + ] + } + ], + "pages": [ + { + "name": "details", + "route_params": ["userId"], + "components": [ + { + "name": "details_form", + "type": "form", + "mode": "read_only", + "title": "User details", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail", "type": "email" }, + { "name": "roles", "title": "Role" } + ], + "close_route": "admin.users", + "back_route": "admin.users" + } + ] + }, + { + "name": "insert", + "components": [ + { + "name": "insert_form", + "type": "form", + "mode": "insert", + "title": "Add new user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "users_null", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "password", "title": "Password", "input": "password", "required": true } + ] + } + ] + }, + { + "name": "edit", + "route_params": ["userId"], + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { + "name": "roles", + "type": "array", + "title": "Role", + "input": "radio", + "input_items": [ + { "value": "user", "title": "User" }, + { "value": "admin", "title": "Admin" }, + { "value": "blocked", "title": "Blocked" } + ] + } + ] + } + ] + } + ] + } + + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "nav nav-stacked nav-pills", + "items": [ + { "title": "Users", "route": "admin.users" } + ] + } + ] + }, + + { + "name": "user_settings", + "roles": ["user", "admin"], + "pages": [ + { + "name": "profile", + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit your profile", + "submit_route": "user_settings.profile", + "query_name": "current_user_data", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "profile.facebook", "title": "Facebook URL" }, + { "name": "profile.google", "title": "Google+ URL" }, + { "name": "profile.twitter", "title": "Twitter ID" }, + { "name": "profile.website", "title": "Website URL" } + ] + } + ] + }, + + { "name": "change_pass", "template": "change_pass" } + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "ui vertical menu", + "items": [ + { "title": "Profile", "route": "user_settings.profile" }, + { "title": "Change password", "route": "user_settings.change_pass" } + ] + } + ] + }, + + { "name": "logout", "template": "logout" } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "template":"sidemenu", + "class": "ui icon left inline vertical sidebar menu left_menu", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_private", "icon_class": "home icon" } + ] + }, + { + "name": "right_menu", + "type": "menu", + "template":"sidemenu", + "class": "ui icon right inline vertical sidebar menu right_menu", + "dest_selector": "#menu", + "items": [ + { "title": "Admin", "route": "admin", "icon_class": "blue spy icon" }, + { "title": "Settings", "route": "user_settings","icon_class":"orange settings icon" }, + { "title": "Logout", "route": "logout","icon_class":"red sign out icon" } + ] + } + ] + } + } +} diff --git a/example-admin-semanticui-sidemenu/example-admin-semanticui-sidemenu.yaml b/example-admin-semanticui-sidemenu/example-admin-semanticui-sidemenu.yaml new file mode 100644 index 0000000..16b408c --- /dev/null +++ b/example-admin-semanticui-sidemenu/example-admin-semanticui-sidemenu.yaml @@ -0,0 +1,329 @@ +--- + application: + title: "Example application" + frontend: "semantic-ui" + roles: + - "admin" + - "user" + default_role: "user" + send_verification_email: true + collections: + - + name: "customers" + queries: + - + name: "admin_users" + collection: "users" + filter: {} + - + name: "admin_user" + collection: "users" + filter: + _id: ":userId" + find_one: true + - + name: "users_null" + collection: "users" + filter: + _id: null + find_one: true + - + name: "current_user_data" + collection: "users" + filter: + _id: "Meteor.userId()" + find_one: true + public_zone: + layout: "sidemenu" + footer_class: "sticky_footer" + pages: + - + name: "home_public" + title: "" + components: + - + name: "home_jumbotron" + title: "Example application" + type: "jumbotron" + text: "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here." + button_title: "Continue »" + button_route: "login" + - + name: "login" + template: "login" + - + name: "register" + template: "register" + - + name: "verify_email" + template: "verify_email" + route_params: + - "verifyEmailToken" + - + name: "forgot_password" + template: "forgot_password" + - + name: "reset_password" + template: "reset_password" + route_params: + - "resetPasswordToken" + components: + - + name: "left_menu" + type: "menu" + template: "sidemenu" + class: "ui icon left inline vertical sidebar menu left_menu" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_public" + icon_class: "blue home icon" + - + name: "right_menu" + type: "menu" + template: "sidemenu" + class: "ui icon right inline vertical sidebar menu right_menu" + dest_selector: "#menu" + items: + - + title: "Register" + route: "register" + icon_class: "orange add user icon" + - + title: "Login" + route: "login" + icon_class: "blue sign in icon" + private_zone: + layout: "sidemenu" + footer_class: "sticky_footer" + pages: + - + name: "home_private" + title: "Welcome {{userFullName}}!" + - + name: "admin" + roles: + - "admin" + pages: + - + name: "users" + components: + - + name: "view" + type: "data_view" + title: "Users" + text_if_empty: "No users yet" + query_name: "admin_users" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + - + name: "roles" + title: "Role" + insert_route: "admin.users.insert" + edit_route: "admin.users.edit" + edit_route_params: + - + name: "userId" + value: "this._id" + details_route: "admin.users.details" + details_route_params: + - + name: "userId" + value: "this._id" + pages: + - + name: "details" + route_params: + - "userId" + components: + - + name: "details_form" + type: "form" + mode: "read_only" + title: "User details" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + type: "email" + - + name: "roles" + title: "Role" + close_route: "admin.users" + back_route: "admin.users" + - + name: "insert" + components: + - + name: "insert_form" + type: "form" + mode: "insert" + title: "Add new user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "users_null" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "password" + title: "Password" + input: "password" + required: true + - + name: "edit" + route_params: + - "userId" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "roles" + type: "array" + title: "Role" + input: "radio" + input_items: + - + value: "user" + title: "User" + - + value: "admin" + title: "Admin" + - + value: "blocked" + title: "Blocked" + components: + - + name: "side_menu" + type: "menu" + class: "nav nav-stacked nav-pills" + items: + - + title: "Users" + route: "admin.users" + - + name: "user_settings" + roles: + - "user" + - "admin" + pages: + - + name: "profile" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit your profile" + submit_route: "user_settings.profile" + query_name: "current_user_data" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "profile.facebook" + title: "Facebook URL" + - + name: "profile.google" + title: "Google+ URL" + - + name: "profile.twitter" + title: "Twitter ID" + - + name: "profile.website" + title: "Website URL" + - + name: "change_pass" + template: "change_pass" + components: + - + name: "side_menu" + type: "menu" + class: "ui vertical menu" + items: + - + title: "Profile" + route: "user_settings.profile" + - + title: "Change password" + route: "user_settings.change_pass" + - + name: "logout" + template: "logout" + components: + - + name: "left_menu" + type: "menu" + template: "sidemenu" + class: "ui icon left inline vertical sidebar menu left_menu" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_private" + icon_class: "home icon" + - + name: "right_menu" + type: "menu" + template: "sidemenu" + class: "ui icon right inline vertical sidebar menu right_menu" + dest_selector: "#menu" + items: + - + title: "Admin" + route: "admin" + icon_class: "blue spy icon" + - + title: "Settings" + route: "user_settings" + icon_class: "orange settings icon" + - + title: "Logout" + route: "logout" + icon_class: "red sign out icon" + diff --git a/example-admin-semanticui/README.md b/example-admin-semanticui/README.md new file mode 100644 index 0000000..c497664 --- /dev/null +++ b/example-admin-semanticui/README.md @@ -0,0 +1,49 @@ +Admin panel example with semantic-ui (http://semantic-ui.com/) +============================================================== + +This input file for Meteor Kitchen will build meteor application with user account system and admin panel. + +To generate and run application, inside this directory type: + +``` +meteor-kitchen ./example-admin-semanticui.json ./example-admin-semanticui +cd ./example-admin-semanticui +meteor +``` + +**JSON** and **YAML** files are the same example in different formats. + +Meteor-kitchen natively supports input files written in **JSON**. To use the **YAML** example you'll need to have js-yaml converter installed. The following is the most common example of how to accomplish this: + +``` +npm install -g js-yaml +``` + +How to use application +---------------------- + +When you start the application and register, your user account will have role "user" by default and you will not be able to see admin panel. + +To make yourself admin, you first need to find your user ID. Open mongo shell and type: + +``` +db.users.find().pretty() +``` + +Copy your user id and then type: + +``` +db.users.update({ _id: "YOUR_USER_ID" }, { $set: { roles: ["admin"] } }) +``` + +Now, you have admin panel in your application and you can manage users. + +This example has three user roles: + +- `user` can login but cannot access admin panel + +- `admin` can access admin panel + +- `blocked` user is blocked and cannot login + +That's it :) diff --git a/example-admin-semanticui/example-admin-semanticui.json b/example-admin-semanticui/example-admin-semanticui.json new file mode 100644 index 0000000..235dfc2 --- /dev/null +++ b/example-admin-semanticui/example-admin-semanticui.json @@ -0,0 +1,295 @@ + { + "application": { + "title": "Example application", + "frontend": "semantic-ui", + + "roles": [ "admin", "user" ], + "default_role": "user", + "send_verification_email": true, + + "collections": [ + { + "name": "customers" + } + ], + + "queries": [ + { + "name": "admin_users", + "collection": "users", + "filter": {} + }, + { + "name": "admin_user", + "collection": "users", + "filter": { "_id": ":userId" }, + "find_one": true + }, + { + "name": "users_null", + "collection": "users", + "filter": { "_id": null }, + "find_one": true + }, + { + "name": "current_user_data", + "collection": "users", + "filter": { "_id": "Meteor.userId()" }, + "find_one": true + } + ], + + "public_zone": { + "pages": [ + { + "name": "home_public", + "title": "", + "components": [ + { + "name": "home_jumbotron", + "title": "Example application", + "type": "jumbotron", + "text": "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here.", + "button_title": "Continue »", + "button_route": "login" + } + ] + }, + { "name": "login", "template": "login" }, + { "name": "register", "template": "register" }, + { "name": "verify_email", "template": "verify_email", "route_params": ["verifyEmailToken"] }, + { "name": "forgot_password", "template": "forgot_password" }, + { "name": "reset_password", "template": "reset_password", "route_params": ["resetPasswordToken"] } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "class": "nav navbar-nav", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_public" } + ] + }, + + { + "name": "right_menu", + "type": "menu", + "class": "right menu", + "dest_selector": "#menu", + "items": [ + { "title": "Register", "route": "register" }, + { "title": "Login", "route": "login" } + ] + } + ] + }, + + "private_zone": { + "pages": [ + { "name": "home_private", "title": "Welcome {{userFullName}}!" }, + + + { + "name": "admin", + "roles": ["admin"], + "pages": [ + { + "name": "users", + "components": [ + { + "name": "view", + "type": "data_view", + "title": "Users", + "text_if_empty": "No users yet", + "query_name": "admin_users", + "query_params": [], + + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail" }, + { "name": "roles", "title": "Role" } + ], + + "insert_route": "admin.users.insert", + + "edit_route": "admin.users.edit", + "edit_route_params": [ + { "name": "userId", "value": "this._id" } + ], + + "details_route": "admin.users.details", + "details_route_params": [ + { "name": "userId", "value": "this._id" } + ] + } + ], + "pages": [ + { + "name": "details", + "route_params": ["userId"], + "components": [ + { + "name": "details_form", + "type": "form", + "mode": "read_only", + "title": "User details", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name"}, + { "name": "profile.email", "title": "E-mail", "type": "email" }, + { "name": "roles", "title": "Role" } + ], + "close_route": "admin.users", + "back_route": "admin.users" + } + ] + }, + { + "name": "insert", + "components": [ + { + "name": "insert_form", + "type": "form", + "mode": "insert", + "title": "Add new user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "users_null", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "password", "title": "Password", "input": "password", "required": true } + ] + } + ] + }, + { + "name": "edit", + "route_params": ["userId"], + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit user", + "submit_route": "admin.users", + "cancel_route": "admin.users", + "query_name": "admin_user", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { + "name": "roles", + "type": "array", + "title": "Role", + "input": "radio", + "input_items": [ + { "value": "user", "title": "User" }, + { "value": "admin", "title": "Admin" }, + { "value": "blocked", "title": "Blocked" } + ] + } + ] + } + ] + } + ] + } + + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "nav nav-stacked nav-pills", + "items": [ + { "title": "Users", "route": "admin.users" } + ] + } + ] + }, + + { + "name": "user_settings", + "roles": ["user", "admin"], + "pages": [ + { + "name": "profile", + "components": [ + { + "name": "edit_form", + "type": "form", + "mode": "update", + "title": "Edit your profile", + "submit_route": "user_settings.profile", + "query_name": "current_user_data", + "query_params": [], + "fields": [ + { "name": "profile.name", "title": "Name", "required": true }, + { "name": "profile.email", "title": "E-mail", "type": "email", "required": true }, + { "name": "profile.facebook", "title": "Facebook URL" }, + { "name": "profile.google", "title": "Google+ URL" }, + { "name": "profile.twitter", "title": "Twitter ID" }, + { "name": "profile.website", "title": "Website URL" } + ] + } + ] + }, + + { "name": "change_pass", "template": "change_pass" } + ], + + "components": [ + { + "name": "side_menu", + "type": "menu", + "class": "ui vertical menu", + "items": [ + { "title": "Profile", "route": "user_settings.profile" }, + { "title": "Change password", "route": "user_settings.change_pass" } + ] + } + ] + }, + + { "name": "logout", "template": "logout" } + ], + + "components": [ + { + "name": "left_menu", + "type": "menu", + "class": "nav navbar-nav", + "dest_selector": "#menu", + "items": [ + { "title": "Home", "route": "home_private", "icon_class": "fa fa-home" } + ] + }, + { + "name": "right_menu", + "type": "menu", + "class": "right menu", + "dest_selector": "#menu", + "items": [ + { "title": "Admin", "route": "admin", "icon_class": "fa fa-wrench" }, + + { + "title": "{{userEmail}}", + "items": [ + { "title": "Settings", "route": "user_settings" }, + { "title": "Logout", "route": "logout" } + ], + "icon_class": "fa fa-cog" + } + ] + } + ] + } + } +} diff --git a/example-admin-semanticui/example-admin-semanticui.yaml b/example-admin-semanticui/example-admin-semanticui.yaml new file mode 100644 index 0000000..bd51cd9 --- /dev/null +++ b/example-admin-semanticui/example-admin-semanticui.yaml @@ -0,0 +1,320 @@ +--- + application: + title: "Example application" + frontend: "semantic-ui" + roles: + - "admin" + - "user" + default_role: "user" + send_verification_email: true + collections: + - + name: "customers" + queries: + - + name: "admin_users" + collection: "users" + filter: {} + - + name: "admin_user" + collection: "users" + filter: + _id: ":userId" + find_one: true + - + name: "users_null" + collection: "users" + filter: + _id: null + find_one: true + - + name: "current_user_data" + collection: "users" + filter: + _id: "Meteor.userId()" + find_one: true + public_zone: + pages: + - + name: "home_public" + title: "" + components: + - + name: "home_jumbotron" + title: "Example application" + type: "jumbotron" + text: "This is example application built with meteor-kitchen code generator without manual coding.
It demonstrates simple application with user account system and admin panel.
Source code (input file for generator) is here." + button_title: "Continue »" + button_route: "login" + - + name: "login" + template: "login" + - + name: "register" + template: "register" + - + name: "verify_email" + template: "verify_email" + route_params: + - "verifyEmailToken" + - + name: "forgot_password" + template: "forgot_password" + - + name: "reset_password" + template: "reset_password" + route_params: + - "resetPasswordToken" + components: + - + name: "left_menu" + type: "menu" + class: "nav navbar-nav" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_public" + - + name: "right_menu" + type: "menu" + class: "right menu" + dest_selector: "#menu" + items: + - + title: "Register" + route: "register" + - + title: "Login" + route: "login" + private_zone: + pages: + - + name: "home_private" + title: "Welcome {{userFullName}}!" + - + name: "admin" + roles: + - "admin" + pages: + - + name: "users" + components: + - + name: "view" + type: "data_view" + title: "Users" + text_if_empty: "No users yet" + query_name: "admin_users" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + - + name: "roles" + title: "Role" + insert_route: "admin.users.insert" + edit_route: "admin.users.edit" + edit_route_params: + - + name: "userId" + value: "this._id" + details_route: "admin.users.details" + details_route_params: + - + name: "userId" + value: "this._id" + pages: + - + name: "details" + route_params: + - "userId" + components: + - + name: "details_form" + type: "form" + mode: "read_only" + title: "User details" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + - + name: "profile.email" + title: "E-mail" + type: "email" + - + name: "roles" + title: "Role" + close_route: "admin.users" + back_route: "admin.users" + - + name: "insert" + components: + - + name: "insert_form" + type: "form" + mode: "insert" + title: "Add new user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "users_null" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "password" + title: "Password" + input: "password" + required: true + - + name: "edit" + route_params: + - "userId" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit user" + submit_route: "admin.users" + cancel_route: "admin.users" + query_name: "admin_user" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "roles" + type: "array" + title: "Role" + input: "radio" + input_items: + - + value: "user" + title: "User" + - + value: "admin" + title: "Admin" + - + value: "blocked" + title: "Blocked" + components: + - + name: "side_menu" + type: "menu" + class: "nav nav-stacked nav-pills" + items: + - + title: "Users" + route: "admin.users" + - + name: "user_settings" + roles: + - "user" + - "admin" + pages: + - + name: "profile" + components: + - + name: "edit_form" + type: "form" + mode: "update" + title: "Edit your profile" + submit_route: "user_settings.profile" + query_name: "current_user_data" + query_params: [] + fields: + - + name: "profile.name" + title: "Name" + required: true + - + name: "profile.email" + title: "E-mail" + type: "email" + required: true + - + name: "profile.facebook" + title: "Facebook URL" + - + name: "profile.google" + title: "Google+ URL" + - + name: "profile.twitter" + title: "Twitter ID" + - + name: "profile.website" + title: "Website URL" + - + name: "change_pass" + template: "change_pass" + components: + - + name: "side_menu" + type: "menu" + class: "ui vertical menu" + items: + - + title: "Profile" + route: "user_settings.profile" + - + title: "Change password" + route: "user_settings.change_pass" + - + name: "logout" + template: "logout" + components: + - + name: "left_menu" + type: "menu" + class: "nav navbar-nav" + dest_selector: "#menu" + items: + - + title: "Home" + route: "home_private" + icon_class: "fa fa-home" + - + name: "right_menu" + type: "menu" + class: "right menu" + dest_selector: "#menu" + items: + - + title: "Admin" + route: "admin" + icon_class: "fa fa-wrench" + - + title: "{{userEmail}}" + items: + - + title: "Settings" + route: "user_settings" + - + title: "Logout" + route: "logout" + icon_class: "fa fa-cog" +