├── README.markdown ├── blogode.js ├── config ├── blog.json ├── database.json └── plugins.json ├── controllers ├── admin.js ├── pages.js └── posts.js ├── filters └── admin.js ├── install.sh ├── lib ├── comments.js ├── config.js ├── database.js ├── helper.js ├── importer.js ├── pages.js ├── plugins.js ├── posts.js ├── tags.js └── users.js ├── plugins ├── twitter_search │ ├── plugin.js │ └── view.html └── user_tweets │ ├── plugin.js │ └── view.html ├── public ├── stylesheet.css ├── templates │ ├── default_theme │ │ ├── info.json │ │ ├── layout.html │ │ ├── posts │ │ │ ├── index.html │ │ │ └── show.html │ │ └── stylesheet.css │ ├── initial_theme │ │ ├── info.json │ │ ├── layout.html │ │ ├── pages │ │ │ └── show.html │ │ ├── posts │ │ │ ├── index.html │ │ │ ├── search.html │ │ │ └── show.html │ │ └── stylesheet.css │ ├── my_other_theme │ │ ├── info.json │ │ ├── layout.html │ │ ├── pages │ │ │ └── show.html │ │ ├── posts │ │ │ ├── index.html │ │ │ ├── search.html │ │ │ └── show.html │ │ └── stylesheet.css │ └── pedrofranceschi.com │ │ ├── info.json │ │ ├── layout.html │ │ ├── pages │ │ └── show.html │ │ ├── posts │ │ ├── index.html │ │ ├── search.html │ │ └── show.html │ │ └── stylesheet.css └── tiny_mce │ ├── langs │ └── en.js │ ├── license.txt │ ├── plugins │ ├── advhr │ │ ├── css │ │ │ └── advhr.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── js │ │ │ └── rule.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ └── rule.htm │ ├── advimage │ │ ├── css │ │ │ └── advimage.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── image.htm │ │ ├── img │ │ │ └── sample.gif │ │ ├── js │ │ │ └── image.js │ │ └── langs │ │ │ └── en_dlg.js │ ├── advlink │ │ ├── css │ │ │ └── advlink.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── js │ │ │ └── advlink.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ └── link.htm │ ├── advlist │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── autoresize │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── autosave │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ └── langs │ │ │ └── en.js │ ├── bbcode │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── contextmenu │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── directionality │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── emotions │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── emotions.htm │ │ ├── img │ │ │ ├── smiley-cool.gif │ │ │ ├── smiley-cry.gif │ │ │ ├── smiley-embarassed.gif │ │ │ ├── smiley-foot-in-mouth.gif │ │ │ ├── smiley-frown.gif │ │ │ ├── smiley-innocent.gif │ │ │ ├── smiley-kiss.gif │ │ │ ├── smiley-laughing.gif │ │ │ ├── smiley-money-mouth.gif │ │ │ ├── smiley-sealed.gif │ │ │ ├── smiley-smile.gif │ │ │ ├── smiley-surprised.gif │ │ │ ├── smiley-tongue-out.gif │ │ │ ├── smiley-undecided.gif │ │ │ ├── smiley-wink.gif │ │ │ └── smiley-yell.gif │ │ ├── js │ │ │ └── emotions.js │ │ └── langs │ │ │ └── en_dlg.js │ ├── example │ │ ├── dialog.htm │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── img │ │ │ └── example.gif │ │ ├── js │ │ │ └── dialog.js │ │ └── langs │ │ │ ├── en.js │ │ │ └── en_dlg.js │ ├── fullpage │ │ ├── css │ │ │ └── fullpage.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── fullpage.htm │ │ ├── js │ │ │ └── fullpage.js │ │ └── langs │ │ │ └── en_dlg.js │ ├── fullscreen │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ └── fullscreen.htm │ ├── iespell │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── inlinepopups │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── skins │ │ │ └── clearlooks2 │ │ │ │ ├── img │ │ │ │ ├── alert.gif │ │ │ │ ├── button.gif │ │ │ │ ├── buttons.gif │ │ │ │ ├── confirm.gif │ │ │ │ ├── corners.gif │ │ │ │ ├── horizontal.gif │ │ │ │ └── vertical.gif │ │ │ │ └── window.css │ │ └── template.htm │ ├── insertdatetime │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── layer │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── legacyoutput │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── media │ │ ├── css │ │ │ ├── content.css │ │ │ └── media.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── img │ │ │ ├── flash.gif │ │ │ ├── flv_player.swf │ │ │ ├── quicktime.gif │ │ │ ├── realmedia.gif │ │ │ ├── shockwave.gif │ │ │ ├── trans.gif │ │ │ └── windowsmedia.gif │ │ ├── js │ │ │ ├── embed.js │ │ │ └── media.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ └── media.htm │ ├── nonbreaking │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── noneditable │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── pagebreak │ │ ├── css │ │ │ └── content.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ └── img │ │ │ ├── pagebreak.gif │ │ │ └── trans.gif │ ├── paste │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── js │ │ │ ├── pastetext.js │ │ │ └── pasteword.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ ├── pastetext.htm │ │ └── pasteword.htm │ ├── preview │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── example.html │ │ ├── jscripts │ │ │ └── embed.js │ │ └── preview.html │ ├── print │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── save │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── searchreplace │ │ ├── css │ │ │ └── searchreplace.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── js │ │ │ └── searchreplace.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ └── searchreplace.htm │ ├── spellchecker │ │ ├── css │ │ │ └── content.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ └── img │ │ │ └── wline.gif │ ├── style │ │ ├── css │ │ │ └── props.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── js │ │ │ └── props.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ └── props.htm │ ├── tabfocus │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── table │ │ ├── cell.htm │ │ ├── css │ │ │ ├── cell.css │ │ │ ├── row.css │ │ │ └── table.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── js │ │ │ ├── cell.js │ │ │ ├── merge_cells.js │ │ │ ├── row.js │ │ │ └── table.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ ├── merge_cells.htm │ │ ├── row.htm │ │ └── table.htm │ ├── template │ │ ├── blank.htm │ │ ├── css │ │ │ └── template.css │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── js │ │ │ └── template.js │ │ ├── langs │ │ │ └── en_dlg.js │ │ └── template.htm │ ├── visualchars │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ ├── wordcount │ │ ├── editor_plugin.js │ │ └── editor_plugin_src.js │ └── xhtmlxtras │ │ ├── abbr.htm │ │ ├── acronym.htm │ │ ├── attributes.htm │ │ ├── cite.htm │ │ ├── css │ │ ├── attributes.css │ │ └── popup.css │ │ ├── del.htm │ │ ├── editor_plugin.js │ │ ├── editor_plugin_src.js │ │ ├── ins.htm │ │ ├── js │ │ ├── abbr.js │ │ ├── acronym.js │ │ ├── attributes.js │ │ ├── cite.js │ │ ├── del.js │ │ ├── element_common.js │ │ └── ins.js │ │ └── langs │ │ └── en_dlg.js │ ├── themes │ ├── advanced │ │ ├── about.htm │ │ ├── anchor.htm │ │ ├── charmap.htm │ │ ├── color_picker.htm │ │ ├── editor_template.js │ │ ├── editor_template_src.js │ │ ├── image.htm │ │ ├── img │ │ │ ├── colorpicker.jpg │ │ │ └── icons.gif │ │ ├── js │ │ │ ├── about.js │ │ │ ├── anchor.js │ │ │ ├── charmap.js │ │ │ ├── color_picker.js │ │ │ ├── image.js │ │ │ ├── link.js │ │ │ └── source_editor.js │ │ ├── langs │ │ │ ├── en.js │ │ │ └── en_dlg.js │ │ ├── link.htm │ │ ├── skins │ │ │ ├── default │ │ │ │ ├── content.css │ │ │ │ ├── dialog.css │ │ │ │ ├── img │ │ │ │ │ ├── buttons.png │ │ │ │ │ ├── items.gif │ │ │ │ │ ├── menu_arrow.gif │ │ │ │ │ ├── menu_check.gif │ │ │ │ │ ├── progress.gif │ │ │ │ │ └── tabs.gif │ │ │ │ └── ui.css │ │ │ └── o2k7 │ │ │ │ ├── content.css │ │ │ │ ├── dialog.css │ │ │ │ ├── img │ │ │ │ ├── button_bg.png │ │ │ │ ├── button_bg_black.png │ │ │ │ └── button_bg_silver.png │ │ │ │ ├── ui.css │ │ │ │ ├── ui_black.css │ │ │ │ └── ui_silver.css │ │ └── source_editor.htm │ └── simple │ │ ├── editor_template.js │ │ ├── editor_template_src.js │ │ ├── img │ │ └── icons.gif │ │ ├── langs │ │ └── en.js │ │ └── skins │ │ ├── default │ │ ├── content.css │ │ └── ui.css │ │ └── o2k7 │ │ ├── content.css │ │ ├── img │ │ └── button_bg.png │ │ └── ui.css │ ├── tiny_mce.js │ ├── tiny_mce_popup.js │ ├── tiny_mce_src.js │ └── utils │ ├── editable_selects.js │ ├── form_utils.js │ ├── mctabs.js │ └── validate.js ├── servers ├── cluster_config.json ├── cluster_server.js └── server.js └── views ├── admin ├── comments │ └── index.ejs ├── login.ejs ├── not_allowed.ejs ├── pages │ ├── edit.ejs │ ├── index.ejs │ └── new.ejs ├── panel.ejs ├── plugins │ └── index.ejs ├── posts │ ├── edit.ejs │ ├── import.ejs │ ├── index.ejs │ └── new.ejs ├── settings │ └── index.ejs ├── template │ └── index.ejs └── users │ ├── index.ejs │ └── new.ejs ├── layout.ejs ├── pages └── show.ejs └── posts ├── index.ejs ├── search.ejs └── show.ejs /README.markdown: -------------------------------------------------------------------------------- 1 | Blogode 2 | ======= 3 | Robust blog engine written in Node.js using MySQL Database 4 | 5 | Dependencies 6 | ------------ 7 | * npm install mysql 8 | * npm install express 9 | * npm install ejs 10 | * npm install faye 11 | 12 | TODO 13 | ---- 14 | * Refactor with Tests 15 | * Add other databases 16 | * Cluster data balance 17 | * Wordpress: import tags too. 18 | * Check for what plugins we should run for the request 19 | * Enable/disable plugins 20 | * Make everything RESTful 21 | * Implement other plugin actions 22 | * Javascript confirmation for destroy actions 23 | * Implement permission "can just edit his own posts". 24 | * Implement initial configuration interface 25 | * Implement posts sharing for social networks (Twitter and Facebook) 26 | * Implement statistics 27 | 28 | License: 29 | -------- 30 | 31 | (The MIT License) 32 | 33 | Permission is hereby granted, free of charge, to any person obtaining 34 | a copy of this software and associated documentation files (the 35 | 'Software'), to deal in the Software without restriction, including 36 | without limitation the rights to use, copy, modify, merge, publish, 37 | distribute, sublicense, and/or sell copies of the Software, and to 38 | permit persons to whom the Software is furnished to do so, subject to 39 | the following conditions: 40 | 41 | The above copyright notice and this permission notice shall be 42 | included in all copies or substantial portions of the Software. 43 | 44 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 45 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 46 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 47 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 48 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 49 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 50 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 51 | -------------------------------------------------------------------------------- /blogode.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/node 2 | 3 | var server = require("./servers/server.js"); 4 | var clusterServer = require("./servers/cluster_server.js"); 5 | 6 | var args = new Array(); 7 | 8 | for(var i = 0; i < process.argv.length; i++) { 9 | if(process.argv[i].indexOf("/") < 0 && process.argv[i].indexOf("node") < 0) { 10 | args.push(process.argv[i]); 11 | } 12 | } 13 | 14 | if(args[0] == "server") { 15 | var port = 3000; 16 | var clusterArg = 1; 17 | 18 | if(!isNaN(parseInt(args[1])) && parseInt(args[1]) > 0) { 19 | port = parseInt(args[1]); 20 | clusterArg = 2; 21 | } 22 | 23 | var clusterAddress = ""; 24 | var clusterPort = 0; 25 | 26 | if(args[clusterArg] == "cluster") { 27 | var addr = args[clusterArg+1] 28 | if(addr != undefined) { 29 | if(addr.indexOf(":") >= 0) { 30 | var separator = addr.split(":"); 31 | if(isNaN(parseInt(separator[1]))) { 32 | console.log('Invalid cluster port.') 33 | } else { 34 | clusterAddress = separator[0]; 35 | clusterPort = parseInt(separator[1]); 36 | } 37 | } else { 38 | clusterAddress = addr; 39 | clusterPort = 6108; // default port 40 | } 41 | } else { 42 | console.log("Invalid cluster server address") 43 | process.exit(-1); 44 | } 45 | } 46 | 47 | var socketPort = 6108; 48 | 49 | if(!isNaN(parseInt(args[clusterArg+2]))) { 50 | socketPort = parseInt(args[clusterArg+2]); 51 | } else { 52 | if(args[clusterArg+2]) { 53 | console.log('Invalid cluster server socket port.') 54 | process.exit(-1); 55 | } 56 | } 57 | 58 | 59 | // exports.startServer = function(serverPort, clusterServerIp, clusterServerPort, clusterSocketPort) { 60 | 61 | server.startServer(port, clusterAddress, clusterPort, socketPort); 62 | } else if(args[0] == "cluster") { 63 | var port = 8080; 64 | 65 | if(!isNaN(parseInt(args[1])) && parseInt(args[1]) > 0) { 66 | port = parseInt(args[1]); 67 | } else if(args[1] != undefined) { 68 | console.log("Invalid port."); 69 | process.exit(); 70 | } 71 | 72 | clusterServer.startClusterServer(port); 73 | } else if(args[0] == undefined) { 74 | console.log("Missing arguments."); 75 | process.exit(); 76 | } else { 77 | console.log("Invalid argument."); 78 | process.exit(); 79 | } -------------------------------------------------------------------------------- /config/blog.json: -------------------------------------------------------------------------------- 1 | {"current_template":"pedrofranceschi.com","blog_name":"Blogode","blog_address":"http://0.0.0.0:3000/","blog_description":"A Lorem Ipsum Blog!","blog_posts_per_page":"2","index_page":"0"} -------------------------------------------------------------------------------- /config/database.json: -------------------------------------------------------------------------------- 1 | { 2 | "hostname": "localhost", 3 | "username": "blogode", 4 | "password": "blogode", 5 | "database": "blogode" 6 | } -------------------------------------------------------------------------------- /config/plugins.json: -------------------------------------------------------------------------------- 1 | {"twitter_search":{"search_term":"#geekJoke"},"user_tweets":{"username":"pedroh96"}} -------------------------------------------------------------------------------- /controllers/pages.js: -------------------------------------------------------------------------------- 1 | var config = require ("../lib/config"); 2 | var postsController = require("./posts.js") 3 | var pages = require("../lib/pages.js"); 4 | 5 | var pagesCache; 6 | 7 | exports.updatePagesCache = function() { 8 | pages.getPages(function(pages){ 9 | global.pagesCache = pages; 10 | }); 11 | } 12 | 13 | exports.getPagesCache = function() { 14 | return global.pagesCache; 15 | } 16 | 17 | // exports.index = function(req, res) { 18 | // // TODO: cache current page to avoid disk I/O. 19 | // config.getBlogConfigKeyValue('index_page', function(page){ 20 | // if(page == '0') { 21 | // postsController.index(req, res); 22 | // } else { 23 | // 24 | // } 25 | // }); 26 | // } 27 | 28 | exports.showPage = function(req, res) { 29 | if(!req.param('name')) { 30 | return res.send("A page ID is needed.") 31 | } 32 | 33 | pages.getPageByLinkName(req.param('name'), function(page){ 34 | req.events.on('pluginsAreLoaded', function() { 35 | res.render('pages/show', { 36 | locals: { 'page': page } 37 | }); 38 | }); 39 | }); 40 | } -------------------------------------------------------------------------------- /filters/admin.js: -------------------------------------------------------------------------------- 1 | var sys = require("sys"); 2 | 3 | exports.verifyLogin = function (req, res, next) { 4 | // verifies if user is an admin 5 | 6 | if(!req.session.username) { 7 | return res.redirect("/admin/login"); 8 | } 9 | next(); 10 | }; 11 | 12 | exports.verifyPostPermission = function (req, res, next) { 13 | // verifies if user have permission to manage posts 14 | 15 | if(req.session.user_permission.toString().indexOf("1") < 0) { 16 | return res.redirect("/admin/not_allowed"); 17 | } 18 | next(); 19 | }; 20 | 21 | exports.verifyCommentPermission = function (req, res, next) { 22 | // verifies if user have permission to manage comments 23 | 24 | if(req.session.user_permission.toString().indexOf("2") < 0) { 25 | return res.redirect("/admin/not_allowed"); 26 | } 27 | next(); 28 | }; 29 | 30 | exports.verifyPagePermission = function (req, res, next) { 31 | // verifies if user have permission to manage pages 32 | 33 | if(req.session.user_permission.toString().indexOf("3") < 0) { 34 | return res.redirect("/admin/not_allowed"); 35 | } 36 | next(); 37 | }; 38 | 39 | exports.verifyTemplatePermission = function (req, res, next) { 40 | // verifies if user have permission to manage templates 41 | 42 | if(req.session.user_permission.toString().indexOf("4") < 0) { 43 | return res.redirect("/admin/not_allowed"); 44 | } 45 | next(); 46 | }; 47 | 48 | exports.verifyPluginPermission = function (req, res, next) { 49 | // verifies if user have permission to manage plugins 50 | 51 | if(req.session.user_permission.toString().indexOf("5") < 0) { 52 | return res.redirect("/admin/not_allowed"); 53 | } 54 | next(); 55 | }; 56 | 57 | exports.verifySettingsPermission = function (req, res, next) { 58 | // verifies if user have permission to manage blog settings 59 | 60 | if(req.session.user_permission.toString().indexOf("6") < 0) { 61 | return res.redirect("/admin/not_allowed"); 62 | } 63 | next(); 64 | }; 65 | 66 | exports.verifyUsersPermission = function (req, res, next) { 67 | // verifies if user have permission to manage users 68 | 69 | if(req.session.user_permission.toString().indexOf("7") < 0) { 70 | return res.redirect("/admin/not_allowed"); 71 | } 72 | next(); 73 | }; -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # install stuff to build node 4 | apt-get install build-essential libssl-dev python libssl-dev curl; 5 | 6 | # download and compile node 7 | cd /tmp 8 | wget "http://nodejs.org/dist/node-v0.2.5.tar.gz" 9 | tar xzvf node-v0.2.5.tar.gz 10 | cd node-v0.2.5 11 | ./configure 12 | make 13 | make install 14 | 15 | # install npm (node package manager) 16 | curl http://npmjs.org/install.sh | sh 17 | 18 | # install blogode 19 | mkdir /var/ 20 | cd /var/ 21 | wget "http://download.github.com/pedrofranceschi-Blogode-e3992af.zip" 22 | unzip pedrofranceschi-Blogode-*.zip 23 | rm *.zip 24 | mv pedrofranceschi-Blogode-* blogode/ 25 | cd blogode 26 | 27 | # install all dependencies 28 | npm install ejs express faye step mysql forever 29 | 30 | # sets the default start script for blogode 31 | echo "#!/bin/sh\ncd /var/blogode/ && forever start blogode.js" > /usr/bin/start_blogode 32 | chmod +x /usr/bin/start_blogode -------------------------------------------------------------------------------- /lib/comments.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'), 2 | database = require('./database.js'); 3 | 4 | exports.getComments = function(sinceId, limitNumber, callback) { 5 | var limitString = ""; 6 | 7 | if(limitNumber != 0) { 8 | limitString = "LIMIT " + limitNumber; 9 | } 10 | 11 | database.getDatabaseConnection(function (mysql_client) { 12 | mysql_client.query("SELECT * FROM comments WHERE id > '" + escape(sinceId) + "' ORDER BY id ASC " + limitString + ";", function (error, results, fields) { 13 | if(error) { 14 | throw "Error getting comment: " + error; 15 | } 16 | callback(results); 17 | }); 18 | }); 19 | } 20 | 21 | 22 | exports.getCommentsOfPost = function(postId, callback) { 23 | database.getDatabaseConnection(function (mysql_client) { 24 | mysql_client.query("SELECT * FROM comments WHERE post_id='" + escape(postId) + "' ORDER BY id ASC;", function (error, results, fields) { 25 | if(error) { 26 | throw "Error getting comment: " + error; 27 | } 28 | var comments = new Array(); 29 | for(var i = 0; i < results.length; i++) { 30 | var thisComment = results[i] 31 | thisComment.created_at = sys.inspect(thisComment.created_at) 32 | comments.push(thisComment); 33 | } 34 | 35 | callback(comments); 36 | }); 37 | }); 38 | } 39 | 40 | exports.saveComment = function(postId, authorName, authorEmail, comment, callback) { 41 | database.getDatabaseConnection(function (mysql_client) { 42 | mysql_client.query("INSERT INTO comments (post_id, author_name, author_email, comment) VALUES ('" + escape(postId) + "', '" + escape(authorName) + "', '" + escape(authorEmail) + "', '" + escape(comment) + "'); SELECT * FROM comments WHERE id=LAST_INSERT_ID();", function (error, results, fields) { 43 | if(error) { 44 | throw "Error inserting comment: " + error; 45 | } 46 | setTimeout(function(){ 47 | mysql_client.query("SELECT * FROM comments WHERE id=" + results.insertId + ";", function (error_, results_, fields) { 48 | if(error_) { 49 | throw "Error inserting comment: " + error_; 50 | } 51 | callback(results_[0]); 52 | }); 53 | }, 50); 54 | }); 55 | }); 56 | } 57 | 58 | exports.destroyComment = function(commentId, callback) { 59 | database.getDatabaseConnection(function (mysql_client) { 60 | mysql_client.query("DELETE FROM comments WHERE id='" + escape(commentId) + "'", function (error, results, fields) { 61 | if(error) { 62 | throw "Error inserting comment: " + error; 63 | } 64 | callback(); 65 | }); 66 | }); 67 | } -------------------------------------------------------------------------------- /lib/config.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'); 2 | var fs = require('fs'); 3 | 4 | exports.getBlogConfigKeyValue = function(key, callback) { 5 | fs.readFile('./config/blog.json', function(err, content) { 6 | if(err) { 7 | throw err; 8 | } else { 9 | var configParser = JSON.parse(content); 10 | callback(configParser[key]); 11 | } 12 | }); 13 | } 14 | 15 | exports.getAllBlogConfigKeyValues = function(callback) { 16 | fs.readFile('./config/blog.json', function(err, content) { 17 | if(err) { 18 | throw err; 19 | } else { 20 | var configParser = JSON.parse(content); 21 | callback(configParser); 22 | } 23 | }); 24 | } 25 | 26 | exports.setBlogConfigKeyValue = function(key, value, callback) { 27 | fs.readFile('./config/blog.json', function(err, content) { 28 | if(err) { 29 | throw err; 30 | } else { 31 | var configParser = JSON.parse(content); 32 | configParser[key] = value; 33 | 34 | fs.writeFile('./config/blog.json', JSON.stringify(configParser), function (err) { 35 | if (err) throw err; 36 | callback(); 37 | }); 38 | } 39 | }); 40 | } 41 | 42 | exports.setAllBlogConfigKeyValues = function(keyAndValues, callback) { 43 | fs.writeFile('./config/blog.json', JSON.stringify(keyAndValues), function (err) { 44 | if (err) throw err; 45 | callback(); 46 | }); 47 | } -------------------------------------------------------------------------------- /lib/database.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'), 2 | fs = require('fs'), 3 | Client = require('mysql').Client; 4 | 5 | var client = new Client(); 6 | 7 | exports.close = function() { 8 | client.end(); 9 | } 10 | 11 | exports.reconnect = function() { 12 | exports.initialize(function(){}); 13 | } 14 | 15 | exports.initialize = function(callback) { 16 | this._getDatabaseSettingsFromConfig(function (hostname, username, password, database){ 17 | client.user = username; 18 | client.password = password; 19 | client.host = hostname; 20 | client.connect(); 21 | client.query('USE ' + escape(database)); 22 | 23 | exports._createTables(client, function(){}); 24 | callback(client); 25 | }); 26 | } 27 | 28 | exports.getDatabaseConnection = function(callback) { 29 | if(client.connected == false) { 30 | exports.initialize(function(){ 31 | callback(client); 32 | }); 33 | } else { 34 | callback(client); 35 | } 36 | } 37 | 38 | exports._createTables = function(mysql_client, callback) { 39 | mysql_client.query("CREATE TABLE IF NOT EXISTS posts (id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, title VARCHAR(200), body TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);") 40 | mysql_client.query("CREATE TABLE IF NOT EXISTS pages (id INT PRIMARY KEY AUTO_INCREMENT, user_id INT, title VARCHAR(200), link_name VARCHAR(200), body TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);") 41 | mysql_client.query("CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY AUTO_INCREMENT, permission_level INT, name VARCHAR(100), description VARCHAR(500), email VARCHAR(100), username VARCHAR(100), password VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);") 42 | mysql_client.query("CREATE TABLE IF NOT EXISTS comments (id INT PRIMARY KEY AUTO_INCREMENT, post_id INT, author_name VARCHAR(100), author_email VARCHAR(100), comment TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);") 43 | mysql_client.query("CREATE TABLE IF NOT EXISTS post_tags (post_id INT, tag VARCHAR(100));") 44 | callback(); 45 | } 46 | 47 | exports._getDatabaseSettingsFromConfig = function(callback) { 48 | fs.readFile('./config/database.json', function(err, content) { 49 | var parser = JSON.parse(content); 50 | callback(parser['hostname'], parser['username'], parser['password'], parser['database']) 51 | }); 52 | } -------------------------------------------------------------------------------- /lib/helper.js: -------------------------------------------------------------------------------- 1 | var sys = require("sys"); 2 | var ejs = require("ejs"); 3 | var fs = require("fs"); 4 | 5 | exports.renderView = function(plugin, view, viewVariables, callback){ 6 | fs.readFile('./plugins/' + plugin.pluginInfos["call_name"] + '/' + view, function(err, file_content) { 7 | if(err) sys.puts(err); 8 | 9 | callback(ejs.render(file_content.toString(), { locals: viewVariables })) 10 | }); 11 | } 12 | 13 | exports.getConfigVariableValue = function(plugin, variableName, callback){ 14 | fs.readFile('./config/plugins.json', function(err, content){ 15 | if(err) throw err; 16 | var parser = JSON.parse(content); 17 | if(parser[plugin.pluginInfos.call_name] == undefined) { 18 | callback(undefined); 19 | } else { 20 | callback(parser[plugin.pluginInfos.call_name][variableName]); 21 | } 22 | }); 23 | } -------------------------------------------------------------------------------- /lib/plugins.js: -------------------------------------------------------------------------------- 1 | var sys = require("sys"); 2 | var fs = require("fs"); 3 | 4 | exports.setPluginConfigValues = function(pluginName, values, callback) { 5 | fs.readFile('./config/plugins.json', function(err, content){ 6 | if(err) throw err; 7 | var parser = JSON.parse(content); 8 | parser[pluginName] = values; 9 | fs.writeFile('./config/plugins.json', JSON.stringify(parser), function (err) { 10 | if(err) throw err; 11 | callback(); 12 | }); 13 | }); 14 | } 15 | 16 | exports.getPluginConfigValues = function(callback) { 17 | fs.readFile('./config/plugins.json', function(err, content){ 18 | if(err) throw err; 19 | var parser = JSON.parse(content); 20 | callback(parser); 21 | }); 22 | } 23 | 24 | exports.getPluginConfigValues = function(callback) { 25 | fs.readFile('./config/plugins.json', function(err, content){ 26 | if(err) throw err; 27 | var parser = JSON.parse(content); 28 | callback(parser); 29 | }); 30 | } -------------------------------------------------------------------------------- /lib/tags.js: -------------------------------------------------------------------------------- 1 | var sys = require('sys'), 2 | database = require('./database.js'), 3 | posts = require('./posts.js') 4 | 5 | exports.getAllTags = function(callback) { 6 | database.getDatabaseConnection(function (mysql_client) { 7 | mysql_client.query("SELECT * FROM post_tags;", function (error, results, fields) { 8 | if(error) { 9 | throw "Error getting tags: " + error; 10 | } 11 | var tags = {}; 12 | 13 | for(var i=0; i < results.length; i++) { 14 | if(tags[results[i].tag] == undefined) { 15 | tags[results[i].tag] = 1; 16 | } else { 17 | tags[results[i].tag] += 1; 18 | } 19 | }; 20 | 21 | callback(tags); 22 | }); 23 | }); 24 | } 25 | 26 | 27 | exports.getPostsWithTag = function(tag, callback) { 28 | database.getDatabaseConnection(function (mysql_client) { 29 | mysql_client.query("SELECT * FROM post_tags WHERE tag='" + escape(tag) + "';", function (error, results, fields) { 30 | if(error) { 31 | throw "Error getting post tags: " + error; 32 | } 33 | 34 | var postsArr = new Array(); 35 | var postsToGet = new Array(); 36 | 37 | for(var i=0; i < results.length; i++) { 38 | postsToGet.push(results[i].post_id); 39 | } 40 | 41 | function getNextPostData() { 42 | if(postsToGet.length == 0) { 43 | callback(postsArr); 44 | } else { 45 | posts.getPost(postsToGet[0], function(postData){ 46 | postsToGet.splice(0, 1); 47 | postsArr.push(postData); 48 | getNextPostData(); 49 | }); 50 | } 51 | } 52 | 53 | getNextPostData(); 54 | }); 55 | }); 56 | } 57 | 58 | exports.createTagsForPost = function(post_id, tags, callback) { 59 | database.getDatabaseConnection(function (mysql_client) { 60 | for(var i=0; i < tags.length; i++) { 61 | mysql_client.query("INSERT INTO post_tags (post_id, tag) VALUES ('" + escape(post_id) + "', '" + escape(tags[i]) + "');"); 62 | } 63 | setTimeout(function(){ 64 | callback(); 65 | }, 100); 66 | }); 67 | } 68 | 69 | exports.deletePostTags = function(post_id, callback) { 70 | database.getDatabaseConnection(function (mysql_client) { 71 | mysql_client.query("DELETE FROM post_tags WHERE post_id='" + escape(post_id) + "';", function (error, results, fields) { 72 | if(error) { 73 | throw "Error deleting post's tags: " + error; 74 | } 75 | callback(); 76 | }); 77 | }); 78 | } -------------------------------------------------------------------------------- /plugins/twitter_search/view.html: -------------------------------------------------------------------------------- 1 |

Twitter Search

2 | Recent tweets with '<%= hashtag %>'

3 | 4 | <% for(var i=0; i < data.length; i++) { %> 5 | @<%= data[i]["from_user"] %>: <%= data[i]["text"] %>

6 | <% } %> 7 |
-------------------------------------------------------------------------------- /plugins/user_tweets/view.html: -------------------------------------------------------------------------------- 1 | <% 2 | 3 | function relative_time(time_value) { 4 | var values = time_value.split(" "); 5 | time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3]; 6 | var parsed_date = Date.parse(time_value); 7 | var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); 8 | var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); 9 | delta = delta + (relative_to.getTimezoneOffset() * 60); 10 | 11 | if (delta < 60) { 12 | return 'less than a minute ago'; 13 | } else if(delta < 120) { 14 | return 'about a minute ago'; 15 | } else if(delta < (60*60)) { 16 | return (parseInt(delta / 60)).toString() + ' minutes ago'; 17 | } else if(delta < (120*60)) { 18 | return 'about an hour ago'; 19 | } else if(delta < (24*60*60)) { 20 | return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago'; 21 | } else if(delta < (48*60*60)) { 22 | return '1 day ago'; 23 | } else { 24 | return (parseInt(delta / 86400)).toString() + ' days ago'; 25 | } 26 | } 27 | 28 | %> 29 | 30 |

Twitter

31 | 32 | <% if(data != undefined) { %> 33 | <% for(var i=0; i < data.length; i++) { %> 34 | 35 | <%= data[i]["text"] %> <%= relative_time (data[i].created_at) %> 36 |

37 | <% } %> 38 |
    39 | Follow <%= username %> on Twitter! 40 | <% } %> -------------------------------------------------------------------------------- /public/templates/default_theme/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "template_name": "Blogode's Default Template.", 3 | "author_name": "Pedro Franceschi", 4 | "author_email": "pedrohfranceschi@gmail.com", 5 | "version": "0.1" 6 | } -------------------------------------------------------------------------------- /public/templates/default_theme/layout.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%= blogName %> 4 | 5 | 6 | 7 | 8 | 9 |

    HEADER

    10 |
    11 | 12 | 13 |
    14 |
    15 | <%- body %> 16 |

    17 |

    FOOTER

    18 | 19 | -------------------------------------------------------------------------------- /public/templates/default_theme/posts/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | <% if(posts != undefined) { %> 4 | <% for (var i=0; i < posts.length; i++) { %> 5 |

    <%= unescape(posts[i].title) %>

    6 |

    by <%= posts[i].user_name %>

    7 | <% if(unescape(posts[i].body).indexOf("###") >= 0) { %> 8 |

    <%- unescape(posts[i].body).split("###")[0] %>


    9 | <% } else { %> 10 |

    <%- unescape(posts[i].body) %>


    11 | <% } %> 12 | <% } %> 13 | <% } %> -------------------------------------------------------------------------------- /public/templates/default_theme/posts/show.html: -------------------------------------------------------------------------------- 1 | 28 | 29 |

    <%= unescape(post.title) %>

    30 |

    by <%= post.user_name %>

    31 |

    <%- unescape(post.body) %>

    32 | 33 |
    34 |

    Comments

    35 | 36 |
    37 | <% for (var i=0; i < comments.length; i++) { %> 38 |
    39 |

    <%= unescape(comments[i].author_name) %>

    40 |

    <%= unescape(comments[i].comment) %>

    41 |
    42 | <% } %> 43 |
    44 | 45 |
    46 |

    New comment

    47 | 48 |
    49 |
    50 |

    51 | 52 |

    53 | 54 | 55 |
    -------------------------------------------------------------------------------- /public/templates/default_theme/stylesheet.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #FFFFFF; 3 | } -------------------------------------------------------------------------------- /public/templates/initial_theme/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "template_name": "Blogode's Initial Template.", 3 | "author_name": "Pedro Franceschi", 4 | "author_email": "pedrohfranceschi@gmail.com", 5 | "version": "0.1" 6 | } -------------------------------------------------------------------------------- /public/templates/initial_theme/posts/search.html: -------------------------------------------------------------------------------- 1 |

    Search results (from theme)

    2 | 3 | <% if(posts != undefined) { %> 4 | <% for (var i=0; i < posts.length; i++) { %> 5 |

    <%= unescape(posts[i].title) %>

    6 |

    by <%= posts[i].user_name %>

    7 | <% if(unescape(posts[i].body).indexOf("###") >= 0) { %> 8 |

    <%- unescape(posts[i].body).split("###")[0] %>


    9 | <% } else { %> 10 |

    <%- unescape(posts[i].body) %>


    11 | <% } %> 12 | <% } %> 13 | <% } %> -------------------------------------------------------------------------------- /public/templates/initial_theme/stylesheet.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #FFFFFF; 3 | } -------------------------------------------------------------------------------- /public/templates/my_other_theme/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "template_name": "Blogode's Test Template.", 3 | "author_name": "Pedro Franceschi", 4 | "author_email": "pedrohfranceschi@gmail.com", 5 | "version": "0.1" 6 | } -------------------------------------------------------------------------------- /public/templates/my_other_theme/posts/search.html: -------------------------------------------------------------------------------- 1 |

    Search results (from theme)

    2 | 3 | <% if(posts != undefined) { %> 4 | <% for (var i=0; i < posts.length; i++) { %> 5 |

    <%= unescape(posts[i].title) %>

    6 |

    by <%= posts[i].user_name %>

    7 | <% if(unescape(posts[i].body).indexOf("###") >= 0) { %> 8 |

    <%- unescape(posts[i].body).split("###")[0] %>


    9 | <% } else { %> 10 |

    <%- unescape(posts[i].body) %>


    11 | <% } %> 12 | <% } %> 13 | <% } %> -------------------------------------------------------------------------------- /public/templates/my_other_theme/stylesheet.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #FFFFFF; 3 | } -------------------------------------------------------------------------------- /public/templates/pedrofranceschi.com/info.json: -------------------------------------------------------------------------------- 1 | { 2 | "template_name": "pedrofranceschi.com's theme", 3 | "author_name": "Pedro Franceschi", 4 | "author_email": "pedrohfranceschi@gmail.com", 5 | "version": "0.1" 6 | } -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advhr/css/advhr.css: -------------------------------------------------------------------------------- 1 | input.radio {border:1px none #000; background:transparent; vertical-align:middle;} 2 | .panel_wrapper div.current {height:80px;} 3 | #width {width:50px; vertical-align:middle;} 4 | #width2 {width:50px; vertical-align:middle;} 5 | #size {width:100px;} 6 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advhr/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.AdvancedHRPlugin",{init:function(a,b){a.addCommand("mceAdvancedHr",function(){a.windowManager.open({file:b+"/rule.htm",width:250+parseInt(a.getLang("advhr.delta_width",0)),height:160+parseInt(a.getLang("advhr.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("advhr",{title:"advhr.advhr_desc",cmd:"mceAdvancedHr"});a.onNodeChange.add(function(d,c,e){c.setActive("advhr",e.nodeName=="HR")});a.onClick.add(function(c,d){d=d.target;if(d.nodeName==="HR"){c.selection.select(d)}})},getInfo:function(){return{longname:"Advanced HR",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advhr",tinymce.plugins.AdvancedHRPlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advhr/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.AdvancedHRPlugin', { 13 | init : function(ed, url) { 14 | // Register commands 15 | ed.addCommand('mceAdvancedHr', function() { 16 | ed.windowManager.open({ 17 | file : url + '/rule.htm', 18 | width : 250 + parseInt(ed.getLang('advhr.delta_width', 0)), 19 | height : 160 + parseInt(ed.getLang('advhr.delta_height', 0)), 20 | inline : 1 21 | }, { 22 | plugin_url : url 23 | }); 24 | }); 25 | 26 | // Register buttons 27 | ed.addButton('advhr', { 28 | title : 'advhr.advhr_desc', 29 | cmd : 'mceAdvancedHr' 30 | }); 31 | 32 | ed.onNodeChange.add(function(ed, cm, n) { 33 | cm.setActive('advhr', n.nodeName == 'HR'); 34 | }); 35 | 36 | ed.onClick.add(function(ed, e) { 37 | e = e.target; 38 | 39 | if (e.nodeName === 'HR') 40 | ed.selection.select(e); 41 | }); 42 | }, 43 | 44 | getInfo : function() { 45 | return { 46 | longname : 'Advanced HR', 47 | author : 'Moxiecode Systems AB', 48 | authorurl : 'http://tinymce.moxiecode.com', 49 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', 50 | version : tinymce.majorVersion + "." + tinymce.minorVersion 51 | }; 52 | } 53 | }); 54 | 55 | // Register plugin 56 | tinymce.PluginManager.add('advhr', tinymce.plugins.AdvancedHRPlugin); 57 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advhr/js/rule.js: -------------------------------------------------------------------------------- 1 | var AdvHRDialog = { 2 | init : function(ed) { 3 | var dom = ed.dom, f = document.forms[0], n = ed.selection.getNode(), w; 4 | 5 | w = dom.getAttrib(n, 'width'); 6 | f.width.value = w ? parseInt(w) : (dom.getStyle('width') || ''); 7 | f.size.value = dom.getAttrib(n, 'size') || parseInt(dom.getStyle('height')) || ''; 8 | f.noshade.checked = !!dom.getAttrib(n, 'noshade') || !!dom.getStyle('border-width'); 9 | selectByValue(f, 'width2', w.indexOf('%') != -1 ? '%' : 'px'); 10 | }, 11 | 12 | update : function() { 13 | var ed = tinyMCEPopup.editor, h, f = document.forms[0], st = ''; 14 | 15 | h = ' 2 | 3 | 4 | {#advhr.advhr_desc} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    13 |
    14 | 17 |
    18 | 19 |
    20 |
    21 | 22 | 23 | 24 | 31 | 32 | 33 | 34 | 42 | 43 | 44 | 45 | 46 | 47 |
    25 | 26 | 30 |
    48 |
    49 |
    50 | 51 |
    52 | 53 | 54 |
    55 |
    56 | 57 | 58 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advimage/css/advimage.css: -------------------------------------------------------------------------------- 1 | #src_list, #over_list, #out_list {width:280px;} 2 | .mceActionPanel {margin-top:7px;} 3 | .alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;} 4 | .checkbox {border:0;} 5 | .panel_wrapper div.current {height:305px;} 6 | #prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;} 7 | #align, #classlist {width:150px;} 8 | #width, #height {vertical-align:middle; width:50px; text-align:center;} 9 | #vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;} 10 | #class_list {width:180px;} 11 | input {width: 280px;} 12 | #constrain, #onmousemovecheck {width:auto;} 13 | #id, #dir, #lang, #usemap, #longdesc {width:200px;} 14 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advimage/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advimage/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.AdvancedImagePlugin', { 13 | init : function(ed, url) { 14 | // Register commands 15 | ed.addCommand('mceAdvImage', function() { 16 | // Internal image object like a flash placeholder 17 | if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) 18 | return; 19 | 20 | ed.windowManager.open({ 21 | file : url + '/image.htm', 22 | width : 480 + parseInt(ed.getLang('advimage.delta_width', 0)), 23 | height : 385 + parseInt(ed.getLang('advimage.delta_height', 0)), 24 | inline : 1 25 | }, { 26 | plugin_url : url 27 | }); 28 | }); 29 | 30 | // Register buttons 31 | ed.addButton('image', { 32 | title : 'advimage.image_desc', 33 | cmd : 'mceAdvImage' 34 | }); 35 | }, 36 | 37 | getInfo : function() { 38 | return { 39 | longname : 'Advanced image', 40 | author : 'Moxiecode Systems AB', 41 | authorurl : 'http://tinymce.moxiecode.com', 42 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage', 43 | version : tinymce.majorVersion + "." + tinymce.minorVersion 44 | }; 45 | } 46 | }); 47 | 48 | // Register plugin 49 | tinymce.PluginManager.add('advimage', tinymce.plugins.AdvancedImagePlugin); 50 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advimage/img/sample.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/advimage/img/sample.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advimage/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.advimage_dlg',{ 2 | tab_general:"General", 3 | tab_appearance:"Appearance", 4 | tab_advanced:"Advanced", 5 | general:"General", 6 | title:"Title", 7 | preview:"Preview", 8 | constrain_proportions:"Constrain proportions", 9 | langdir:"Language direction", 10 | langcode:"Language code", 11 | long_desc:"Long description link", 12 | style:"Style", 13 | classes:"Classes", 14 | ltr:"Left to right", 15 | rtl:"Right to left", 16 | id:"Id", 17 | map:"Image map", 18 | swap_image:"Swap image", 19 | alt_image:"Alternative image", 20 | mouseover:"for mouse over", 21 | mouseout:"for mouse out", 22 | misc:"Miscellaneous", 23 | example_img:"Appearance preview image", 24 | missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.", 25 | dialog_title:"Insert/edit image", 26 | src:"Image URL", 27 | alt:"Image description", 28 | list:"Image list", 29 | border:"Border", 30 | dimensions:"Dimensions", 31 | vspace:"Vertical space", 32 | hspace:"Horizontal space", 33 | align:"Alignment", 34 | align_baseline:"Baseline", 35 | align_top:"Top", 36 | align_middle:"Middle", 37 | align_bottom:"Bottom", 38 | align_texttop:"Text top", 39 | align_textbottom:"Text bottom", 40 | align_left:"Left", 41 | align_right:"Right", 42 | image_list:"Image list" 43 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advlink/css/advlink.css: -------------------------------------------------------------------------------- 1 | .mceLinkList, .mceAnchorList, #targetlist {width:280px;} 2 | .mceActionPanel {margin-top:7px;} 3 | .panel_wrapper div.current {height:320px;} 4 | #classlist, #title, #href {width:280px;} 5 | #popupurl, #popupname {width:200px;} 6 | #popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;} 7 | #id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;} 8 | #events_panel input {width:200px;} 9 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advlink/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advlink/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.AdvancedLinkPlugin', { 13 | init : function(ed, url) { 14 | this.editor = ed; 15 | 16 | // Register commands 17 | ed.addCommand('mceAdvLink', function() { 18 | var se = ed.selection; 19 | 20 | // No selection and not in link 21 | if (se.isCollapsed() && !ed.dom.getParent(se.getNode(), 'A')) 22 | return; 23 | 24 | ed.windowManager.open({ 25 | file : url + '/link.htm', 26 | width : 480 + parseInt(ed.getLang('advlink.delta_width', 0)), 27 | height : 400 + parseInt(ed.getLang('advlink.delta_height', 0)), 28 | inline : 1 29 | }, { 30 | plugin_url : url 31 | }); 32 | }); 33 | 34 | // Register buttons 35 | ed.addButton('link', { 36 | title : 'advlink.link_desc', 37 | cmd : 'mceAdvLink' 38 | }); 39 | 40 | ed.addShortcut('ctrl+k', 'advlink.advlink_desc', 'mceAdvLink'); 41 | 42 | ed.onNodeChange.add(function(ed, cm, n, co) { 43 | cm.setDisabled('link', co && n.nodeName != 'A'); 44 | cm.setActive('link', n.nodeName == 'A' && !n.name); 45 | }); 46 | }, 47 | 48 | getInfo : function() { 49 | return { 50 | longname : 'Advanced link', 51 | author : 'Moxiecode Systems AB', 52 | authorurl : 'http://tinymce.moxiecode.com', 53 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', 54 | version : tinymce.majorVersion + "." + tinymce.minorVersion 55 | }; 56 | } 57 | }); 58 | 59 | // Register plugin 60 | tinymce.PluginManager.add('advlink', tinymce.plugins.AdvancedLinkPlugin); 61 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advlink/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.advlink_dlg',{ 2 | title:"Insert/edit link", 3 | url:"Link URL", 4 | target:"Target", 5 | titlefield:"Title", 6 | is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", 7 | is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", 8 | list:"Link list", 9 | general_tab:"General", 10 | popup_tab:"Popup", 11 | events_tab:"Events", 12 | advanced_tab:"Advanced", 13 | general_props:"General properties", 14 | popup_props:"Popup properties", 15 | event_props:"Events", 16 | advanced_props:"Advanced properties", 17 | popup_opts:"Options", 18 | anchor_names:"Anchors", 19 | target_same:"Open in this window / frame", 20 | target_parent:"Open in parent window / frame", 21 | target_top:"Open in top frame (replaces all frames)", 22 | target_blank:"Open in new window", 23 | popup:"Javascript popup", 24 | popup_url:"Popup URL", 25 | popup_name:"Window name", 26 | popup_return:"Insert 'return false'", 27 | popup_scrollbars:"Show scrollbars", 28 | popup_statusbar:"Show status bar", 29 | popup_toolbar:"Show toolbars", 30 | popup_menubar:"Show menu bar", 31 | popup_location:"Show location bar", 32 | popup_resizable:"Make window resizable", 33 | popup_dependent:"Dependent (Mozilla/Firefox only)", 34 | popup_size:"Size", 35 | popup_position:"Position (X/Y)", 36 | id:"Id", 37 | style:"Style", 38 | classes:"Classes", 39 | target_name:"Target name", 40 | langdir:"Language direction", 41 | target_langcode:"Target language", 42 | langcode:"Language code", 43 | encoding:"Target character encoding", 44 | mime:"Target MIME type", 45 | rel:"Relationship page to target", 46 | rev:"Relationship target to page", 47 | tabindex:"Tabindex", 48 | accesskey:"Accesskey", 49 | ltr:"Left to right", 50 | rtl:"Right to left", 51 | link_list:"Link list" 52 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/advlist/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){var a=tinymce.each;tinymce.create("tinymce.plugins.AdvListPlugin",{init:function(b,c){var d=this;d.editor=b;function e(g){var f=[];a(g.split(/,/),function(h){f.push({title:"advlist."+(h=="default"?"def":h.replace(/-/g,"_")),styles:{listStyleType:h=="default"?"":h}})});return f}d.numlist=b.getParam("advlist_number_styles")||e("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");d.bullist=b.getParam("advlist_bullet_styles")||e("default,circle,disc,square")},createControl:function(d,b){var f=this,e,h;if(d=="numlist"||d=="bullist"){if(f[d][0].title=="advlist.def"){h=f[d][0]}function c(i,k){var j=true;a(k.styles,function(m,l){if(f.editor.dom.getStyle(i,l)!=m){j=false;return false}});return j}function g(){var k,i=f.editor,l=i.dom,j=i.selection;k=l.getParent(j.getNode(),"ol,ul");if(!k||k.nodeName==(d=="bullist"?"OL":"UL")||c(k,h)){i.execCommand(d=="bullist"?"InsertUnorderedList":"InsertOrderedList")}if(h){k=l.getParent(j.getNode(),"ol,ul");if(k){l.setStyles(k,h.styles);k.removeAttribute("_mce_style")}}}e=b.createSplitButton(d,{title:"advanced."+d+"_desc","class":"mce_"+d,onclick:function(){g()}});e.onRenderMenu.add(function(i,j){j.onShowMenu.add(function(){var m=f.editor.dom,l=m.getParent(f.editor.selection.getNode(),"ol,ul"),k;if(l||h){k=f[d];a(j.items,function(n){var o=true;n.setSelected(0);if(l&&!n.isDisabled()){a(k,function(p){if(p.id==n.id){if(!c(l,p)){o=false;return false}}});if(o){n.setSelected(1)}}});if(!l){j.items[h.id].setSelected(1)}}});j.add({id:f.editor.dom.uniqueId(),title:"advlist.types","class":"mceMenuItemTitle"}).setDisabled(1);a(f[d],function(k){k.id=f.editor.dom.uniqueId();j.add({id:k.id,title:k.title,onclick:function(){h=k;g()}})})});return e}},getInfo:function(){return{longname:"Advanced lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlist",tinymce.plugins.AdvListPlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/autoresize/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this;if(a.getParam("fullscreen_is_enabled")){return}function b(){var h=a.getDoc(),e=h.body,j=h.documentElement,g=tinymce.DOM,i=d.autoresize_min_height,f;f=tinymce.isIE?e.scrollHeight:j.offsetHeight;if(f>d.autoresize_min_height){i=f}g.setStyle(g.get(a.id+"_ifr"),"height",i+"px");if(d.throbbing){a.setProgressState(false);a.setProgressState(true)}}d.editor=a;d.autoresize_min_height=a.getElement().offsetHeight;a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onInit.add(function(f,e){f.setProgressState(true);d.throbbing=true;f.getBody().style.overflowY="hidden"});a.onLoadContent.add(function(f,e){b();setTimeout(function(){b();f.setProgressState(false);d.throbbing=false},1250)})}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/autosave/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.autosave',{ 2 | restore_content: "Restore auto-saved content", 3 | warning_message: "If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?" 4 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/contextmenu/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(d){var f=this,g;f.editor=d;f.onContextMenu=new tinymce.util.Dispatcher(this);d.onContextMenu.add(function(h,i){if(!i.ctrlKey){if(g){h.selection.setRng(g)}f._getMenu(h).showMenu(i.clientX,i.clientY);a.add(h.getDoc(),"click",function(j){e(h,j)});a.cancel(i)}});d.onRemove.add(function(){if(f._menu){f._menu.removeAll()}});function e(h,i){g=null;if(i&&i.button==2){g=h.selection.getRng();return}if(f._menu){f._menu.removeAll();f._menu.destroy();a.remove(h.getDoc(),"click",e)}}d.onMouseDown.add(e);d.onKeyDown.add(e)},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(h){var l=this,f=l._menu,i=h.selection,e=i.isCollapsed(),d=i.getNode()||h.getBody(),g,k,j;if(f){f.removeAll();f.destroy()}k=b.getPos(h.getContentAreaContainer());j=b.getPos(h.getContainer());f=h.controlManager.createDropMenu("contextmenu",{offset_x:k.x+h.getParam("contextmenu_offset_x",0),offset_y:k.y+h.getParam("contextmenu_offset_y",0),constrain:1});l._menu=f;f.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(e);f.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(e);f.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((d.nodeName=="A"&&!h.dom.getAttrib(d,"name"))||!e){f.addSeparator();f.add({title:"advanced.link_desc",icon:"link",cmd:h.plugins.advlink?"mceAdvLink":"mceLink",ui:true});f.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}f.addSeparator();f.add({title:"advanced.image_desc",icon:"image",cmd:h.plugins.advimage?"mceAdvImage":"mceImage",ui:true});f.addSeparator();g=f.addMenu({title:"contextmenu.align"});g.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});g.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});g.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});g.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});l.onContextMenu.dispatch(l,f,d,e);return f}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/directionality/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Directionality",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceDirectionLTR",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="ltr"){a.dom.setAttrib(d,"dir","ltr")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addCommand("mceDirectionRTL",function(){var d=a.dom.getParent(a.selection.getNode(),a.dom.isBlock);if(d){if(a.dom.getAttrib(d,"dir")!="rtl"){a.dom.setAttrib(d,"dir","rtl")}else{a.dom.setAttrib(d,"dir","")}}a.nodeChanged()});a.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});a.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});a.onNodeChange.add(c._nodeChange,c)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/directionality/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.Directionality', { 13 | init : function(ed, url) { 14 | var t = this; 15 | 16 | t.editor = ed; 17 | 18 | ed.addCommand('mceDirectionLTR', function() { 19 | var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); 20 | 21 | if (e) { 22 | if (ed.dom.getAttrib(e, "dir") != "ltr") 23 | ed.dom.setAttrib(e, "dir", "ltr"); 24 | else 25 | ed.dom.setAttrib(e, "dir", ""); 26 | } 27 | 28 | ed.nodeChanged(); 29 | }); 30 | 31 | ed.addCommand('mceDirectionRTL', function() { 32 | var e = ed.dom.getParent(ed.selection.getNode(), ed.dom.isBlock); 33 | 34 | if (e) { 35 | if (ed.dom.getAttrib(e, "dir") != "rtl") 36 | ed.dom.setAttrib(e, "dir", "rtl"); 37 | else 38 | ed.dom.setAttrib(e, "dir", ""); 39 | } 40 | 41 | ed.nodeChanged(); 42 | }); 43 | 44 | ed.addButton('ltr', {title : 'directionality.ltr_desc', cmd : 'mceDirectionLTR'}); 45 | ed.addButton('rtl', {title : 'directionality.rtl_desc', cmd : 'mceDirectionRTL'}); 46 | 47 | ed.onNodeChange.add(t._nodeChange, t); 48 | }, 49 | 50 | getInfo : function() { 51 | return { 52 | longname : 'Directionality', 53 | author : 'Moxiecode Systems AB', 54 | authorurl : 'http://tinymce.moxiecode.com', 55 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality', 56 | version : tinymce.majorVersion + "." + tinymce.minorVersion 57 | }; 58 | }, 59 | 60 | // Private methods 61 | 62 | _nodeChange : function(ed, cm, n) { 63 | var dom = ed.dom, dir; 64 | 65 | n = dom.getParent(n, dom.isBlock); 66 | if (!n) { 67 | cm.setDisabled('ltr', 1); 68 | cm.setDisabled('rtl', 1); 69 | return; 70 | } 71 | 72 | dir = dom.getAttrib(n, 'dir'); 73 | cm.setActive('ltr', dir == "ltr"); 74 | cm.setDisabled('ltr', 0); 75 | cm.setActive('rtl', dir == "rtl"); 76 | cm.setDisabled('rtl', 0); 77 | } 78 | }); 79 | 80 | // Register plugin 81 | tinymce.PluginManager.add('directionality', tinymce.plugins.Directionality); 82 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function(tinymce) { 12 | tinymce.create('tinymce.plugins.EmotionsPlugin', { 13 | init : function(ed, url) { 14 | // Register commands 15 | ed.addCommand('mceEmotion', function() { 16 | ed.windowManager.open({ 17 | file : url + '/emotions.htm', 18 | width : 250 + parseInt(ed.getLang('emotions.delta_width', 0)), 19 | height : 160 + parseInt(ed.getLang('emotions.delta_height', 0)), 20 | inline : 1 21 | }, { 22 | plugin_url : url 23 | }); 24 | }); 25 | 26 | // Register buttons 27 | ed.addButton('emotions', {title : 'emotions.emotions_desc', cmd : 'mceEmotion'}); 28 | }, 29 | 30 | getInfo : function() { 31 | return { 32 | longname : 'Emotions', 33 | author : 'Moxiecode Systems AB', 34 | authorurl : 'http://tinymce.moxiecode.com', 35 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions', 36 | version : tinymce.majorVersion + "." + tinymce.minorVersion 37 | }; 38 | } 39 | }); 40 | 41 | // Register plugin 42 | tinymce.PluginManager.add('emotions', tinymce.plugins.EmotionsPlugin); 43 | })(tinymce); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-cool.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-cool.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-cry.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-cry.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-embarassed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-embarassed.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-frown.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-frown.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-innocent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-innocent.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-kiss.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-kiss.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-laughing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-laughing.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-sealed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-sealed.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-smile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-smile.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-surprised.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-surprised.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-undecided.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-undecided.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-wink.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-wink.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/img/smiley-yell.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/emotions/img/smiley-yell.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/js/emotions.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var EmotionsDialog = { 4 | init : function(ed) { 5 | tinyMCEPopup.resizeToInnerSize(); 6 | }, 7 | 8 | insert : function(file, title) { 9 | var ed = tinyMCEPopup.editor, dom = ed.dom; 10 | 11 | tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', { 12 | src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file, 13 | alt : ed.getLang(title), 14 | title : ed.getLang(title), 15 | border : 0 16 | })); 17 | 18 | tinyMCEPopup.close(); 19 | } 20 | }; 21 | 22 | tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog); 23 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/emotions/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.emotions_dlg',{ 2 | title:"Insert emotion", 3 | desc:"Emotions", 4 | cool:"Cool", 5 | cry:"Cry", 6 | embarassed:"Embarassed", 7 | foot_in_mouth:"Foot in mouth", 8 | frown:"Frown", 9 | innocent:"Innocent", 10 | kiss:"Kiss", 11 | laughing:"Laughing", 12 | money_mouth:"Money mouth", 13 | sealed:"Sealed", 14 | smile:"Smile", 15 | surprised:"Surprised", 16 | tongue_out:"Tongue out", 17 | undecided:"Undecided", 18 | wink:"Wink", 19 | yell:"Yell" 20 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/example/dialog.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {#example_dlg.title} 5 | 6 | 7 | 8 | 9 | 10 |
    11 |

    Here is a example dialog.

    12 |

    Selected text:

    13 |

    Custom arg:

    14 | 15 |
    16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/example/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.PluginManager.requireLangPack("example");tinymce.create("tinymce.plugins.ExamplePlugin",{init:function(a,b){a.addCommand("mceExample",function(){a.windowManager.open({file:b+"/dialog.htm",width:320+parseInt(a.getLang("example.delta_width",0)),height:120+parseInt(a.getLang("example.delta_height",0)),inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("example",{title:"example.desc",cmd:"mceExample",image:b+"/img/example.gif"});a.onNodeChange.add(function(d,c,e){c.setActive("example",e.nodeName=="IMG")})},createControl:function(b,a){return null},getInfo:function(){return{longname:"Example plugin",author:"Some author",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/example",version:"1.0"}}});tinymce.PluginManager.add("example",tinymce.plugins.ExamplePlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/example/img/example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/example/img/example.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/example/js/dialog.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var ExampleDialog = { 4 | init : function() { 5 | var f = document.forms[0]; 6 | 7 | // Get the selected contents as text and place it in the input 8 | f.someval.value = tinyMCEPopup.editor.selection.getContent({format : 'text'}); 9 | f.somearg.value = tinyMCEPopup.getWindowArg('some_custom_arg'); 10 | }, 11 | 12 | insert : function() { 13 | // Insert the contents from the input into the document 14 | tinyMCEPopup.editor.execCommand('mceInsertContent', false, document.forms[0].someval.value); 15 | tinyMCEPopup.close(); 16 | } 17 | }; 18 | 19 | tinyMCEPopup.onInit.add(ExampleDialog.init, ExampleDialog); 20 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/example/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.example',{ 2 | desc : 'This is just a template button' 3 | }); 4 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/example/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.example_dlg',{ 2 | title : 'This is just a example title' 3 | }); 4 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/fullpage/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceFullPageProperties",function(){a.windowManager.open({file:b+"/fullpage.htm",width:430+parseInt(a.getLang("fullpage.delta_width",0)),height:495+parseInt(a.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:b,head_html:c.head})});a.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});a.onBeforeSetContent.add(c._setContent,c);a.onSetContent.add(c._setBodyAttribs,c);a.onGetContent.add(c._getContent,c)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_setBodyAttribs:function(d,a){var l,c,e,g,b,h,j,f=this.head.match(/body(.*?)>/i);if(f&&f[1]){l=f[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(l){for(c=0,e=l.length;c",a);h.head=f.substring(0,a+1);j=f.indexOf("\n'}h.head+=d.getParam("fullpage_default_doctype",'');h.head+="\n\n\n"+d.getParam("fullpage_default_title","Untitled document")+"\n";if(g=d.getParam("fullpage_default_encoding")){h.head+='\n'}if(g=d.getParam("fullpage_default_font_family")){i+="font-family: "+g+";"}if(g=d.getParam("fullpage_default_font_size")){i+="font-size: "+g+";"}if(g=d.getParam("fullpage_default_text_color")){i+="color: "+g+";"}h.head+="\n\n";h.foot="\n\n"}},_getContent:function(a,c){var b=this;if(!c.source_view||!a.getParam("fullpage_hide_in_source_view")){c.content=tinymce.trim(b.head)+"\n"+tinymce.trim(c.content)+"\n"+tinymce.trim(b.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/fullpage/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.fullpage_dlg',{ 2 | title:"Document properties", 3 | meta_tab:"General", 4 | appearance_tab:"Appearance", 5 | advanced_tab:"Advanced", 6 | meta_props:"Meta information", 7 | langprops:"Language and encoding", 8 | meta_title:"Title", 9 | meta_keywords:"Keywords", 10 | meta_description:"Description", 11 | meta_robots:"Robots", 12 | doctypes:"Doctype", 13 | langcode:"Language code", 14 | langdir:"Language direction", 15 | ltr:"Left to right", 16 | rtl:"Right to left", 17 | xml_pi:"XML declaration", 18 | encoding:"Character encoding", 19 | appearance_bgprops:"Background properties", 20 | appearance_marginprops:"Body margins", 21 | appearance_linkprops:"Link colors", 22 | appearance_textprops:"Text properties", 23 | bgcolor:"Background color", 24 | bgimage:"Background image", 25 | left_margin:"Left margin", 26 | right_margin:"Right margin", 27 | top_margin:"Top margin", 28 | bottom_margin:"Bottom margin", 29 | text_color:"Text color", 30 | font_size:"Font size", 31 | font_face:"Font face", 32 | link_color:"Link color", 33 | hover_color:"Hover color", 34 | visited_color:"Visited color", 35 | active_color:"Active color", 36 | textcolor:"Color", 37 | fontsize:"Font size", 38 | fontface:"Font family", 39 | meta_index_follow:"Index and follow the links", 40 | meta_index_nofollow:"Index and don't follow the links", 41 | meta_noindex_follow:"Do not index but follow the links", 42 | meta_noindex_nofollow:"Do not index and don\'t follow the links", 43 | appearance_style:"Stylesheet and style properties", 44 | stylesheet:"Stylesheet", 45 | style:"Style", 46 | author:"Author", 47 | copyright:"Copyright", 48 | add:"Add new element", 49 | remove:"Remove selected element", 50 | moveup:"Move selected element up", 51 | movedown:"Move selected element down", 52 | head_elements:"Head elements", 53 | info:"Information", 54 | add_title:"Title element", 55 | add_meta:"Meta element", 56 | add_script:"Script element", 57 | add_style:"Style element", 58 | add_link:"Link element", 59 | add_base:"Base element", 60 | add_comment:"Comment node", 61 | title_element:"Title element", 62 | script_element:"Script element", 63 | style_element:"Style element", 64 | base_element:"Base element", 65 | link_element:"Link element", 66 | meta_element:"Meta element", 67 | comment_element:"Comment", 68 | src:"Src", 69 | language:"Language", 70 | href:"Href", 71 | target:"Target", 72 | type:"Type", 73 | charset:"Charset", 74 | defer:"Defer", 75 | media:"Media", 76 | properties:"Properties", 77 | name:"Name", 78 | value:"Value", 79 | content:"Content", 80 | rel:"Rel", 81 | rev:"Rev", 82 | hreflang:"Href lang", 83 | general_props:"General", 84 | advanced_props:"Advanced" 85 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/iespell/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/iespell/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.IESpell', { 13 | init : function(ed, url) { 14 | var t = this, sp; 15 | 16 | if (!tinymce.isIE) 17 | return; 18 | 19 | t.editor = ed; 20 | 21 | // Register commands 22 | ed.addCommand('mceIESpell', function() { 23 | try { 24 | sp = new ActiveXObject("ieSpell.ieSpellExtension"); 25 | sp.CheckDocumentNode(ed.getDoc().documentElement); 26 | } catch (e) { 27 | if (e.number == -2146827859) { 28 | ed.windowManager.confirm(ed.getLang("iespell.download"), function(s) { 29 | if (s) 30 | window.open('http://www.iespell.com/download.php', 'ieSpellDownload', ''); 31 | }); 32 | } else 33 | ed.windowManager.alert("Error Loading ieSpell: Exception " + e.number); 34 | } 35 | }); 36 | 37 | // Register buttons 38 | ed.addButton('iespell', {title : 'iespell.iespell_desc', cmd : 'mceIESpell'}); 39 | }, 40 | 41 | getInfo : function() { 42 | return { 43 | longname : 'IESpell (IE Only)', 44 | author : 'Moxiecode Systems AB', 45 | authorurl : 'http://tinymce.moxiecode.com', 46 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell', 47 | version : tinymce.majorVersion + "." + tinymce.minorVersion 48 | }; 49 | } 50 | }); 51 | 52 | // Register plugin 53 | tinymce.PluginManager.add('iespell', tinymce.plugins.IESpell); 54 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/insertdatetime/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length'; 64 | 65 | h += ' ':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/nonbreaking/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.Nonbreaking', { 13 | init : function(ed, url) { 14 | var t = this; 15 | 16 | t.editor = ed; 17 | 18 | // Register commands 19 | ed.addCommand('mceNonBreaking', function() { 20 | ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? ' ' : ' '); 21 | }); 22 | 23 | // Register buttons 24 | ed.addButton('nonbreaking', {title : 'nonbreaking.nonbreaking_desc', cmd : 'mceNonBreaking'}); 25 | 26 | if (ed.getParam('nonbreaking_force_tab')) { 27 | ed.onKeyDown.add(function(ed, e) { 28 | if (tinymce.isIE && e.keyCode == 9) { 29 | ed.execCommand('mceNonBreaking'); 30 | ed.execCommand('mceNonBreaking'); 31 | ed.execCommand('mceNonBreaking'); 32 | tinymce.dom.Event.cancel(e); 33 | } 34 | }); 35 | } 36 | }, 37 | 38 | getInfo : function() { 39 | return { 40 | longname : 'Nonbreaking space', 41 | author : 'Moxiecode Systems AB', 42 | authorurl : 'http://tinymce.moxiecode.com', 43 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', 44 | version : tinymce.majorVersion + "." + tinymce.minorVersion 45 | }; 46 | } 47 | 48 | // Private methods 49 | }); 50 | 51 | // Register plugin 52 | tinymce.PluginManager.add('nonbreaking', tinymce.plugins.Nonbreaking); 53 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/noneditable/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(h,g,k){var j,i;j=h.dom.getParent(h.selection.getStart(),function(l){return h.dom.hasClass(l,b)});i=h.dom.getParent(h.selection.getEnd(),function(l){return h.dom.hasClass(l,b)});if(j||i){f._setDisabled(1);return false}else{f._setDisabled(0)}})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_block:function(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/noneditable/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | var Event = tinymce.dom.Event; 13 | 14 | tinymce.create('tinymce.plugins.NonEditablePlugin', { 15 | init : function(ed, url) { 16 | var t = this, editClass, nonEditClass; 17 | 18 | t.editor = ed; 19 | editClass = ed.getParam("noneditable_editable_class", "mceEditable"); 20 | nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable"); 21 | 22 | ed.onNodeChange.addToTop(function(ed, cm, n) { 23 | var sc, ec; 24 | 25 | // Block if start or end is inside a non editable element 26 | sc = ed.dom.getParent(ed.selection.getStart(), function(n) { 27 | return ed.dom.hasClass(n, nonEditClass); 28 | }); 29 | 30 | ec = ed.dom.getParent(ed.selection.getEnd(), function(n) { 31 | return ed.dom.hasClass(n, nonEditClass); 32 | }); 33 | 34 | // Block or unblock 35 | if (sc || ec) { 36 | t._setDisabled(1); 37 | return false; 38 | } else 39 | t._setDisabled(0); 40 | }); 41 | }, 42 | 43 | getInfo : function() { 44 | return { 45 | longname : 'Non editable elements', 46 | author : 'Moxiecode Systems AB', 47 | authorurl : 'http://tinymce.moxiecode.com', 48 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable', 49 | version : tinymce.majorVersion + "." + tinymce.minorVersion 50 | }; 51 | }, 52 | 53 | _block : function(ed, e) { 54 | var k = e.keyCode; 55 | 56 | // Don't block arrow keys, pg up/down, and F1-F12 57 | if ((k > 32 && k < 41) || (k > 111 && k < 124)) 58 | return; 59 | 60 | return Event.cancel(e); 61 | }, 62 | 63 | _setDisabled : function(s) { 64 | var t = this, ed = t.editor; 65 | 66 | tinymce.each(ed.controlManager.controls, function(c) { 67 | c.setDisabled(s); 68 | }); 69 | 70 | if (s !== t.disabled) { 71 | if (s) { 72 | ed.onKeyDown.addToTop(t._block); 73 | ed.onKeyPress.addToTop(t._block); 74 | ed.onKeyUp.addToTop(t._block); 75 | ed.onPaste.addToTop(t._block); 76 | } else { 77 | ed.onKeyDown.remove(t._block); 78 | ed.onKeyPress.remove(t._block); 79 | ed.onKeyUp.remove(t._block); 80 | ed.onPaste.remove(t._block); 81 | } 82 | 83 | t.disabled = s; 84 | } 85 | } 86 | }); 87 | 88 | // Register plugin 89 | tinymce.PluginManager.add('noneditable', tinymce.plugins.NonEditablePlugin); 90 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/pagebreak/css/content.css: -------------------------------------------------------------------------------- 1 | .mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;} 2 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/pagebreak/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.settings.content_css!==false){b.dom.loadCSS(d+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/pagebreak/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.PageBreakPlugin', { 13 | init : function(ed, url) { 14 | var pb = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), pbRE; 15 | 16 | pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g'); 17 | 18 | // Register commands 19 | ed.addCommand('mcePageBreak', function() { 20 | ed.execCommand('mceInsertContent', 0, pb); 21 | }); 22 | 23 | // Register buttons 24 | ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls}); 25 | 26 | ed.onInit.add(function() { 27 | if (ed.settings.content_css !== false) 28 | ed.dom.loadCSS(url + "/css/content.css"); 29 | 30 | if (ed.theme.onResolveName) { 31 | ed.theme.onResolveName.add(function(th, o) { 32 | if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls)) 33 | o.name = 'pagebreak'; 34 | }); 35 | } 36 | }); 37 | 38 | ed.onClick.add(function(ed, e) { 39 | e = e.target; 40 | 41 | if (e.nodeName === 'IMG' && ed.dom.hasClass(e, cls)) 42 | ed.selection.select(e); 43 | }); 44 | 45 | ed.onNodeChange.add(function(ed, cm, n) { 46 | cm.setActive('pagebreak', n.nodeName === 'IMG' && ed.dom.hasClass(n, cls)); 47 | }); 48 | 49 | ed.onBeforeSetContent.add(function(ed, o) { 50 | o.content = o.content.replace(pbRE, pb); 51 | }); 52 | 53 | ed.onPostProcess.add(function(ed, o) { 54 | if (o.get) 55 | o.content = o.content.replace(/]+>/g, function(im) { 56 | if (im.indexOf('class="mcePageBreak') !== -1) 57 | im = sep; 58 | 59 | return im; 60 | }); 61 | }); 62 | }, 63 | 64 | getInfo : function() { 65 | return { 66 | longname : 'PageBreak', 67 | author : 'Moxiecode Systems AB', 68 | authorurl : 'http://tinymce.moxiecode.com', 69 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak', 70 | version : tinymce.majorVersion + "." + tinymce.minorVersion 71 | }; 72 | } 73 | }); 74 | 75 | // Register plugin 76 | tinymce.PluginManager.add('pagebreak', tinymce.plugins.PageBreakPlugin); 77 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/pagebreak/img/pagebreak.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/pagebreak/img/pagebreak.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/pagebreak/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/pagebreak/img/trans.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/paste/js/pastetext.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var PasteTextDialog = { 4 | init : function() { 5 | this.resize(); 6 | }, 7 | 8 | insert : function() { 9 | var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; 10 | 11 | // Convert linebreaks into paragraphs 12 | if (document.getElementById('linebreaks').checked) { 13 | lines = h.split(/\r?\n/); 14 | if (lines.length > 1) { 15 | h = ''; 16 | tinymce.each(lines, function(row) { 17 | h += '

    ' + row + '

    '; 18 | }); 19 | } 20 | } 21 | 22 | tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); 23 | tinyMCEPopup.close(); 24 | }, 25 | 26 | resize : function() { 27 | var vp = tinyMCEPopup.dom.getViewPort(window), el; 28 | 29 | el = document.getElementById('content'); 30 | 31 | el.style.width = (vp.w - 20) + 'px'; 32 | el.style.height = (vp.h - 90) + 'px'; 33 | } 34 | }; 35 | 36 | tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); 37 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/paste/js/pasteword.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var PasteWordDialog = { 4 | init : function() { 5 | var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; 6 | 7 | // Create iframe 8 | el.innerHTML = ''; 9 | ifr = document.getElementById('iframe'); 10 | doc = ifr.contentWindow.document; 11 | 12 | // Force absolute CSS urls 13 | css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; 14 | css = css.concat(tinymce.explode(ed.settings.content_css) || []); 15 | tinymce.each(css, function(u) { 16 | cssHTML += ''; 17 | }); 18 | 19 | // Write content into iframe 20 | doc.open(); 21 | doc.write('' + cssHTML + ''); 22 | doc.close(); 23 | 24 | doc.designMode = 'on'; 25 | this.resize(); 26 | 27 | window.setTimeout(function() { 28 | ifr.contentWindow.focus(); 29 | }, 10); 30 | }, 31 | 32 | insert : function() { 33 | var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; 34 | 35 | tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); 36 | tinyMCEPopup.close(); 37 | }, 38 | 39 | resize : function() { 40 | var vp = tinyMCEPopup.dom.getViewPort(window), el; 41 | 42 | el = document.getElementById('iframe'); 43 | 44 | if (el) { 45 | el.style.width = (vp.w - 20) + 'px'; 46 | el.style.height = (vp.h - 90) + 'px'; 47 | } 48 | } 49 | }; 50 | 51 | tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); 52 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/paste/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.paste_dlg',{ 2 | text_title:"Use CTRL+V on your keyboard to paste the text into the window.", 3 | text_linebreaks:"Keep linebreaks", 4 | word_title:"Use CTRL+V on your keyboard to paste the text into the window." 5 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/paste/pastetext.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#paste.paste_text_desc} 4 | 5 | 6 | 7 | 8 |
    9 |
    {#paste.paste_text_desc}
    10 | 11 |
    12 | 13 |
    14 | 15 |
    16 | 17 |
    {#paste_dlg.text_title}
    18 | 19 | 20 | 21 |
    22 | 23 | 24 |
    25 |
    26 | 27 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/paste/pasteword.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#paste.paste_word_desc} 4 | 5 | 6 | 7 | 8 |
    9 |
    {#paste.paste_word_desc}
    10 | 11 |
    {#paste_dlg.word_title}
    12 | 13 |
    14 | 15 |
    16 | 17 | 18 |
    19 |
    20 | 21 | 22 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/preview/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/preview/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.Preview', { 13 | init : function(ed, url) { 14 | var t = this, css = tinymce.explode(ed.settings.content_css); 15 | 16 | t.editor = ed; 17 | 18 | // Force absolute CSS urls 19 | tinymce.each(css, function(u, k) { 20 | css[k] = ed.documentBaseURI.toAbsolute(u); 21 | }); 22 | 23 | ed.addCommand('mcePreview', function() { 24 | ed.windowManager.open({ 25 | file : ed.getParam("plugin_preview_pageurl", url + "/preview.html"), 26 | width : parseInt(ed.getParam("plugin_preview_width", "550")), 27 | height : parseInt(ed.getParam("plugin_preview_height", "600")), 28 | resizable : "yes", 29 | scrollbars : "yes", 30 | popup_css : css ? css.join(',') : ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css"), 31 | inline : ed.getParam("plugin_preview_inline", 1) 32 | }, { 33 | base : ed.documentBaseURI.getURI() 34 | }); 35 | }); 36 | 37 | ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'}); 38 | }, 39 | 40 | getInfo : function() { 41 | return { 42 | longname : 'Preview', 43 | author : 'Moxiecode Systems AB', 44 | authorurl : 'http://tinymce.moxiecode.com', 45 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview', 46 | version : tinymce.majorVersion + "." + tinymce.minorVersion 47 | }; 48 | } 49 | }); 50 | 51 | // Register plugin 52 | tinymce.PluginManager.add('preview', tinymce.plugins.Preview); 53 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/preview/example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 18 | Example of a custom preview page 19 | 20 | 21 | 22 | Editor contents:
    23 |
    24 | 25 |
    26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/preview/jscripts/embed.js: -------------------------------------------------------------------------------- 1 | /** 2 | * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. 3 | */ 4 | 5 | function writeFlash(p) { 6 | writeEmbed( 7 | 'D27CDB6E-AE6D-11cf-96B8-444553540000', 8 | 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', 9 | 'application/x-shockwave-flash', 10 | p 11 | ); 12 | } 13 | 14 | function writeShockWave(p) { 15 | writeEmbed( 16 | '166B1BCA-3F9C-11CF-8075-444553540000', 17 | 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', 18 | 'application/x-director', 19 | p 20 | ); 21 | } 22 | 23 | function writeQuickTime(p) { 24 | writeEmbed( 25 | '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', 26 | 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', 27 | 'video/quicktime', 28 | p 29 | ); 30 | } 31 | 32 | function writeRealMedia(p) { 33 | writeEmbed( 34 | 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', 35 | 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', 36 | 'audio/x-pn-realaudio-plugin', 37 | p 38 | ); 39 | } 40 | 41 | function writeWindowsMedia(p) { 42 | p.url = p.src; 43 | writeEmbed( 44 | '6BF52A52-394A-11D3-B153-00C04F79FAA6', 45 | 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', 46 | 'application/x-mplayer2', 47 | p 48 | ); 49 | } 50 | 51 | function writeEmbed(cls, cb, mt, p) { 52 | var h = '', n; 53 | 54 | h += ''; 64 | 65 | h += ' 2 | 3 | 4 | 5 | 6 | 10 | {#preview.preview_desc} 11 | 12 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/print/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/print/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.Print', { 13 | init : function(ed, url) { 14 | ed.addCommand('mcePrint', function() { 15 | ed.getWin().print(); 16 | }); 17 | 18 | ed.addButton('print', {title : 'print.print_desc', cmd : 'mcePrint'}); 19 | }, 20 | 21 | getInfo : function() { 22 | return { 23 | longname : 'Print', 24 | author : 'Moxiecode Systems AB', 25 | authorurl : 'http://tinymce.moxiecode.com', 26 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print', 27 | version : tinymce.majorVersion + "." + tinymce.minorVersion 28 | }; 29 | } 30 | }); 31 | 32 | // Register plugin 33 | tinymce.PluginManager.add('print', tinymce.plugins.Print); 34 | })(); 35 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/save/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/searchreplace/css/searchreplace.css: -------------------------------------------------------------------------------- 1 | .panel_wrapper {height:85px;} 2 | .panel_wrapper div.current {height:85px;} 3 | 4 | /* IE */ 5 | * html .panel_wrapper {height:100px;} 6 | * html .panel_wrapper div.current {height:100px;} 7 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/searchreplace/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/searchreplace/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.SearchReplacePlugin', { 13 | init : function(ed, url) { 14 | function open(m) { 15 | ed.windowManager.open({ 16 | file : url + '/searchreplace.htm', 17 | width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)), 18 | height : 170 + parseInt(ed.getLang('searchreplace.delta_height', 0)), 19 | inline : 1, 20 | auto_focus : 0 21 | }, { 22 | mode : m, 23 | search_string : ed.selection.getContent({format : 'text'}), 24 | plugin_url : url 25 | }); 26 | }; 27 | 28 | // Register commands 29 | ed.addCommand('mceSearch', function() { 30 | open('search'); 31 | }); 32 | 33 | ed.addCommand('mceReplace', function() { 34 | open('replace'); 35 | }); 36 | 37 | // Register buttons 38 | ed.addButton('search', {title : 'searchreplace.search_desc', cmd : 'mceSearch'}); 39 | ed.addButton('replace', {title : 'searchreplace.replace_desc', cmd : 'mceReplace'}); 40 | 41 | ed.addShortcut('ctrl+f', 'searchreplace.search_desc', 'mceSearch'); 42 | }, 43 | 44 | getInfo : function() { 45 | return { 46 | longname : 'Search/Replace', 47 | author : 'Moxiecode Systems AB', 48 | authorurl : 'http://tinymce.moxiecode.com', 49 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace', 50 | version : tinymce.majorVersion + "." + tinymce.minorVersion 51 | }; 52 | } 53 | }); 54 | 55 | // Register plugin 56 | tinymce.PluginManager.add('searchreplace', tinymce.plugins.SearchReplacePlugin); 57 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/searchreplace/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.searchreplace_dlg',{ 2 | searchnext_desc:"Find again", 3 | notfound:"The search has been completed. The search string could not be found.", 4 | search_title:"Find", 5 | replace_title:"Find/Replace", 6 | allreplaced:"All occurrences of the search string were replaced.", 7 | findwhat:"Find what", 8 | replacewith:"Replace with", 9 | direction:"Direction", 10 | up:"Up", 11 | down:"Down", 12 | mcase:"Match case", 13 | findnext:"Find next", 14 | replace:"Replace", 15 | replaceall:"Replace all" 16 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/spellchecker/css/content.css: -------------------------------------------------------------------------------- 1 | .mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;} 2 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/spellchecker/editor_plugin.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/spellchecker/editor_plugin.js -------------------------------------------------------------------------------- /public/tiny_mce/plugins/spellchecker/editor_plugin_src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/spellchecker/editor_plugin_src.js -------------------------------------------------------------------------------- /public/tiny_mce/plugins/spellchecker/img/wline.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/spellchecker/img/wline.gif -------------------------------------------------------------------------------- /public/tiny_mce/plugins/style/css/props.css: -------------------------------------------------------------------------------- 1 | #text_font {width:250px;} 2 | #text_size {width:70px;} 3 | .mceAddSelectValue {background:#DDD;} 4 | select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} 5 | #box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} 6 | #positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} 7 | #positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} 8 | .panel_wrapper div.current {padding-top:10px;height:230px;} 9 | .delim {border-left:1px solid gray;} 10 | .tdelim {border-bottom:1px solid gray;} 11 | #block_display {width:145px;} 12 | #list_type {width:115px;} 13 | .disabled {background:#EEE;} 14 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/style/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:320+parseInt(a.getLang("style.delta_height",0)),inline:1},{plugin_url:b,style_text:a.selection.getNode().style.cssText})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/style/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.StylePlugin', { 13 | init : function(ed, url) { 14 | // Register commands 15 | ed.addCommand('mceStyleProps', function() { 16 | ed.windowManager.open({ 17 | file : url + '/props.htm', 18 | width : 480 + parseInt(ed.getLang('style.delta_width', 0)), 19 | height : 320 + parseInt(ed.getLang('style.delta_height', 0)), 20 | inline : 1 21 | }, { 22 | plugin_url : url, 23 | style_text : ed.selection.getNode().style.cssText 24 | }); 25 | }); 26 | 27 | ed.addCommand('mceSetElementStyle', function(ui, v) { 28 | if (e = ed.selection.getNode()) { 29 | ed.dom.setAttrib(e, 'style', v); 30 | ed.execCommand('mceRepaint'); 31 | } 32 | }); 33 | 34 | ed.onNodeChange.add(function(ed, cm, n) { 35 | cm.setDisabled('styleprops', n.nodeName === 'BODY'); 36 | }); 37 | 38 | // Register buttons 39 | ed.addButton('styleprops', {title : 'style.desc', cmd : 'mceStyleProps'}); 40 | }, 41 | 42 | getInfo : function() { 43 | return { 44 | longname : 'Style', 45 | author : 'Moxiecode Systems AB', 46 | authorurl : 'http://tinymce.moxiecode.com', 47 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', 48 | version : tinymce.majorVersion + "." + tinymce.minorVersion 49 | }; 50 | } 51 | }); 52 | 53 | // Register plugin 54 | tinymce.PluginManager.add('style', tinymce.plugins.StylePlugin); 55 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/style/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.style_dlg',{ 2 | title:"Edit CSS Style", 3 | apply:"Apply", 4 | text_tab:"Text", 5 | background_tab:"Background", 6 | block_tab:"Block", 7 | box_tab:"Box", 8 | border_tab:"Border", 9 | list_tab:"List", 10 | positioning_tab:"Positioning", 11 | text_props:"Text", 12 | text_font:"Font", 13 | text_size:"Size", 14 | text_weight:"Weight", 15 | text_style:"Style", 16 | text_variant:"Variant", 17 | text_lineheight:"Line height", 18 | text_case:"Case", 19 | text_color:"Color", 20 | text_decoration:"Decoration", 21 | text_overline:"overline", 22 | text_underline:"underline", 23 | text_striketrough:"strikethrough", 24 | text_blink:"blink", 25 | text_none:"none", 26 | background_color:"Background color", 27 | background_image:"Background image", 28 | background_repeat:"Repeat", 29 | background_attachment:"Attachment", 30 | background_hpos:"Horizontal position", 31 | background_vpos:"Vertical position", 32 | block_wordspacing:"Word spacing", 33 | block_letterspacing:"Letter spacing", 34 | block_vertical_alignment:"Vertical alignment", 35 | block_text_align:"Text align", 36 | block_text_indent:"Text indent", 37 | block_whitespace:"Whitespace", 38 | block_display:"Display", 39 | box_width:"Width", 40 | box_height:"Height", 41 | box_float:"Float", 42 | box_clear:"Clear", 43 | padding:"Padding", 44 | same:"Same for all", 45 | top:"Top", 46 | right:"Right", 47 | bottom:"Bottom", 48 | left:"Left", 49 | margin:"Margin", 50 | style:"Style", 51 | width:"Width", 52 | height:"Height", 53 | color:"Color", 54 | list_type:"Type", 55 | bullet_image:"Bullet image", 56 | position:"Position", 57 | positioning_type:"Type", 58 | visibility:"Visibility", 59 | zindex:"Z-index", 60 | overflow:"Overflow", 61 | placement:"Placement", 62 | clip:"Clip" 63 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/tabfocus/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/table/css/cell.css: -------------------------------------------------------------------------------- 1 | /* CSS file for cell dialog in the table plugin */ 2 | 3 | .panel_wrapper div.current { 4 | height: 200px; 5 | } 6 | 7 | .advfield { 8 | width: 200px; 9 | } 10 | 11 | #action { 12 | margin-bottom: 3px; 13 | } 14 | 15 | #class { 16 | width: 150px; 17 | } -------------------------------------------------------------------------------- /public/tiny_mce/plugins/table/css/row.css: -------------------------------------------------------------------------------- 1 | /* CSS file for row dialog in the table plugin */ 2 | 3 | .panel_wrapper div.current { 4 | height: 200px; 5 | } 6 | 7 | .advfield { 8 | width: 200px; 9 | } 10 | 11 | #action { 12 | margin-bottom: 3px; 13 | } 14 | 15 | #rowtype,#align,#valign,#class,#height { 16 | width: 150px; 17 | } 18 | 19 | #height { 20 | width: 50px; 21 | } 22 | 23 | .col2 { 24 | padding-left: 20px; 25 | } 26 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/table/css/table.css: -------------------------------------------------------------------------------- 1 | /* CSS file for table dialog in the table plugin */ 2 | 3 | .panel_wrapper div.current { 4 | height: 245px; 5 | } 6 | 7 | .advfield { 8 | width: 200px; 9 | } 10 | 11 | #class { 12 | width: 150px; 13 | } 14 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/table/js/merge_cells.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var MergeCellsDialog = { 4 | init : function() { 5 | var f = document.forms[0]; 6 | 7 | f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1); 8 | f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1); 9 | }, 10 | 11 | merge : function() { 12 | var func, f = document.forms[0]; 13 | 14 | tinyMCEPopup.restoreSelection(); 15 | 16 | func = tinyMCEPopup.getWindowArg('onaction'); 17 | 18 | func({ 19 | cols : f.numcols.value, 20 | rows : f.numrows.value 21 | }); 22 | 23 | tinyMCEPopup.close(); 24 | } 25 | }; 26 | 27 | tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog); 28 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/table/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.table_dlg',{ 2 | general_tab:"General", 3 | advanced_tab:"Advanced", 4 | general_props:"General properties", 5 | advanced_props:"Advanced properties", 6 | rowtype:"Row in table part", 7 | title:"Insert/Modify table", 8 | width:"Width", 9 | height:"Height", 10 | cols:"Cols", 11 | rows:"Rows", 12 | cellspacing:"Cellspacing", 13 | cellpadding:"Cellpadding", 14 | border:"Border", 15 | align:"Alignment", 16 | align_default:"Default", 17 | align_left:"Left", 18 | align_right:"Right", 19 | align_middle:"Center", 20 | row_title:"Table row properties", 21 | cell_title:"Table cell properties", 22 | cell_type:"Cell type", 23 | valign:"Vertical alignment", 24 | align_top:"Top", 25 | align_bottom:"Bottom", 26 | bordercolor:"Border color", 27 | bgcolor:"Background color", 28 | merge_cells_title:"Merge table cells", 29 | id:"Id", 30 | style:"Style", 31 | langdir:"Language direction", 32 | langcode:"Language code", 33 | mime:"Target MIME type", 34 | ltr:"Left to right", 35 | rtl:"Right to left", 36 | bgimage:"Background image", 37 | summary:"Summary", 38 | td:"Data", 39 | th:"Header", 40 | cell_cell:"Update current cell", 41 | cell_row:"Update all cells in row", 42 | cell_all:"Update all cells in table", 43 | row_row:"Update current row", 44 | row_odd:"Update odd rows in table", 45 | row_even:"Update even rows in table", 46 | row_all:"Update all rows in table", 47 | thead:"Table Head", 48 | tbody:"Table Body", 49 | tfoot:"Table Foot", 50 | scope:"Scope", 51 | rowgroup:"Row Group", 52 | colgroup:"Col Group", 53 | col_limit:"You've exceeded the maximum number of columns of {$cols}.", 54 | row_limit:"You've exceeded the maximum number of rows of {$rows}.", 55 | cell_limit:"You've exceeded the maximum number of cells of {$cells}.", 56 | missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.", 57 | caption:"Table caption", 58 | frame:"Frame", 59 | frame_none:"none", 60 | frame_groups:"groups", 61 | frame_rows:"rows", 62 | frame_cols:"cols", 63 | frame_all:"all", 64 | rules:"Rules", 65 | rules_void:"void", 66 | rules_above:"above", 67 | rules_below:"below", 68 | rules_hsides:"hsides", 69 | rules_lhs:"lhs", 70 | rules_rhs:"rhs", 71 | rules_vsides:"vsides", 72 | rules_box:"box", 73 | rules_border:"border" 74 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/table/merge_cells.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {#table_dlg.merge_cells_title} 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    13 | {#table_dlg.merge_cells_title} 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
    {#table_dlg.cols}:
    {#table_dlg.rows}:
    24 |
    25 | 26 |
    27 | 28 | 29 |
    30 |
    31 | 32 | 33 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/template/blank.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | blank_page 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/template/css/template.css: -------------------------------------------------------------------------------- 1 | #frmbody { 2 | padding: 10px; 3 | background-color: #FFF; 4 | border: 1px solid #CCC; 5 | } 6 | 7 | .frmRow { 8 | margin-bottom: 10px; 9 | } 10 | 11 | #templatesrc { 12 | border: none; 13 | width: 320px; 14 | height: 240px; 15 | } 16 | 17 | .title { 18 | padding-bottom: 5px; 19 | } 20 | 21 | .mceActionPanel { 22 | padding-top: 5px; 23 | } 24 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/template/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.template_dlg',{ 2 | title:"Templates", 3 | label:"Template", 4 | desc_label:"Description", 5 | desc:"Insert predefined template content", 6 | select:"Select a template", 7 | preview:"Preview", 8 | warning:"Warning: Updating a template with a different one may cause data loss.", 9 | mdate_format:"%Y-%m-%d %H:%M:%S", 10 | cdate_format:"%Y-%m-%d %H:%M:%S", 11 | months_long:"January,February,March,April,May,June,July,August,September,October,November,December", 12 | months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", 13 | day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday", 14 | day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun" 15 | }); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/template/template.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#template_dlg.title} 4 | 5 | 6 | 7 | 8 | 9 |
    10 |
    11 |
    {#template_dlg.desc}
    12 |
    13 | 16 |
    17 |
    18 |
    19 |
    20 | {#template_dlg.preview} 21 | 22 |
    23 |
    24 | 25 |
    26 | 27 | 28 |
    29 |
    30 | 31 | 32 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/visualchars/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state&&e.format!="raw"&&!e.draft){c.state=true;c._toggleVisualChars(false)}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(m){var p=this,k=p.editor,a,g,j,n=k.getDoc(),o=k.getBody(),l,q=k.selection,e,c,f;p.state=!p.state;k.controlManager.setActive("visualchars",p.state);if(m){f=q.getBookmark()}if(p.state){a=[];tinymce.walk(o,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(g=0;g$1');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/visualchars/editor_plugin_src.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editor_plugin_src.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | (function() { 12 | tinymce.create('tinymce.plugins.VisualChars', { 13 | init : function(ed, url) { 14 | var t = this; 15 | 16 | t.editor = ed; 17 | 18 | // Register commands 19 | ed.addCommand('mceVisualChars', t._toggleVisualChars, t); 20 | 21 | // Register buttons 22 | ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'}); 23 | 24 | ed.onBeforeGetContent.add(function(ed, o) { 25 | if (t.state && o.format != 'raw' && !o.draft) { 26 | t.state = true; 27 | t._toggleVisualChars(false); 28 | } 29 | }); 30 | }, 31 | 32 | getInfo : function() { 33 | return { 34 | longname : 'Visual characters', 35 | author : 'Moxiecode Systems AB', 36 | authorurl : 'http://tinymce.moxiecode.com', 37 | infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars', 38 | version : tinymce.majorVersion + "." + tinymce.minorVersion 39 | }; 40 | }, 41 | 42 | // Private methods 43 | 44 | _toggleVisualChars : function(bookmark) { 45 | var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm; 46 | 47 | t.state = !t.state; 48 | ed.controlManager.setActive('visualchars', t.state); 49 | 50 | if (bookmark) 51 | bm = s.getBookmark(); 52 | 53 | if (t.state) { 54 | nl = []; 55 | tinymce.walk(b, function(n) { 56 | if (n.nodeType == 3 && n.nodeValue && n.nodeValue.indexOf('\u00a0') != -1) 57 | nl.push(n); 58 | }, 'childNodes'); 59 | 60 | for (i = 0; i < nl.length; i++) { 61 | nv = nl[i].nodeValue; 62 | nv = nv.replace(/(\u00a0)/g, '$1'); 63 | 64 | div = ed.dom.create('div', null, nv); 65 | while (node = div.lastChild) 66 | ed.dom.insertAfter(node, nl[i]); 67 | 68 | ed.dom.remove(nl[i]); 69 | } 70 | } else { 71 | nl = ed.dom.select('span.mceItemNbsp', b); 72 | 73 | for (i = nl.length - 1; i >= 0; i--) 74 | ed.dom.remove(nl[i], 1); 75 | } 76 | 77 | s.moveToBookmark(bm); 78 | } 79 | }); 80 | 81 | // Register plugin 82 | tinymce.PluginManager.add('visualchars', tinymce.plugins.VisualChars); 83 | })(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/wordcount/editor_plugin.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/wordcount/editor_plugin.js -------------------------------------------------------------------------------- /public/tiny_mce/plugins/wordcount/editor_plugin_src.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/plugins/wordcount/editor_plugin_src.js -------------------------------------------------------------------------------- /public/tiny_mce/plugins/xhtmlxtras/css/attributes.css: -------------------------------------------------------------------------------- 1 | .panel_wrapper div.current { 2 | height: 290px; 3 | } 4 | 5 | #id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { 6 | width: 200px; 7 | } 8 | 9 | #events_panel input { 10 | width: 200px; 11 | } 12 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/xhtmlxtras/css/popup.css: -------------------------------------------------------------------------------- 1 | input.field, select.field {width:200px;} 2 | input.picker {width:179px; margin-left: 5px;} 3 | input.disabled {border-color:#F2F2F2;} 4 | img.picker {vertical-align:text-bottom; cursor:pointer;} 5 | h1 {padding: 0 0 5px 0;} 6 | .panel_wrapper div.current {height:160px;} 7 | #xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;} 8 | a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;} 9 | #datetime {width:180px;} 10 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/xhtmlxtras/editor_plugin.js: -------------------------------------------------------------------------------- 1 | (function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); -------------------------------------------------------------------------------- /public/tiny_mce/plugins/xhtmlxtras/js/abbr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * abbr.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | function init() { 12 | SXE.initElementDialog('abbr'); 13 | if (SXE.currentAction == "update") { 14 | SXE.showRemoveButton(); 15 | } 16 | } 17 | 18 | function insertAbbr() { 19 | SXE.insertElement('abbr'); 20 | tinyMCEPopup.close(); 21 | } 22 | 23 | function removeAbbr() { 24 | SXE.removeElement('abbr'); 25 | tinyMCEPopup.close(); 26 | } 27 | 28 | tinyMCEPopup.onInit.add(init); 29 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/xhtmlxtras/js/acronym.js: -------------------------------------------------------------------------------- 1 | /** 2 | * acronym.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | function init() { 12 | SXE.initElementDialog('acronym'); 13 | if (SXE.currentAction == "update") { 14 | SXE.showRemoveButton(); 15 | } 16 | } 17 | 18 | function insertAcronym() { 19 | SXE.insertElement('acronym'); 20 | tinyMCEPopup.close(); 21 | } 22 | 23 | function removeAcronym() { 24 | SXE.removeElement('acronym'); 25 | tinyMCEPopup.close(); 26 | } 27 | 28 | tinyMCEPopup.onInit.add(init); 29 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/xhtmlxtras/js/cite.js: -------------------------------------------------------------------------------- 1 | /** 2 | * cite.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | function init() { 12 | SXE.initElementDialog('cite'); 13 | if (SXE.currentAction == "update") { 14 | SXE.showRemoveButton(); 15 | } 16 | } 17 | 18 | function insertCite() { 19 | SXE.insertElement('cite'); 20 | tinyMCEPopup.close(); 21 | } 22 | 23 | function removeCite() { 24 | SXE.removeElement('cite'); 25 | tinyMCEPopup.close(); 26 | } 27 | 28 | tinyMCEPopup.onInit.add(init); 29 | -------------------------------------------------------------------------------- /public/tiny_mce/plugins/xhtmlxtras/js/del.js: -------------------------------------------------------------------------------- 1 | /** 2 | * del.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | function init() { 12 | SXE.initElementDialog('del'); 13 | if (SXE.currentAction == "update") { 14 | setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); 15 | setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); 16 | SXE.showRemoveButton(); 17 | } 18 | } 19 | 20 | function setElementAttribs(elm) { 21 | setAllCommonAttribs(elm); 22 | setAttrib(elm, 'datetime'); 23 | setAttrib(elm, 'cite'); 24 | } 25 | 26 | function insertDel() { 27 | var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL'); 28 | 29 | tinyMCEPopup.execCommand('mceBeginUndoLevel'); 30 | if (elm == null) { 31 | var s = SXE.inst.selection.getContent(); 32 | if(s.length > 0) { 33 | insertInlineElement('del'); 34 | var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';}); 35 | for (var i=0; i 0) { 32 | insertInlineElement('INS'); 33 | var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';}); 34 | for (var i=0; i 2 | 3 | 4 | {#advanced_dlg.anchor_title} 5 | 6 | 7 | 8 | 9 |
    10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    {#advanced_dlg.anchor_title}
    {#advanced_dlg.anchor_name}:
    19 | 20 |
    21 | 22 | 23 |
    24 |
    25 | 26 | 27 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/charmap.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {#advanced_dlg.charmap_title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 27 | 28 | 29 | 48 | 49 |
    {#advanced_dlg.charmap_title}
    15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
     
     
    26 |
    30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
    HTML-Code
     
     
    NUM-Code
     
    47 |
    50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/img/colorpicker.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/img/colorpicker.jpg -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/img/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/img/icons.gif -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/js/about.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | function init() { 4 | var ed, tcont; 5 | 6 | tinyMCEPopup.resizeToInnerSize(); 7 | ed = tinyMCEPopup.editor; 8 | 9 | // Give FF some time 10 | window.setTimeout(insertHelpIFrame, 10); 11 | 12 | tcont = document.getElementById('plugintablecontainer'); 13 | document.getElementById('plugins_tab').style.display = 'none'; 14 | 15 | var html = ""; 16 | html += ''; 17 | html += ''; 18 | html += ''; 19 | html += ''; 20 | html += ''; 21 | html += ''; 22 | html += ''; 23 | html += ''; 24 | html += ''; 25 | 26 | tinymce.each(ed.plugins, function(p, n) { 27 | var info; 28 | 29 | if (!p.getInfo) 30 | return; 31 | 32 | html += ''; 33 | 34 | info = p.getInfo(); 35 | 36 | if (info.infourl != null && info.infourl != '') 37 | html += ''; 38 | else 39 | html += ''; 40 | 41 | if (info.authorurl != null && info.authorurl != '') 42 | html += ''; 43 | else 44 | html += ''; 45 | 46 | html += ''; 47 | html += ''; 48 | 49 | document.getElementById('plugins_tab').style.display = ''; 50 | 51 | }); 52 | 53 | html += ''; 54 | html += '
    ' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
    ' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
    '; 55 | 56 | tcont.innerHTML = html; 57 | 58 | tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion; 59 | tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate; 60 | } 61 | 62 | function insertHelpIFrame() { 63 | var html; 64 | 65 | if (tinyMCEPopup.getParam('docs_url')) { 66 | html = ''; 67 | document.getElementById('iframecontainer').innerHTML = html; 68 | document.getElementById('help_tab').style.display = 'block'; 69 | } 70 | } 71 | 72 | tinyMCEPopup.onInit.add(init); 73 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/js/anchor.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | 3 | var AnchorDialog = { 4 | init : function(ed) { 5 | var action, elm, f = document.forms[0]; 6 | 7 | this.editor = ed; 8 | elm = ed.dom.getParent(ed.selection.getNode(), 'A'); 9 | v = ed.dom.getAttrib(elm, 'name'); 10 | 11 | if (v) { 12 | this.action = 'update'; 13 | f.anchorName.value = v; 14 | } 15 | 16 | f.insert.value = ed.getLang(elm ? 'update' : 'insert'); 17 | }, 18 | 19 | update : function() { 20 | var ed = this.editor, elm, name = document.forms[0].anchorName.value; 21 | 22 | tinyMCEPopup.restoreSelection(); 23 | 24 | if (this.action != 'update') 25 | ed.selection.collapse(1); 26 | 27 | elm = ed.dom.getParent(ed.selection.getNode(), 'A'); 28 | if (elm) 29 | elm.name = name; 30 | else 31 | ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); 32 | 33 | tinyMCEPopup.close(); 34 | } 35 | }; 36 | 37 | tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); 38 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/js/source_editor.js: -------------------------------------------------------------------------------- 1 | tinyMCEPopup.requireLangPack(); 2 | tinyMCEPopup.onInit.add(onLoadInit); 3 | 4 | function saveContent() { 5 | tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); 6 | tinyMCEPopup.close(); 7 | } 8 | 9 | function onLoadInit() { 10 | tinyMCEPopup.resizeToInnerSize(); 11 | 12 | // Remove Gecko spellchecking 13 | if (tinymce.isGecko) 14 | document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); 15 | 16 | document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); 17 | 18 | if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { 19 | setWrap('soft'); 20 | document.getElementById('wraped').checked = true; 21 | } 22 | 23 | resizeInputs(); 24 | } 25 | 26 | function setWrap(val) { 27 | var v, n, s = document.getElementById('htmlSource'); 28 | 29 | s.wrap = val; 30 | 31 | if (!tinymce.isIE) { 32 | v = s.value; 33 | n = s.cloneNode(false); 34 | n.setAttribute("wrap", val); 35 | s.parentNode.replaceChild(n, s); 36 | n.value = v; 37 | } 38 | } 39 | 40 | function toggleWordWrap(elm) { 41 | if (elm.checked) 42 | setWrap('soft'); 43 | else 44 | setWrap('off'); 45 | } 46 | 47 | function resizeInputs() { 48 | var vp = tinyMCEPopup.dom.getViewPort(window), el; 49 | 50 | el = document.getElementById('htmlSource'); 51 | 52 | if (el) { 53 | el.style.width = (vp.w - 20) + 'px'; 54 | el.style.height = (vp.h - 65) + 'px'; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.advanced',{ 2 | style_select:"Styles", 3 | font_size:"Font size", 4 | fontdefault:"Font family", 5 | block:"Format", 6 | paragraph:"Paragraph", 7 | div:"Div", 8 | address:"Address", 9 | pre:"Preformatted", 10 | h1:"Heading 1", 11 | h2:"Heading 2", 12 | h3:"Heading 3", 13 | h4:"Heading 4", 14 | h5:"Heading 5", 15 | h6:"Heading 6", 16 | blockquote:"Blockquote", 17 | code:"Code", 18 | samp:"Code sample", 19 | dt:"Definition term ", 20 | dd:"Definition description", 21 | bold_desc:"Bold (Ctrl+B)", 22 | italic_desc:"Italic (Ctrl+I)", 23 | underline_desc:"Underline (Ctrl+U)", 24 | striketrough_desc:"Strikethrough", 25 | justifyleft_desc:"Align left", 26 | justifycenter_desc:"Align center", 27 | justifyright_desc:"Align right", 28 | justifyfull_desc:"Align full", 29 | bullist_desc:"Unordered list", 30 | numlist_desc:"Ordered list", 31 | outdent_desc:"Outdent", 32 | indent_desc:"Indent", 33 | undo_desc:"Undo (Ctrl+Z)", 34 | redo_desc:"Redo (Ctrl+Y)", 35 | link_desc:"Insert/edit link", 36 | unlink_desc:"Unlink", 37 | image_desc:"Insert/edit image", 38 | cleanup_desc:"Cleanup messy code", 39 | code_desc:"Edit HTML Source", 40 | sub_desc:"Subscript", 41 | sup_desc:"Superscript", 42 | hr_desc:"Insert horizontal ruler", 43 | removeformat_desc:"Remove formatting", 44 | custom1_desc:"Your custom description here", 45 | forecolor_desc:"Select text color", 46 | backcolor_desc:"Select background color", 47 | charmap_desc:"Insert custom character", 48 | visualaid_desc:"Toggle guidelines/invisible elements", 49 | anchor_desc:"Insert/edit anchor", 50 | cut_desc:"Cut", 51 | copy_desc:"Copy", 52 | paste_desc:"Paste", 53 | image_props_desc:"Image properties", 54 | newdocument_desc:"New document", 55 | help_desc:"Help", 56 | blockquote_desc:"Blockquote", 57 | clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?", 58 | path:"Path", 59 | newdocument:"Are you sure you want clear all contents?", 60 | toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X", 61 | more_colors:"More colors" 62 | }); -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/langs/en_dlg.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.advanced_dlg',{ 2 | about_title:"About TinyMCE", 3 | about_general:"About", 4 | about_help:"Help", 5 | about_license:"License", 6 | about_plugins:"Plugins", 7 | about_plugin:"Plugin", 8 | about_author:"Author", 9 | about_version:"Version", 10 | about_loaded:"Loaded plugins", 11 | anchor_title:"Insert/edit anchor", 12 | anchor_name:"Anchor name", 13 | code_title:"HTML Source Editor", 14 | code_wordwrap:"Word wrap", 15 | colorpicker_title:"Select a color", 16 | colorpicker_picker_tab:"Picker", 17 | colorpicker_picker_title:"Color picker", 18 | colorpicker_palette_tab:"Palette", 19 | colorpicker_palette_title:"Palette colors", 20 | colorpicker_named_tab:"Named", 21 | colorpicker_named_title:"Named colors", 22 | colorpicker_color:"Color:", 23 | colorpicker_name:"Name:", 24 | charmap_title:"Select custom character", 25 | image_title:"Insert/edit image", 26 | image_src:"Image URL", 27 | image_alt:"Image description", 28 | image_list:"Image list", 29 | image_border:"Border", 30 | image_dimensions:"Dimensions", 31 | image_vspace:"Vertical space", 32 | image_hspace:"Horizontal space", 33 | image_align:"Alignment", 34 | image_align_baseline:"Baseline", 35 | image_align_top:"Top", 36 | image_align_middle:"Middle", 37 | image_align_bottom:"Bottom", 38 | image_align_texttop:"Text top", 39 | image_align_textbottom:"Text bottom", 40 | image_align_left:"Left", 41 | image_align_right:"Right", 42 | link_title:"Insert/edit link", 43 | link_url:"Link URL", 44 | link_target:"Target", 45 | link_target_same:"Open link in the same window", 46 | link_target_blank:"Open link in a new window", 47 | link_titlefield:"Title", 48 | link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", 49 | link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", 50 | link_list:"Link list" 51 | }); -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/link.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {#advanced_dlg.link_title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
    13 |
    14 | 17 |
    18 | 19 |
    20 |
    21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 |
    26 | 27 | 28 | 29 | 30 |
     
    49 |
    50 |
    51 | 52 |
    53 | 54 | 55 |
    56 |
    57 | 58 | 59 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/default/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} 2 | body {background:#FFF;} 3 | body.mceForceColors {background:#FFF; color:#000;} 4 | h1 {font-size: 2em} 5 | h2 {font-size: 1.5em} 6 | h3 {font-size: 1.17em} 7 | h4 {font-size: 1em} 8 | h5 {font-size: .83em} 9 | h6 {font-size: .75em} 10 | .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} 11 | a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;} 12 | span.mceItemNbsp {background: #DDD} 13 | td.mceSelected, th.mceSelected {background-color:#3399ff !important} 14 | img {border:0;} 15 | table {cursor:default} 16 | table td, table th {cursor:text} 17 | ins {border-bottom:1px solid green; text-decoration: none; color:green} 18 | del {color:red; text-decoration:line-through} 19 | cite {border-bottom:1px dashed blue} 20 | acronym {border-bottom:1px dotted #CCC; cursor:help} 21 | abbr {border-bottom:1px dashed #CCC; cursor:help} 22 | 23 | /* IE */ 24 | * html body { 25 | scrollbar-3dlight-color:#F0F0EE; 26 | scrollbar-arrow-color:#676662; 27 | scrollbar-base-color:#F0F0EE; 28 | scrollbar-darkshadow-color:#DDD; 29 | scrollbar-face-color:#E0E0DD; 30 | scrollbar-highlight-color:#F0F0EE; 31 | scrollbar-shadow-color:#F0F0EE; 32 | scrollbar-track-color:#F5F5F5; 33 | } 34 | 35 | img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} 36 | font[face=mceinline] {font-family:inherit !important} 37 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/default/img/buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/default/img/buttons.png -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/default/img/items.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/default/img/items.gif -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/default/img/menu_check.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/default/img/menu_check.gif -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/default/img/progress.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/default/img/progress.gif -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/default/img/tabs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/default/img/tabs.gif -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/o2k7/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} 2 | body {background:#FFF;} 3 | body.mceForceColors {background:#FFF; color:#000;} 4 | h1 {font-size: 2em} 5 | h2 {font-size: 1.5em} 6 | h3 {font-size: 1.17em} 7 | h4 {font-size: 1em} 8 | h5 {font-size: .83em} 9 | h6 {font-size: .75em} 10 | .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} 11 | a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} 12 | span.mceItemNbsp {background: #DDD} 13 | td.mceSelected, th.mceSelected {background-color:#3399ff !important} 14 | img {border:0;} 15 | table {cursor:default} 16 | table td, table th {cursor:text} 17 | ins {border-bottom:1px solid green; text-decoration: none; color:green} 18 | del {color:red; text-decoration:line-through} 19 | cite {border-bottom:1px dashed blue} 20 | acronym {border-bottom:1px dotted #CCC; cursor:help} 21 | abbr {border-bottom:1px dashed #CCC; cursor:help} 22 | 23 | /* IE */ 24 | * html body { 25 | scrollbar-3dlight-color:#F0F0EE; 26 | scrollbar-arrow-color:#676662; 27 | scrollbar-base-color:#F0F0EE; 28 | scrollbar-darkshadow-color:#DDD; 29 | scrollbar-face-color:#E0E0DD; 30 | scrollbar-highlight-color:#F0F0EE; 31 | scrollbar-shadow-color:#F0F0EE; 32 | scrollbar-track-color:#F5F5F5; 33 | } 34 | 35 | img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} 36 | font[face=mceinline] {font-family:inherit !important} 37 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/o2k7/ui_black.css: -------------------------------------------------------------------------------- 1 | /* Black */ 2 | .o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} 3 | .o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} 4 | .o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} 5 | .o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} 6 | .o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} 7 | .o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} 8 | .o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css: -------------------------------------------------------------------------------- 1 | /* Silver */ 2 | .o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} 3 | .o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} 4 | .o2k7SkinSilver .mceListBox .mceText {background:#FFF} 5 | .o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} 6 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/advanced/source_editor.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | {#advanced_dlg.code_title} 4 | 5 | 6 | 7 | 8 |
    9 |
    {#advanced_dlg.code_title}
    10 | 11 |
    12 | 13 |
    14 | 15 |
    16 | 17 | 18 | 19 |
    20 | 21 | 22 |
    23 |
    24 | 25 | 26 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/editor_template.js: -------------------------------------------------------------------------------- 1 | (function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})});c.dom.loadCSS(d+"/skins/"+f.skin+"/content.css")});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})(); -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/img/icons.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/simple/img/icons.gif -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/langs/en.js: -------------------------------------------------------------------------------- 1 | tinyMCE.addI18n('en.simple',{ 2 | bold_desc:"Bold (Ctrl+B)", 3 | italic_desc:"Italic (Ctrl+I)", 4 | underline_desc:"Underline (Ctrl+U)", 5 | striketrough_desc:"Strikethrough", 6 | bullist_desc:"Unordered list", 7 | numlist_desc:"Ordered list", 8 | undo_desc:"Undo (Ctrl+Z)", 9 | redo_desc:"Redo (Ctrl+Y)", 10 | cleanup_desc:"Cleanup messy code" 11 | }); -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/skins/default/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre { 2 | font-family: Verdana, Arial, Helvetica, sans-serif; 3 | font-size: 10px; 4 | } 5 | 6 | body { 7 | background-color: #FFFFFF; 8 | } 9 | 10 | .mceVisualAid { 11 | border: 1px dashed #BBBBBB; 12 | } 13 | 14 | /* MSIE specific */ 15 | 16 | * html body { 17 | scrollbar-3dlight-color: #F0F0EE; 18 | scrollbar-arrow-color: #676662; 19 | scrollbar-base-color: #F0F0EE; 20 | scrollbar-darkshadow-color: #DDDDDD; 21 | scrollbar-face-color: #E0E0DD; 22 | scrollbar-highlight-color: #F0F0EE; 23 | scrollbar-shadow-color: #F0F0EE; 24 | scrollbar-track-color: #F5F5F5; 25 | } 26 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/skins/default/ui.css: -------------------------------------------------------------------------------- 1 | /* Reset */ 2 | .defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} 3 | 4 | /* Containers */ 5 | .defaultSimpleSkin {position:relative} 6 | .defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;} 7 | .defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;} 8 | .defaultSimpleSkin .mceToolbar {height:24px;} 9 | 10 | /* Layout */ 11 | .defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px} 12 | .defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} 13 | 14 | /* Button */ 15 | .defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px} 16 | .defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} 17 | .defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0} 18 | .defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} 19 | 20 | /* Separator */ 21 | .defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px} 22 | 23 | /* Theme */ 24 | .defaultSimpleSkin span.mce_bold {background-position:0 0} 25 | .defaultSimpleSkin span.mce_italic {background-position:-60px 0} 26 | .defaultSimpleSkin span.mce_underline {background-position:-140px 0} 27 | .defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0} 28 | .defaultSimpleSkin span.mce_undo {background-position:-160px 0} 29 | .defaultSimpleSkin span.mce_redo {background-position:-100px 0} 30 | .defaultSimpleSkin span.mce_cleanup {background-position:-40px 0} 31 | .defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} 32 | .defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0} 33 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/skins/o2k7/content.css: -------------------------------------------------------------------------------- 1 | body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} 2 | 3 | body {background: #FFF;} 4 | .mceVisualAid {border: 1px dashed #BBB;} 5 | 6 | /* IE */ 7 | 8 | * html body { 9 | scrollbar-3dlight-color: #F0F0EE; 10 | scrollbar-arrow-color: #676662; 11 | scrollbar-base-color: #F0F0EE; 12 | scrollbar-darkshadow-color: #DDDDDD; 13 | scrollbar-face-color: #E0E0DD; 14 | scrollbar-highlight-color: #F0F0EE; 15 | scrollbar-shadow-color: #F0F0EE; 16 | scrollbar-track-color: #F5F5F5; 17 | } 18 | -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pedrofranceschi/Blogode/842c58e4892ee95bf3b7e4cb02ede6c7f558562b/public/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png -------------------------------------------------------------------------------- /public/tiny_mce/themes/simple/skins/o2k7/ui.css: -------------------------------------------------------------------------------- 1 | /* Reset */ 2 | .o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000} 3 | 4 | /* Containers */ 5 | .o2k7SimpleSkin {position:relative} 6 | .o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;} 7 | .o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;} 8 | .o2k7SimpleSkin .mceToolbar {height:26px;} 9 | 10 | /* Layout */ 11 | .o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; } 12 | .o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} 13 | .o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px} 14 | .o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} 15 | 16 | /* Button */ 17 | .o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} 18 | .o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px} 19 | .o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} 20 | .o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px} 21 | .o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} 22 | 23 | /* Separator */ 24 | .o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} 25 | 26 | /* Theme */ 27 | .o2k7SimpleSkin span.mce_bold {background-position:0 0} 28 | .o2k7SimpleSkin span.mce_italic {background-position:-60px 0} 29 | .o2k7SimpleSkin span.mce_underline {background-position:-140px 0} 30 | .o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0} 31 | .o2k7SimpleSkin span.mce_undo {background-position:-160px 0} 32 | .o2k7SimpleSkin span.mce_redo {background-position:-100px 0} 33 | .o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0} 34 | .o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0} 35 | .o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0} 36 | -------------------------------------------------------------------------------- /public/tiny_mce/utils/editable_selects.js: -------------------------------------------------------------------------------- 1 | /** 2 | * editable_selects.js 3 | * 4 | * Copyright 2009, Moxiecode Systems AB 5 | * Released under LGPL License. 6 | * 7 | * License: http://tinymce.moxiecode.com/license 8 | * Contributing: http://tinymce.moxiecode.com/contributing 9 | */ 10 | 11 | var TinyMCE_EditableSelects = { 12 | editSelectElm : null, 13 | 14 | init : function() { 15 | var nl = document.getElementsByTagName("select"), i, d = document, o; 16 | 17 | for (i=0; iManage comments 2 | 3 | <% for(var i=0; i < comments.length; i++) { %> 4 | <%= unescape(comments[i].author_name) %> (<%= unescape(comments[i].author_email) %>)
    5 | <%= comments[i].created_at %>
    6 | <%- unescape(comments[i].comment) %>
    7 | Destroy 8 |

    9 | <% } %> -------------------------------------------------------------------------------- /views/admin/login.ejs: -------------------------------------------------------------------------------- 1 |
    2 |

    Admin login

    3 | Username:
    4 | Password:

    5 | 6 |
    -------------------------------------------------------------------------------- /views/admin/not_allowed.ejs: -------------------------------------------------------------------------------- 1 |

    Not allowed

    2 | 3 | Oopps! It seems that you are not allowed to see this section. Moving! -------------------------------------------------------------------------------- /views/admin/pages/edit.ejs: -------------------------------------------------------------------------------- 1 | 2 | 30 | 31 |
    32 | 33 |

    Edit page

    34 | Title:

    35 | Body:

    36 | 37 | 38 | 39 |
    40 | 41 |

    42 | 43 |
    -------------------------------------------------------------------------------- /views/admin/pages/index.ejs: -------------------------------------------------------------------------------- 1 |

    Manage pages

    2 | 3 | <% for(var i=0; i < pages.length; i++) { %> 4 | <%= unescape(pages[i].title) %> - Edit - Delete

    5 | <% } %> 6 | 7 | New page -------------------------------------------------------------------------------- /views/admin/pages/new.ejs: -------------------------------------------------------------------------------- 1 | 2 | 30 | 31 |
    32 |

    New Page

    33 | Title:

    34 | Body:

    35 | 36 | 38 | 39 |

    40 | 41 |
    -------------------------------------------------------------------------------- /views/admin/panel.ejs: -------------------------------------------------------------------------------- 1 | Admin panel.

    2 | 3 | <% if(session.user_permission.toString().indexOf("1") >= 0) { %> 4 | Manage posts

    5 | <% } %> 6 | 7 | <% if(session.user_permission.toString().indexOf("2") >= 0) { %> 8 | Manage comments

    9 | <% } %> 10 | 11 | <% if(session.user_permission.toString().indexOf("3") >= 0) { %> 12 | Manage pages

    13 | <% } %> 14 | 15 | <% if(session.user_permission.toString().indexOf("4") >= 0) { %> 16 | Manage template

    17 | <% } %> 18 | 19 | <% if(session.user_permission.toString().indexOf("5") >= 0) { %> 20 | Manage plugins

    21 | <% } %> 22 | 23 | <% if(session.user_permission.toString().indexOf("6") >= 0) { %> 24 | Manage users

    25 | <% } %> 26 | 27 | <% if(session.user_permission.toString().indexOf("7") >= 0) { %> 28 | Blog settings

    29 | <% } %> -------------------------------------------------------------------------------- /views/admin/plugins/index.ejs: -------------------------------------------------------------------------------- 1 |

    Manage plugins

    2 | 3 | 4 | 5 | <% for(p in plugins) { %> 6 |

    <%= plugins[p].pluginInfos["name"] %>

    7 |
    8 | 9 | <% for(var i=0; i < plugins[p].configVariables.length; i++) { %> 10 | <%= plugins[p].configVariables[i]['name'] %> (<%= plugins[p].configVariables[i]['description'] %>): 13 | value="<%= pluginValues[plugins[p].pluginInfos['call_name']][plugins[p].configVariables[i]['access_name']] %>" 14 | <% } %> 15 | 16 | />
    17 | <% } %> 18 |
    19 | '" /> 20 |

    21 | <% } %> -------------------------------------------------------------------------------- /views/admin/posts/edit.ejs: -------------------------------------------------------------------------------- 1 | 2 | 30 | 31 |
    32 | 33 |

    Edit Post

    34 | Title:

    35 | Body:

    36 | 37 | 38 | 39 |
    40 | 41 |
    42 | Tags (separated by comma): 43 |

    44 | 45 | 46 |
    -------------------------------------------------------------------------------- /views/admin/posts/import.ejs: -------------------------------------------------------------------------------- 1 |

    Import Wordpress posts

    2 | 3 | Paste the XML content below:

    4 | 5 |
    6 |

    8 | 9 | 10 |
    -------------------------------------------------------------------------------- /views/admin/posts/index.ejs: -------------------------------------------------------------------------------- 1 |

    Manage posts

    2 | 3 | 6 | 7 | <% if(posts != undefined) { %> 8 | <% for (var i=0; i < posts.length; i++) { %> 9 | <%= unescape(posts[i].title) %> (by <%= unescape(posts[i].user_name) %>) - Edit - Delete

    10 | <% } %> 11 | <% } %> 12 | 13 | New post -------------------------------------------------------------------------------- /views/admin/posts/new.ejs: -------------------------------------------------------------------------------- 1 | 2 | 30 | 31 |
    32 |

    New Post

    33 | Title:

    34 | Body:

    35 | 36 | 38 | 39 |
    40 | Tags (separated by comma): 41 |

    42 | 43 | 44 |
    -------------------------------------------------------------------------------- /views/admin/settings/index.ejs: -------------------------------------------------------------------------------- 1 |

    Blog settings

    2 | 3 |
    4 | <% for(key in configKeys) { %> 5 | <% if(key.indexOf("blog") >= 0) { %> 6 | <%= key.replace(/_/g, " ").charAt(0).toUpperCase() + key.replace(/_/g, " ").slice(1) %>:

    7 | <% } else { %> 8 | 9 | <% } %> 10 | <% } %> 11 | 12 |
    -------------------------------------------------------------------------------- /views/admin/template/index.ejs: -------------------------------------------------------------------------------- 1 | 2 | 25 | 26 | 27 | 28 |

    Template manager

    29 | 30 |
    31 | Change theme: 32 | 43 | 44 |
    45 | 46 | File to edit: 47 | 55 | 56 |

    57 | 58 | Template editor: 59 |

    60 | 61 | 62 |

    64 | 65 | -------------------------------------------------------------------------------- /views/admin/users/index.ejs: -------------------------------------------------------------------------------- 1 |

    Manage users

    2 | 3 | <% for(var i=0; i < users.length; i++) { %> 4 |
    5 | 6 | 7 |

    <%= users[i].name %> (<%= users[i].username %>)

    8 | 9 | Name:
    10 | Description:
    11 | E-Mail:
    12 | Username:
    13 | Password:

    14 | 15 | = 0) { %>checked<% } %>/>Manage posts
    16 | = 0) { %>checked<% } %>/>Manage comments
    17 | = 0) { %>checked<% } %>/>Manage pages
    18 | = 0) { %>checked<% } %>/>Manage templates
    19 | = 0) { %>checked<% } %>/>Manage plugins
    20 | = 0) { %>checked<% } %>/>Manage blog settings
    21 | = 0) { %>checked<% } %>/>Manage users

    22 | 23 | 24 |
    25 | 26 | 31 |
    32 | 33 | 34 |
    35 | <% } %> 36 | 37 |
    38 | New user -------------------------------------------------------------------------------- /views/admin/users/new.ejs: -------------------------------------------------------------------------------- 1 |

    New user

    2 | 3 |
    4 | Name:
    5 | Description:
    6 | E-Mail:
    7 | Username:
    8 | Password:

    9 | 10 | Manage posts
    11 | Manage comments
    12 | Manage pages
    13 | Manage templates
    14 | Manage plugins
    15 | Manage blog settings
    16 | Manage users

    17 | 18 | 19 |
    --------------------------------------------------------------------------------