├── .gitignore ├── Gruntfile.js ├── README.md ├── apps.json ├── build └── apps.php ├── package.json ├── r_card_counter ├── README.md ├── app.json ├── img │ └── r-card-counter.png └── js │ └── app.js ├── r_codenames ├── README.md ├── app.json ├── img │ ├── r-codename.png │ └── r-codenames.png └── js │ └── app.js ├── r_cssilize ├── README.md ├── app.json ├── img │ └── r-cssilize.png └── js │ └── app.js ├── r_eu_gdpr ├── README.md ├── app.json ├── img │ └── r-eu-gdpr.png └── js │ └── app.js ├── r_gmail_addon ├── README.md ├── app.json ├── img │ └── r-gmail-addon.png └── js │ └── app.js └── r_hide_card_additional_informations ├── README.md ├── app.json ├── img └── r-hide-card-additional-informations.png └── js └── app.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | module.exports = function(grunt) { 3 | var source_js_files = new Array('Gruntfile.js', '**/js/*.js'); 4 | grunt.initConfig({ 5 | pkg: grunt.file.readJSON('package.json'), 6 | jshint: { 7 | all: { 8 | options: { 9 | ignores: ['node_modules/**'] 10 | }, 11 | src: source_js_files 12 | } 13 | }, 14 | jsbeautifier: { 15 | 'pre-merge': { 16 | src: source_js_files, 17 | options: { 18 | mode: 'VERIFY_ONLY' 19 | } 20 | }, 21 | default: { 22 | src: source_js_files 23 | } 24 | }, 25 | exec: { 26 | apps: { 27 | cmd: [ 28 | 'php build/apps.php' 29 | ].join('&&') 30 | } 31 | }, 32 | cssmin: { 33 | options: { 34 | keepSpecialComments: 0 35 | }, 36 | css: { 37 | src: '<%= app_dir %>/css/default.cache.css', 38 | dest: '<%= app_dir %>/css/default.cache.css' 39 | } 40 | }, 41 | uglify: { 42 | js: { 43 | files: { 44 | '<%= app_dir %>/js/default.cache.js': ['<%= app_dir %>/js/default.cache.js'] 45 | } 46 | } 47 | }, 48 | 'json-replace': { 49 | options: { 50 | space: "\t", 51 | replace: { 52 | 'assets': { 53 | 'css': [ 54 | 'apps/<%= app_dir %>/css/default.cache.css' 55 | ], 56 | 'js': [ 57 | 'apps/<%= app_dir %>/js/default.cache.js' 58 | ] 59 | } 60 | } 61 | }, 62 | 'main': { 63 | files: [{ 64 | src: '<%= app_dir %>/app.json', 65 | dest: '<%= app_dir %>/app.json' 66 | }] 67 | } 68 | }, 69 | zip: { 70 | main: { 71 | src: '<%= app_dir %>/**/*', 72 | dest: '<%= app_dir %>-v<%= app_version %>.zip' 73 | } 74 | }, 75 | multi: { 76 | main: { 77 | options: { 78 | vars: { 79 | app_dir: function() { 80 | var apps = grunt.file.readJSON('apps.json'); 81 | var app_dirs = []; 82 | var concat = {}; 83 | for (var app in apps) { 84 | if (grunt.config.get('app') == 'all' || grunt.config.get('app') == app) { 85 | app_dirs.push(app); 86 | } 87 | } 88 | return app_dirs; 89 | }, 90 | app_version: function() { 91 | var apps = grunt.file.readJSON('apps.json'); 92 | var app_versions = []; 93 | for (var app in apps) { 94 | if (grunt.config.get('app') == 'all' || grunt.config.get('app') == app) { 95 | app_versions.push(apps[app].version); 96 | } 97 | } 98 | return app_versions; 99 | } 100 | }, 101 | config: { 102 | app_dir: '<%= app_dir %>', 103 | app_version: '<%= app_version %>' 104 | }, 105 | tasks: ['cssmin', 'uglify', 'json-replace', 'zip'] 106 | } 107 | } 108 | } 109 | }); 110 | grunt.loadNpmTasks('grunt-contrib-jshint'); 111 | grunt.loadNpmTasks('grunt-jsbeautifier'); 112 | grunt.loadNpmTasks('grunt-exec'); 113 | grunt.loadNpmTasks('grunt-contrib-concat'); 114 | grunt.loadNpmTasks('grunt-contrib-cssmin'); 115 | grunt.loadNpmTasks('grunt-contrib-uglify'); 116 | grunt.loadNpmTasks('grunt-json-replace'); 117 | grunt.loadNpmTasks('grunt-zip'); 118 | grunt.loadNpmTasks('grunt-multi'); 119 | grunt.registerTask('format', ['jsbeautifier:default']); 120 | grunt.registerTask('pre-commit', ['jshint', 'jsbeautifier:pre-merge']); 121 | grunt.registerTask('build', 'Build task', function(app) { 122 | grunt.task.run(['exec']); 123 | grunt.config.set('app', app); 124 | var concat = {}; 125 | var apps = grunt.file.readJSON('apps.json'); 126 | for (app in apps) { 127 | var i; 128 | if (grunt.config.get('app') == 'all' || grunt.config.get('app') == app) { 129 | var css_files = apps[app].assets.css; 130 | if (css_files.length) { 131 | for (i = 0; i < css_files.length; i++) { 132 | css_files[i] = css_files[i].replace(/apps\//g, ''); 133 | } 134 | concat[app + '_css'] = { 135 | src: css_files, 136 | dest: app + '/css/default.cache.css' 137 | }; 138 | } 139 | var js_files = apps[app].assets.js; 140 | if (js_files.length) { 141 | for (i = 0; i < js_files.length; i++) { 142 | js_files[i] = js_files[i].replace(/apps\//g, ''); 143 | } 144 | concat[app + '_js'] = { 145 | src: js_files, 146 | dest: app + '/js/default.cache.js' 147 | }; 148 | } 149 | } 150 | } 151 | grunt.config.set('concat', concat); 152 | grunt.task.run(['concat', 'multi']); 153 | }); 154 | }; 155 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Restyaboard Apps 2 | 3 | |Name|Description|Creator|Version|Price|Download 4 | | ------------------- | --------------------------------- | -------------------- | -------------------- |-------------------- |-------------------- | 5 | |Agile WIP|Enables users to set work in progress limit for lists. Addition of cards will be limited by the wip limit.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_agile_wip)| 6 | |Amazon Echo|Access your Restyaboard notifications through Amazon Echo. This Restyaboard Alexa Skill is developed using AWS Lambda. You will need to login to Restyaboard in Amazon Alexa Android App.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_amazon_echo)| 7 | |Attachment Downloader|It provides the solution to download all the user uploaded files associated with a card in a single click.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_attachment_downloader)| 8 | |Auto Archive Expired Cards|Enables automated archiving for expired cards.|[Restya](http://restya.com/) |0.1.4|Paid|[Visit](http://restya.com/board/apps/r_auto_archive_expired_cards)| 9 | |Broadcasts|Enables admin to send notification across all users through top notice and email.|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_broadcasts)| 10 | |Canned Response|Adds option to setup ready-made text comments in cards.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_canned_response)| 11 | |Card Aging|Cards on a board that are not touched in a long time can be seen. Cards will age noticeably with inactivity if this option is enabled.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_card_aging)| 12 | |Card Counter|Shows the number of cards in the lists.|[Restya](http://restya.com/) |0.1.1|Free|[Visit](http://restya.com/board/apps/r_card_counter)| 13 | |Card Template|Added the feature 'Card template app' which allows the users to create a template with necessary details like members, labels and description. Further, it offers the possibility to use the same for any other card which demands the same information.|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_card_template)| 14 | |Dashboard Charts|Adds charts with summary in dashboard, for easy filtering of Today Todos, etc.|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_chart)| 15 | |Chat|Enables integration with XMPP based chat.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_chat)| 16 | |Codenames|All upcoming Restyaboard versions will be codenamed after legendary music bands, as a token of respect and appreciation and default board background will be changed to respective band's wallpaper.|[Restya](http://restya.com/) |0.1.5|Free|[Visit](http://restya.com/board/apps/r_codenames)| 17 | |[Theming/CSSilize](r_cssilize)|CSSilize, theming partner|[Restya](http://restya.com/) |0.1.2|Free|[Download](https://github.com/RestyaPlatform/board-apps/releases/download/v1/r_cssilize-v0.1.2.zip)| 18 | |Custom Field|Adds Custom Field for handling projects.|[Restya](http://restya.com/) |0.1.6|Paid|[Visit](http://restya.com/board/apps/r_custom_fields)| 19 | |Elasticsearch|Adds easy filtering of cards. Useful when you have multiple boards|[Restya](http://restya.com/) |0.1.6|Paid|[Visit](http://restya.com/board/apps/r_elasticsearch)| 20 | |Estimated Time Tracking|Adds estimated time tracking option for each cards.|[Restya](http://restya.com/) |0.1.4|Paid|[Visit](http://restya.com/board/apps/r_estimated_time)| 21 | EU GDPR Cookie Consent Popup|The app adds cookie consent widget to Restyaboard instance to make it compliant with European Union General Data Protection Regulation policies |[Restya](http://restya.com/) |0.1.1|Free|[Download](https://github.com/RestyaPlatform/board-apps/releases/download/v1/r_eu_gdpr-v0.1.1.zip)| 22 | |Export CSV| Export card details from a board as CSV|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_export_csv)| 23 | |Gantt View|Adds Gantt view for handling projects which Shows tasks, task dependencies, task sequence and their progress in relation to the time assigned.|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_gantt_view)| 24 | |Gmail Add-on|Quickly create new cards on your Restyaboard boards without leaving your inbox.|[Restya](http://restya.com/) |0.1.2|Free|[Visit](http://restya.com/board/apps/r_gmail_addon)| 25 | |Grid View Configure|The Grid View Configure app allows a user to change the visibility of set of columns at runtime. It is configured by choosing the fields which wants to be shown in front of the cards.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_gridview_configure)| 26 | |Groups|Adds groups for handling projects.|[Restya](http://restya.com/) |0.1.4|Paid|[Visit](http://restya.com/board/apps/r_groups)| 27 | |Hangouts Chat bot|Quickly create new cards and add labels to the cards on your Restyaboard boards from Hangouts Chat.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_hangouts_chat_bot)| 28 | |Hide Card Additional Informations|To hide the card additional informations like Card created date, Card created user, Card ID and List moved date|[Restya](http://restya.com/) |0.1.2|Free|[Download](https://github.com/RestyaPlatform/board-apps/releases/download/v2/r_hide_card_additional_informations-v0.1.2.zip)| 29 | |Import from GitHub|Enables importing projects and tickets from GitHub|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_import_github)| 30 | |Insights|Insights provide you the tools to quickly build Restyaboard reports. It's helping you to manage your tasks across boards and resources, track resource allocations, and capture lagging or overdue cards.|[Restya](http://restya.com/) |0.1.4|Paid|[Visit](http://restya.com/board/apps/r_insights)| 31 | |Instant Add Card|Allows users to add card quickly across boards--without having to open boards.|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_instant_add_card)| 32 | |LDAP|Enables users to login using their LDAP accounts.|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_ldap_login)| 33 | |List View Configure|The List View Configure app allows a user to change the visibility and order of set of columns at runtime. It is configured using the default drag-and-drop mode for choosing the order of fields and the user selects the fields which wants to be shown in list view.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_listview_configure)| 34 | |Multiple LDAP|Enables users to login using their LDAP accounts.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_multiple_ldap_login)| 35 | |SAML / Shibboleth|Enables single sign-on through SAML / Shibboleth|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_saml_shibboleth_sso)| 36 | |SEO Checklist|Adds ready to use template SEO checklist template for performing search engine optimization.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_seo_checklist)| 37 | |Slack|Enables posting to Slack from Restyaboard|[Restya](http://restya.com/) |0.1.5|Paid|[Visit](http://restya.com/board/apps/r_slack)| 38 | |SparkPost|SparkPost let all emails sent through SparkPost email service, instead through local SMTP server.|[Restya](http://restya.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_sparkpost)| 39 | |Spent Time Tracking|Adds spent time tracking option for each cards.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_spent_time)| 40 | |Support Desk|Transforms Restyaboard into an easy support desk software. Comes with support widget that captures support requests from users.|[Restya](http://restya.com/) |0.1.4|Paid|[Visit](http://restya.com/board/apps/r_support_app)| 41 | |Task Move on Due Date|Task Move on Due Date.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_task_move_on_due_date)| 42 | |User iCal Feed |It provides the perspective to see the tasks of your project with due dates. It helps you to manage your tasks across boards and resources, track resource allocations, and capture lagging or overdue cards.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_user_ical_feed)| 43 | |User Role to Board Role Mapper|Enables admin to quickly setup user privileges by mapping user role to board role globally.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_board_role_mapper)| 44 | |Website QA Checklist|Adds ready to use checklist template for performing QA on a website.|[Restya](http://restya.com/) |0.1.2|Paid|[Visit](http://restya.com/board/apps/r_website_qa_checklist)| 45 | |Wiki|Adds Wiki for handling projects.|[Restya](http://restya.com/) |0.1.6|Paid|[Visit](http://restya.com/board/apps/r_wiki)| 46 | |Zapier|Zapier is IFTTT like workflow automation service that enables integration with over 500 other websites. This app enables connecting to Zapier.|[Restya](http://restya.com/) |0.1.4|Paid|[Visit](http://restya.com/board/apps/r_zapier)| 47 | |Freshdesk|Restyaboard has an app listed in the Freshdesk marketplace to manage customer tickets through Restyaboard. The app supplements it by providing the access token that is needed for accessing the Restyaboard from Freshdesk.|[AgileShoppe](http://agileshoppe.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_freshdesk)| 48 | |Zendesk|Restyaboard has an app listed in the Zendesk marketplace to manage customer tickets through Restyaboard. This app supplements it by providing the access token that is needed for accessing the Restyaboard from Zendesk.|[AgileShoppe](http://agileshoppe.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_zendesk)| 49 | |Visual Studio|Restyaboard has an extension listed in the Visual Studio marketplace to manage customer task through Restyaboard. The app supplements it by providing the access token that is needed for accessing the Restyaboard from Visual Studio.|[Zyndaa](http://zyndaa.com/) |0.1.1|Paid|[Visit](http://restya.com/board/apps/r_visualstudio)| 50 | |[LabelStyle](https://github.com/ik9999/r_labelstyle)|Shows labels with names for cards in board view|[ik9999](https://github.com/ik9999) |1.1|Free|[Visit](https://github.com/ik9999/r_labelstyle)| 51 | |[BoardsBar](https://github.com/ik9999/r_boardsbar)|Starred boards toolbar|[ik9999](https://github.com/ik9999) |1.0|Free|[Visit](https://github.com/ik9999/r_boardsbar)| 52 | 53 | ### Steps to create new app 54 | - Create a new folder by name of your app name in apps folder. 55 | - App folder name must start with `r_`. 56 | - Create `app.json` file with your app details which is explained below. 57 | - Create js folder with `app.js` and include the app file in `app.json`. If any new library file need means Create libs folder within `js` folder and add it in `libs` folder and include it in `app.json` file. 58 | 59 | ### App folder 60 | - app.json 61 | - js 62 | - css (if needed) 63 | - img (if needed) 64 | - README.md 65 | 66 | ### app.json 67 | 68 | The content of the file is used in index page. For example, content should look as follows 69 | ```javascript 70 | { 71 | "name" : "your_app_name", 72 | "description" : "your_app_description", 73 | "author" : "", 74 | "author_email" : "", 75 | "author_url" : "", 76 | "version" : "your_app_version", 77 | "price" : 78 | "settings_description" : "", 79 | "settings" : { 80 | "setting_name": { 81 | "label" : "", 82 | "info" : "", 83 | "value" : "", 84 | "is_public" : true 85 | }, 86 | }, 87 | "assets" : { 88 | "css" : [], 89 | "js" : [ 90 | "apps/your_app_name/js/app.js" 91 | ] 92 | }, 93 | "enabled" : true 94 | } 95 | ``` 96 | Here, 97 | 98 | - `name` - app name which is displayed in admin side app listing page to differentiate the name. 99 | - `description` - app description for understanding purpose. 100 | - `author`, `author_email`, `author_url`, `version` for documentation standards. 101 | - `settings_description` - settings description for how to create a application. 102 | - `settings` - settings contains your app client id, secret key, OAuth token url. 103 | - `setting_name` - Your setting name (allow only a-z, 0-9, _ ). 104 | - `label` - Label value will be used in label of setting text box. 105 | - `info` - Info value will be showed under setting text box. 106 | - `value` - Admin will configure this in UI. 107 | - `is_public` - To show/hide settings value in user side. (e.g., OAuth client secret should not visible to user. So for that settings you should set is_public as `false`). 108 | - `assets` - assets contains css, js files which are need to run your app. 109 | - `enabled` - status of your app. 110 | 111 | ### OAuth implementation 112 | 113 | In Restyabord, we have implemented a generic OAuth callback to get the access token. To use this approach you have to follow the below steps: 114 | - For OAuth implementation you should include your application client id, client secret, OAuth token URL in `app.json` under settings field. 115 | - You have to add your app folder name in prefix of client id, client secret, OAuth token URL. i.e `your_app_name_client_id`, `your_app_name_client_secret`, `your_app_name_oauth_token_url`. 116 | - Your request to get access token should be like this `oauth_callback/your_app_name/CODE`. 117 | 118 | ### Best Practices 119 | 120 | App script contains a time consuming calls or scripts then use [Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) to run the script in background. 121 | -------------------------------------------------------------------------------- /apps.json: -------------------------------------------------------------------------------- 1 | { 2 | "r_agile_wip": { 3 | "id": "r_agile_wip", 4 | "uuid": "", 5 | "name": "Agile WIP", 6 | "description": "Enables users to set work in progress limit for lists.", 7 | "author": "Restya", 8 | "author_email": "info@restya.com", 9 | "author_url": "http://restya.com/", 10 | "version": "0.1.2", 11 | "price": "Paid", 12 | "icon": "apps/r_agile_wip/img/r-agile-wip.png", 13 | "settings_description": "", 14 | "large_description": [ 15 | "Agile Work In Progress Limit. ", 16 | "**How it works**", 17 | "- Agile Work In progress limit can be set through setting menu (Agile WIP >> Agile WIP) found on each list.", 18 | "- Addition of cards will be limited by the wip limit." 19 | ], 20 | "settings": false, 21 | "assets": { 22 | "css": [ 23 | "apps/r_agile_wip/css/app.css" 24 | ], 25 | "js": [ 26 | "apps/r_agile_wip/js/app.js" 27 | ] 28 | }, 29 | "enabled": true 30 | }, 31 | "r_amazon_echo": { 32 | "id": "r_amazon_echo", 33 | "uuid": "", 34 | "name": "Amazon Echo", 35 | "description": "Access your Restyaboard notifications through Amazon Echo. This Restyaboard Alexa Skill is developed using AWS Lambda. You will need to login to Restyaboard in Amazon Alexa Android App.", 36 | "author": "Restya", 37 | "author_email": "info@restya.com", 38 | "author_url": "http://restya.com/", 39 | "version": "0.1.1", 40 | "price": "Paid", 41 | "icon": "apps/r_amazon_echo/img/r-amazon-echo.png", 42 | "settings_description": "", 43 | "settings": false, 44 | "assets": { 45 | "css": [], 46 | "js": [ 47 | "apps/r_amazon_echo/js/app.js" 48 | ] 49 | }, 50 | "enabled": true 51 | }, 52 | "r_attachment_downloader": { 53 | "id": "r_attachment_downloader", 54 | "uuid": "", 55 | "name": "Attachment Downloader", 56 | "description": "It provides the solution to download all the user uploaded files associated with a card in a single click.", 57 | "author": "Restya", 58 | "author_email": "info@restya.com", 59 | "author_url": "", 60 | "version": "0.1.2", 61 | "price": "Paid", 62 | "icon": "apps/r_attachment_downloader/img/r-attachment_downloader.png", 63 | "settings_description": "", 64 | "settings_links":[], 65 | "settings": false, 66 | "sponsor": "Marc Perna", 67 | "assets": { 68 | "css": [], 69 | "js": [ 70 | "apps/r_attachment_downloader/js/app.js" 71 | ] 72 | }, 73 | "enabled": true 74 | }, 75 | "r_auto_archive_expired_cards": { 76 | "id": "r_auto_archive_expired_cards", 77 | "uuid": "", 78 | "name": "Auto Archive Expired Cards", 79 | "description": "Enables automated archiving for expired cards.", 80 | "author": "Restya", 81 | "author_email": "info@restya.com", 82 | "author_url": "http://restya.com/", 83 | "version": "0.1.4", 84 | "price": "Paid", 85 | "icon": "apps/r_auto_archive_expired_cards/img/r-auto-archive-expired-cards.png", 86 | "settings_description": "", 87 | "settings": false, 88 | "assets": { 89 | "css": [ 90 | "apps/r_auto_archive_expired_cards/css/app.css" 91 | ], 92 | "js": [ 93 | "apps/r_auto_archive_expired_cards/js/app.js" 94 | ] 95 | }, 96 | "enabled": true 97 | }, 98 | "r_board_role_mapper": { 99 | "id": "r_board_role_mapper", 100 | "uuid": "", 101 | "name": "User Role to Board Role Mapper", 102 | "description": "Enables admin to quickly setup user privileges by mapping user role to board role globally.", 103 | "author": "Restya", 104 | "author_email": "info@restya.com", 105 | "author_url": "", 106 | "version": "0.1.2", 107 | "price": "Paid", 108 | "icon": "apps/r_board_role_mapper/img/r-boardrole-mapper.png", 109 | "settings_description": "", 110 | "large_description": [ 111 | "- User Role to Board Role Mapper app helps to define the roles for the board member based on the user roles. User roles define the permissions for users to perform the specified actions.", 112 | "- In a default Restyaboard, there are some predefined roles with a predefined set of permissions. The user roles are Admin, User, Guest. It's one of the solutions for assigning the users to those roles and set their access on the boards.", 113 | "- This App basically is a power-up which is not a part of the core Restyaboard experience." 114 | ], 115 | "settings": false, 116 | "sponsor": "Erik Madsen", 117 | "assets": { 118 | "css": [ ], 119 | "js": [ 120 | "apps/r_board_role_mapper/js/app.js" 121 | ], 122 | "html": [ 123 | "apps/r_board_role_mapper/app.html" 124 | ] 125 | }, 126 | "enabled": true 127 | }, 128 | "r_boardsbar": { 129 | "id": "r_boardsbar", 130 | "uid": "", 131 | "name": "BoardsBar", 132 | "description": "Makes starred boards appear in footer for quicker access.", 133 | "author": "ik9999", 134 | "author_email": "q@eqw.me", 135 | "author_url": "https://github.com/ik9999", 136 | "version": "0.1.0", 137 | "price": "Free", 138 | "icon": "https://raw.githubusercontent.com/ik9999/r_boardsbar/master/img/icon128.png", 139 | "settings_description": "Starred boards toolbar plugin for Restyaboard", 140 | "settings": { 141 | }, 142 | "assets": { 143 | "css": [ 144 | "https://raw.githubusercontent.com/ik9999/r_boardsbar/master/css/app.css" 145 | ], 146 | "js": [ 147 | "https://raw.githubusercontent.com/ik9999/r_boardsbar/master/js/app.js" 148 | ] 149 | }, 150 | "enabled": true 151 | }, 152 | "r_broadcasts": { 153 | "id": "r_broadcasts", 154 | "uuid": "", 155 | "name": "Broadcasts", 156 | "description": "Enables admin to send notification across all users through top notice and email.", 157 | "author": "Restya", 158 | "author_email": "info@restya.com", 159 | "author_url": "", 160 | "version": "0.1.5", 161 | "price": "Paid", 162 | "icon": "apps/r_broadcasts/img/r-broadcast.png", 163 | "settings_description": "", 164 | "large_description": [ 165 | "- Allows admin role users to send broadcast messages and email to all of our members, at once", 166 | "- It can be used to notify users about scheduled maintenance, recent upgrades and more", 167 | "- Broadcast messages are displayed for every user on all pages of the Restyaboard UI.", 168 | "- Broadcast emails used to notify users via their emails with given broadcast information." 169 | ], 170 | "settings_links":[ 171 | { 172 | "name":"Settings", 173 | "icon": "icon-cog", 174 | "url":"#/apps/r_broadcast/broadcast" 175 | } 176 | ], 177 | "settings": false, 178 | "assets": { 179 | "css": [ 180 | "apps/r_broadcasts/css/app.css" 181 | ], 182 | "js": [ 183 | "apps/r_broadcasts/js/app.js" 184 | ], 185 | "html": [ 186 | "apps/r_broadcasts/app.html" 187 | ] 188 | }, 189 | "enabled": true 190 | }, 191 | "r_canned_response": { 192 | "id": "r_canned_response", 193 | "uuid": "", 194 | "name": "Canned Response", 195 | "description": "Adds option to setup ready-made text comments in cards.", 196 | "author": "Harry Reid", 197 | "author_email": "harryreid@rediffmail.com", 198 | "author_url": "https://github.com/reidharry", 199 | "version": "0.1.2", 200 | "price": "Paid", 201 | "icon": "apps/r_canned_response/img/r-canned-response.png", 202 | "settings_description": "", 203 | "large_description": [ 204 | "- Adds a canned response dropdown next to comment box in card view. Using this you can quickly insert canned response.", 205 | "- You can add your own canned response in `client/apps/r_canned_response/json/app.json`." 206 | ], 207 | "settings": false, 208 | "assets": { 209 | "css": [ ], 210 | "js": [ 211 | "apps/r_canned_response/js/app.js" 212 | ] 213 | }, 214 | "enabled": false 215 | }, 216 | "r_card_aging": { 217 | "id": "r_card_aging", 218 | "uuid": "", 219 | "name": "Card Aging", 220 | "description": "Cards on a board that are not touched in a long time can be seen. Cards will age noticeably with inactivity if this option is enabled.", 221 | "author": "Restya", 222 | "author_email": "info@restya.com", 223 | "author_url": "", 224 | "version": "0.1.1", 225 | "price": "Paid", 226 | "icon": "apps/r_card_aging/img/r-card_aging.png", 227 | "settings_description": "Choose Modes for how cards will visibly age with inactivity.", 228 | "settings": { 229 | "cardaging_visiblity_mode": { 230 | "label": "Card Aging Visiblity Mode", 231 | "type": "dropdown", 232 | "options": "regular,pirate", 233 | "info": "e.g., regular/pirate", 234 | "value": "regular", 235 | "is_public": true 236 | } 237 | }, 238 | "assets": { 239 | "css": [ 240 | "apps/r_card_aging/css/app.css" 241 | ], 242 | "js": [ 243 | "apps/r_card_aging/js/app.js" 244 | ] 245 | }, 246 | "enabled": true 247 | }, 248 | "r_card_counter": { 249 | "id": "r_card_counter", 250 | "uuid": "", 251 | "name": "Card Counter", 252 | "description": "Shows the number of cards in the lists.", 253 | "author": "Restya", 254 | "author_email": "info@restya.com", 255 | "author_url": "", 256 | "version": "0.1.1", 257 | "price": "Free", 258 | "icon": "apps/r_card_counter/img/r-card-counter.png", 259 | "settings_description": "", 260 | "large_description": [ 261 | "- Disable it in Admin Control Panel for default behavior.", 262 | "- This is a simple sample App to show the possibilities of App platform." 263 | ], 264 | "settings": false, 265 | "assets": { 266 | "css": [], 267 | "js": [ 268 | "apps/r_card_counter/js/app.js" 269 | ] 270 | }, 271 | "enabled": false 272 | }, 273 | "r_card_template": { 274 | "id": "r_card_template", 275 | "uuid": "", 276 | "name": "Card Template", 277 | "description": "Use existing card information by saving it as a pre-formatted template.", 278 | "author": "Restya", 279 | "author_email": "info@restya.com", 280 | "author_url": "http://restya.com/", 281 | "version": "0.1.5", 282 | "price": "Paid", 283 | "icon": "apps/r_card_template/img/r_card_template.png", 284 | "settings_description": "", 285 | "large_description" : [ 286 | "- Added the feature 'Card template app' which allows the users to create a template with necessary details like members, labels and description.", 287 | "- Further, it offers the possibility to use the same for any other card which demands the same information." 288 | ], 289 | "settings": false, 290 | "assets": { 291 | "css": [ 292 | "apps/r_card_template/css/app.css" 293 | ], 294 | "js": [ 295 | "apps/r_card_template/js/app.js" 296 | ] 297 | }, 298 | "enabled": true 299 | }, 300 | "r_chart": { 301 | "id": "r_chart", 302 | "uuid": "", 303 | "name": "Dashboard Charts", 304 | "description": "Adds charts with summary in dashboard, for easy filtering of Today Todos, etc.", 305 | "author": "Restya", 306 | "author_email": "info@restya.com", 307 | "author_url": "", 308 | "version": "0.1.5", 309 | "price": "Paid", 310 | "icon": "apps/r_chart/img/r-chart.png", 311 | "settings_description": "Different people may use different naming for Todo, Doing and Done. So, it is usually difficult to identify what are actually in Todo, Doing and Done. Below, you can configure how the lists have to be recognized. For a list, you can configure its indicator icon and its color too.", 312 | "settings": { 313 | "r_chart_todo": { 314 | "label" : "Todo", 315 | "info" : "", 316 | "value" : "To do, Todo, New, Probable sale, Wishlist, 36, 36.0.1", 317 | "is_public" : true 318 | }, 319 | "r_chart_todo_icon": { 320 | "label" : "Todo Icon", 321 | "info" : "", 322 | "value" : "icon-tasks icon-large", 323 | "is_public" : true 324 | }, 325 | "r_chart_todo_color": { 326 | "label" : "Todo Color", 327 | "info" : "", 328 | "value" : "#f47564", 329 | "is_public" : true 330 | }, 331 | "r_chart_doing": { 332 | "label" : "Doing", 333 | "info" : "", 334 | "value" : "Doing, Feedback, Confirmed, Assigned, Pending sale, Active, 37, 37.0.1, 37.0.2", 335 | "is_public" : true 336 | }, 337 | "r_chart_doing_icon": { 338 | "label" : "Doing Icon", 339 | "info" : "", 340 | "value" : "icon-spinner icon-large", 341 | "is_public" : true 342 | }, 343 | "r_chart_doing_color": { 344 | "label" : "Doing Color", 345 | "info" : "", 346 | "value" : "#27c5c3", 347 | "is_public" : true 348 | }, 349 | "r_chart_done": { 350 | "label" : "Done", 351 | "info" : "", 352 | "value" : "Done, Resolved, Closed, Completed sale, Acquired, Dead", 353 | "is_public" : true 354 | }, 355 | "r_chart_done_icon": { 356 | "label" : "Done Icon", 357 | "info" : "", 358 | "value" : "icon-ok-circle icon-large", 359 | "is_public" : true 360 | }, 361 | "r_chart_done_color": { 362 | "label" : "Done Color", 363 | "info" : "", 364 | "value" : "#8dca35", 365 | "is_public" : true 366 | } 367 | }, 368 | "assets": { 369 | "css": [ 370 | "apps/r_chart/css/app.css" 371 | ], 372 | "js": [ 373 | "apps/r_chart/js/app.js" 374 | ] 375 | }, 376 | "enabled": true 377 | }, 378 | "r_chat": { 379 | "id": "r_chat", 380 | "uuid": "", 381 | "name": "Chat", 382 | "description": "Enables integration with XMPP based chat.", 383 | "author": "Restya", 384 | "author_email": "info@restya.com", 385 | "author_url": "", 386 | "version": "0.1.3", 387 | "price": "Paid", 388 | "icon": "apps/r_chat/img/r-chat.png", 389 | "settings_description": "Server URL: Provide server URL, e.g., http://localhost:9200/
Index Name: Used to prefix index names to avoid potential collisions. e.g., restya", 390 | "settings": { 391 | "r_chat_db_host": { 392 | "label" : "DB Host", 393 | "info" : "", 394 | "value" : "REPLACE_CHAT_DB_HOST", 395 | "is_public" : false 396 | }, 397 | "r_chat_db_port": { 398 | "label" : "DB Port", 399 | "info" : "", 400 | "value" : "REPLACE_CHAT_DB_PORT", 401 | "is_public" : false 402 | }, 403 | "r_chat_db_name": { 404 | "label" : "DB Name", 405 | "info" : "", 406 | "value" : "REPLACE_CHAT_DB_NAME", 407 | "is_public" : false 408 | }, 409 | "r_chat_db_user": { 410 | "label" : "DB Username", 411 | "info" : "", 412 | "value" : "REPLACE_CHAT_DB_USERNAME", 413 | "is_public" : false 414 | }, 415 | "r_chat_db_password": { 416 | "label" : "DB Password", 417 | "info" : "", 418 | "value" : "REPLACE_CHAT_DB_PASSWORD", 419 | "is_public" : false 420 | }, 421 | "r_chat_service_url": { 422 | "label" : "Bosh Service URL", 423 | "info" : "", 424 | "value" : "REPLACE_CHAT_BOSH_SERVICE_URL", 425 | "is_public" : true 426 | }, 427 | "r_chat_jabber_host": { 428 | "label" : "Jabber Host", 429 | "info" : "", 430 | "value" : "REPLACE_CHAT_JABBER_HOST", 431 | "is_public" : true 432 | }, 433 | "r_chat_jaxl_debug": { 434 | "label" : "JAXL DEBUG", 435 | "info" : "", 436 | "value" : "0", 437 | "is_public" : true 438 | }, 439 | "r_chat_client_resource_name": { 440 | "label" : "Client Resource Name", 441 | "info" : "", 442 | "value" : "REPLACE_CHAT_CLIENT_RESOURCE_NAME", 443 | "is_public" : false 444 | } 445 | }, 446 | "assets": { 447 | "css": [ 448 | "apps/r_chat/css/app.css" 449 | ], 450 | "js": [ 451 | "apps/r_chat/libs/converse.js", 452 | "apps/r_chat/js/app.js" 453 | ] 454 | }, 455 | "enabled": false 456 | }, 457 | "r_codenames": { 458 | "id": "r_codenames", 459 | "uuid": "", 460 | "name": "Codenames", 461 | "description": "Get the codename wallpaper and legendary music bands productivity beat for boards.", 462 | "author": "Restya", 463 | "author_email": "info@restya.com", 464 | "author_url": "http://restya.com/", 465 | "version": "0.1.5", 466 | "price": "Free", 467 | "icon": "apps/r_codenames/img/r-codenames.png", 468 | "settings_description": "", 469 | "large_description": [ 470 | "Starting from v0.6.6 (Modern Talking), all Restyaboard versions are codenamed after legendary music bands, as a token of respect and appreciation. Anyone can propose their favorite band for upcoming milestones in [GitHub tracker](https://github.com/RestyaPlatform/board/issues/1859). By enabling this app, new boards will get codename wallpaper and productivity beat.", 471 | "", 472 | "Current v1.7 is codenamed after legendary **Scorpions** band", 473 | "## About Scorpions", 474 | "- Scorpions are a German rock band formed in 1965 in Hanover by Rudolf Schenker.Since the band's inception, its musical style has ranged from hard rock to heavy metal.The lineup from 1978–1992 was the most successful incarnation of the group, and included Klaus Meine (vocals), Rudolf Schenker (rhythm guitar), Matthias Jabs (lead guitar), Francis Buchholz (bass), and Herman Rarebell (drums).(Source: Wikipedia) (Source: [Wikipedia](https://en.wikipedia.org/wiki/Scorpions_(band)))", 475 | "- Origin: Hanover, West Germany (1965)", 476 | "- Members: Rudolf Schenker, Klaus Meine, Matthias Jabs, Paweł Mąciwoda, Mikkey Dee", 477 | "- Genres: Hard rock, heavy metal, glam metal" 478 | ], 479 | "settings": false, 480 | "assets": { 481 | "css": [ ], 482 | "js": [ 483 | "apps/r_codenames/js/app.js" 484 | ] 485 | }, 486 | "enabled": false 487 | }, 488 | "r_cssilize": { 489 | "id": "r_cssilize", 490 | "uuid": "", 491 | "name": "Theming/CSSilize", 492 | "description": "CSSilize, theming partner", 493 | "author": "Restya", 494 | "author_email": "info@restya.com", 495 | "author_url": "http://restya.com/", 496 | "version": "0.1.3", 497 | "price": "Free", 498 | "icon": "apps/r_cssilize/img/r-cssilize.png", 499 | "settings_description": "", 500 | "large_description": [ 501 | "- CSSilize is our theming partner.", 502 | "- For Restyaboard theming, website designing or mobile apps. Starting from $35." 503 | ], 504 | "settings": false, 505 | "assets": { 506 | "css": [ 507 | ], 508 | "js": [ 509 | "apps/r_cssilize/js/app.js" 510 | ] 511 | }, 512 | "enabled": true 513 | }, 514 | "r_custom_fields": { 515 | "id": "r_custom_fields", 516 | "uuid": "", 517 | "name": "Custom Field", 518 | "description": "Get more fields like text, textarea, numbers, checkboxes, dates, and dropdown lists for the cards.", 519 | "author": "Restya", 520 | "author_email": "info@restya.com", 521 | "author_url": "", 522 | "version": "0.1.6", 523 | "price": "Paid", 524 | "icon": "apps/r_custom_fields/img/r-custom_field.png", 525 | "settings_description": "", 526 | "large_description": [ 527 | "- Add Custom Fields to each Card.", 528 | "- Disable it in Admin Control Panel for default behavior.", 529 | "- This is a simple sample App to show the possibilities of App platform." 530 | ], 531 | "settings_links":[ 532 | { 533 | "name":"Settings", 534 | "icon": "icon-cog", 535 | "url":"#/apps/r_custom_fields/manage" 536 | } 537 | ], 538 | "settings": false, 539 | "assets": { 540 | "css": [ 541 | "apps/r_custom_fields/css/app.css" 542 | ], 543 | "js": [ 544 | "apps/r_custom_fields/js/app.js" 545 | ], 546 | "html": [ 547 | "apps/r_custom_fields/app.html" 548 | ] 549 | }, 550 | "enabled": true 551 | }, 552 | "r_elasticsearch": { 553 | "id": "r_elasticsearch", 554 | "uuid": "", 555 | "name": "Elasticsearch", 556 | "description": "Adds easy filtering of cards. Useful when you have multiple boards", 557 | "author": "Restya", 558 | "author_email": "info@restya.com", 559 | "author_url": "", 560 | "version": "0.1.6", 561 | "price": "Paid", 562 | "icon": "apps/r_elasticsearch/img/r-elasticsearch.png", 563 | "settings_description": "", 564 | "settings": { 565 | "r_elasticsearch_server_host": { 566 | "label": "Server Host", 567 | "info": "e.g., localhost", 568 | "value": "REPLACE_ELASTIC_SEARCH_SERVER_HOST", 569 | "is_public": false 570 | }, 571 | "r_elasticsearch_server_port": { 572 | "label": "Server Port", 573 | "info": "e.g., 9200", 574 | "value": "REPLACE_ELASTIC_SEARCH_SERVER_PORT", 575 | "is_public": false 576 | }, 577 | "r_elasticsearch_index_name": { 578 | "label": "Index Name", 579 | "info": "Used to prefix index names to avoid potential collisions. e.g., restya", 580 | "value": "REPLACE_ELASTIC_SEARCH_INDEX_NAME", 581 | "is_public": false 582 | } 583 | }, 584 | "assets": { 585 | "css": [ 586 | "apps/r_elasticsearch/css/app.css" 587 | ], 588 | "js": [ 589 | "apps/r_elasticsearch/js/app.js" 590 | ] 591 | }, 592 | "enabled": true 593 | }, 594 | "r_estimated_time": { 595 | "id": "r_estimated_time", 596 | "uuid": "", 597 | "name": "Estimated Time Tracking", 598 | "description": "Adds estimated time tracking option for each cards.", 599 | "author": "Restya", 600 | "author_email": "info@restya.com", 601 | "author_url": "http://restya.com/", 602 | "version": "0.1.4", 603 | "price": "Paid", 604 | "icon": "apps/r_estimated_time/img/r-estimated-time.png", 605 | "settings_description": "", 606 | "large_description": [ 607 | "Adds estimated time custom input. This will be displayed in the card listing to arrange them easily." 608 | ], 609 | "settings": false, 610 | "assets": { 611 | "css": [ 612 | "apps/r_estimated_time/css/app.css" 613 | ], 614 | "js": [ 615 | "apps/r_estimated_time/js/app.js" 616 | ] 617 | }, 618 | "enabled": true 619 | }, 620 | "r_eu_gdpr": { 621 | "id": "r_eu_gdpr", 622 | "uuid": "", 623 | "name": "EU GDPR Cookie Consent Popup", 624 | "description": "Makes Restyaboard instance GDPR cookie compliant by displaying popup.", 625 | "author": "Restya", 626 | "author_email": "info@restya.com", 627 | "author_url": "http://restya.com/", 628 | "version": "0.1.2", 629 | "price": "Free", 630 | "icon": "apps/r_eu_gdpr/img/r-eu-gdpr.png", 631 | "settings_description": "", 632 | "large_description": [ 633 | "The app adds cookie consent widget to Restyaboard instance to make it compliant with European Union General Data Protection Regulation policies." 634 | ], 635 | "settings": false, 636 | "assets": { 637 | "css": [ ], 638 | "js": [ 639 | "apps/r_eu_gdpr/js/app.js" 640 | ] 641 | }, 642 | "enabled": true 643 | }, 644 | "r_export_csv": { 645 | "id": "r_export_csv", 646 | "uuid": "", 647 | "name": "Export CSV", 648 | "description": "Export card details from a board as CSV", 649 | "author": "Restya", 650 | "author_email": "info@restya.com", 651 | "author_url": "http://restya.com/", 652 | "version": "0.1.2", 653 | "price": "Paid", 654 | "icon": "apps/r_export_csv/img/r-export-csv.png", 655 | "settings_description": "", 656 | "settings": false, 657 | "sponsor": "Sergi", 658 | "assets": { 659 | "css": [ ], 660 | "js": [ 661 | "apps/r_export_csv/js/app.js" 662 | ] 663 | }, 664 | "enabled": true 665 | }, 666 | "r_freshdesk": { 667 | "id": "r_freshdesk", 668 | "uuid": "", 669 | "name": "Freshdesk", 670 | "description": "Restyaboard has an app listed in the Freshdesk marketplace to manage customer tickets through Restyaboard. The app supplements it by providing the access token that is needed for accessing the Restyaboard from Freshdesk.", 671 | "author": "AgileShoppe", 672 | "author_email": "info@agileshoppe.com", 673 | "author_url": "https://agileshoppe.com", 674 | "version": "0.1.1", 675 | "price": "Paid", 676 | "icon": "apps/r_freshdesk/img/r-freshdesk.png", 677 | "settings_description": "Freshdesk allow users to connect your board to your Freshdesk account.", 678 | "large_description": [ 679 | "- Restyaboard app by AgileShoppe in Freshdesk marketplace helps customers of Freshdesk resolve their support tickets through Restyaboard. Using that any card can be created or linked with Freshdesk tickets." , 680 | "- This app provides the access token required for that Freshdesk app." 681 | ], 682 | "settings": { 683 | "r_freshdesk_client_id": { 684 | "label": "Freshdesk Client ID", 685 | "info": "", 686 | "value": "1912270553584916", 687 | "is_public": true 688 | }, 689 | "r_is_restyaboard_login": { 690 | "label": "RestyaBoard Login", 691 | "info": "", 692 | "value": "true", 693 | "is_hide": true, 694 | "is_public": false 695 | } 696 | }, 697 | "assets": { 698 | "css": [], 699 | "js": [ 700 | "apps/r_freshdesk/js/app.js" 701 | ] 702 | }, 703 | "enabled": true 704 | }, 705 | "r_gantt_view": { 706 | "id": "r_gantt_view", 707 | "uuid": "", 708 | "name": "Gantt View", 709 | "description": "Adds Gantt view apart from the default grid view. Gantt chart can be further refined to member or task basis.", 710 | "author": "Restya", 711 | "author_email": "info@restya.com", 712 | "author_url": "", 713 | "version": "0.1.5", 714 | "price": "Paid", 715 | "icon": "apps/r_gantt_view/img/r-gantt-view.png", 716 | "settings_description": "", 717 | "settings": false, 718 | "sponsor": "Erik Madsen", 719 | "assets": { 720 | "css": [ 721 | "apps/r_gantt_view/css/vendor.css", 722 | "apps/r_gantt_view/css/main.css" 723 | ], 724 | "js": [ 725 | "apps/r_gantt_view/js/app.js" 726 | ], 727 | "html": [ 728 | "apps/r_gantt_view/app.html" 729 | ] 730 | }, 731 | "enabled": true 732 | }, 733 | "r_gmail_addon": { 734 | "id": "r_gmail_addon", 735 | "uuid": "", 736 | "name": "Gmail Add-on", 737 | "description": "Enables Gmail Add-on link so that users can install Restyaboard Gmail Add-on from Gmail Marketplace.", 738 | "author": "Restya", 739 | "author_email": "info@restya.com", 740 | "author_url": "", 741 | "version": "0.1.2", 742 | "price": "Free", 743 | "icon": "apps/r_gmail_addon/img/r-gmail-addon.png", 744 | "settings_description": "", 745 | "settings": false, 746 | "assets": { 747 | "css": [], 748 | "js": [] 749 | }, 750 | "enabled": true 751 | }, 752 | "r_gridview_configure": { 753 | "id": "r_gridview_configure", 754 | "uuid": "", 755 | "name": "Grid View Configure", 756 | "description": " The Grid View Configure app allows a user to change the visibility of set of columns at runtime. It is configured by choosing the fields which wants to be shown in front of the cards.", 757 | "author": "Restya", 758 | "author_email": "info@restya.com", 759 | "author_url": "http://restya.com/board", 760 | "version": "0.1.1", 761 | "price": "Paid", 762 | "icon": "apps/r_gridview_configure/img/r_gridview_configure.png", 763 | "settings_description": "The Grid View Configure app allows a user to change the visibility of set of columns at runtime. It is configured by choosing the fields which wants to be shown in front of the cards.", 764 | "large_description" : [ 765 | "- To hide the card additional information in Grid view like Card created date, Card created user, Card ID, List moved date etc.. from cards listing.", 766 | "- Disable it in Admin Control Panel for default behavior.", 767 | "- This is a simple sample App to show the possibilities of App platform." 768 | ], 769 | "settings": false, 770 | "assets": { 771 | "css": [], 772 | "js": [ 773 | "apps/r_gridview_configure/js/app.js" 774 | ], 775 | "html": [ 776 | "apps/r_gridview_configure/app.html" 777 | ] 778 | }, 779 | "enabled": true 780 | }, 781 | "r_groups": { 782 | "id": "r_groups", 783 | "uuid": "", 784 | "name": "Groups", 785 | "description": "Allows admin users to create users group template and so multiple users can easily be added into board (instead of one by one).", 786 | "author": "Restya", 787 | "author_email": "info@restya.com", 788 | "author_url": "", 789 | "version": "0.1.3", 790 | "price": "Paid", 791 | "icon": "apps/r_groups/img/r-group.png", 792 | "settings_description": "", 793 | "large_description": [ 794 | "- Disable it in Admin Control Panel for default behavior.", 795 | "- This is a simple sample App to show the possibilities of App platform." 796 | ], 797 | "settings": false, 798 | "assets": { 799 | "css": [ 800 | "apps/r_groups/css/app.css" 801 | ], 802 | "js": [ 803 | "apps/r_groups/js/app.js" 804 | ], 805 | "html": [ 806 | "apps/r_groups/app.html" 807 | ] 808 | }, 809 | "enabled": true 810 | }, 811 | "r_hangouts_chat_bot": { 812 | "id": "r_hangouts_chat_bot", 813 | "uuid": "", 814 | "name": "Hangouts Chat bot", 815 | "description": "Quickly create new cards and add labels to the cards on your Restyaboard boards from Hangouts Chat.", 816 | "author": "Restya", 817 | "author_email": "info@restya.com", 818 | "author_url": "", 819 | "version": "0.1.1", 820 | "price": "Paid", 821 | "icon": "apps/r_hangouts_chat_bot/img/r-hangouts-chat-bot.png", 822 | "settings_description": "", 823 | "settings": false, 824 | "assets": { 825 | "css": [], 826 | "js": [] 827 | }, 828 | "enabled": true 829 | }, 830 | "r_hide_card_additional_informations": { 831 | "id": "r_hide_card_additional_informations", 832 | "uuid": "", 833 | "name": "Hide Card Additional Informations", 834 | "description": "To hide the card additional informations like Card created date, Card created user, Card ID and List moved date", 835 | "author": "Restya", 836 | "author_email": "info@restya.com", 837 | "author_url": "http://restya.com/", 838 | "version": "0.1.3", 839 | "price": "Free", 840 | "icon": "apps/r_hide_card_additional_informations/img/r-hide-card-additional-informations.png", 841 | "settings_description": "To hide the card additional informations like Card created date, Card created user, Card ID and List moved date", 842 | "large_description": [ 843 | "- Hide Card Additional Informations from cards listing.", 844 | "- Disable it in Admin Control Panel for default behavior." 845 | ], 846 | "settings": { 847 | "hide_card_created_date": { 848 | "label": "Hide card created date", 849 | "info": "e.g., true/false", 850 | "value": "true", 851 | "is_public": true 852 | }, 853 | "hide_card_created_user": { 854 | "label": "Hide card created user", 855 | "info": "e.g., true/false", 856 | "value": "true", 857 | "is_public": true 858 | }, 859 | "hide_card_id": { 860 | "label": "Hide card ID", 861 | "info": "e.g., true/false", 862 | "value": "true", 863 | "is_public": true 864 | }, 865 | "hide_list_moved_date": { 866 | "label": "Hide list moved date", 867 | "info": "e.g., true/false", 868 | "value": "true", 869 | "is_public": true 870 | } 871 | }, 872 | "assets": { 873 | "css": [], 874 | "js": [ 875 | "apps/r_hide_card_additional_informations/js/app.js" 876 | ] 877 | }, 878 | "enabled": false 879 | }, 880 | "r_import_github": { 881 | "id": "r_import_github", 882 | "uuid": "", 883 | "name": "Import from GitHub", 884 | "description": "Enables importing projects and tickets from GitHub", 885 | "large_description": [ 886 | "**How it works**", 887 | "* Creates new boards for each GitHub repositories.", 888 | "* Creates users with password 'restya' and email as empty for each repository users from GitHub.", 889 | "* Assigns created users as board members.", 890 | "* Creates default lists for each board which are New, Assigned, InProgress, Feedback, Closed.", 891 | "* Inserts every issue as a card in the list based on following criteria: ", 892 | " * If issue state is not equal to open, issue will be added as a card in 'Closed' list", 893 | " * If issue comment count is not equal zero, issue will be as a card added in 'Feedback' list.", 894 | " * If issue has milestone date, issue will be added as a card in 'InProgress' list.", 895 | " * If issue assigned to user, issue will be added as a card in 'Assigned' list.", 896 | " * If any above criteria is not matched, issue will be added as a card in 'New' list.", 897 | "* Assigns labels to each cards, milestone date to card due date and assigned users to card members.", 898 | "* Inserts issue comments to respective card comments." 899 | ], 900 | "author": "Restya", 901 | "author_email": "info@restya.com", 902 | "author_url": "http://restya.com/", 903 | "version": "0.1.5", 904 | "price": "Paid", 905 | "icon": "apps/r_import_github/img/r-import-github.png", 906 | "settings_description": "Register a new application in GitHub in this URL https://github.com/settings/applications/new with providing below details,
Application Name: ##SITE_NAME##
Homepage URL: ##SITE_URL##
Application description: Give some description about your site
Authorization callback URL: ##SITE_URL##/apps/r_import_github/login.html", 907 | "settings": { 908 | "r_import_github_client_id": { 909 | "label" : "GitHub Client ID", 910 | "info" : "", 911 | "value" : "REPLACE_GITHUB_CLIENT_ID", 912 | "is_public" : true 913 | }, 914 | "r_import_github_client_secret": { 915 | "label" : "GitHub Client Secret", 916 | "info" : "", 917 | "value" : "REPLACE_GITHUB_CLIENT_SECRET", 918 | "is_public" : false 919 | }, 920 | "r_import_github_oauth_token_url": { 921 | "label" : "GitHub OAuth Token URL", 922 | "info" : "", 923 | "value" : "https://github.com/login/oauth/access_token", 924 | "is_public" : false 925 | } 926 | }, 927 | "assets": { 928 | "css": [], 929 | "js": [ 930 | "apps/r_import_github/js/libs/github.js", 931 | "apps/r_import_github/js/app.js" 932 | ] 933 | }, 934 | "enabled": true 935 | }, 936 | "r_insights": { 937 | "id": "r_insights", 938 | "uuid": "", 939 | "name": "Insights", 940 | "description": "Enables insights about throughput, cycle time, spent time and list time of boards.", 941 | "author": "Restya", 942 | "author_email": "info@restya.com", 943 | "author_url": "", 944 | "version": "0.1.4", 945 | "price": "Paid", 946 | "icon": "apps/r_insights/img/r-insights.png", 947 | "settings_description": "", 948 | "large_description": [ 949 | "- In Insights you’ll find the data you need to better understand and make smarter decisions about your project in the Restyaboard.", 950 | "- You’ll also be able to quickly track performance. It’s easier to get your project status and performance with new data views and visualizations. ", 951 | "- This App basically is a power-up which is not a part of the core Restyaboard experience." 952 | ], 953 | "settings": false, 954 | "sponsor": "Ramachandran", 955 | "assets": { 956 | "css": [ ], 957 | "js": [ 958 | "apps/r_insights/lib/highcharts.js", 959 | "apps/r_insights/js/app.js" 960 | ], 961 | "html": [ 962 | "apps/r_insights/app.html" 963 | ] 964 | }, 965 | "mutationObservers": { 966 | "header": { 967 | "board_view_header" :"insertInsights" 968 | } 969 | }, 970 | "enabled": true 971 | }, 972 | "r_instant_add_card": { 973 | "id": "r_instant_add_card", 974 | "uuid": "", 975 | "name": "Instant Add Card", 976 | "description": "Allows users to add card quickly across boards--without having to open boards.", 977 | "author": "Restya", 978 | "author_email": "info@restya.com", 979 | "author_url": "", 980 | "version": "0.1.5", 981 | "price": "Paid", 982 | "icon": "apps/r_instant_add_card/img/r-instant-add-card.png", 983 | "settings_description": "", 984 | "settings": false, 985 | "assets": { 986 | "css": [ ], 987 | "js": [ 988 | "apps/r_instant_add_card/js/app.js" 989 | ] 990 | }, 991 | "enabled": true 992 | }, 993 | "r_kanban_printer": { 994 | "id": "r_kanban_printer", 995 | "uid": "", 996 | "name": "Helper app for the Kanban Printer", 997 | "description": "Allows users to print list name and card title on sticky sheets.", 998 | "author": "Restya", 999 | "author_email": "info@restya.com", 1000 | "author_url": "", 1001 | "version": "0.1.3", 1002 | "price": "Paid", 1003 | "icon": "apps/r_kanban_printer/img/r-kanban-printer.png", 1004 | "settings_description": "", 1005 | "large_description": [ 1006 | "- Allows users to print list name and card title on sticky sheets.", 1007 | "- Disable it in Admin Control Panel for default behavior.", 1008 | "- This is a simple sample App to show the possibilities of App platform." 1009 | ], 1010 | "settings": false, 1011 | "assets": { 1012 | "css": [ 1013 | "apps/r_kanban_printer/css/app.css" 1014 | ], 1015 | "js": [ 1016 | "apps/r_kanban_printer/js/app.js" 1017 | ] 1018 | }, 1019 | "enabled": false 1020 | }, 1021 | "r_labelstyle": { 1022 | "id": "r_labelstyle", 1023 | "uid": "", 1024 | "name": "LabelStyle", 1025 | "description": "By default labels are displayed as colored icons in cards. Changes it to display labels in text.", 1026 | "author": "ik9999", 1027 | "author_email": "q@eqw.me", 1028 | "author_url": "https://github.com/ik9999", 1029 | "version": "0.1.0", 1030 | "price": "Free", 1031 | "icon": "https://raw.githubusercontent.com/ik9999/r_labelstyle/master/img/icon128.png", 1032 | "settings_description": "Label Styling Plugin for Restyaboard", 1033 | "settings": { 1034 | "r_labelstyle_labelstyle": { 1035 | "label": "Label style", 1036 | "info": "'default' or 'tags'", 1037 | "value": "default", 1038 | "is_public": true 1039 | } 1040 | }, 1041 | "assets": { 1042 | "css": [ 1043 | "https://raw.githubusercontent.com/ik9999/r_labelstyle/master/css/app.css" 1044 | ], 1045 | "js": [ 1046 | "https://raw.githubusercontent.com/ik9999/r_labelstyle/master/js/app.js" 1047 | ] 1048 | }, 1049 | "enabled": true 1050 | }, 1051 | "r_ldap_login": { 1052 | "id": "r_ldap_login", 1053 | "uuid": "", 1054 | "name": "LDAP", 1055 | "description": "Enables users to login using their LDAP accounts.", 1056 | "author": "Restya", 1057 | "author_email": "info@restya.com", 1058 | "author_url": "", 1059 | "version": "0.1.5", 1060 | "price": "Paid", 1061 | "icon": "apps/r_ldap_login/img/r-ldap-login.png", 1062 | "settings_description": "", 1063 | "settings_from_db": "'R_LDAP_LOGIN_ENABLE_SSL','R_LDAP_LOGIN_SERVER','R_LDAP_LOGIN_PORT','R_LDAP_LOGIN_PROTOCOL_VERSION','R_LDAP_LOGIN_BASE_DN','R_LDAP_LOGIN_ACCOUNT_FILTER','R_LDAP_LOGIN_ADVANCED_FILTER','R_LDAP_EMAIL_ATTRIBUTE','R_LDAP_DISPLAY_NAME_ATTRIBUTE','R_LDAP_IMAGE_ATTRIBUTE','R_LDAP_LOGIN_HANDLE','R_LDAP_LOGIN_BIND_DN','R_LDAP_LOGIN_BIND_PASSWORD','R_LDAP_LOGIN_IMPORT_TYPE','R_LDAP_LOGIN_WELCOME_MAIL'", 1064 | "settings": {}, 1065 | "assets": { 1066 | "css": [], 1067 | "js": [ 1068 | "apps/r_ldap_login/js/app.js" 1069 | ] 1070 | }, 1071 | "enabled": true, 1072 | "limit": 100 1073 | }, 1074 | "r_listview_configure": { 1075 | "id": "r_listview_configure", 1076 | "uuid": "", 1077 | "name": "List View Configure", 1078 | "description": "The List View Configure app allows a user to change the visibility and order of set of columns at runtime. It is configured using the default drag-and-drop mode for choosing the order of fields and the user selects the fields which wants to be shown in list view.", 1079 | "author": "Restya", 1080 | "author_email": "info@restya.com", 1081 | "author_url": "http://restya.com/board", 1082 | "version": "0.1.1", 1083 | "price": "Paid", 1084 | "icon": "apps/r_listview_configure/img/r_listview_configure.png", 1085 | "settings_description": "The List View Configure app allows a user to change the visibility and order of set of columns at runtime. It is configured using the default drag-and-drop mode for choosing the order of fields and the user selects the fields which wants to be shown in list view.", 1086 | "large_description" : [ 1087 | "- To hide all the card additional information in list view like Card ID, Card Name, List moved date etc..and changing the position of the card addition information from cards listing.", 1088 | "- Disable it in Admin Control Panel for default behavior.", 1089 | "- This is a simple sample App to show the possibilities of App platform." 1090 | ], 1091 | "settings": false, 1092 | "assets": { 1093 | "css": [ 1094 | "apps/r_listview_configure/css/app.css" 1095 | ], 1096 | "js": [ 1097 | "apps/r_listview_configure/js/app.js" 1098 | ], 1099 | "html": [ 1100 | "apps/r_listview_configure/app.html" 1101 | ] 1102 | }, 1103 | "enabled": true 1104 | }, 1105 | "r_multiple_ldap_login": { 1106 | "id": "r_multiple_ldap_login", 1107 | "uuid": "", 1108 | "name": "Multiple LDAP", 1109 | "description": "Enables users to login using their LDAP accounts.", 1110 | "author": "Restya", 1111 | "author_email": "info@restya.com", 1112 | "author_url": "http://restya.com/board", 1113 | "version": "0.1.1", 1114 | "price": "Paid", 1115 | "icon": "apps/r_multiple_ldap_login/img/r-multiple-ldap-login.png", 1116 | "settings_description": "", 1117 | "settings_from_db": "'R_MLDAP_LOGIN_ENABLE_SSL','R_MLDAP_LOGIN_SERVER','R_MLDAP_LOGIN_PORT','R_MLDAP_LOGIN_PROTOCOL_VERSION','R_MLDAP_LOGIN_BASE_DN','R_MLDAP_LOGIN_ACCOUNT_FILTER','R_MLDAP_LOGIN_ADVANCED_FILTER','R_MLDAP_EMAIL_ATTRIBUTE','R_MLDAP_DISPLAY_NAME_ATTRIBUTE','R_MLDAP_IMAGE_ATTRIBUTE','R_MLDAP_LOGIN_HANDLE','R_MLDAP_LOGIN_BIND_DN','R_MLDAP_LOGIN_BIND_PASSWORD','R_MLDAP_LOGIN_IMPORT_TYPE','R_MLDAP_LOGIN_WELCOME_MAIL','R_MLDAP_SERVERS'", 1118 | "settings": false, 1119 | "settings_links":[ 1120 | { 1121 | "name":"Manage", 1122 | "icon": "icon-cog", 1123 | "url":"#/apps/r_multiple_ldap_login/manage" 1124 | } 1125 | ], 1126 | "assets": { 1127 | "css": [], 1128 | "js": [ 1129 | "apps/r_multiple_ldap_login/js/app.js" 1130 | ], 1131 | "html": [ 1132 | "apps/r_multiple_ldap_login/app.html" 1133 | ] 1134 | }, 1135 | "enabled": true, 1136 | "limit": 100 1137 | }, 1138 | "r_saml_shibboleth_sso": { 1139 | "id": "r_saml_shibboleth_sso", 1140 | "uuid": "", 1141 | "name": "SAML / Shibboleth", 1142 | "description": "Enables single sign-on through SAML / Shibboleth", 1143 | "author": "Restya", 1144 | "author_email": "info@restya.com", 1145 | "author_url": "http://restya.com/", 1146 | "version": "0.1.1", 1147 | "price": "Paid", 1148 | "icon": "apps/r_saml_shibboleth_sso/img/r_saml_shibboleth_sso.png", 1149 | "settings_description": "", 1150 | "large_description": [ 1151 | "- Enables SAML / Shibboleth based login", 1152 | "- It adds SAML SP and provides SP metadata XML that you'll need to whitelist in the IdP", 1153 | "- It provides easy settings import from IdP metadata XML and sets up single sign-on." 1154 | ], 1155 | "settings_from_db": "'R_SAML_ENTITY_NAME', 'R_SAML_ENTITY_ID','R_SAML_SINGLE_SIGN_ON_SERVICE_URL','R_SAML_SINGLE_LOGOUT_SERVICE_URL','R_SAML_X509CERT','R_SAML_META_DATA','R_SAML_FULL_XML','r_saml_shibboleth_sso_WELCOME_MAIL','R_SAML_X509_CERT_MULTI_SIGNING_0','R_SAML_X509_CERT_MULTI_SIGNING_1','R_SAML_X509_CERT_MULTI_ENCRYPTION'", 1156 | "settings_links":[ 1157 | { 1158 | "name":"Settings", 1159 | "icon": "icon-cog", 1160 | "url":"#/apps/r_saml_shibboleth_sso/settings" 1161 | } 1162 | ], 1163 | "settings": false, 1164 | "assets": { 1165 | "css": [], 1166 | "js": [ 1167 | "apps/r_saml_shibboleth_sso/js/app.js" 1168 | ], 1169 | "html": [ 1170 | "apps/r_saml_shibboleth_sso/app.html" 1171 | ] 1172 | }, 1173 | "mutationObservers": { 1174 | "content": { 1175 | "r_saml_shibboleth_sso_settings" :"AdminSamlSetting" 1176 | } 1177 | }, 1178 | "enabled": false, 1179 | "limit": 100 1180 | }, 1181 | "r_seo_checklist": { 1182 | "id": "r_seo_checklist", 1183 | "uuid": "", 1184 | "name": "SEO Checklist", 1185 | "description": "Adds ready to use template SEO checklist template for performing search engine optimization.", 1186 | "author": "Restya", 1187 | "author_email": "info@restya.com", 1188 | "author_url": "http://restya.com/", 1189 | "version": "0.1.1", 1190 | "price": "Paid", 1191 | "icon": "apps/r_seo_checklist/img/r-seo-checklist.png", 1192 | "settings_description": "", 1193 | "large_description": [ 1194 | "This app creates a new board and imports readymade SEO checklist of essential SEO tips and tasks for any new website." 1195 | ], 1196 | "settings": false, 1197 | "assets": { 1198 | "css": [ ], 1199 | "js": [ 1200 | "apps/r_seo_checklist/js/app.js" 1201 | ] 1202 | }, 1203 | "enabled": true 1204 | }, 1205 | "r_slack": { 1206 | "id": "r_slack", 1207 | "uuid": "", 1208 | "name": "Slack", 1209 | "description": "Enables posting to Slack from Restyaboard", 1210 | "author": "Restya", 1211 | "author_email": "info@restya.com", 1212 | "author_url": "http://restya.com/", 1213 | "version": "0.1.5", 1214 | "price": "Paid", 1215 | "icon": "apps/r_slack/img/r-slack.png", 1216 | "settings_description": "Register a new application in Slack in this URL https://api.slack.com/applications/new with providing below details,
App Name: ##SITE_NAME##
Short Description: Give some description about your site
Describe what your app does on Slack (3-5 sentences): Give some description about what your app does on Slack
Redirect URI(s): ##SITE_URL##/apps/r_slack/login.html", 1217 | "large_description":[ 1218 | "**How it works**", 1219 | "- Fetches your Slack channels and creates a mapping with your assigned board names, and stores them in localforage.", 1220 | "- Whenever you post comments in Restyaboard, script posts that to corresponding channels in Slack.", 1221 | "- If the board is not in a Slack channel, script creates a new Slack channel using board name and post the comment to it." 1222 | ], 1223 | "settings": { 1224 | "r_slack_client_id": { 1225 | "label" : "Slack Client ID", 1226 | "info" : "", 1227 | "value" : "REPLACE_SLACK_CLIENT_ID", 1228 | "is_public" : true 1229 | }, 1230 | "r_slack_client_secret": { 1231 | "label" : "Slack Client Secret", 1232 | "info" : "", 1233 | "value" : "REPLACE_SLACK_CLIENT_SECRET", 1234 | "is_public" : false 1235 | }, 1236 | "r_slack_oauth_token_url": { 1237 | "label" : "Slack OAuth Token URL", 1238 | "info" : "", 1239 | "value" : "https://slack.com/api/oauth.access", 1240 | "is_public" : false 1241 | } 1242 | }, 1243 | "assets": { 1244 | "css": [ ], 1245 | "js": [ 1246 | "apps/r_slack/js/libs/slack.js" 1247 | ] 1248 | }, 1249 | "enabled": true 1250 | }, 1251 | "r_sparkpost": { 1252 | "id": "r_sparkpost", 1253 | "uid": "", 1254 | "name": "SparkPost", 1255 | "description": "SparkPost let all emails sent through SparkPost email service, instead through local SMTP server.", 1256 | "author": "Restya", 1257 | "author_email": "info@restya.com", 1258 | "author_url": "http://restya.com/board", 1259 | "version": "0.1.1", 1260 | "price": "Paid", 1261 | "icon": "apps/r_sparkpost/img/r-sparkpost.png", 1262 | "settings_description": "", 1263 | "large_description": [ 1264 | "- This app allow you to send all emails through SparkPost email service.", 1265 | "- Send an mails with deliverability, scalability and speed." 1266 | ], 1267 | "settings_from_db": "'SPARKPOST_API_KEY'", 1268 | "settings": {}, 1269 | "assets": { 1270 | "css": [ ], 1271 | "js": [ 1272 | "apps/r_sparkpost/js/app.js" 1273 | ] 1274 | }, 1275 | "enabled": true 1276 | }, 1277 | "r_spent_time": { 1278 | "id": "r_spent_time", 1279 | "uuid": "", 1280 | "name": "Spent Time Tracking", 1281 | "description": "Adds spent time tracking option for each cards.", 1282 | "author": "Restya", 1283 | "author_email": "info@restya.com", 1284 | "author_url": "http://restya.com/", 1285 | "version": "0.1.2", 1286 | "price": "Paid", 1287 | "icon": "apps/r_spent_time/img/r-spent-time.png", 1288 | "settings_description": "", 1289 | "large_description": [ 1290 | "Adds spent time custom input. This will be displayed in the card listing to arrange them easily." 1291 | ], 1292 | "settings": false, 1293 | "assets": { 1294 | "css": [ 1295 | "apps/r_spent_time/css/app.css" 1296 | ], 1297 | "js": [ 1298 | "apps/r_spent_time/js/app.js" 1299 | ] 1300 | }, 1301 | "enabled": true 1302 | }, 1303 | "r_support_app": { 1304 | "id": "r_support_app", 1305 | "uuid": "", 1306 | "name": "Support Desk", 1307 | "description": "Transforms Restyaboard into an easy support desk software. Comes with support widget that captures support requests from users.", 1308 | "author": "Restya", 1309 | "author_email": "info@restya.com", 1310 | "author_url": "http://restya.com/", 1311 | "version": "0.1.4", 1312 | "price": "Paid", 1313 | "icon": "apps/r_support_app/img/r-support-app.png", 1314 | "settings_description": "For more details about support desk, please click here", 1315 | "large_description": [ 1316 | "Help desk or support ticket system or customer service software using Restyaboard.", 1317 | "**How it works**", 1318 | "- Embed front-end widget similar to Samanage in a website to receive tickets from customers.", 1319 | "- Tickets will be stored in TODO board and under TODO list in a card, Click here to [Change Settings](#/apps/r_support_app).", 1320 | "- You can use kanban workflow in handling tickets.", 1321 | "**Widget**", 1322 | "- Copy the code and paste it before the closing tag." 1323 | ], 1324 | "settings": { 1325 | "r_support_app_board_id": { 1326 | "label": "Board ID", 1327 | "info": "", 1328 | "value": "REPLACE_SUPPORT_BOARD_ID", 1329 | "is_public": true 1330 | }, 1331 | "r_support_app_list_id": { 1332 | "label": "List ID", 1333 | "info": "", 1334 | "value": "REPLACE_SUPPORT_LIST_ID", 1335 | "is_public": false 1336 | } 1337 | }, 1338 | "assets": { 1339 | "css": [ ], 1340 | "js": [ 1341 | "apps/r_support_app/js/app.js" 1342 | ] 1343 | }, 1344 | "enabled": true 1345 | }, 1346 | "r_task_move_on_due_date": { 1347 | "id": "r_task_move_on_due_date", 1348 | "uuid": "", 1349 | "name": "Task Move on Due Date", 1350 | "description": "Automates moving of cards to a configured list on due date.", 1351 | "author": "Restya", 1352 | "author_email": "info@restya.com", 1353 | "author_url": "http://restya.com/", 1354 | "version": "0.1.2", 1355 | "price": "Paid", 1356 | "icon": "apps/r_task_move_on_due_date/img/r-task-move-on-due-date.png", 1357 | "settings_description": "", 1358 | "settings": false, 1359 | "assets": { 1360 | "css": [ 1361 | "apps/r_task_move_on_due_date/css/app.css" 1362 | ], 1363 | "js": [ 1364 | "apps/r_task_move_on_due_date/js/app.js" 1365 | ] 1366 | }, 1367 | "enabled": true 1368 | }, 1369 | "r_togetherjs": { 1370 | "id": "r_togetherjs", 1371 | "uuid": "", 1372 | "name": "Collaborate/TogetherJS", 1373 | "description": "Collaborate using Mozilla's TogetherJS", 1374 | "author": "Restya", 1375 | "author_email": "info@restya.com", 1376 | "author_url": "http://restya.com/", 1377 | "version": "0.1.3", 1378 | "price": "Free", 1379 | "icon": "apps/r_togetherjs/img/r-togetherjs.png", 1380 | "settings_description": "", 1381 | "settings": false, 1382 | "assets": { 1383 | "css": [ 1384 | "apps/r_togetherjs/css/app.css" 1385 | ], 1386 | "js": [ 1387 | "apps/r_togetherjs/js/app.js", 1388 | "apps/r_togetherjs/js/libs/togetherjs-min.js" 1389 | ] 1390 | }, 1391 | "enabled": false 1392 | }, 1393 | "r_user_ical_feed": { 1394 | "id": "r_user_ical_feed", 1395 | "uuid": "", 1396 | "name": "User iCal Feed", 1397 | "description": "Enables iCal feed link to a board so that cards/tasks in a board can be synced with external calendars like Google Calendar.", 1398 | "author": "Restya", 1399 | "author_email": "info@restya.com", 1400 | "author_url": "", 1401 | "version": "0.1.2", 1402 | "price": "Paid", 1403 | "icon": "apps/r_user_ical_feed/img/r-userical-feed.png", 1404 | "settings_description": "", 1405 | "settings_links":[], 1406 | "settings": false, 1407 | "sponsor": "Marc Perna", 1408 | "assets": { 1409 | "css": [], 1410 | "js": [ 1411 | "apps/r_user_ical_feed/js/app.js" 1412 | ] 1413 | }, 1414 | "enabled": true 1415 | }, 1416 | "r_visualstudio": { 1417 | "id": "r_visualstudio", 1418 | "uuid": "", 1419 | "name": "Visual Studio", 1420 | "description": "Restyaboard has an extension listed in the Visual Studio marketplace to manage customer task through Restyaboard. The app supplements it by providing the access token that is needed for accessing the Restyaboard from Visual Studio.", 1421 | "author": "Zyndaa", 1422 | "author_email": "info@zyndaa.com", 1423 | "author_url": "http://zyndaa.com/", 1424 | "version": "0.1.1", 1425 | "price": "Paid", 1426 | "icon": "apps/r_visualstudio/img/r-visualstudio.png", 1427 | "settings_description": "", 1428 | "large_description": [ 1429 | "- Restyaboard extension by Zyndaa in Visual Studio marketplace helps customers of Restyaboard resolve their tasks through Restyaboard. Using that any card can be created or previewed from Visual Studio Code." , 1430 | "- This app provides the access token required for that Visual Studio app." 1431 | ], 1432 | "settings": { 1433 | "r_visualstudio_client_id": { 1434 | "label": "Visual Studio Client ID", 1435 | "info": "", 1436 | "value": "9335847554774492", 1437 | "is_public": true 1438 | }, 1439 | "r_is_restyaboard_login": { 1440 | "label": "RestyaBoard Login", 1441 | "info": "", 1442 | "value": "true", 1443 | "is_hide": true, 1444 | "is_public": false 1445 | } 1446 | }, 1447 | "assets": { 1448 | "css": [], 1449 | "js": [ ] 1450 | }, 1451 | "enabled": true 1452 | }, 1453 | "r_website_qa_checklist": { 1454 | "id": "r_website_qa_checklist", 1455 | "uuid": "", 1456 | "name": "Website QA Checklist", 1457 | "description": "Adds ready to use checklist template for performing QA on a website.", 1458 | "author": "Restya", 1459 | "author_email": "info@restya.com", 1460 | "author_url": "http://restya.com/", 1461 | "version": "0.1.2", 1462 | "price": "Paid", 1463 | "icon": "apps/r_website_qa_checklist/img/r-website-qa-checklist.png", 1464 | "settings_description": "", 1465 | "large_description": [ 1466 | "This app creates a new board and imports readymade QA checklist of best practices for any new website." 1467 | ], 1468 | "settings": false, 1469 | "assets": { 1470 | "css": [ ], 1471 | "js": [ 1472 | "apps/r_website_qa_checklist/js/app.js" 1473 | ] 1474 | }, 1475 | "enabled": true 1476 | }, 1477 | "r_wiki": { 1478 | "id": "r_wiki", 1479 | "uuid": "", 1480 | "name": "Wiki", 1481 | "description": "Adds Wiki for handling projects.", 1482 | "author": "Restya", 1483 | "author_email": "info@restya.com", 1484 | "author_url": "", 1485 | "version": "0.1.6", 1486 | "price": "Paid", 1487 | "icon": "apps/r_wiki/img/r-wiki.png", 1488 | "settings_description": "", 1489 | "large_description": [ 1490 | "- Disable it in Admin Control Panel for default behavior.", 1491 | "- This is a simple sample App to show the possibilities of App platform." 1492 | ], 1493 | "settings_links":[ 1494 | { 1495 | "name":"Settings", 1496 | "icon": "icon-cog", 1497 | "url":"#/apps/r_wiki/configure" 1498 | } 1499 | ], 1500 | "settings": false, 1501 | "assets": { 1502 | "js": [ 1503 | "apps/r_wiki/js/app.js" 1504 | ], 1505 | "css": [ 1506 | "apps/r_wiki/css/app.css" 1507 | ], 1508 | "html": [ 1509 | "apps/r_wiki/app.html" 1510 | ] 1511 | }, 1512 | "enabled": true 1513 | }, 1514 | "r_zapier": { 1515 | "id": "r_zapier", 1516 | "uuid": "", 1517 | "name": "Zapier", 1518 | "description": "Zapier is IFTTT like workflow automation service that enables integration with over 500 other websites. This app enables connecting to Zapier.", 1519 | "author": "Restya", 1520 | "author_email": "info@restya.com", 1521 | "author_url": "http://restya.com/", 1522 | "version": "0.1.4", 1523 | "price": "Paid", 1524 | "icon": "apps/r_zapier/img/r-zapier.png", 1525 | "settings_description": "", 1526 | "large_description": [ 1527 | "- Zapier is IFTTT like workflow automation service.", 1528 | "- This app generates 'access token' that you should use it in Zapier to connect with your Restyaboard account.", 1529 | "- Please refer to [Integration document](http://restya.com/board/integrations) for how to use your 'access token' in Zapier." 1530 | ], 1531 | "settings": { 1532 | "r_zapier_client_id": { 1533 | "label": "Zapier Client ID", 1534 | "info": "", 1535 | "value": "REPLACE_ZAPIER_CLIENT_ID", 1536 | "is_public": true 1537 | }, 1538 | "r_zapier_client_secret": { 1539 | "label": "Zapier Client Secret", 1540 | "info": "", 1541 | "value": "REPLACE_ZAPIER_CLIENT_SECRET", 1542 | "is_public": false 1543 | }, 1544 | "r_zapier_oauth_token_url": { 1545 | "label": "Zapier OAuth Token URL", 1546 | "info": "", 1547 | "value": "/api/v1/oauth/token.json", 1548 | "is_hide": true, 1549 | "is_public": false 1550 | } 1551 | }, 1552 | "assets": { 1553 | "css": [], 1554 | "js": [ 1555 | "apps/r_zapier/js/app.js" 1556 | ] 1557 | }, 1558 | "enabled": true 1559 | }, 1560 | "r_zendesk": { 1561 | "id": "r_zendesk", 1562 | "uuid": "", 1563 | "name": "Zendesk", 1564 | "description": "Restyaboard has an app listed in the Zendesk marketplace to manage customer tickets through Restyaboard. This app supplements it by providing the access token that is needed for accessing the Restyaboard from Zendesk.", 1565 | "author": "AgileShoppe", 1566 | "author_email": "info@agileshoppe.com", 1567 | "author_url": "https://agileshoppe.com", 1568 | "version": "0.1.1", 1569 | "price": "Paid", 1570 | "icon": "apps/r_zendesk/img/r-zendesk.png", 1571 | "settings_description": "Zendesk allow users to connect your board to your Zendesk account.", 1572 | "large_description": [ 1573 | "- Restyaboard app by AgileShoppe in Zendesk marketplace helps customers of Zendesk resolve their support tickets through Restyaboard. Using that any card can be created or linked with Zendesk tickets." , 1574 | "- This app provides the access token required for that Zendesk app." 1575 | ], 1576 | "settings": { 1577 | "r_zendesk_client_id": { 1578 | "label": "Zendesk Client ID", 1579 | "info": "", 1580 | "value": "2826984917407547", 1581 | "is_public": true 1582 | }, 1583 | "r_is_restyaboard_login": { 1584 | "label": "RestyaBoard Login", 1585 | "info": "", 1586 | "value": "true", 1587 | "is_hide": true, 1588 | "is_public": false 1589 | } 1590 | }, 1591 | "assets": { 1592 | "css": [], 1593 | "js": [ 1594 | "apps/r_zendesk/js/app.js" 1595 | ] 1596 | }, 1597 | "enabled": true 1598 | } 1599 | } -------------------------------------------------------------------------------- /build/apps.php: -------------------------------------------------------------------------------- 1 | 0 && $('#r_codenames_modal .modal-body').find('#js-code-template').length === 0) { 10 | $('#r_codenames_modal .modal-body').append('

Buy or Listen ' + i18next.t('Quobuz') + ' , Apple Music , Google Play Music , ' + i18next.t('JioSaavn') + ' , ' + i18next.t('YouTube') + '

'); 11 | } 12 | } 13 | 14 | addRequestCallback(function(xhr, arg) { 15 | if (arg && arg[0] && arg[0].indexOf('codename_template') > -1) { 16 | var arr = JSON.parse(arg[0]); 17 | arr.background_picture_url = '//farm4.static.flickr.com/3516/3307756799_c833b5b1e0_b.jpg'; 18 | arr.music_name = 'Scorpions - Still Loving You'; 19 | arr.music_content = "X:1\nT:Scorpions - Still Loving You\nT:https://musescore.com/user/33546794/scores/6314217\n%%scale 0.83\n%%pagewidth 21.01cm\n%%leftmargin 1.00cm\n%%rightmargin 1.00cm\n%%score { 1 | 2 }\nL:1/8\nQ:1/\n4=100\nM:4/4\nI:linebreak $\nK:Bb\nV:1 treble nm=\"Piano\" snm=\"Pno.\"\nV:2 bass\nV:1\n!mp! z (bgd) z (bgd) | z (bgd _d'c'bg) | z2 (bg d2 B2) |$ z2 (a^f d2 A2) | z (bgd) z (bgd) | %5\nz (bgd _d'c'bg) |$ z2 (bg d2 B2) | z2 (a^f d2 A2-) | A8 |$ %9\n[M:6/8][Q:1/4=82]!p! [G-Bd-]3 [Gd]-[G-cd-][GB-d] | [GBd]3- [G-Bd-]2 [GBd] | %11\n[g-bd'-][g-bd'-][g-bd'-] [g-bd'-][gad'-][gd'] |$ [GBd]3 [G-Bd-][G-cd-][GBd] | [=EA^c]3- [EAc]3- | %14\n[EAc]3 [=E-A^c-][E-=Bc-][EAc] |$ [^FAd]3- [FAd]3- | [FAd]3 d-[Ad]-[^FAd] | %17\n[G-Bd-]3 [Gd]-[G-cd-][GB-d] |$ [GBd]3- [G-Bd-]2 [GBd] | %19\n[g-bd'-][g-bd'-][g-bd'-] [g-bd'-][gad'-][gd'] | [GBd]3 [G-Bd-][G-cd-][GBd] |$ [=EA^c]3- [EAc]3- | %22\n[EAc]3 [=E-A^c-][E-=Bc-][EAc] | [^FAd]3- [FAd]3- |$ [FAd]3 z3 |!mp! G2 (A/B/ c2) (B/A/ | %26\nB2) A/G/ A/B-B3/2- |$ B2 A A- A2- |[K:treble+8] A,3!mf! G2 (A/B/ | c2) (B/A/ B2) A/G/ |$ %30\nAB- B3 (c | A3-) A3 |[K:treble]\"_Expression\"!f! [G-B-d]3 [G-B-d]3/4 [GBd]2- [GBd]/4 |$ %33\n[B-eg-]3/2[B-fg-]3/4[Be-g]3/4 [Beg]3 | [F-B-d]3/2[F-B-d]3/4[F-Bd]3/4 z3/4 [F-c]3/4[FB]3/4c3/4- | %35\n[FAc]3 z3/2 B3/4A3/4 |$ [G-B-d]3 [G-B-d]3/4 [GBd]2- [GBd]/4 | %37\n[B-eg-]3/2[B-fg-]3/4[Be-g]3/4 [Beg]3 | [F-B-d]3/2[F-B-d]3/4[F-Bd]3/4 z3/4 [F-c]3/4[FB]3/4c3/4- |$ %39\n[FAc]3 z3/2 B3/4A3/4 | [G-B-d]2 [G-B-d] [G-B-d] [GBd]2 | [ce-g-]3/2[dg-]3/4[ceg] z2 a3/4 |$ %42\n[d^f-a-]2 [df-a] [df]- [dfa]2 | [gbd']4 ga | [e-gb-][e-ab-][egb] [egb]3- |$ [egb]3- [egb]2 e | %46\n[f-ac'-][fac']g(! [fgbe']3- [fg-b-e'-][gbe']^f- | [ff-b-d'-]3 [fb-d'-][bd']c'- |$ [fac']2 z bba!>)! | %64\n[bd']-[ad'-][gbd'] z3 |!pp! [DGBd]4 z2 |] %66\nV:2\n[G,B,D]4 [F,B,D]4 | [G,B,E]8 | [G,B,D]4 z4 |$ [^F,A,D]8 | [G,B,D]4 [F,B,D]4 | [G,B,E]8 |$ %6\n[G,B,D]8 | [^F,A,-D]8 | A,8 |$[M:6/8] [G,B,D]3 [G,B,D]3 | [G,B,D]3 [G,B,D]3 | [G,B,D]3 [G,B,D]3 |$ %12\n[G,B,D]3 [G,B,D]3 | [=E,A,^C]3 [E,A,C]3 | [=E,A,^C]3 [E,A,C]3 |$ [^F,A,D]3 [F,A,D]3 | %16\n[^F,A,D]3 [F,A,D]3 | [G,B,D]3 [G,B,D]3 |$ [G,B,D]3 [G,B,D]3 | [G,B,D]3 [G,B,D]3 | %20\n[G,B,D]3 [G,B,D]3 |$ [=E,A,^C]3 [E,A,C]3 | [=E,A,^C]3 [E,A,C]3 | [^F,A,D]3 [F,A,D]3 |$ %24\n[^F,A,D]3 [F,A,D]3 | [G,B,D]3 [G,CE]3 | [G,B,D]3 [F,A,C]3 |$ [F,A,C]3 [F,A,C]3 | %28\n[K:treble] [F,A,C]3 [GBd]3 | [Gce]3 [GBd]3 |$ [FAc]3 [FAc]3 | [FAc]3 [FAc]3 | %32\n[K:bass] [G,B,D]3 [G,B,D]3 |$ [G,B,E]3 [G,B,E]3 | [F,B,D]3 [F,B,D]3 | [F,A,C]3 [F,A,C]3 |$ %36\n[G,B,D]3 [G,B,D]3 | [G,B,E]3 [G,B,E]3 | [F,B,D]3 [F,B,D]3 |$ [F,A,C]3 [F,A,C]3 | %40\n[G,B,D]3 [G,B,D]3 | [G,CE]3 [G,CE]3 |$ [^F,A,D]3 [F,A,D]3 | [G,B,D]3 [G,B,D]3 | %44\n[G,B,E]3 [G,B,E]3 |$ [G,B,E]3 [G,B,E]3 | [F,A,C]3 [F,A,C]3 | [F,A,C]3 [F,A,C]3 |$ %48\n[G,B,D]3 [G,B,D]3 | [G,B,E]3 [G,B,E]3 | [F,B,D]3 [F,B,D]3 |$ [F,A,C]3 [F,A,C]3 | %52\n[G,B,D]3 [G,B,D]3 | [G,B,E]3 [G,B,E]3 |$ [F,B,D]3 [F,B,D]3 | [F,A,C]3 [F,A,C]3 | %56\n[G,B,D]3 [G,B,D]3 |$ [G,B,E]3 [G,B,E]3 | [F,B,D]3 [F,B,D]3 | [F,A,C]3 [F,A,C]3 |$ %60\n[G,B,D]3 [G,B,D]3 | [G,B,E]3 [G,B,E]3 | [F,B,D]3 [F,B,D]3 |$ [F,A,C]3 [F,A,C]3 | %64\n[G,B,D]3- [G,B,D]3 | [G,,B,,D,G,]4 z2 |] %66"; 20 | arg[0] = JSON.stringify(arr); 21 | } 22 | }); 23 | })(); 24 | -------------------------------------------------------------------------------- /r_cssilize/README.md: -------------------------------------------------------------------------------- 1 | ### Theming/CSSilize 2 | 3 | - CSSilize is our theming partner. 4 | - For Restyaboard theming, website designing or mobile apps. Starting from $35. 5 | -------------------------------------------------------------------------------- /r_cssilize/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "r_cssilize", 3 | "uuid": "", 4 | "name": "Theming/CSSilize", 5 | "description": "CSSilize, theming partner", 6 | "author": "Restya", 7 | "author_email": "info@restya.com", 8 | "author_url": "http://restya.com/", 9 | "version": "0.1.2", 10 | "price": "Free", 11 | "icon": "apps/r_cssilize/img/r-cssilize.png", 12 | "settings_description": "", 13 | "settings": false, 14 | "assets": { 15 | "css": [ 16 | ], 17 | "js": [ 18 | "apps/r_cssilize/js/app.js" 19 | ] 20 | }, 21 | "enabled": true 22 | } -------------------------------------------------------------------------------- /r_cssilize/img/r-cssilize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RestyaPlatform/board-apps/68e098fee5fe8171ef83a8a152ca2afa9d2bb8ad/r_cssilize/img/r-cssilize.png -------------------------------------------------------------------------------- /r_cssilize/js/app.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var $dc = $(document); 3 | $dc.ready(function() { 4 | localforage.getItem('apps', function(err, value) { 5 | var local_storage_apps = JSON.parse(value); 6 | $('body').append(''); 7 | }); 8 | }); 9 | })(); 10 | -------------------------------------------------------------------------------- /r_eu_gdpr/README.md: -------------------------------------------------------------------------------- 1 | ### EU GDPR Cookie Consent Popup 2 | 3 | - The app adds cookie consent widget to Restyaboard instance to make it compliant with European Union General Data Protection Regulation policies. 4 | -------------------------------------------------------------------------------- /r_eu_gdpr/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "r_eu_gdpr", 3 | "uuid": "", 4 | "name": "EU GDPR Cookie Consent Popup", 5 | "description": "Makes Restyaboard instance GDPR cookie compliant by displaying popup.", 6 | "author": "Restya", 7 | "author_email": "info@restya.com", 8 | "author_url": "http://restya.com/", 9 | "version": "0.1.2", 10 | "price": "Free", 11 | "icon": "apps/r_eu_gdpr/img/r-eu-gdpr.png", 12 | "settings_description": "", 13 | "large_description": [ 14 | "The app adds cookie consent widget to Restyaboard instance to make it compliant with European Union General Data Protection Regulation policies." 15 | ], 16 | "settings": false, 17 | "assets": { 18 | "css": [ ], 19 | "js": [ 20 | "apps/r_eu_gdpr/js/app.js" 21 | ] 22 | }, 23 | "mutationObservers": { 24 | "footer": { 25 | "footer-menu" :"showCookieInformation" 26 | } 27 | }, 28 | "enabled": true 29 | } -------------------------------------------------------------------------------- /r_eu_gdpr/img/r-eu-gdpr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RestyaPlatform/board-apps/68e098fee5fe8171ef83a8a152ca2afa9d2bb8ad/r_eu_gdpr/img/r-eu-gdpr.png -------------------------------------------------------------------------------- /r_eu_gdpr/js/app.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var $dc = $(document); 3 | $dc.ready(function() { 4 | 5 | function showCookieInformation(e) { 6 | if (!_.isEmpty(authuser.user)) { 7 | var cookie = $.cookie('cookie_information'); 8 | if (_.isUndefined(cookie) && _.isEmpty(cookie)) { 9 | if ($('#cookie-law-info-bar').length === 0) { 10 | _(function() { 11 | if ($('#cookie_information').hasClass('hide')) { 12 | $('#cookie_information').removeClass('hide'); 13 | } 14 | if ($('#cookie-law-info-bar').length === 0) { 15 | $('#footer-menu #cookie_information .js-cookie-information-row').prepend(''); 16 | } 17 | $(window).resize(); 18 | }).defer(); 19 | } 20 | } 21 | } 22 | } 23 | $dc.on('click', '#js-cookie-close', function(event) { 24 | $.cookie('cookie_information', true); 25 | $(event.target).parents('#cookie_information').remove(); 26 | $(window).resize(); 27 | }); 28 | $dc.on('click', '#js-hide-card-id-button', function(event) { 29 | $('#r_eu_gdpr_modal').modal('hide'); 30 | return false; 31 | }); 32 | 33 | //APP function Definition 34 | AppsFunction.showCookieInformation = showCookieInformation; 35 | }); 36 | })(); 37 | -------------------------------------------------------------------------------- /r_gmail_addon/README.md: -------------------------------------------------------------------------------- 1 | ### Gmail Add-on 2 | 3 | - Gmail Add-on keeps your boards and inbox connected for more productivity. 4 | - Quickly create new cards on your boards without leaving your inbox. 5 | 6 | -------------------------------------------------------------------------------- /r_gmail_addon/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "r_gmail_addon", 3 | "uuid": "", 4 | "name": "Gmail Add-on", 5 | "description": "Enables Gmail Add-on link so that users can install Restyaboard Gmail Add-on from Gmail Marketplace.", 6 | "author": "Restya", 7 | "author_email": "info@restya.com", 8 | "author_url": "http://restya.com/", 9 | "version": "0.1.2", 10 | "price": "Free", 11 | "icon": "apps/r_gmail_addon/img/r-gmail-addon.png", 12 | "settings_description": "", 13 | "large_description": [ 14 | "- Gmail Add-on keeps your boards and inbox connected for more productivity.", 15 | "- Access your Restyaboard account from your mail inbox and quickly create new cards on your boards without leaving your inbox." 16 | ], 17 | "settings": false, 18 | "assets": { 19 | "css": [], 20 | "js": [ 21 | "apps/r_gmail_addon/js/app.js" 22 | ] 23 | }, 24 | "enabled": true 25 | } 26 | -------------------------------------------------------------------------------- /r_gmail_addon/img/r-gmail-addon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RestyaPlatform/board-apps/68e098fee5fe8171ef83a8a152ca2afa9d2bb8ad/r_gmail_addon/img/r-gmail-addon.png -------------------------------------------------------------------------------- /r_gmail_addon/js/app.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var $dc = $(document); 3 | var apps; 4 | $dc.ready(function() { 5 | $('body').bind('appPopupAction', insertAppAction); 6 | 7 | function insertAppAction(e) { 8 | if ($('#r_gmail_addon_modal').find('.modal-footer').length > 0) { 9 | if ($('#r_gmail_addon_modal .modal-footer').find('#js-gmail_addon-contact').length === 0) { 10 | $('#r_gmail_addon_modal').find('.modal-footer').append('' + i18next.t('Visit Gmail Add-on') + ''); 11 | } 12 | } 13 | } 14 | 15 | }); 16 | })(); 17 | -------------------------------------------------------------------------------- /r_hide_card_additional_informations/README.md: -------------------------------------------------------------------------------- 1 | ### Hide Card Additional Informations 2 | 3 | - Hide Card Additional Informations from cards listing 4 | - Disable it in Admin Control Panel for default behavior. 5 | -------------------------------------------------------------------------------- /r_hide_card_additional_informations/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "r_hide_card_additional_informations", 3 | "uuid": "", 4 | "name": "Hide Card Additional Informations", 5 | "description": "To hide the card additional informations like Card created date, Card created user, Card ID and List moved date from cards listing.", 6 | "author": "Restya", 7 | "author_email": "info@restya.com", 8 | "author_url": "http://restya.com/", 9 | "version": "0.1.3", 10 | "price": "Free", 11 | "icon": "apps/r_hide_card_additional_informations/img/r-hide-card-additional-informations.png", 12 | "settings_description": "To hide the card additional informations like Card created date, Card created user, Card ID and List moved date from cards listing.", 13 | "large_description": [ 14 | "- To hide the card additional informations like Card created date, Card created user, Card ID and List moved date from cards listing.", 15 | "- Disable it in Admin Control Panel for default behavior.", 16 | "- This is a simple sample App to show the possibilities of App platform." 17 | ], 18 | "settings": { 19 | "hide_card_created_date": { 20 | "label": "Hide card created date", 21 | "info": "e.g., true/false", 22 | "type": "dropdown", 23 | "options": "true,false", 24 | "value": "true", 25 | "is_public": true 26 | }, 27 | "hide_card_created_user": { 28 | "label": "Hide card created user", 29 | "info": "e.g., true/false", 30 | "type": "dropdown", 31 | "options": "true,false", 32 | "value": "true", 33 | "is_public": true 34 | }, 35 | "hide_card_id": { 36 | "label": "Hide card ID", 37 | "info": "e.g., true/false", 38 | "type": "dropdown", 39 | "options": "true,false", 40 | "value": "false", 41 | "is_public": true 42 | }, 43 | "hide_list_moved_date": { 44 | "label": "Hide list moved date", 45 | "info": "e.g., true/false", 46 | "type": "dropdown", 47 | "options": "true,false", 48 | "value": "true", 49 | "is_public": true 50 | } 51 | }, 52 | "assets": { 53 | "css": [], 54 | "js": [ 55 | "apps/r_hide_card_additional_informations/js/app.js" 56 | ] 57 | }, 58 | "enabled": false 59 | } -------------------------------------------------------------------------------- /r_hide_card_additional_informations/img/r-hide-card-additional-informations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RestyaPlatform/board-apps/68e098fee5fe8171ef83a8a152ca2afa9d2bb8ad/r_hide_card_additional_informations/img/r-hide-card-additional-informations.png -------------------------------------------------------------------------------- /r_hide_card_additional_informations/js/app.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var $dc = $(document); 3 | $dc.ready(function() { 4 | $('body').bind('cardRendered', insertHideCardAdditionalInformations); 5 | 6 | function insertHideCardAdditionalInformations(e, card_id, current_card) { 7 | if (hide_card_created_date === 'true') { 8 | $('#js-board-lists').find('.card-created-date').css("display", "none"); 9 | $('#js-board-lists').find('.js-createdDate').css("display", "none"); 10 | } else { 11 | $('#js-board-lists').find('.card-created-date').css("display", ""); 12 | $('#js-board-lists').find('.js-createdDate').css("display", "block"); 13 | } 14 | if (hide_card_created_user === 'true') { 15 | $('#js-board-lists').find('.card-created-user').css("display", "none"); 16 | } else { 17 | $('#js-board-lists').find('.card-created-user').css("display", ""); 18 | } 19 | if (hide_card_id === 'true') { 20 | $('#js-board-lists').find('.card-id').attr('style', 'display: none !important'); 21 | } else { 22 | $('#js-board-lists').find('.card-id').css("display", ""); 23 | } 24 | if (hide_list_moved_date === 'true') { 25 | $('#js-board-lists').find('.list-moved-date').css("display", "none"); 26 | $('#js-board-lists').find('.js-listMovedDate').css("display", "none"); 27 | } else { 28 | $('#js-board-lists').find('.list-moved-date').css("display", ""); 29 | $('#js-board-lists').find('.js-listMovedDate').css("display", "block"); 30 | } 31 | } 32 | }); 33 | })(); 34 | --------------------------------------------------------------------------------