Changeset 1961288
- Timestamp:
- 10/23/2018 11:47:58 AM (7 years ago)
- Location:
- cloud-blocks
- Files:
-
- 15 added
- 22 edited
- 12 copied
-
assets/screenshot-1.gif (added)
-
tags/1.0.2 (copied) (copied from cloud-blocks/trunk)
-
tags/1.0.2/README.md (copied) (copied from cloud-blocks/trunk/README.md) (2 diffs)
-
tags/1.0.2/assets (copied) (copied from cloud-blocks/trunk/assets)
-
tags/1.0.2/assets/js/script.js (modified) (2 diffs)
-
tags/1.0.2/assets/js/script.min.js (modified) (1 diff)
-
tags/1.0.2/assets/screenshot-1.gif (added)
-
tags/1.0.2/assets/source/js/block-component.js (modified) (2 diffs)
-
tags/1.0.2/cloud-blocks.php (copied) (copied from cloud-blocks/trunk/cloud-blocks.php) (1 diff)
-
tags/1.0.2/composer.json (copied) (copied from cloud-blocks/trunk/composer.json)
-
tags/1.0.2/composer.lock (copied) (copied from cloud-blocks/trunk/composer.lock)
-
tags/1.0.2/core (copied) (copied from cloud-blocks/trunk/core)
-
tags/1.0.2/core/Blocks/Blocks.php (modified) (2 diffs)
-
tags/1.0.2/core/CloudBlocks.php (copied) (copied from cloud-blocks/trunk/core/CloudBlocks.php)
-
tags/1.0.2/core/Settings/Tools.php (modified) (1 diff)
-
tags/1.0.2/core/Settings/Translations.php (copied) (copied from cloud-blocks/trunk/core/Settings/Translations.php) (1 diff)
-
tags/1.0.2/docs (added)
-
tags/1.0.2/docs/create-block.md (added)
-
tags/1.0.2/docs/hooks.md (added)
-
tags/1.0.2/docs/migrate-block.md (added)
-
tags/1.0.2/languages (copied) (copied from cloud-blocks/trunk/languages)
-
tags/1.0.2/languages/cloud-blocks-it_IT.mo (added)
-
tags/1.0.2/languages/cloud-blocks-it_IT.po (added)
-
tags/1.0.2/languages/cloud-blocks-nb_NO.mo (modified) (previous)
-
tags/1.0.2/languages/cloud-blocks-nb_NO.po (modified) (6 diffs)
-
tags/1.0.2/languages/cloud-blocks-pt_PT.mo (modified) (previous)
-
tags/1.0.2/languages/cloud-blocks-pt_PT.po (modified) (5 diffs)
-
tags/1.0.2/readme.txt (copied) (copied from cloud-blocks/trunk/readme.txt) (1 diff)
-
tags/1.0.2/vendor (copied) (copied from cloud-blocks/trunk/vendor)
-
trunk/README.md (modified) (2 diffs)
-
trunk/assets/js/script.js (modified) (2 diffs)
-
trunk/assets/js/script.min.js (modified) (1 diff)
-
trunk/assets/screenshot-1.gif (added)
-
trunk/assets/source/js/block-component.js (modified) (2 diffs)
-
trunk/cloud-blocks.php (modified) (1 diff)
-
trunk/core/Blocks/Blocks.php (modified) (2 diffs)
-
trunk/core/Settings/Tools.php (modified) (1 diff)
-
trunk/core/Settings/Translations.php (modified) (1 diff)
-
trunk/docs (added)
-
trunk/docs/create-block.md (added)
-
trunk/docs/hooks.md (added)
-
trunk/docs/migrate-block.md (added)
-
trunk/languages/cloud-blocks-it_IT.mo (added)
-
trunk/languages/cloud-blocks-it_IT.po (added)
-
trunk/languages/cloud-blocks-nb_NO.mo (modified) (previous)
-
trunk/languages/cloud-blocks-nb_NO.po (modified) (6 diffs)
-
trunk/languages/cloud-blocks-pt_PT.mo (modified) (previous)
-
trunk/languages/cloud-blocks-pt_PT.po (modified) (5 diffs)
-
trunk/readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
cloud-blocks/tags/1.0.2/README.md
r1958585 r1961288 1 1 # Cloud Blocks 2 2 3 Your online library of Gutenberg blocks! Browse and discover new blocks, and install with a click. 3 ## Description 4 **Gutenberg Cloud: Your online library of blocks!** Cloud Blocks is the only plugin you need to browse and install new blocks: 4 5 5 ### Description 6 - Discover and install custom blocks with a click 7 - Install only the blocks you need – no huge plugin collections needed 8 - Reuse blocks between WordPress and Drupal 9 - Serve the blocks from a CDN 6 10 7 No block collection plugins needed: 8 This is the only plugin you need to browse and install new blocks. 11 ### Why use Gutenberg Cloud? 12 Installing an actual plugin for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a web browser. With the block manager, you have a growing library at your fingertips, without the bloat. 9 13 10 Reuse between platforms 11 Gutenberg blocks can be used in both Wordpress and Drupal 14 ### Get started 15 Install the plugin, and look for the cloud icon in the main menu. Browse around and activate a few blocks. Voila – these are now available to you in the Gutenberg editor! 12 16 13 Code once, use everywhere: As Gutenberg blocks are CMS agnostic, we want to provide an ecosystem all systems can connect to. 17 ### How it works under the hood 18 Gutenberg Cloud is a service that fetches Open Source Gutenberg blocks hosted on NPM. The assets from these are served from CloudFlare using unpkg.com. The Cloud Blocks plugin provides an interface in WordPress for Gutenberg Cloud. 14 19 15 Why Gutenberg Cloud? Installing an actual plugin/module for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a browser. With the block manager, you have a growing library at your fingertips, without the bloat.20 Code once, use everywhere: Since the blocks are JS/CSS only, they are CMS agnostic. This means you can develop a block for a Drupal site, and reuse it later on a WordPress blog. 16 21 17 ## #Installation18 Install it just like any other plugin. It just works!22 ## Installation 23 Install it as any other plugin, but note that you need Gutenberg activated for it to work. 19 24 20 ### Available hooks 25 To install individual blocks, look for the cloud icon in the left side menu. Click it, and browse away! 26 27 ## Frequently Asked Questions 28 29 ### How do I migrate a block collection plugin to Gutenberg Cloud? 30 Glad you asked! This simply means removing some PHP, adding some meta data and publishing on NPM. [Follow these simple steps](https://github.com/front/cloud-blocks/blob/master/docs/migrate-block.md). 31 32 ### How do I create a custom block for Gutenberg Cloud? 33 Gutenberg Cloud blocks are really just normal Gutenberg blocks, without the PHP. [Follow these steps to do it](https://github.com/front/cloud-blocks/blob/master/docs/create-block.md)! 34 35 ### How do I disable CSS for a single block? 36 This is useful for letting your theme control your block styles. There’s a hook for this, [documented here](https://github.com/front/cloud-blocks/blob/master/docs/hooks.md). 37 38 ### Why is the plugin called Cloud Blocks? 39 We wanted to name it Gutenberg Cloud, but since it’s not possible to name a plugin starting with the name of another plugin (i.e. Gutenberg), we ended up calling it Cloud Blocks. Makes sense though, doesn’t it? 40 41 ### Are the blocks really served from "the cloud"? 42 Indeed, they are! The source code for each block is on NPM, but the JS/CSS is served by a CDN. No local downloads! 43 44 ### Can I add private custom blocks? 45 Sure! Just add your custom blocks into **wp-content/cloud-blocks/** folder. 46 47 ## Available hooks 21 48 22 49 `gutenberg_cloud_disable_style` … … 43 70 ``` 44 71 45 ### Frequently Asked Questions46 **How do I add my own custom blocks to Gutenberg Cloud?**47 Gutenberg Cloud blocks are really just normal Gutenberg blocks. They have a screenshot and some other meta, but follows the official standards. See https://gutenbergcloud.org/ for more information.48 72 49 ## #Changelog73 ## Changelog 50 74 75 #### 1.0.2 76 * **Change**: Some translation fixes 77 * **Change**: Better documentation and screenshot 78 * **Added**: Italian translation. (Thanks to [cipo28](https://github.com/front/cloud-blocks/pull/1)) 51 79 52 #### #1.0.153 * Fix: is_plugin_active() undefined fix54 * Fix: Change strings functions to static80 #### 1.0.1 81 * **Fix**: is_plugin_active() undefined fix 82 * **Fix**: Change strings functions to static 55 83 56 #### #1.0.084 #### 1.0.0 57 85 * Initial plugin -
cloud-blocks/tags/1.0.2/assets/js/script.js
r1958571 r1961288 72 72 v-if="currentBrowsState != 'installed' && !alreadyInstaleld" 73 73 @click.prevent="installBlock"> 74 Install74 {{fgcData.strings.install}} 75 75 </button> 76 76 <button class="button theme-install install-block-btn" … … 117 117 this.incrementInstalls(this.block.packageName) 118 118 window.store.dispatch('getInstalledBlocks') 119 window.store.commit('setNotification', { text: `${fgcData.strings. block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' })119 window.store.commit('setNotification', { text: `${fgcData.strings.the_block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' }) 120 120 console.log('Block installed ', res.data) 121 121 }) -
cloud-blocks/tags/1.0.2/assets/js/script.min.js
r1958571 r1961288 1 "use strict";Vue.component("admin-notice",{data:function a(){return{activeTimeout:-1}},template:"\n <div\n :class=\"['fgc-notification', notification.class]\"\n v-cloak>\n <p v-html=\"notification.text\"></p>\n </div>\n ",watch:{isActive:function a(){this.showingTimeout()}},mounted:function a(){this.showingTimeout()},methods:{showingTimeout:function b(){var a=this;window.clearTimeout(this.activeTimeout),this.activeTimeout=window.setTimeout(function(){window.store.state.notification.class="",a.isShowing=!1},4e3)}},computed:{isActive:function a(){return window.store.state.notification.text},notification:function a(){return window.store.state.notification}}}),Vue.component("block-card",{props:["block"],data:function a(){return{installing:!1,alreadyInstaleld:!1,updateAvailable:!1,currentVersion:null}},template:"\n <div class=\"theme\">\n <div class=\"theme-screenshot\">\n <img :src=\"block.imageUrl\" :alt=\"block.name\">\n <div class=\"spinner installing-block\" v-if=\"installing\"></div>\n </div>\n\n <div v-if=\"alreadyInstaleld\" class=\"notice inline notice-success notice-alt\"><p>{{fgcData.strings.installed}}</p></div>\n\n <div v-if=\"updateAvailable\" class=\"update-message notice inline notice-warning notice-alt\">\n <p>{{fgcData.strings.update_available}} <button class=\"button-link\" type=\"button\" @click=\"updateBlock\">{{fgcData.strings.update_now}}</button></p>\n </div>\n\n <span class=\"more-details\" @click=\"openMoreDetails\">{{fgcData.strings.show_more_details}}</span>\n\n <div class=\"theme-id-container\">\n <h3 class=\"theme-name\">{{ block.name }}</h3>\n <span class=\"block-version\">{{fgcData.strings.version}}: {{ currentVersion }}</span>\n\n <div class=\"theme-actions\">\n <button class=\"button button-primary theme-install install-block-btn\"\n v-if=\"currentBrowsState != 'installed' && !alreadyInstaleld\"\n @click.prevent=\"installBlock\">\n Install\n </button>\n <button class=\"button theme-install install-block-btn\"\n v-else\n @click.prevent=\"deleteBlock\">\n {{fgcData.strings.delete}}\n </button>\n <a class=\"button preview install-theme-preview\" :href=\"block.infoUrl\" target=\"_blank\">{{fgcData.strings.more_details}}</a>\n </div>\n </div>\n\n </div>\n ",mounted:function b(){var a=this;this.currentVersion=this.block.version,!window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName}).length||(this.alreadyInstaleld="installed"!=this.currentBrowsState,"installed"==this.currentBrowsState&&(this.updateAvailable=!!window.store.state.installedBlocks.filter(function(c){if(c.package_name==a.block.packageName)return c.block_version<a.block.version}).length,this.currentVersion=window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName})[0].block_version))},methods:{installBlock:function c(){var a=this;this.installing=!0;var b=this.block;console.log(b),jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_install_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!0,a.incrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_installed),class:"show success"}),console.log("Block installed ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues installing block: ",b)})},deleteBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_delete_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!1,a.decrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_uninstalled),class:"show success"}),console.log("Block uninstalled ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues uninstalling block: ",b)})},updateBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_update_block",data:b}}).done(function(b){a.installing=!1,a.updateAvailable=!1,a.currentVersion=a.block.version,window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strigns.block_updated),class:"show success"}),console.log("Block Updated ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues updating block: ",b)})},incrementInstalls:function b(a){jQuery.ajax({type:"PUT",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter increased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},decrementInstalls:function b(a){jQuery.ajax({type:"DELETE",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter decreased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},openMoreDetails:function a(){this.block.infoUrl&&window.open(this.block.infoUrl,"_blank")}},computed:{currentBrowsState:function a(){return window.store.state.browsState}}}),Vue.component("explorer-filter",{componenets:["filter-drawer"],data:function a(){return{drawerFilterOpen:!1,searchQuery:null,filterLinks:[{name:fgcData.strings.installed,slug:"installed"},{name:fgcData.strings.popular,slug:"popular"},{name:fgcData.strings.latest,slug:"latest"}]}},template:"\n <div class=\"wp-filter g-blocks-filter hide-if-no-js\">\n <div class=\"filter-count\">\n <span class=\"count theme-count\">{{ installedBlocksCount }}</span>\n </div>\n\n <ul class=\"filter-links\">\n <li><a v-for=\"filter in filterLinks\" :key=\"filter.slug\" @click=\"filterLink(filter.slug)\" :class=\"currentFilter(filter.slug)\">{{ filter.name }}</a></li>\n </ul>\n\n <button type=\"button\" v-if=\"false\" id=\"searchFilter\" class=\"button drawer-toggle\" :aria-expanded=\"drawerFilterOpen\" @click=\"drawerFilterOpen = !drawerFilterOpen\">{{fgcData.strings.filter}}</button>\n\n <form class=\"search-form\" @submit.prevent=\"searchForBlock\"><label class=\"screen-reader-text\" for=\"wp-filter-search-input\">{{fgcData.strings.search_for_blocks}}</label><input :placeholder=\"fgcData.strings.search_blocks\" v-model=\"searchQuery\" type=\"search\" id=\"wp-filter-search-input\" class=\"wp-filter-search\"></form>\n\n <filter-drawer :style=\"{display: drawerFilterOpen ? 'block' : 'none'}\"></filter-drawer>\n </div>\n ",mounted:function a(){},methods:{filterLink:function c(a){var b=window.location.search.replace(/\&brows[=a-z]*/,"");history.pushState({state:a},null,"".concat(b,"&brows=").concat(a)),window.store.commit("setBrowsState",a)},currentFilter:function b(a){return window.store.state.browsState==a?"current":""},searchForBlock:function c(){var a=window.location.search.replace(/\&q[=a-z\-]*/,""),b=this.searchQuery.replace(/\s+/g,"-").toLowerCase();history.pushState({state:b},null,"".concat(a,"&q=").concat(b)),window.store.commit("setSearchQuery",b)}},computed:{installedBlocksCount:function a(){return window.store.state.installedBlocks.length}}}),Vue.component("filter-drawer",{template:"\n <div class=\"filter-drawer\">\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n <fieldset class=\"filter-group\">\n <legend>Subject</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-blog\" value=\"blog\">\n <label for=\"filter-id-blog\">Blog</label>\n <input type=\"checkbox\" id=\"filter-id-e-commerce\" value=\"e-commerce\">\n <label for=\"filter-id-e-commerce\">E-Commerce</label>\n <input type=\"checkbox\" id=\"filter-id-education\" value=\"education\">\n <label for=\"filter-id-education\">Education</label>\n <input type=\"checkbox\" id=\"filter-id-entertainment\" value=\"entertainment\">\n <label for=\"filter-id-entertainment\">News</label>\n </div>\n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Features</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-accessibility-ready\" value=\"accessibility-ready\">\n <label for=\"filter-id-accessibility-ready\">Custom Colors</label>\n <input type=\"checkbox\" id=\"filter-id-custom-background\" value=\"custom-background\">\n <label for=\"filter-id-custom-background\">Editor style</label>\n <input type=\"checkbox\" id=\"filter-id-custom-colors\" value=\"custom-colors\">\n <label for=\"filter-id-custom-colors\">Full Width Template</label>\n </div> \n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Layout</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-grid-layout\" value=\"grid-layout\">\n <label for=\"filter-id-grid-layout\">Grid-layout</label>\n <input type=\"checkbox\" id=\"filter-id-one-column\" value=\"one-column\">\n <label for=\"filter-id-one-column\">One Column</label>\n <input type=\"checkbox\" id=\"filter-id-two-columns\" value=\"two-columns\">\n <label for=\"filter-id-two-columns\">Two Column</label>\n <input type=\"checkbox\" id=\"filter-id-three-columns\" value=\"three-columns\">\n <label for=\"filter-id-three-columns\">Responsive</label>\n </div>\n </fieldset>\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n\n </div>\n "});var store=new Vuex.Store({state:{notification:{},browsState:null,installedBlocks:fgcData.installedBlocks,searchQuery:null},mutations:{setNotification:function c(a,b){a.notification=b},setBrowsState:function c(a,b){a.browsState=b},setInstalledBlocks:function c(a,b){a.installedBlocks=b},setSearchQuery:function c(a,b){a.searchQuery=b}},actions:{getInstalledBlocks:function b(a){jQuery.ajax({type:"GET",url:fgcData.ajaxUrl,data:{action:"fgc_get_all_blocks"}}).done(function(b){a.commit("setInstalledBlocks",b.data)}).fail(function(a){console.log("There is some issues installing block: ",a)})}}}),app=new Vue({el:"#blockExplorer",data:function a(){return{blocks:[]}},created:function a(){window.store.dispatch("getInstalledBlocks")},mounted:function c(){var a=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed",b=this.getUrlParams("q")?this.getUrlParams("q"):"";this.getBlocks({state:a,q:b}),window.store.commit("setBrowsState",a),window.addEventListener("popstate",this.fetchBlocks)},watch:{currentBrowsFilter:function c(a){var b=this.getUrlParams("q")?this.getUrlParams("q"):"";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:a,q:b})},currentSearchQuery:function c(a){var b=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:b,q:a})},installedBlocks:function d(a,b){var c=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";a.length!=b.length&&"installed"==c&&(this.blocks=this.blocks.filter(function(b){return a.some(function(a){return a.package_name==b.packageName})}))}},methods:{fetchBlocks:function c(a){var b=null;a.state&&(b=a.state.state),this.getBlocks(b)},getBlocks:function e(a){var b=this,c=[],d="";null!==a.q&&(d="q=".concat(a.q)),jQuery.get("https://api.gutenbergcloud.org/blocks?".concat(d),function(d){d.rows.map(function(d){var e={};e.jsUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.js),e.cssUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.css),e.editorCss=d.config.editor?"https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.editor):null,e.infoUrl="https://www.npmjs.com/package/".concat(d.name),e.imageUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.screenshot),e.name=d.config.name,e.version=d.version,e.packageName=d.name,null==a.state||"installed"==a.state?b.installedBlocks.length&&b.installedBlocks.filter(function(a){return a.package_name==e.packageName}).length&&c.push(e):c.push(e)})}),this.blocks=c},getUrlParams:function e(a,b){b||(b=window.location.href),a=a.replace(/[\[\]]/g,"\\$&");var c=new RegExp("[?&]"+a+"(=([^&#]*)|&|#|$)"),d=c.exec(b);return d?d[2]?decodeURIComponent(d[2].replace(/\+/g," ")):"":null}},computed:{currentBrowsFilter:function a(){return window.store.state.browsState},currentSearchQuery:function a(){return window.store.state.searchQuery},installedBlocks:function a(){return window.store.state.installedBlocks}}});1 "use strict";Vue.component("admin-notice",{data:function a(){return{activeTimeout:-1}},template:"\n <div\n :class=\"['fgc-notification', notification.class]\"\n v-cloak>\n <p v-html=\"notification.text\"></p>\n </div>\n ",watch:{isActive:function a(){this.showingTimeout()}},mounted:function a(){this.showingTimeout()},methods:{showingTimeout:function b(){var a=this;window.clearTimeout(this.activeTimeout),this.activeTimeout=window.setTimeout(function(){window.store.state.notification.class="",a.isShowing=!1},4e3)}},computed:{isActive:function a(){return window.store.state.notification.text},notification:function a(){return window.store.state.notification}}}),Vue.component("block-card",{props:["block"],data:function a(){return{installing:!1,alreadyInstaleld:!1,updateAvailable:!1,currentVersion:null}},template:"\n <div class=\"theme\">\n <div class=\"theme-screenshot\">\n <img :src=\"block.imageUrl\" :alt=\"block.name\">\n <div class=\"spinner installing-block\" v-if=\"installing\"></div>\n </div>\n\n <div v-if=\"alreadyInstaleld\" class=\"notice inline notice-success notice-alt\"><p>{{fgcData.strings.installed}}</p></div>\n\n <div v-if=\"updateAvailable\" class=\"update-message notice inline notice-warning notice-alt\">\n <p>{{fgcData.strings.update_available}} <button class=\"button-link\" type=\"button\" @click=\"updateBlock\">{{fgcData.strings.update_now}}</button></p>\n </div>\n\n <span class=\"more-details\" @click=\"openMoreDetails\">{{fgcData.strings.show_more_details}}</span>\n\n <div class=\"theme-id-container\">\n <h3 class=\"theme-name\">{{ block.name }}</h3>\n <span class=\"block-version\">{{fgcData.strings.version}}: {{ currentVersion }}</span>\n\n <div class=\"theme-actions\">\n <button class=\"button button-primary theme-install install-block-btn\"\n v-if=\"currentBrowsState != 'installed' && !alreadyInstaleld\"\n @click.prevent=\"installBlock\">\n {{fgcData.strings.install}}\n </button>\n <button class=\"button theme-install install-block-btn\"\n v-else\n @click.prevent=\"deleteBlock\">\n {{fgcData.strings.delete}}\n </button>\n <a class=\"button preview install-theme-preview\" :href=\"block.infoUrl\" target=\"_blank\">{{fgcData.strings.more_details}}</a>\n </div>\n </div>\n\n </div>\n ",mounted:function b(){var a=this;this.currentVersion=this.block.version,!window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName}).length||(this.alreadyInstaleld="installed"!=this.currentBrowsState,"installed"==this.currentBrowsState&&(this.updateAvailable=!!window.store.state.installedBlocks.filter(function(c){if(c.package_name==a.block.packageName)return c.block_version<a.block.version}).length,this.currentVersion=window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName})[0].block_version))},methods:{installBlock:function c(){var a=this;this.installing=!0;var b=this.block;console.log(b),jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_install_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!0,a.incrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.the_block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_installed),class:"show success"}),console.log("Block installed ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues installing block: ",b)})},deleteBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_delete_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!1,a.decrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_uninstalled),class:"show success"}),console.log("Block uninstalled ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues uninstalling block: ",b)})},updateBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_update_block",data:b}}).done(function(b){a.installing=!1,a.updateAvailable=!1,a.currentVersion=a.block.version,window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strigns.block_updated),class:"show success"}),console.log("Block Updated ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues updating block: ",b)})},incrementInstalls:function b(a){jQuery.ajax({type:"PUT",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter increased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},decrementInstalls:function b(a){jQuery.ajax({type:"DELETE",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter decreased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},openMoreDetails:function a(){this.block.infoUrl&&window.open(this.block.infoUrl,"_blank")}},computed:{currentBrowsState:function a(){return window.store.state.browsState}}}),Vue.component("explorer-filter",{componenets:["filter-drawer"],data:function a(){return{drawerFilterOpen:!1,searchQuery:null,filterLinks:[{name:fgcData.strings.installed,slug:"installed"},{name:fgcData.strings.popular,slug:"popular"},{name:fgcData.strings.latest,slug:"latest"}]}},template:"\n <div class=\"wp-filter g-blocks-filter hide-if-no-js\">\n <div class=\"filter-count\">\n <span class=\"count theme-count\">{{ installedBlocksCount }}</span>\n </div>\n\n <ul class=\"filter-links\">\n <li><a v-for=\"filter in filterLinks\" :key=\"filter.slug\" @click=\"filterLink(filter.slug)\" :class=\"currentFilter(filter.slug)\">{{ filter.name }}</a></li>\n </ul>\n\n <button type=\"button\" v-if=\"false\" id=\"searchFilter\" class=\"button drawer-toggle\" :aria-expanded=\"drawerFilterOpen\" @click=\"drawerFilterOpen = !drawerFilterOpen\">{{fgcData.strings.filter}}</button>\n\n <form class=\"search-form\" @submit.prevent=\"searchForBlock\"><label class=\"screen-reader-text\" for=\"wp-filter-search-input\">{{fgcData.strings.search_for_blocks}}</label><input :placeholder=\"fgcData.strings.search_blocks\" v-model=\"searchQuery\" type=\"search\" id=\"wp-filter-search-input\" class=\"wp-filter-search\"></form>\n\n <filter-drawer :style=\"{display: drawerFilterOpen ? 'block' : 'none'}\"></filter-drawer>\n </div>\n ",mounted:function a(){},methods:{filterLink:function c(a){var b=window.location.search.replace(/\&brows[=a-z]*/,"");history.pushState({state:a},null,"".concat(b,"&brows=").concat(a)),window.store.commit("setBrowsState",a)},currentFilter:function b(a){return window.store.state.browsState==a?"current":""},searchForBlock:function c(){var a=window.location.search.replace(/\&q[=a-z\-]*/,""),b=this.searchQuery.replace(/\s+/g,"-").toLowerCase();history.pushState({state:b},null,"".concat(a,"&q=").concat(b)),window.store.commit("setSearchQuery",b)}},computed:{installedBlocksCount:function a(){return window.store.state.installedBlocks.length}}}),Vue.component("filter-drawer",{template:"\n <div class=\"filter-drawer\">\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n <fieldset class=\"filter-group\">\n <legend>Subject</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-blog\" value=\"blog\">\n <label for=\"filter-id-blog\">Blog</label>\n <input type=\"checkbox\" id=\"filter-id-e-commerce\" value=\"e-commerce\">\n <label for=\"filter-id-e-commerce\">E-Commerce</label>\n <input type=\"checkbox\" id=\"filter-id-education\" value=\"education\">\n <label for=\"filter-id-education\">Education</label>\n <input type=\"checkbox\" id=\"filter-id-entertainment\" value=\"entertainment\">\n <label for=\"filter-id-entertainment\">News</label>\n </div>\n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Features</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-accessibility-ready\" value=\"accessibility-ready\">\n <label for=\"filter-id-accessibility-ready\">Custom Colors</label>\n <input type=\"checkbox\" id=\"filter-id-custom-background\" value=\"custom-background\">\n <label for=\"filter-id-custom-background\">Editor style</label>\n <input type=\"checkbox\" id=\"filter-id-custom-colors\" value=\"custom-colors\">\n <label for=\"filter-id-custom-colors\">Full Width Template</label>\n </div> \n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Layout</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-grid-layout\" value=\"grid-layout\">\n <label for=\"filter-id-grid-layout\">Grid-layout</label>\n <input type=\"checkbox\" id=\"filter-id-one-column\" value=\"one-column\">\n <label for=\"filter-id-one-column\">One Column</label>\n <input type=\"checkbox\" id=\"filter-id-two-columns\" value=\"two-columns\">\n <label for=\"filter-id-two-columns\">Two Column</label>\n <input type=\"checkbox\" id=\"filter-id-three-columns\" value=\"three-columns\">\n <label for=\"filter-id-three-columns\">Responsive</label>\n </div>\n </fieldset>\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n\n </div>\n "});var store=new Vuex.Store({state:{notification:{},browsState:null,installedBlocks:fgcData.installedBlocks,searchQuery:null},mutations:{setNotification:function c(a,b){a.notification=b},setBrowsState:function c(a,b){a.browsState=b},setInstalledBlocks:function c(a,b){a.installedBlocks=b},setSearchQuery:function c(a,b){a.searchQuery=b}},actions:{getInstalledBlocks:function b(a){jQuery.ajax({type:"GET",url:fgcData.ajaxUrl,data:{action:"fgc_get_all_blocks"}}).done(function(b){a.commit("setInstalledBlocks",b.data)}).fail(function(a){console.log("There is some issues installing block: ",a)})}}}),app=new Vue({el:"#blockExplorer",data:function a(){return{blocks:[]}},created:function a(){window.store.dispatch("getInstalledBlocks")},mounted:function c(){var a=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed",b=this.getUrlParams("q")?this.getUrlParams("q"):"";this.getBlocks({state:a,q:b}),window.store.commit("setBrowsState",a),window.addEventListener("popstate",this.fetchBlocks)},watch:{currentBrowsFilter:function c(a){var b=this.getUrlParams("q")?this.getUrlParams("q"):"";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:a,q:b})},currentSearchQuery:function c(a){var b=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:b,q:a})},installedBlocks:function d(a,b){var c=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";a.length!=b.length&&"installed"==c&&(this.blocks=this.blocks.filter(function(b){return a.some(function(a){return a.package_name==b.packageName})}))}},methods:{fetchBlocks:function c(a){var b=null;a.state&&(b=a.state.state),this.getBlocks(b)},getBlocks:function e(a){var b=this,c=[],d="";null!==a.q&&(d="q=".concat(a.q)),jQuery.get("https://api.gutenbergcloud.org/blocks?".concat(d),function(d){d.rows.map(function(d){var e={};e.jsUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.js),e.cssUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.css),e.editorCss=d.config.editor?"https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.editor):null,e.infoUrl="https://www.npmjs.com/package/".concat(d.name),e.imageUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.screenshot),e.name=d.config.name,e.version=d.version,e.packageName=d.name,null==a.state||"installed"==a.state?b.installedBlocks.length&&b.installedBlocks.filter(function(a){return a.package_name==e.packageName}).length&&c.push(e):c.push(e)})}),this.blocks=c},getUrlParams:function e(a,b){b||(b=window.location.href),a=a.replace(/[\[\]]/g,"\\$&");var c=new RegExp("[?&]"+a+"(=([^&#]*)|&|#|$)"),d=c.exec(b);return d?d[2]?decodeURIComponent(d[2].replace(/\+/g," ")):"":null}},computed:{currentBrowsFilter:function a(){return window.store.state.browsState},currentSearchQuery:function a(){return window.store.state.searchQuery},installedBlocks:function a(){return window.store.state.installedBlocks}}}); -
cloud-blocks/tags/1.0.2/assets/source/js/block-component.js
r1958571 r1961288 32 32 v-if="currentBrowsState != 'installed' && !alreadyInstaleld" 33 33 @click.prevent="installBlock"> 34 Install34 {{fgcData.strings.install}} 35 35 </button> 36 36 <button class="button theme-install install-block-btn" … … 77 77 this.incrementInstalls(this.block.packageName) 78 78 window.store.dispatch('getInstalledBlocks') 79 window.store.commit('setNotification', { text: `${fgcData.strings. block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' })79 window.store.commit('setNotification', { text: `${fgcData.strings.the_block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' }) 80 80 console.log('Block installed ', res.data) 81 81 }) -
cloud-blocks/tags/1.0.2/cloud-blocks.php
r1958585 r1961288 2 2 /* 3 3 Plugin Name: Cloud Blocks 4 Version: 1.0. 14 Version: 1.0.2 5 5 Description: Your library of Gutenberg blocks in the cloud 6 Author: Frontkom - Fouad Yousefi6 Author: Frontkom 7 7 Author URI: https://frontkom.no 8 8 License: GPL2 -
cloud-blocks/tags/1.0.2/core/Blocks/Blocks.php
r1958571 r1961288 60 60 ); 61 61 Options::add( $new_block, true ); 62 update_option( 'gutenberg_cloud_install_block', $new_block); 62 63 63 $response = array( 64 64 'code' => 200, … … 218 218 * to enable/disable styling per individual block or for all of them. 219 219 */ 220 $disable_style = apply_filters( ' gutenberg_cloud_disable_style', false, $block );220 $disable_style = apply_filters( 'cloud_blocks_disable_style', false, $block ); 221 221 if ( !$disable_style ) { 222 222 wp_register_style( str_replace( ' ', '-', $block->block_name ) , $block->css_url, array(), $block->block_version); -
cloud-blocks/tags/1.0.2/core/Settings/Tools.php
r1958571 r1961288 220 220 <div class="inside"> 221 221 <form method="post"> 222 <p><?php _e( ' Here you can export all installed Gutenberg custom blocks from Gutenberg Cloud as a json file and import it elsewhere.', 'cloud-blocks' ); ?></p>222 <p><?php _e( 'Export all your installed blocks from Gutenberg Cloud as JSON. Note: The content will not be exported.', 'cloud-blocks' ); ?></p> 223 223 <p class="fgc-submit"> 224 224 <button type="submit" name="action" class="button button-primary" value="download-json"><?php _e( 'Export file', 'cloud-blocks' ); ?></button> -
cloud-blocks/tags/1.0.2/core/Settings/Translations.php
r1958585 r1961288 17 17 return array( 18 18 'block' => __( 'Block', 'cloud-blocks' ), 19 'the_block' => __( 'The block', 'cloud-blocks' ), 19 20 'delete' => __( 'Delete', 'cloud-blocks' ), 21 'install' => __( 'Install', 'cloud-blocks' ), 20 22 'installed' => __( 'Installed', 'cloud-blocks' ), 21 23 'popular' => __( 'Popular', 'cloud-blocks' ), -
cloud-blocks/tags/1.0.2/languages/cloud-blocks-nb_NO.po
r1958571 r1961288 2 2 msgstr "" 3 3 "Project-Id-Version: Cloud Blocks\n" 4 "POT-Creation-Date: 2018-10- 18 13:12+0200\n"5 "PO-Revision-Date: 2018-10- 18 13:13+0200\n"4 "POT-Creation-Date: 2018-10-22 11:20+0200\n" 5 "PO-Revision-Date: 2018-10-22 11:20+0200\n" 6 6 "Last-Translator: \n" 7 7 "Language-Team: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.js\n" 23 23 24 #: core/CloudBlocks.php: 3924 #: core/CloudBlocks.php:40 25 25 msgid "Gutenberg is not enabled. Please try again after enabling." 26 26 msgstr "Gutenberg er ikke aktivert. Skru den på, og prøv igjen!" … … 66 66 #: core/Settings/Tools.php:222 67 67 msgid "" 68 " Here you can export all installed Gutenberg custom blocks from Gutenberg"69 " Cloud as a json file and import it elsewhere."68 "Export all your installed blocks from Gutenberg Cloud as JSON. Note: The " 69 "content will not be exported." 70 70 msgstr "" 71 " Her kan du eksportere alle installerte Gutenberg egendefinerte blokker fra"72 " Gutenberg Cloud som en JSON-fil og importere den et annet sted."71 "Klikk for å eksportere aktive blokker fra Gutenberg Cloud som JSON. OBS: " 72 "Innholdet blir ikke eksportert." 73 73 74 74 #: core/Settings/Tools.php:224 … … 97 97 98 98 #: core/Settings/Translations.php:19 99 msgid "The block" 100 msgstr "Blokk" 101 102 #: core/Settings/Translations.php:20 99 103 msgid "Delete" 100 104 msgstr "Slett" 101 105 102 #: core/Settings/Translations.php:20 106 #: core/Settings/Translations.php:21 107 msgid "Install" 108 msgstr "Aktiver" 109 110 #: core/Settings/Translations.php:22 103 111 msgid "Installed" 104 112 msgstr "Installert" 105 113 106 #: core/Settings/Translations.php:2 1114 #: core/Settings/Translations.php:23 107 115 msgid "Popular" 108 116 msgstr "Populær" 109 117 110 #: core/Settings/Translations.php:2 2118 #: core/Settings/Translations.php:24 111 119 msgid "Latest" 112 120 msgstr "Nyeste" 113 121 114 #: core/Settings/Translations.php:2 3122 #: core/Settings/Translations.php:25 115 123 msgid "Most used" 116 124 msgstr "Mest brukt" 117 125 118 #: core/Settings/Translations.php:2 4126 #: core/Settings/Translations.php:26 119 127 msgid "Search for blocks" 120 128 msgstr "Søk etter blokker" 121 129 122 #: core/Settings/Translations.php:2 5130 #: core/Settings/Translations.php:27 123 131 msgid "Search blocks..." 124 132 msgstr "Søk blokker..." 125 133 126 #: core/Settings/Translations.php:2 6134 #: core/Settings/Translations.php:28 127 135 msgid "Filter" 128 136 msgstr "Filter" 129 137 130 #: core/Settings/Translations.php:2 7138 #: core/Settings/Translations.php:29 131 139 msgid "Update now" 132 140 msgstr "Uppdater nå" 133 141 134 #: core/Settings/Translations.php: 28142 #: core/Settings/Translations.php:30 135 143 msgid "Show more details" 136 144 msgstr "Vis flere detaljer" 137 145 138 #: core/Settings/Translations.php: 29146 #: core/Settings/Translations.php:31 139 147 msgid "More details" 140 148 msgstr "Flere detaljer" 141 149 142 #: core/Settings/Translations.php:3 0150 #: core/Settings/Translations.php:32 143 151 msgid "have been installed successfully." 144 152 msgstr "er installert." 145 153 146 #: core/Settings/Translations.php:3 1154 #: core/Settings/Translations.php:33 147 155 msgid "have been uninstalled successfully." 148 156 msgstr "er avinstallert.." 149 157 150 #: core/Settings/Translations.php:3 2158 #: core/Settings/Translations.php:34 151 159 msgid "have been updated successfully." 152 160 msgstr "er oppdatert." 153 161 154 #: core/Settings/Translations.php:3 3162 #: core/Settings/Translations.php:35 155 163 msgid "New version available." 156 164 msgstr "Ny versjon tilgjengelig." 157 165 158 #: core/Settings/Translations.php:3 4166 #: core/Settings/Translations.php:36 159 167 msgid "Version" 160 168 msgstr "Versjon" … … 173 181 174 182 #. Author of the plugin/theme 175 msgid "Frontkom - Fouad Yousefi"176 msgstr " Frontkom - Foad Yousefi"183 msgid "Frontkom" 184 msgstr "" 177 185 178 186 #. Author URI of the plugin/theme … … 180 188 msgstr "https://frontkom.no" 181 189 190 #~ msgid "Frontkom - Fouad Yousefi" 191 #~ msgstr "Frontkom - Foad Yousefi" 192 182 193 #~ msgid "Gutenberg Cloud" 183 194 #~ msgstr "Gutenberg Cloud" -
cloud-blocks/tags/1.0.2/languages/cloud-blocks-pt_PT.po
r1958571 r1961288 2 2 msgstr "" 3 3 "Project-Id-Version: Cloud Blocks\n" 4 "POT-Creation-Date: 2018-10- 18 13:25+0200\n"5 "PO-Revision-Date: 2018-10- 18 13:56+0200\n"4 "POT-Creation-Date: 2018-10-22 11:20+0200\n" 5 "PO-Revision-Date: 2018-10-22 11:20+0200\n" 6 6 "Last-Translator: \n" 7 7 "Language-Team: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.js\n" 23 23 24 #: core/CloudBlocks.php: 3924 #: core/CloudBlocks.php:40 25 25 msgid "Gutenberg is not enabled. Please try again after enabling." 26 26 msgstr "" … … 67 67 #: core/Settings/Tools.php:222 68 68 msgid "" 69 " Here you can export all installed Gutenberg custom blocks from Gutenberg"70 " Cloud as a json file and import it elsewhere."69 "Export all your installed blocks from Gutenberg Cloud as JSON. Note: The " 70 "content will not be exported." 71 71 msgstr "" 72 " Aqui pode exportar todos os blocos personalizados instalados na Gutenberg"73 " Cloud num ficheiro JSON e importá-lo em outro lugar."72 "Exportar da Gutenberg Could todos os blocos instalados para um ficheiro " 73 "JSON. Nota: o conteúdo não será exportado." 74 74 75 75 #: core/Settings/Tools.php:224 … … 98 98 99 99 #: core/Settings/Translations.php:19 100 msgid "The block" 101 msgstr "O bloco" 102 103 #: core/Settings/Translations.php:20 100 104 msgid "Delete" 101 105 msgstr "Excluir" 102 106 103 #: core/Settings/Translations.php:20 107 #: core/Settings/Translations.php:21 108 msgid "Install" 109 msgstr "Instalar" 110 111 #: core/Settings/Translations.php:22 104 112 msgid "Installed" 105 113 msgstr "Instalado" 106 114 107 #: core/Settings/Translations.php:2 1115 #: core/Settings/Translations.php:23 108 116 msgid "Popular" 109 117 msgstr "Popular" 110 118 111 #: core/Settings/Translations.php:2 2119 #: core/Settings/Translations.php:24 112 120 msgid "Latest" 113 121 msgstr "Mais recentes" 114 122 115 #: core/Settings/Translations.php:2 3123 #: core/Settings/Translations.php:25 116 124 msgid "Most used" 117 125 msgstr "Mais utilizados" 118 126 119 #: core/Settings/Translations.php:2 4127 #: core/Settings/Translations.php:26 120 128 msgid "Search for blocks" 121 129 msgstr "Procurar blocos" 122 130 123 #: core/Settings/Translations.php:2 5131 #: core/Settings/Translations.php:27 124 132 msgid "Search blocks..." 125 133 msgstr "Pesquisar blocos…" 126 134 127 #: core/Settings/Translations.php:2 6135 #: core/Settings/Translations.php:28 128 136 msgid "Filter" 129 137 msgstr "Filtro" 130 138 131 #: core/Settings/Translations.php:2 7139 #: core/Settings/Translations.php:29 132 140 msgid "Update now" 133 141 msgstr "Atualizar agora" 134 142 135 #: core/Settings/Translations.php: 28143 #: core/Settings/Translations.php:30 136 144 msgid "Show more details" 137 145 msgstr "Mostrar mais detalhes" 138 146 139 #: core/Settings/Translations.php: 29147 #: core/Settings/Translations.php:31 140 148 msgid "More details" 141 149 msgstr "Mais detalhes" 142 150 143 #: core/Settings/Translations.php:3 0151 #: core/Settings/Translations.php:32 144 152 msgid "have been installed successfully." 145 msgstr "foram instalados com sucesso." 146 147 #: core/Settings/Translations.php:31 148 msgid "have been uninstalled successfully." 149 msgstr "foram desinstalados com sucesso." 150 151 #: core/Settings/Translations.php:32 152 msgid "have been updated successfully." 153 msgstr "foram atualizados com sucesso." 153 msgstr "foi instalado com sucesso." 154 154 155 155 #: core/Settings/Translations.php:33 156 msgid "have been uninstalled successfully." 157 msgstr "foi desinstalado com sucesso." 158 159 #: core/Settings/Translations.php:34 160 msgid "have been updated successfully." 161 msgstr "foi atualizado com sucesso." 162 163 #: core/Settings/Translations.php:35 156 164 msgid "New version available." 157 165 msgstr "Nova versão disponível." 158 166 159 #: core/Settings/Translations.php:3 4167 #: core/Settings/Translations.php:36 160 168 msgid "Version" 161 169 msgstr "Versão" … … 174 182 175 183 #. Author of the plugin/theme 176 msgid "Frontkom - Fouad Yousefi"177 msgstr " Frontkom-Foad Yousefi"184 msgid "Frontkom" 185 msgstr "" 178 186 179 187 #. Author URI of the plugin/theme 180 188 msgid "https://frontkom.no" 181 189 msgstr "https://frontkom.no" 190 191 #~ msgid "Frontkom - Fouad Yousefi" 192 #~ msgstr "Frontkom-Foad Yousefi" -
cloud-blocks/tags/1.0.2/readme.txt
r1958585 r1961288 2 2 Contributors: frontkom, foadyousefi 3 3 Author URI: https://frontkom.no 4 Tags: gutenberg, pagebuilder 4 Tags: gutenberg, pagebuilder, blocks, gutenberg blocks, page builder 5 5 Requires at least: 4.9.8 6 6 Tested up to: 4.9.8 7 7 Requires PHP: 5 8 Stable tag: 1.0. 19 License: G NU GPL10 License URI: https://www.gnu.org/licenses/ old-licenses/gpl-2.0.html8 Stable tag: 1.0.2 9 License: GPLv3 10 License URI: https://www.gnu.org/licenses/gpl-3.0.html 11 11 12 12 Your online library of Gutenberg blocks! Browse and discover new blocks, and install with a click. 13 13 14 14 == Description == 15 No block collection plugins needed: 16 This is the only plugin you need to browse and install new blocks. 15 **Gutenberg Cloud: Your online library of blocks!** Cloud Blocks is the only plugin you need to browse and install new blocks: 17 16 18 Reuse between platforms 19 Gutenberg blocks can be used in both Wordpress and Drupal 17 - Discover and install custom blocks with a click 18 - Install only the blocks you need – no huge plugin collections needed 19 - Reuse blocks between WordPress and Drupal 20 - Serve the blocks from a CDN 20 21 21 Code once, use everywhere: As Gutenberg blocks are CMS agnostic, we want to provide an ecosystem all systems can connect to. 22 ## Why use Gutenberg Cloud? 23 Installing an actual plugin for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a web browser. With the block manager, you have a growing library at your fingertips, without the bloat. It’s like an app store for blocks – except it’s free. 22 24 23 Why Gutenberg Cloud? Installing an actual plugin/module for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a browser. With the block manager, you have a growing library at your fingertips, without the bloat. 25 ## Get started 26 Install the plugin, and look for the cloud icon in the main menu. Browse around and activate a few blocks. Voila – these are now available to you in the Gutenberg editor! 27 28 ## How it works under the hood 29 Gutenberg Cloud is a service that fetches Open Source Gutenberg blocks hosted on NPM. The assets from these are served from CloudFlare using unpkg.com. The Cloud Blocks plugin provides an interface in WordPress for Gutenberg Cloud. 30 31 Code once, use everywhere: Since the blocks are JS/CSS only, they are CMS agnostic. This means you can develop a block for a Drupal site, and reuse it later on a WordPress blog. 32 24 33 25 34 == Installation == 26 35 Install it just like any other plugin. It just works! 27 36 37 == Screenshots == 38 39 1. Discover and install blocks 40 28 41 == Frequently Asked Questions == 29 How do I add my own custom blocks to Gutenberg Cloud?30 42 31 Gutenberg Cloud blocks are really just normal Gutenberg blocks. They have a screenshot and some other meta, but follows the official standards. See https://gutenbergcloud.org/ for more information. 43 **How do I migrate a block collection plugin to Gutenberg Cloud?** 44 45 This simply means removing some PHP, adding some meta data and publishing on NPM. [Follow these simple steps](https://github.com/front/cloud-blocks/blob/master/docs/migrate-block.md). 46 47 **How do I create a custom block for Gutenberg Cloud?** 48 49 Gutenberg Cloud blocks are really just normal Gutenberg blocks, without the PHP. [Follow these steps to do it](https://github.com/front/cloud-blocks/blob/master/docs/create-block.md)! 50 51 **How do I disable CSS for a single block?** 52 53 This is useful for letting your theme control your block styles. There’s a hook for this, [documented here](https://github.com/front/cloud-blocks/blob/master/docs/hooks.md). 54 55 **Why is the plugin called Cloud Blocks?** 56 57 We wanted to name it Gutenberg Cloud, but since it’s not possible to name a plugin starting with the name of another plugin (i.e. Gutenberg), we ended up calling it Cloud Blocks. Makes sense though, doesn’t it? 58 59 **Are the blocks really served from "the cloud"?** 60 61 Indeed, they are! The source code for each block is on NPM, but the JS/CSS is served by a CDN. No local downloads! 62 63 **Can I add private custom blocks?** 64 65 Sure! Just add your custom blocks into **wp-content/cloud-blocks/** folder. 32 66 33 67 == Changelog == 34 68 69 = 1.0.2 = 70 * Change: Some translation fixes 71 * Change: Better documentation and screenshot 35 72 36 73 = 1.0.1 = -
cloud-blocks/trunk/README.md
r1958585 r1961288 1 1 # Cloud Blocks 2 2 3 Your online library of Gutenberg blocks! Browse and discover new blocks, and install with a click. 3 ## Description 4 **Gutenberg Cloud: Your online library of blocks!** Cloud Blocks is the only plugin you need to browse and install new blocks: 4 5 5 ### Description 6 - Discover and install custom blocks with a click 7 - Install only the blocks you need – no huge plugin collections needed 8 - Reuse blocks between WordPress and Drupal 9 - Serve the blocks from a CDN 6 10 7 No block collection plugins needed: 8 This is the only plugin you need to browse and install new blocks. 11 ### Why use Gutenberg Cloud? 12 Installing an actual plugin for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a web browser. With the block manager, you have a growing library at your fingertips, without the bloat. 9 13 10 Reuse between platforms 11 Gutenberg blocks can be used in both Wordpress and Drupal 14 ### Get started 15 Install the plugin, and look for the cloud icon in the main menu. Browse around and activate a few blocks. Voila – these are now available to you in the Gutenberg editor! 12 16 13 Code once, use everywhere: As Gutenberg blocks are CMS agnostic, we want to provide an ecosystem all systems can connect to. 17 ### How it works under the hood 18 Gutenberg Cloud is a service that fetches Open Source Gutenberg blocks hosted on NPM. The assets from these are served from CloudFlare using unpkg.com. The Cloud Blocks plugin provides an interface in WordPress for Gutenberg Cloud. 14 19 15 Why Gutenberg Cloud? Installing an actual plugin/module for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a browser. With the block manager, you have a growing library at your fingertips, without the bloat.20 Code once, use everywhere: Since the blocks are JS/CSS only, they are CMS agnostic. This means you can develop a block for a Drupal site, and reuse it later on a WordPress blog. 16 21 17 ## #Installation18 Install it just like any other plugin. It just works!22 ## Installation 23 Install it as any other plugin, but note that you need Gutenberg activated for it to work. 19 24 20 ### Available hooks 25 To install individual blocks, look for the cloud icon in the left side menu. Click it, and browse away! 26 27 ## Frequently Asked Questions 28 29 ### How do I migrate a block collection plugin to Gutenberg Cloud? 30 Glad you asked! This simply means removing some PHP, adding some meta data and publishing on NPM. [Follow these simple steps](https://github.com/front/cloud-blocks/blob/master/docs/migrate-block.md). 31 32 ### How do I create a custom block for Gutenberg Cloud? 33 Gutenberg Cloud blocks are really just normal Gutenberg blocks, without the PHP. [Follow these steps to do it](https://github.com/front/cloud-blocks/blob/master/docs/create-block.md)! 34 35 ### How do I disable CSS for a single block? 36 This is useful for letting your theme control your block styles. There’s a hook for this, [documented here](https://github.com/front/cloud-blocks/blob/master/docs/hooks.md). 37 38 ### Why is the plugin called Cloud Blocks? 39 We wanted to name it Gutenberg Cloud, but since it’s not possible to name a plugin starting with the name of another plugin (i.e. Gutenberg), we ended up calling it Cloud Blocks. Makes sense though, doesn’t it? 40 41 ### Are the blocks really served from "the cloud"? 42 Indeed, they are! The source code for each block is on NPM, but the JS/CSS is served by a CDN. No local downloads! 43 44 ### Can I add private custom blocks? 45 Sure! Just add your custom blocks into **wp-content/cloud-blocks/** folder. 46 47 ## Available hooks 21 48 22 49 `gutenberg_cloud_disable_style` … … 43 70 ``` 44 71 45 ### Frequently Asked Questions46 **How do I add my own custom blocks to Gutenberg Cloud?**47 Gutenberg Cloud blocks are really just normal Gutenberg blocks. They have a screenshot and some other meta, but follows the official standards. See https://gutenbergcloud.org/ for more information.48 72 49 ## #Changelog73 ## Changelog 50 74 75 #### 1.0.2 76 * **Change**: Some translation fixes 77 * **Change**: Better documentation and screenshot 78 * **Added**: Italian translation. (Thanks to [cipo28](https://github.com/front/cloud-blocks/pull/1)) 51 79 52 #### #1.0.153 * Fix: is_plugin_active() undefined fix54 * Fix: Change strings functions to static80 #### 1.0.1 81 * **Fix**: is_plugin_active() undefined fix 82 * **Fix**: Change strings functions to static 55 83 56 #### #1.0.084 #### 1.0.0 57 85 * Initial plugin -
cloud-blocks/trunk/assets/js/script.js
r1958571 r1961288 72 72 v-if="currentBrowsState != 'installed' && !alreadyInstaleld" 73 73 @click.prevent="installBlock"> 74 Install74 {{fgcData.strings.install}} 75 75 </button> 76 76 <button class="button theme-install install-block-btn" … … 117 117 this.incrementInstalls(this.block.packageName) 118 118 window.store.dispatch('getInstalledBlocks') 119 window.store.commit('setNotification', { text: `${fgcData.strings. block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' })119 window.store.commit('setNotification', { text: `${fgcData.strings.the_block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' }) 120 120 console.log('Block installed ', res.data) 121 121 }) -
cloud-blocks/trunk/assets/js/script.min.js
r1958571 r1961288 1 "use strict";Vue.component("admin-notice",{data:function a(){return{activeTimeout:-1}},template:"\n <div\n :class=\"['fgc-notification', notification.class]\"\n v-cloak>\n <p v-html=\"notification.text\"></p>\n </div>\n ",watch:{isActive:function a(){this.showingTimeout()}},mounted:function a(){this.showingTimeout()},methods:{showingTimeout:function b(){var a=this;window.clearTimeout(this.activeTimeout),this.activeTimeout=window.setTimeout(function(){window.store.state.notification.class="",a.isShowing=!1},4e3)}},computed:{isActive:function a(){return window.store.state.notification.text},notification:function a(){return window.store.state.notification}}}),Vue.component("block-card",{props:["block"],data:function a(){return{installing:!1,alreadyInstaleld:!1,updateAvailable:!1,currentVersion:null}},template:"\n <div class=\"theme\">\n <div class=\"theme-screenshot\">\n <img :src=\"block.imageUrl\" :alt=\"block.name\">\n <div class=\"spinner installing-block\" v-if=\"installing\"></div>\n </div>\n\n <div v-if=\"alreadyInstaleld\" class=\"notice inline notice-success notice-alt\"><p>{{fgcData.strings.installed}}</p></div>\n\n <div v-if=\"updateAvailable\" class=\"update-message notice inline notice-warning notice-alt\">\n <p>{{fgcData.strings.update_available}} <button class=\"button-link\" type=\"button\" @click=\"updateBlock\">{{fgcData.strings.update_now}}</button></p>\n </div>\n\n <span class=\"more-details\" @click=\"openMoreDetails\">{{fgcData.strings.show_more_details}}</span>\n\n <div class=\"theme-id-container\">\n <h3 class=\"theme-name\">{{ block.name }}</h3>\n <span class=\"block-version\">{{fgcData.strings.version}}: {{ currentVersion }}</span>\n\n <div class=\"theme-actions\">\n <button class=\"button button-primary theme-install install-block-btn\"\n v-if=\"currentBrowsState != 'installed' && !alreadyInstaleld\"\n @click.prevent=\"installBlock\">\n Install\n </button>\n <button class=\"button theme-install install-block-btn\"\n v-else\n @click.prevent=\"deleteBlock\">\n {{fgcData.strings.delete}}\n </button>\n <a class=\"button preview install-theme-preview\" :href=\"block.infoUrl\" target=\"_blank\">{{fgcData.strings.more_details}}</a>\n </div>\n </div>\n\n </div>\n ",mounted:function b(){var a=this;this.currentVersion=this.block.version,!window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName}).length||(this.alreadyInstaleld="installed"!=this.currentBrowsState,"installed"==this.currentBrowsState&&(this.updateAvailable=!!window.store.state.installedBlocks.filter(function(c){if(c.package_name==a.block.packageName)return c.block_version<a.block.version}).length,this.currentVersion=window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName})[0].block_version))},methods:{installBlock:function c(){var a=this;this.installing=!0;var b=this.block;console.log(b),jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_install_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!0,a.incrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_installed),class:"show success"}),console.log("Block installed ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues installing block: ",b)})},deleteBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_delete_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!1,a.decrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_uninstalled),class:"show success"}),console.log("Block uninstalled ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues uninstalling block: ",b)})},updateBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_update_block",data:b}}).done(function(b){a.installing=!1,a.updateAvailable=!1,a.currentVersion=a.block.version,window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strigns.block_updated),class:"show success"}),console.log("Block Updated ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues updating block: ",b)})},incrementInstalls:function b(a){jQuery.ajax({type:"PUT",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter increased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},decrementInstalls:function b(a){jQuery.ajax({type:"DELETE",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter decreased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},openMoreDetails:function a(){this.block.infoUrl&&window.open(this.block.infoUrl,"_blank")}},computed:{currentBrowsState:function a(){return window.store.state.browsState}}}),Vue.component("explorer-filter",{componenets:["filter-drawer"],data:function a(){return{drawerFilterOpen:!1,searchQuery:null,filterLinks:[{name:fgcData.strings.installed,slug:"installed"},{name:fgcData.strings.popular,slug:"popular"},{name:fgcData.strings.latest,slug:"latest"}]}},template:"\n <div class=\"wp-filter g-blocks-filter hide-if-no-js\">\n <div class=\"filter-count\">\n <span class=\"count theme-count\">{{ installedBlocksCount }}</span>\n </div>\n\n <ul class=\"filter-links\">\n <li><a v-for=\"filter in filterLinks\" :key=\"filter.slug\" @click=\"filterLink(filter.slug)\" :class=\"currentFilter(filter.slug)\">{{ filter.name }}</a></li>\n </ul>\n\n <button type=\"button\" v-if=\"false\" id=\"searchFilter\" class=\"button drawer-toggle\" :aria-expanded=\"drawerFilterOpen\" @click=\"drawerFilterOpen = !drawerFilterOpen\">{{fgcData.strings.filter}}</button>\n\n <form class=\"search-form\" @submit.prevent=\"searchForBlock\"><label class=\"screen-reader-text\" for=\"wp-filter-search-input\">{{fgcData.strings.search_for_blocks}}</label><input :placeholder=\"fgcData.strings.search_blocks\" v-model=\"searchQuery\" type=\"search\" id=\"wp-filter-search-input\" class=\"wp-filter-search\"></form>\n\n <filter-drawer :style=\"{display: drawerFilterOpen ? 'block' : 'none'}\"></filter-drawer>\n </div>\n ",mounted:function a(){},methods:{filterLink:function c(a){var b=window.location.search.replace(/\&brows[=a-z]*/,"");history.pushState({state:a},null,"".concat(b,"&brows=").concat(a)),window.store.commit("setBrowsState",a)},currentFilter:function b(a){return window.store.state.browsState==a?"current":""},searchForBlock:function c(){var a=window.location.search.replace(/\&q[=a-z\-]*/,""),b=this.searchQuery.replace(/\s+/g,"-").toLowerCase();history.pushState({state:b},null,"".concat(a,"&q=").concat(b)),window.store.commit("setSearchQuery",b)}},computed:{installedBlocksCount:function a(){return window.store.state.installedBlocks.length}}}),Vue.component("filter-drawer",{template:"\n <div class=\"filter-drawer\">\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n <fieldset class=\"filter-group\">\n <legend>Subject</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-blog\" value=\"blog\">\n <label for=\"filter-id-blog\">Blog</label>\n <input type=\"checkbox\" id=\"filter-id-e-commerce\" value=\"e-commerce\">\n <label for=\"filter-id-e-commerce\">E-Commerce</label>\n <input type=\"checkbox\" id=\"filter-id-education\" value=\"education\">\n <label for=\"filter-id-education\">Education</label>\n <input type=\"checkbox\" id=\"filter-id-entertainment\" value=\"entertainment\">\n <label for=\"filter-id-entertainment\">News</label>\n </div>\n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Features</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-accessibility-ready\" value=\"accessibility-ready\">\n <label for=\"filter-id-accessibility-ready\">Custom Colors</label>\n <input type=\"checkbox\" id=\"filter-id-custom-background\" value=\"custom-background\">\n <label for=\"filter-id-custom-background\">Editor style</label>\n <input type=\"checkbox\" id=\"filter-id-custom-colors\" value=\"custom-colors\">\n <label for=\"filter-id-custom-colors\">Full Width Template</label>\n </div> \n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Layout</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-grid-layout\" value=\"grid-layout\">\n <label for=\"filter-id-grid-layout\">Grid-layout</label>\n <input type=\"checkbox\" id=\"filter-id-one-column\" value=\"one-column\">\n <label for=\"filter-id-one-column\">One Column</label>\n <input type=\"checkbox\" id=\"filter-id-two-columns\" value=\"two-columns\">\n <label for=\"filter-id-two-columns\">Two Column</label>\n <input type=\"checkbox\" id=\"filter-id-three-columns\" value=\"three-columns\">\n <label for=\"filter-id-three-columns\">Responsive</label>\n </div>\n </fieldset>\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n\n </div>\n "});var store=new Vuex.Store({state:{notification:{},browsState:null,installedBlocks:fgcData.installedBlocks,searchQuery:null},mutations:{setNotification:function c(a,b){a.notification=b},setBrowsState:function c(a,b){a.browsState=b},setInstalledBlocks:function c(a,b){a.installedBlocks=b},setSearchQuery:function c(a,b){a.searchQuery=b}},actions:{getInstalledBlocks:function b(a){jQuery.ajax({type:"GET",url:fgcData.ajaxUrl,data:{action:"fgc_get_all_blocks"}}).done(function(b){a.commit("setInstalledBlocks",b.data)}).fail(function(a){console.log("There is some issues installing block: ",a)})}}}),app=new Vue({el:"#blockExplorer",data:function a(){return{blocks:[]}},created:function a(){window.store.dispatch("getInstalledBlocks")},mounted:function c(){var a=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed",b=this.getUrlParams("q")?this.getUrlParams("q"):"";this.getBlocks({state:a,q:b}),window.store.commit("setBrowsState",a),window.addEventListener("popstate",this.fetchBlocks)},watch:{currentBrowsFilter:function c(a){var b=this.getUrlParams("q")?this.getUrlParams("q"):"";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:a,q:b})},currentSearchQuery:function c(a){var b=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:b,q:a})},installedBlocks:function d(a,b){var c=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";a.length!=b.length&&"installed"==c&&(this.blocks=this.blocks.filter(function(b){return a.some(function(a){return a.package_name==b.packageName})}))}},methods:{fetchBlocks:function c(a){var b=null;a.state&&(b=a.state.state),this.getBlocks(b)},getBlocks:function e(a){var b=this,c=[],d="";null!==a.q&&(d="q=".concat(a.q)),jQuery.get("https://api.gutenbergcloud.org/blocks?".concat(d),function(d){d.rows.map(function(d){var e={};e.jsUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.js),e.cssUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.css),e.editorCss=d.config.editor?"https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.editor):null,e.infoUrl="https://www.npmjs.com/package/".concat(d.name),e.imageUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.screenshot),e.name=d.config.name,e.version=d.version,e.packageName=d.name,null==a.state||"installed"==a.state?b.installedBlocks.length&&b.installedBlocks.filter(function(a){return a.package_name==e.packageName}).length&&c.push(e):c.push(e)})}),this.blocks=c},getUrlParams:function e(a,b){b||(b=window.location.href),a=a.replace(/[\[\]]/g,"\\$&");var c=new RegExp("[?&]"+a+"(=([^&#]*)|&|#|$)"),d=c.exec(b);return d?d[2]?decodeURIComponent(d[2].replace(/\+/g," ")):"":null}},computed:{currentBrowsFilter:function a(){return window.store.state.browsState},currentSearchQuery:function a(){return window.store.state.searchQuery},installedBlocks:function a(){return window.store.state.installedBlocks}}});1 "use strict";Vue.component("admin-notice",{data:function a(){return{activeTimeout:-1}},template:"\n <div\n :class=\"['fgc-notification', notification.class]\"\n v-cloak>\n <p v-html=\"notification.text\"></p>\n </div>\n ",watch:{isActive:function a(){this.showingTimeout()}},mounted:function a(){this.showingTimeout()},methods:{showingTimeout:function b(){var a=this;window.clearTimeout(this.activeTimeout),this.activeTimeout=window.setTimeout(function(){window.store.state.notification.class="",a.isShowing=!1},4e3)}},computed:{isActive:function a(){return window.store.state.notification.text},notification:function a(){return window.store.state.notification}}}),Vue.component("block-card",{props:["block"],data:function a(){return{installing:!1,alreadyInstaleld:!1,updateAvailable:!1,currentVersion:null}},template:"\n <div class=\"theme\">\n <div class=\"theme-screenshot\">\n <img :src=\"block.imageUrl\" :alt=\"block.name\">\n <div class=\"spinner installing-block\" v-if=\"installing\"></div>\n </div>\n\n <div v-if=\"alreadyInstaleld\" class=\"notice inline notice-success notice-alt\"><p>{{fgcData.strings.installed}}</p></div>\n\n <div v-if=\"updateAvailable\" class=\"update-message notice inline notice-warning notice-alt\">\n <p>{{fgcData.strings.update_available}} <button class=\"button-link\" type=\"button\" @click=\"updateBlock\">{{fgcData.strings.update_now}}</button></p>\n </div>\n\n <span class=\"more-details\" @click=\"openMoreDetails\">{{fgcData.strings.show_more_details}}</span>\n\n <div class=\"theme-id-container\">\n <h3 class=\"theme-name\">{{ block.name }}</h3>\n <span class=\"block-version\">{{fgcData.strings.version}}: {{ currentVersion }}</span>\n\n <div class=\"theme-actions\">\n <button class=\"button button-primary theme-install install-block-btn\"\n v-if=\"currentBrowsState != 'installed' && !alreadyInstaleld\"\n @click.prevent=\"installBlock\">\n {{fgcData.strings.install}}\n </button>\n <button class=\"button theme-install install-block-btn\"\n v-else\n @click.prevent=\"deleteBlock\">\n {{fgcData.strings.delete}}\n </button>\n <a class=\"button preview install-theme-preview\" :href=\"block.infoUrl\" target=\"_blank\">{{fgcData.strings.more_details}}</a>\n </div>\n </div>\n\n </div>\n ",mounted:function b(){var a=this;this.currentVersion=this.block.version,!window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName}).length||(this.alreadyInstaleld="installed"!=this.currentBrowsState,"installed"==this.currentBrowsState&&(this.updateAvailable=!!window.store.state.installedBlocks.filter(function(c){if(c.package_name==a.block.packageName)return c.block_version<a.block.version}).length,this.currentVersion=window.store.state.installedBlocks.filter(function(c){return c.package_name==a.block.packageName})[0].block_version))},methods:{installBlock:function c(){var a=this;this.installing=!0;var b=this.block;console.log(b),jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_install_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!0,a.incrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.the_block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_installed),class:"show success"}),console.log("Block installed ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues installing block: ",b)})},deleteBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_delete_block",data:b}}).done(function(b){a.installing=!1,a.alreadyInstaleld=!1,a.decrementInstalls(a.block.packageName),window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strings.block_uninstalled),class:"show success"}),console.log("Block uninstalled ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues uninstalling block: ",b)})},updateBlock:function c(){var a=this;this.installing=!0;var b=this.block;jQuery.ajax({type:"POST",url:fgcData.ajaxUrl,data:{action:"fgc_update_block",data:b}}).done(function(b){a.installing=!1,a.updateAvailable=!1,a.currentVersion=a.block.version,window.store.dispatch("getInstalledBlocks"),window.store.commit("setNotification",{text:"".concat(fgcData.strings.block," <b>").concat(a.block.name,"</b> ").concat(fgcData.strigns.block_updated),class:"show success"}),console.log("Block Updated ",b.data)}).fail(function(b){a.installing=!1,console.log("There is some issues updating block: ",b)})},incrementInstalls:function b(a){jQuery.ajax({type:"PUT",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter increased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},decrementInstalls:function b(a){jQuery.ajax({type:"DELETE",url:"https://api.gutenbergcloud.org/blocks/".concat(a)}).done(function(){console.log("Installation counter decreased ")}).fail(function(a){console.log("Some errors occured white increasing number of installs: ",a)})},openMoreDetails:function a(){this.block.infoUrl&&window.open(this.block.infoUrl,"_blank")}},computed:{currentBrowsState:function a(){return window.store.state.browsState}}}),Vue.component("explorer-filter",{componenets:["filter-drawer"],data:function a(){return{drawerFilterOpen:!1,searchQuery:null,filterLinks:[{name:fgcData.strings.installed,slug:"installed"},{name:fgcData.strings.popular,slug:"popular"},{name:fgcData.strings.latest,slug:"latest"}]}},template:"\n <div class=\"wp-filter g-blocks-filter hide-if-no-js\">\n <div class=\"filter-count\">\n <span class=\"count theme-count\">{{ installedBlocksCount }}</span>\n </div>\n\n <ul class=\"filter-links\">\n <li><a v-for=\"filter in filterLinks\" :key=\"filter.slug\" @click=\"filterLink(filter.slug)\" :class=\"currentFilter(filter.slug)\">{{ filter.name }}</a></li>\n </ul>\n\n <button type=\"button\" v-if=\"false\" id=\"searchFilter\" class=\"button drawer-toggle\" :aria-expanded=\"drawerFilterOpen\" @click=\"drawerFilterOpen = !drawerFilterOpen\">{{fgcData.strings.filter}}</button>\n\n <form class=\"search-form\" @submit.prevent=\"searchForBlock\"><label class=\"screen-reader-text\" for=\"wp-filter-search-input\">{{fgcData.strings.search_for_blocks}}</label><input :placeholder=\"fgcData.strings.search_blocks\" v-model=\"searchQuery\" type=\"search\" id=\"wp-filter-search-input\" class=\"wp-filter-search\"></form>\n\n <filter-drawer :style=\"{display: drawerFilterOpen ? 'block' : 'none'}\"></filter-drawer>\n </div>\n ",mounted:function a(){},methods:{filterLink:function c(a){var b=window.location.search.replace(/\&brows[=a-z]*/,"");history.pushState({state:a},null,"".concat(b,"&brows=").concat(a)),window.store.commit("setBrowsState",a)},currentFilter:function b(a){return window.store.state.browsState==a?"current":""},searchForBlock:function c(){var a=window.location.search.replace(/\&q[=a-z\-]*/,""),b=this.searchQuery.replace(/\s+/g,"-").toLowerCase();history.pushState({state:b},null,"".concat(a,"&q=").concat(b)),window.store.commit("setSearchQuery",b)}},computed:{installedBlocksCount:function a(){return window.store.state.installedBlocks.length}}}),Vue.component("filter-drawer",{template:"\n <div class=\"filter-drawer\">\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n <fieldset class=\"filter-group\">\n <legend>Subject</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-blog\" value=\"blog\">\n <label for=\"filter-id-blog\">Blog</label>\n <input type=\"checkbox\" id=\"filter-id-e-commerce\" value=\"e-commerce\">\n <label for=\"filter-id-e-commerce\">E-Commerce</label>\n <input type=\"checkbox\" id=\"filter-id-education\" value=\"education\">\n <label for=\"filter-id-education\">Education</label>\n <input type=\"checkbox\" id=\"filter-id-entertainment\" value=\"entertainment\">\n <label for=\"filter-id-entertainment\">News</label>\n </div>\n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Features</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-accessibility-ready\" value=\"accessibility-ready\">\n <label for=\"filter-id-accessibility-ready\">Custom Colors</label>\n <input type=\"checkbox\" id=\"filter-id-custom-background\" value=\"custom-background\">\n <label for=\"filter-id-custom-background\">Editor style</label>\n <input type=\"checkbox\" id=\"filter-id-custom-colors\" value=\"custom-colors\">\n <label for=\"filter-id-custom-colors\">Full Width Template</label>\n </div> \n </fieldset>\n <fieldset class=\"filter-group\">\n <legend>Layout</legend>\n <div class=\"filter-group-feature\">\n <input type=\"checkbox\" id=\"filter-id-grid-layout\" value=\"grid-layout\">\n <label for=\"filter-id-grid-layout\">Grid-layout</label>\n <input type=\"checkbox\" id=\"filter-id-one-column\" value=\"one-column\">\n <label for=\"filter-id-one-column\">One Column</label>\n <input type=\"checkbox\" id=\"filter-id-two-columns\" value=\"two-columns\">\n <label for=\"filter-id-two-columns\">Two Column</label>\n <input type=\"checkbox\" id=\"filter-id-three-columns\" value=\"three-columns\">\n <label for=\"filter-id-three-columns\">Responsive</label>\n </div>\n </fieldset>\n <div class=\"buttons\">\n <button type=\"button\" class=\"apply-filters button\">Apply Filters<span></span></button>\n <button type=\"button\" class=\"clear-filters button\" aria-label=\"Clear all filters\">Clear</button>\n </div>\n\n </div>\n "});var store=new Vuex.Store({state:{notification:{},browsState:null,installedBlocks:fgcData.installedBlocks,searchQuery:null},mutations:{setNotification:function c(a,b){a.notification=b},setBrowsState:function c(a,b){a.browsState=b},setInstalledBlocks:function c(a,b){a.installedBlocks=b},setSearchQuery:function c(a,b){a.searchQuery=b}},actions:{getInstalledBlocks:function b(a){jQuery.ajax({type:"GET",url:fgcData.ajaxUrl,data:{action:"fgc_get_all_blocks"}}).done(function(b){a.commit("setInstalledBlocks",b.data)}).fail(function(a){console.log("There is some issues installing block: ",a)})}}}),app=new Vue({el:"#blockExplorer",data:function a(){return{blocks:[]}},created:function a(){window.store.dispatch("getInstalledBlocks")},mounted:function c(){var a=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed",b=this.getUrlParams("q")?this.getUrlParams("q"):"";this.getBlocks({state:a,q:b}),window.store.commit("setBrowsState",a),window.addEventListener("popstate",this.fetchBlocks)},watch:{currentBrowsFilter:function c(a){var b=this.getUrlParams("q")?this.getUrlParams("q"):"";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:a,q:b})},currentSearchQuery:function c(a){var b=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";window.store.dispatch("getInstalledBlocks");this.getBlocks({state:b,q:a})},installedBlocks:function d(a,b){var c=this.getUrlParams("brows")?this.getUrlParams("brows"):"installed";a.length!=b.length&&"installed"==c&&(this.blocks=this.blocks.filter(function(b){return a.some(function(a){return a.package_name==b.packageName})}))}},methods:{fetchBlocks:function c(a){var b=null;a.state&&(b=a.state.state),this.getBlocks(b)},getBlocks:function e(a){var b=this,c=[],d="";null!==a.q&&(d="q=".concat(a.q)),jQuery.get("https://api.gutenbergcloud.org/blocks?".concat(d),function(d){d.rows.map(function(d){var e={};e.jsUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.js),e.cssUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.css),e.editorCss=d.config.editor?"https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.editor):null,e.infoUrl="https://www.npmjs.com/package/".concat(d.name),e.imageUrl="https://unpkg.com/".concat(d.name,"@").concat(d.version,"/").concat(d.config.screenshot),e.name=d.config.name,e.version=d.version,e.packageName=d.name,null==a.state||"installed"==a.state?b.installedBlocks.length&&b.installedBlocks.filter(function(a){return a.package_name==e.packageName}).length&&c.push(e):c.push(e)})}),this.blocks=c},getUrlParams:function e(a,b){b||(b=window.location.href),a=a.replace(/[\[\]]/g,"\\$&");var c=new RegExp("[?&]"+a+"(=([^&#]*)|&|#|$)"),d=c.exec(b);return d?d[2]?decodeURIComponent(d[2].replace(/\+/g," ")):"":null}},computed:{currentBrowsFilter:function a(){return window.store.state.browsState},currentSearchQuery:function a(){return window.store.state.searchQuery},installedBlocks:function a(){return window.store.state.installedBlocks}}}); -
cloud-blocks/trunk/assets/source/js/block-component.js
r1958571 r1961288 32 32 v-if="currentBrowsState != 'installed' && !alreadyInstaleld" 33 33 @click.prevent="installBlock"> 34 Install34 {{fgcData.strings.install}} 35 35 </button> 36 36 <button class="button theme-install install-block-btn" … … 77 77 this.incrementInstalls(this.block.packageName) 78 78 window.store.dispatch('getInstalledBlocks') 79 window.store.commit('setNotification', { text: `${fgcData.strings. block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' })79 window.store.commit('setNotification', { text: `${fgcData.strings.the_block} <b>${this.block.name}</b> ${fgcData.strings.block_installed}`, class: 'show success' }) 80 80 console.log('Block installed ', res.data) 81 81 }) -
cloud-blocks/trunk/cloud-blocks.php
r1958585 r1961288 2 2 /* 3 3 Plugin Name: Cloud Blocks 4 Version: 1.0. 14 Version: 1.0.2 5 5 Description: Your library of Gutenberg blocks in the cloud 6 Author: Frontkom - Fouad Yousefi6 Author: Frontkom 7 7 Author URI: https://frontkom.no 8 8 License: GPL2 -
cloud-blocks/trunk/core/Blocks/Blocks.php
r1958571 r1961288 60 60 ); 61 61 Options::add( $new_block, true ); 62 update_option( 'gutenberg_cloud_install_block', $new_block); 62 63 63 $response = array( 64 64 'code' => 200, … … 218 218 * to enable/disable styling per individual block or for all of them. 219 219 */ 220 $disable_style = apply_filters( ' gutenberg_cloud_disable_style', false, $block );220 $disable_style = apply_filters( 'cloud_blocks_disable_style', false, $block ); 221 221 if ( !$disable_style ) { 222 222 wp_register_style( str_replace( ' ', '-', $block->block_name ) , $block->css_url, array(), $block->block_version); -
cloud-blocks/trunk/core/Settings/Tools.php
r1958571 r1961288 220 220 <div class="inside"> 221 221 <form method="post"> 222 <p><?php _e( ' Here you can export all installed Gutenberg custom blocks from Gutenberg Cloud as a json file and import it elsewhere.', 'cloud-blocks' ); ?></p>222 <p><?php _e( 'Export all your installed blocks from Gutenberg Cloud as JSON. Note: The content will not be exported.', 'cloud-blocks' ); ?></p> 223 223 <p class="fgc-submit"> 224 224 <button type="submit" name="action" class="button button-primary" value="download-json"><?php _e( 'Export file', 'cloud-blocks' ); ?></button> -
cloud-blocks/trunk/core/Settings/Translations.php
r1958585 r1961288 17 17 return array( 18 18 'block' => __( 'Block', 'cloud-blocks' ), 19 'the_block' => __( 'The block', 'cloud-blocks' ), 19 20 'delete' => __( 'Delete', 'cloud-blocks' ), 21 'install' => __( 'Install', 'cloud-blocks' ), 20 22 'installed' => __( 'Installed', 'cloud-blocks' ), 21 23 'popular' => __( 'Popular', 'cloud-blocks' ), -
cloud-blocks/trunk/languages/cloud-blocks-nb_NO.po
r1958571 r1961288 2 2 msgstr "" 3 3 "Project-Id-Version: Cloud Blocks\n" 4 "POT-Creation-Date: 2018-10- 18 13:12+0200\n"5 "PO-Revision-Date: 2018-10- 18 13:13+0200\n"4 "POT-Creation-Date: 2018-10-22 11:20+0200\n" 5 "PO-Revision-Date: 2018-10-22 11:20+0200\n" 6 6 "Last-Translator: \n" 7 7 "Language-Team: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.js\n" 23 23 24 #: core/CloudBlocks.php: 3924 #: core/CloudBlocks.php:40 25 25 msgid "Gutenberg is not enabled. Please try again after enabling." 26 26 msgstr "Gutenberg er ikke aktivert. Skru den på, og prøv igjen!" … … 66 66 #: core/Settings/Tools.php:222 67 67 msgid "" 68 " Here you can export all installed Gutenberg custom blocks from Gutenberg"69 " Cloud as a json file and import it elsewhere."68 "Export all your installed blocks from Gutenberg Cloud as JSON. Note: The " 69 "content will not be exported." 70 70 msgstr "" 71 " Her kan du eksportere alle installerte Gutenberg egendefinerte blokker fra"72 " Gutenberg Cloud som en JSON-fil og importere den et annet sted."71 "Klikk for å eksportere aktive blokker fra Gutenberg Cloud som JSON. OBS: " 72 "Innholdet blir ikke eksportert." 73 73 74 74 #: core/Settings/Tools.php:224 … … 97 97 98 98 #: core/Settings/Translations.php:19 99 msgid "The block" 100 msgstr "Blokk" 101 102 #: core/Settings/Translations.php:20 99 103 msgid "Delete" 100 104 msgstr "Slett" 101 105 102 #: core/Settings/Translations.php:20 106 #: core/Settings/Translations.php:21 107 msgid "Install" 108 msgstr "Aktiver" 109 110 #: core/Settings/Translations.php:22 103 111 msgid "Installed" 104 112 msgstr "Installert" 105 113 106 #: core/Settings/Translations.php:2 1114 #: core/Settings/Translations.php:23 107 115 msgid "Popular" 108 116 msgstr "Populær" 109 117 110 #: core/Settings/Translations.php:2 2118 #: core/Settings/Translations.php:24 111 119 msgid "Latest" 112 120 msgstr "Nyeste" 113 121 114 #: core/Settings/Translations.php:2 3122 #: core/Settings/Translations.php:25 115 123 msgid "Most used" 116 124 msgstr "Mest brukt" 117 125 118 #: core/Settings/Translations.php:2 4126 #: core/Settings/Translations.php:26 119 127 msgid "Search for blocks" 120 128 msgstr "Søk etter blokker" 121 129 122 #: core/Settings/Translations.php:2 5130 #: core/Settings/Translations.php:27 123 131 msgid "Search blocks..." 124 132 msgstr "Søk blokker..." 125 133 126 #: core/Settings/Translations.php:2 6134 #: core/Settings/Translations.php:28 127 135 msgid "Filter" 128 136 msgstr "Filter" 129 137 130 #: core/Settings/Translations.php:2 7138 #: core/Settings/Translations.php:29 131 139 msgid "Update now" 132 140 msgstr "Uppdater nå" 133 141 134 #: core/Settings/Translations.php: 28142 #: core/Settings/Translations.php:30 135 143 msgid "Show more details" 136 144 msgstr "Vis flere detaljer" 137 145 138 #: core/Settings/Translations.php: 29146 #: core/Settings/Translations.php:31 139 147 msgid "More details" 140 148 msgstr "Flere detaljer" 141 149 142 #: core/Settings/Translations.php:3 0150 #: core/Settings/Translations.php:32 143 151 msgid "have been installed successfully." 144 152 msgstr "er installert." 145 153 146 #: core/Settings/Translations.php:3 1154 #: core/Settings/Translations.php:33 147 155 msgid "have been uninstalled successfully." 148 156 msgstr "er avinstallert.." 149 157 150 #: core/Settings/Translations.php:3 2158 #: core/Settings/Translations.php:34 151 159 msgid "have been updated successfully." 152 160 msgstr "er oppdatert." 153 161 154 #: core/Settings/Translations.php:3 3162 #: core/Settings/Translations.php:35 155 163 msgid "New version available." 156 164 msgstr "Ny versjon tilgjengelig." 157 165 158 #: core/Settings/Translations.php:3 4166 #: core/Settings/Translations.php:36 159 167 msgid "Version" 160 168 msgstr "Versjon" … … 173 181 174 182 #. Author of the plugin/theme 175 msgid "Frontkom - Fouad Yousefi"176 msgstr " Frontkom - Foad Yousefi"183 msgid "Frontkom" 184 msgstr "" 177 185 178 186 #. Author URI of the plugin/theme … … 180 188 msgstr "https://frontkom.no" 181 189 190 #~ msgid "Frontkom - Fouad Yousefi" 191 #~ msgstr "Frontkom - Foad Yousefi" 192 182 193 #~ msgid "Gutenberg Cloud" 183 194 #~ msgstr "Gutenberg Cloud" -
cloud-blocks/trunk/languages/cloud-blocks-pt_PT.po
r1958571 r1961288 2 2 msgstr "" 3 3 "Project-Id-Version: Cloud Blocks\n" 4 "POT-Creation-Date: 2018-10- 18 13:25+0200\n"5 "PO-Revision-Date: 2018-10- 18 13:56+0200\n"4 "POT-Creation-Date: 2018-10-22 11:20+0200\n" 5 "PO-Revision-Date: 2018-10-22 11:20+0200\n" 6 6 "Last-Translator: \n" 7 7 "Language-Team: \n" … … 22 22 "X-Poedit-SearchPathExcluded-0: *.js\n" 23 23 24 #: core/CloudBlocks.php: 3924 #: core/CloudBlocks.php:40 25 25 msgid "Gutenberg is not enabled. Please try again after enabling." 26 26 msgstr "" … … 67 67 #: core/Settings/Tools.php:222 68 68 msgid "" 69 " Here you can export all installed Gutenberg custom blocks from Gutenberg"70 " Cloud as a json file and import it elsewhere."69 "Export all your installed blocks from Gutenberg Cloud as JSON. Note: The " 70 "content will not be exported." 71 71 msgstr "" 72 " Aqui pode exportar todos os blocos personalizados instalados na Gutenberg"73 " Cloud num ficheiro JSON e importá-lo em outro lugar."72 "Exportar da Gutenberg Could todos os blocos instalados para um ficheiro " 73 "JSON. Nota: o conteúdo não será exportado." 74 74 75 75 #: core/Settings/Tools.php:224 … … 98 98 99 99 #: core/Settings/Translations.php:19 100 msgid "The block" 101 msgstr "O bloco" 102 103 #: core/Settings/Translations.php:20 100 104 msgid "Delete" 101 105 msgstr "Excluir" 102 106 103 #: core/Settings/Translations.php:20 107 #: core/Settings/Translations.php:21 108 msgid "Install" 109 msgstr "Instalar" 110 111 #: core/Settings/Translations.php:22 104 112 msgid "Installed" 105 113 msgstr "Instalado" 106 114 107 #: core/Settings/Translations.php:2 1115 #: core/Settings/Translations.php:23 108 116 msgid "Popular" 109 117 msgstr "Popular" 110 118 111 #: core/Settings/Translations.php:2 2119 #: core/Settings/Translations.php:24 112 120 msgid "Latest" 113 121 msgstr "Mais recentes" 114 122 115 #: core/Settings/Translations.php:2 3123 #: core/Settings/Translations.php:25 116 124 msgid "Most used" 117 125 msgstr "Mais utilizados" 118 126 119 #: core/Settings/Translations.php:2 4127 #: core/Settings/Translations.php:26 120 128 msgid "Search for blocks" 121 129 msgstr "Procurar blocos" 122 130 123 #: core/Settings/Translations.php:2 5131 #: core/Settings/Translations.php:27 124 132 msgid "Search blocks..." 125 133 msgstr "Pesquisar blocos…" 126 134 127 #: core/Settings/Translations.php:2 6135 #: core/Settings/Translations.php:28 128 136 msgid "Filter" 129 137 msgstr "Filtro" 130 138 131 #: core/Settings/Translations.php:2 7139 #: core/Settings/Translations.php:29 132 140 msgid "Update now" 133 141 msgstr "Atualizar agora" 134 142 135 #: core/Settings/Translations.php: 28143 #: core/Settings/Translations.php:30 136 144 msgid "Show more details" 137 145 msgstr "Mostrar mais detalhes" 138 146 139 #: core/Settings/Translations.php: 29147 #: core/Settings/Translations.php:31 140 148 msgid "More details" 141 149 msgstr "Mais detalhes" 142 150 143 #: core/Settings/Translations.php:3 0151 #: core/Settings/Translations.php:32 144 152 msgid "have been installed successfully." 145 msgstr "foram instalados com sucesso." 146 147 #: core/Settings/Translations.php:31 148 msgid "have been uninstalled successfully." 149 msgstr "foram desinstalados com sucesso." 150 151 #: core/Settings/Translations.php:32 152 msgid "have been updated successfully." 153 msgstr "foram atualizados com sucesso." 153 msgstr "foi instalado com sucesso." 154 154 155 155 #: core/Settings/Translations.php:33 156 msgid "have been uninstalled successfully." 157 msgstr "foi desinstalado com sucesso." 158 159 #: core/Settings/Translations.php:34 160 msgid "have been updated successfully." 161 msgstr "foi atualizado com sucesso." 162 163 #: core/Settings/Translations.php:35 156 164 msgid "New version available." 157 165 msgstr "Nova versão disponível." 158 166 159 #: core/Settings/Translations.php:3 4167 #: core/Settings/Translations.php:36 160 168 msgid "Version" 161 169 msgstr "Versão" … … 174 182 175 183 #. Author of the plugin/theme 176 msgid "Frontkom - Fouad Yousefi"177 msgstr " Frontkom-Foad Yousefi"184 msgid "Frontkom" 185 msgstr "" 178 186 179 187 #. Author URI of the plugin/theme 180 188 msgid "https://frontkom.no" 181 189 msgstr "https://frontkom.no" 190 191 #~ msgid "Frontkom - Fouad Yousefi" 192 #~ msgstr "Frontkom-Foad Yousefi" -
cloud-blocks/trunk/readme.txt
r1958585 r1961288 2 2 Contributors: frontkom, foadyousefi 3 3 Author URI: https://frontkom.no 4 Tags: gutenberg, pagebuilder 4 Tags: gutenberg, pagebuilder, blocks, gutenberg blocks, page builder 5 5 Requires at least: 4.9.8 6 6 Tested up to: 4.9.8 7 7 Requires PHP: 5 8 Stable tag: 1.0. 19 License: G NU GPL10 License URI: https://www.gnu.org/licenses/ old-licenses/gpl-2.0.html8 Stable tag: 1.0.2 9 License: GPLv3 10 License URI: https://www.gnu.org/licenses/gpl-3.0.html 11 11 12 12 Your online library of Gutenberg blocks! Browse and discover new blocks, and install with a click. 13 13 14 14 == Description == 15 No block collection plugins needed: 16 This is the only plugin you need to browse and install new blocks. 15 **Gutenberg Cloud: Your online library of blocks!** Cloud Blocks is the only plugin you need to browse and install new blocks: 17 16 18 Reuse between platforms 19 Gutenberg blocks can be used in both Wordpress and Drupal 17 - Discover and install custom blocks with a click 18 - Install only the blocks you need – no huge plugin collections needed 19 - Reuse blocks between WordPress and Drupal 20 - Serve the blocks from a CDN 20 21 21 Code once, use everywhere: As Gutenberg blocks are CMS agnostic, we want to provide an ecosystem all systems can connect to. 22 ## Why use Gutenberg Cloud? 23 Installing an actual plugin for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a web browser. With the block manager, you have a growing library at your fingertips, without the bloat. It’s like an app store for blocks – except it’s free. 22 24 23 Why Gutenberg Cloud? Installing an actual plugin/module for each block or block collection easily leads to managing lots of code that you don’t really need. It’s like having one app for each website you visit, instead of just installing a browser. With the block manager, you have a growing library at your fingertips, without the bloat. 25 ## Get started 26 Install the plugin, and look for the cloud icon in the main menu. Browse around and activate a few blocks. Voila – these are now available to you in the Gutenberg editor! 27 28 ## How it works under the hood 29 Gutenberg Cloud is a service that fetches Open Source Gutenberg blocks hosted on NPM. The assets from these are served from CloudFlare using unpkg.com. The Cloud Blocks plugin provides an interface in WordPress for Gutenberg Cloud. 30 31 Code once, use everywhere: Since the blocks are JS/CSS only, they are CMS agnostic. This means you can develop a block for a Drupal site, and reuse it later on a WordPress blog. 32 24 33 25 34 == Installation == 26 35 Install it just like any other plugin. It just works! 27 36 37 == Screenshots == 38 39 1. Discover and install blocks 40 28 41 == Frequently Asked Questions == 29 How do I add my own custom blocks to Gutenberg Cloud?30 42 31 Gutenberg Cloud blocks are really just normal Gutenberg blocks. They have a screenshot and some other meta, but follows the official standards. See https://gutenbergcloud.org/ for more information. 43 **How do I migrate a block collection plugin to Gutenberg Cloud?** 44 45 This simply means removing some PHP, adding some meta data and publishing on NPM. [Follow these simple steps](https://github.com/front/cloud-blocks/blob/master/docs/migrate-block.md). 46 47 **How do I create a custom block for Gutenberg Cloud?** 48 49 Gutenberg Cloud blocks are really just normal Gutenberg blocks, without the PHP. [Follow these steps to do it](https://github.com/front/cloud-blocks/blob/master/docs/create-block.md)! 50 51 **How do I disable CSS for a single block?** 52 53 This is useful for letting your theme control your block styles. There’s a hook for this, [documented here](https://github.com/front/cloud-blocks/blob/master/docs/hooks.md). 54 55 **Why is the plugin called Cloud Blocks?** 56 57 We wanted to name it Gutenberg Cloud, but since it’s not possible to name a plugin starting with the name of another plugin (i.e. Gutenberg), we ended up calling it Cloud Blocks. Makes sense though, doesn’t it? 58 59 **Are the blocks really served from "the cloud"?** 60 61 Indeed, they are! The source code for each block is on NPM, but the JS/CSS is served by a CDN. No local downloads! 62 63 **Can I add private custom blocks?** 64 65 Sure! Just add your custom blocks into **wp-content/cloud-blocks/** folder. 32 66 33 67 == Changelog == 34 68 69 = 1.0.2 = 70 * Change: Some translation fixes 71 * Change: Better documentation and screenshot 35 72 36 73 = 1.0.1 =
Note: See TracChangeset
for help on using the changeset viewer.