diff --git a/e107_admin/eurl.php b/e107_admin/eurl.php index 052842d53..fa6e8fdcd 100644 --- a/e107_admin/eurl.php +++ b/e107_admin/eurl.php @@ -74,12 +74,15 @@ class eurl_admin_ui extends e_admin_controller_ui } else { - $modRewrite = false; + $modRewrite = true; //we don't really know. + } if($modRewrite === false) { e107::getMessage()->addInfo("Apache mod_rewrite was not found on this server and is required to use this feature. "); + e107::getMessage()->addDebug(print_a($modules,true)); + } if($htaccess && $modRewrite && !deftrue('e_MOD_REWRITE')) @@ -621,12 +624,14 @@ class eurl_admin_form_ui extends e_admin_form_ui $cssClass = 'e-hideme'; // always hidden for now, some interface changes could come after pre-alpha $exampleUrl = array(); - foreach($section['examples'] as $ex) - { - $exampleUrl[] = str_replace($srch,$repl,$ex); - - } - + if(!empty($section['examples'])) + { + foreach($section['examples'] as $ex) + { + $exampleUrl[] = str_replace($srch,$repl,$ex); + + } + } if(strpos($path,'noid')!==false) { // $exampleUrl .= "   ‡"; //XXX Add footer - denotes more CPU required. ? diff --git a/e107_plugins/tinymce4/plugins/e107/plugin.js b/e107_plugins/tinymce4/plugins/e107/plugin.js index ab38822f2..65c1d7b90 100644 --- a/e107_plugins/tinymce4/plugins/e107/plugin.js +++ b/e107_plugins/tinymce4/plugins/e107/plugin.js @@ -41,7 +41,7 @@ // Emoticons ed.addButton('e107-emotes', { - text: 'Media Manager', + text: '', icon: 'emoticons', onclick: function() { // Open window diff --git a/e107_plugins/tinymce4/plugins/smileys/img/angel.png b/e107_plugins/tinymce4/plugins/smileys/img/angel.png new file mode 100644 index 000000000..6c6ca0a20 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/angel.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/confused.png b/e107_plugins/tinymce4/plugins/smileys/img/confused.png new file mode 100644 index 000000000..09ca78f29 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/confused.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/cry.png b/e107_plugins/tinymce4/plugins/smileys/img/cry.png new file mode 100644 index 000000000..bbe0af1ae Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/cry.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/devil.png b/e107_plugins/tinymce4/plugins/smileys/img/devil.png new file mode 100644 index 000000000..b0ac3ad3c Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/devil.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/frown.png b/e107_plugins/tinymce4/plugins/smileys/img/frown.png new file mode 100644 index 000000000..6e38de03f Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/frown.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/gasp.png b/e107_plugins/tinymce4/plugins/smileys/img/gasp.png new file mode 100644 index 000000000..ecc197225 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/gasp.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/glasses.png b/e107_plugins/tinymce4/plugins/smileys/img/glasses.png new file mode 100644 index 000000000..855a634c9 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/glasses.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/grin.png b/e107_plugins/tinymce4/plugins/smileys/img/grin.png new file mode 100644 index 000000000..41f682727 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/grin.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/grumpy.png b/e107_plugins/tinymce4/plugins/smileys/img/grumpy.png new file mode 100644 index 000000000..cddb67a3a Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/grumpy.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/heart.png b/e107_plugins/tinymce4/plugins/smileys/img/heart.png new file mode 100644 index 000000000..b81bdec7f Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/heart.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/kiki.png b/e107_plugins/tinymce4/plugins/smileys/img/kiki.png new file mode 100644 index 000000000..0892846c6 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/kiki.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/kiss.png b/e107_plugins/tinymce4/plugins/smileys/img/kiss.png new file mode 100644 index 000000000..14fc5c5c9 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/kiss.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/pacman.png b/e107_plugins/tinymce4/plugins/smileys/img/pacman.png new file mode 100644 index 000000000..e4e34aa5c Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/pacman.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/penguin.gif b/e107_plugins/tinymce4/plugins/smileys/img/penguin.gif new file mode 100644 index 000000000..fc3751d06 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/penguin.gif differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/putnam.gif b/e107_plugins/tinymce4/plugins/smileys/img/putnam.gif new file mode 100644 index 000000000..7f66c5f2c Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/putnam.gif differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/robot.gif b/e107_plugins/tinymce4/plugins/smileys/img/robot.gif new file mode 100644 index 000000000..db7c66029 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/robot.gif differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/shark.gif b/e107_plugins/tinymce4/plugins/smileys/img/shark.gif new file mode 100644 index 000000000..446194e99 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/shark.gif differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/smile.png b/e107_plugins/tinymce4/plugins/smileys/img/smile.png new file mode 100644 index 000000000..1cfd0999a Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/smile.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/squint.png b/e107_plugins/tinymce4/plugins/smileys/img/squint.png new file mode 100644 index 000000000..76b320e1e Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/squint.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/sunglasses.png b/e107_plugins/tinymce4/plugins/smileys/img/sunglasses.png new file mode 100644 index 000000000..d6f34bcdc Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/sunglasses.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/tongue.png b/e107_plugins/tinymce4/plugins/smileys/img/tongue.png new file mode 100644 index 000000000..1cd5e5e31 Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/tongue.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/unsure.png b/e107_plugins/tinymce4/plugins/smileys/img/unsure.png new file mode 100644 index 000000000..7f7b048ce Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/unsure.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/img/upset.png b/e107_plugins/tinymce4/plugins/smileys/img/upset.png new file mode 100644 index 000000000..bc864e58e Binary files /dev/null and b/e107_plugins/tinymce4/plugins/smileys/img/upset.png differ diff --git a/e107_plugins/tinymce4/plugins/smileys/plugin.js b/e107_plugins/tinymce4/plugins/smileys/plugin.js new file mode 100644 index 000000000..fbfa29512 --- /dev/null +++ b/e107_plugins/tinymce4/plugins/smileys/plugin.js @@ -0,0 +1,300 @@ +tinymce.PluginManager.add('smileys', function (editor, url) { + var defaultSmileys = [ + [ + { shortcut: '(^^^)', url: url + '/img/shark.gif', title: 'shark' }, + { shortcut: 'O:)', url: url + '/img/angel.png', title: 'angel' }, + { shortcut: 'o.O', url: url + '/img/confused.png', title: 'confused' }, + { shortcut: '3:)', url: url + '/img/devil.png', title: 'devil' }, + { shortcut: ':-O', url: url + '/img/gasp.png', title: 'gasp' }, + { shortcut: '8-)', url: url + '/img/glasses.png', title: 'glasses' }, + { shortcut: ':-D', url: url + '/img/grin.png', title: 'grin' } + ], + [ + { shortcut: ':-)', url: url + '/img/smile.png', title: 'smile' }, + { shortcut: ":'(", url: url + '/img/cry.png', title: 'cry' }, + { shortcut: '<3', url: url + '/img/heart.png', title: 'heart' }, + { shortcut: '^_^', url: url + '/img/kiki.png', title: 'kiki' }, + { shortcut: ':-*', url: url + '/img/kiss.png', title: 'kiss' }, + { shortcut: ':v', url: url + '/img/pacman.png', title: 'pacman' }, + { shortcut: '<(�)', url: url + '/img/penguin.gif', title: 'penguin' } + ], + [ + { shortcut: ':|]', url: url + '/img/robot.gif', title: 'robot' }, + { shortcut: '-_-', url: url + '/img/squint.png', title: 'squint' }, + { shortcut: '8-|', url: url + '/img/sunglasses.png', title: 'sunglasses' }, + { shortcut: ':-P', url: url + '/img/tongue.png', title: 'tongue' }, + { shortcut: ':/', url: url + '/img/unsure.png', title: 'unsure' }, + { shortcut: '>:O', url: url + '/img/upset.png', title: 'upset' }, + { shortcut: '>:(', url: url + '/img/grumpy.png', title: 'grumpy' } + ] + ]; + + var smileys = editor.settings.smileys || defaultSmileys, fullSmileysList = editor.settings.extended_smileys ? smileys.concat(editor.settings.extended_smileys) : smileys; + + function getHtml() { + var smileysHtml; + + smileysHtml = ''; + + tinymce.each(fullSmileysList, function (row) { + smileysHtml += ''; + + tinymce.each(row, function (icon) { + smileysHtml += ''; + }); + + smileysHtml += ''; + }); + + smileysHtml += ''; + + return smileysHtml; + } + + function concatArray(array) { + var each = tinymce.each, result = []; + each(array, function (item) { + result = result.concat(item); + }); + return result.length > 0 ? result : array; + } + + function findAndReplaceDOMText(regex, node, replacementNode, captureGroup, schema) { + var m, matches = [], text, count = 0, doc; + var blockElementsMap, hiddenTextElementsMap, shortEndedElementsMap; + + doc = node.ownerDocument; + blockElementsMap = schema.getBlockElements(); // H1-H6, P, TD etc + hiddenTextElementsMap = schema.getWhiteSpaceElements(); // TEXTAREA, PRE, STYLE, SCRIPT + shortEndedElementsMap = schema.getShortEndedElements(); // BR, IMG, INPUT + + function getMatchIndexes(m, captureGroup) { + captureGroup = captureGroup || 0; + + var index = m.index; + + if (captureGroup > 0) { + var cg = m[captureGroup]; + index += m[0].indexOf(cg); + m[0] = cg; + } + + return [index, index + m[0].length, [m[0]]]; + } + + function getText(node) { + var txt; + + if (node.nodeType === 3) { + return node.data; + } + + if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) { + return ''; + } + + txt = ''; + + if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) { + txt += '\n'; + } + + if ((node = node.firstChild)) { + do { + txt += getText(node); + } while ((node = node.nextSibling)); + } + + return txt; + } + + function stepThroughMatches(node, matches, replaceFn) { + var startNode, endNode, startNodeIndex, + endNodeIndex, innerNodes = [], atIndex = 0, curNode = node, + matchLocation = matches.shift(), matchIndex = 0; + + out: while (true) { + if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName]) { + atIndex++; + } + + if (curNode.nodeType === 3) { + if (!endNode && curNode.length + atIndex >= matchLocation[1]) { + // We've found the ending + endNode = curNode; + endNodeIndex = matchLocation[1] - atIndex; + } else if (startNode) { + // Intersecting node + innerNodes.push(curNode); + } + + if (!startNode && curNode.length + atIndex > matchLocation[0]) { + // We've found the match start + startNode = curNode; + startNodeIndex = matchLocation[0] - atIndex; + } + + atIndex += curNode.length; + } + + if (startNode && endNode) { + curNode = replaceFn({ + startNode: startNode, + startNodeIndex: startNodeIndex, + endNode: endNode, + endNodeIndex: endNodeIndex, + innerNodes: innerNodes, + match: matchLocation[2], + matchIndex: matchIndex + }); + + // replaceFn has to return the node that replaced the endNode + // and then we step back so we can continue from the end of the + // match: + atIndex -= (endNode.length - endNodeIndex); + startNode = null; + endNode = null; + innerNodes = []; + matchLocation = matches.shift(); + matchIndex++; + + if (!matchLocation) { + break; // no more matches + } + } else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) { + // Move down + curNode = curNode.firstChild; + continue; + } else if (curNode.nextSibling) { + // Move forward: + curNode = curNode.nextSibling; + continue; + } + + // Move forward or up: + while (true) { + if (curNode.nextSibling) { + curNode = curNode.nextSibling; + break; + } else if (curNode.parentNode !== node) { + curNode = curNode.parentNode; + } else { + break out; + } + } + } + } + + /** + * Generates the actual replaceFn which splits up text nodes + * and inserts the replacement element. + */ + function genReplacer(nodeName) { + var makeReplacementNode; + + if (typeof nodeName != 'function') { + var stencilNode = nodeName.nodeType ? nodeName : doc.createElement(nodeName); + + makeReplacementNode = function () { + var clone = stencilNode.cloneNode(false); + return clone; + }; + } else { + makeReplacementNode = nodeName; + } + + return function replace(range) { + var before, after, parentNode, startNode = range.startNode, + endNode = range.endNode; + + if (startNode === endNode) { + var node = startNode; + + parentNode = node.parentNode; + if (range.startNodeIndex > 0) { + // Add `before` text node (before the match) + before = doc.createTextNode(node.data.substring(0, range.startNodeIndex)); + parentNode.insertBefore(before, node); + } + + // Create the replacement node: + var el = makeReplacementNode(); + parentNode.insertBefore(el, node); + if (range.endNodeIndex < node.length) { + // Add `after` text node (after the match) + after = doc.createTextNode(node.data.substring(range.endNodeIndex)); + parentNode.insertBefore(after, node); + } + + node.parentNode.removeChild(node); + + return el; + } + }; + } + + text = getText(node); + if (!text) { + return; + } + while ((m = regex.exec(text))) { + matches.push(getMatchIndexes(m, captureGroup)); + } + + if (matches.length) { + count = matches.length; + stepThroughMatches(node, matches, genReplacer(replacementNode)); + } + + return count; + } + + function replaceAllMatches(smiley) { + var each = tinymce.each, node = editor.selection.getNode(), marker, text; + if (typeof (smiley.shortcut) === 'string') { + text = smiley.shortcut.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + + marker = editor.dom.create('img', { "src": smiley.url, "title": smiley.title }); + + return findAndReplaceDOMText(new RegExp(text, 'gi'), node, marker, false, editor.schema); + } + else if (Array.isArray(smiley.shortcut)) { + each(smiley.shortcut, function(item) { + + marker = editor.dom.create('img', { "src": smiley.url, "title": smiley.title }); + + return findAndReplaceDOMText(new RegExp(item.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), 'gi'), node, marker, false, editor.schema); + }); + } + } + + editor.on("keyup", function (e) { + if (!!editor.settings.auto_convert_smileys) { + var each = tinymce.each, selection = editor.selection, node = selection.getNode(); + if (node) { + each(concatArray(fullSmileysList), function (smiley) { + replaceAllMatches(smiley); + }); + } + } + }); + + editor.addButton('smileys', { + type: 'panelbutton', + icon: 'emoticons', + panel: { + autohide: true, + html: getHtml, + onclick: function (e) { + var linkElm = editor.dom.getParent(e.target, 'a'); + + if (linkElm) { + editor.insertContent(''); + this.hide(); + } + } + }, + tooltip: 'Smileys' + }); +}); diff --git a/e107_plugins/tinymce4/plugins/smileys/plugin.min.js b/e107_plugins/tinymce4/plugins/smileys/plugin.min.js new file mode 100644 index 000000000..f763ce1b7 --- /dev/null +++ b/e107_plugins/tinymce4/plugins/smileys/plugin.min.js @@ -0,0 +1,4 @@ +tinymce.PluginManager.add("smileys",function(n,t){function e(){var n;return n='',tinymce.each(r,function(t){n+="";tinymce.each(t,function(t){n+='