aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mod/tinymce/start.php17
-rw-r--r--mod/tinymce/views/default/input/longtext.php32
-rw-r--r--mod/tinymce/views/default/js/tinymce.php59
-rw-r--r--mod/tinymce/views/default/tinymce/init.php62
-rw-r--r--views/default/input/longtext.php2
5 files changed, 80 insertions, 92 deletions
diff --git a/mod/tinymce/start.php b/mod/tinymce/start.php
index 9a33f03a3..89c378376 100644
--- a/mod/tinymce/start.php
+++ b/mod/tinymce/start.php
@@ -8,7 +8,24 @@
function tinymce_init() {
elgg_extend_view('css/elgg', 'tinymce/css');
elgg_extend_view('css/admin', 'tinymce/css');
+
+ elgg_extend_view('input/longtext', 'tinymce/init');
+
elgg_extend_view('embed/custom_insert_js', 'tinymce/embed_custom_insert_js');
+
+ elgg_register_plugin_hook_handler('register', 'menu:longtext', 'tinymce_longtext_menu');
+}
+
+function tinymce_longtext_menu($hook, $type, $items, $vars) {
+
+ $items[] = array(
+ 'name' => 'tinymce_toggler',
+ 'class' => 'tinymce-toggle-editor',
+ 'href' => "javascript:elgg.tinymce.toggleEditor('{$vars['id']}');",
+ 'text' => elgg_echo('tinymce:remove'),
+ );
+
+ return $items;
}
elgg_register_event_handler('init', 'system', 'tinymce_init', 9999);
diff --git a/mod/tinymce/views/default/input/longtext.php b/mod/tinymce/views/default/input/longtext.php
deleted file mode 100644
index 9124a89b5..000000000
--- a/mod/tinymce/views/default/input/longtext.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * Long text input with the tinymce text editor
- *
- * @package ElggTinyMCE
- *
- * @uses $vars['value'] The current value, if any
- * @uses $vars['js'] Any Javascript to enter into the input tag
- * @uses $vars['name'] The name of the input field
- * @uses $vars['id'] The id of the input field
- *
- */
-
-elgg_register_js('mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js', 'tinymce');
-
-// make sure the init script is only loaded once
-elgg_unextend_view('footer/analytics', 'tinymce/init');
-elgg_extend_view('footer/analytics', 'tinymce/init');
-
-if (!isset($vars['id'])) {
- $vars['id'] = 'tinymce-longtext-' . rand();
-}
-
-?>
-
-<a class="elgg-longtext-control tinymce-toggle-editor small" href="javascript:toggleEditor('<?php echo $vars['id']; ?>');">
- <?php echo elgg_echo('tinymce:remove'); ?>
-</a>
-
-<textarea class="elgg-input-textarea mceEditor" name="<?php echo $vars['name']; ?>" id="<?php echo $vars['id']; ?>" <?php echo $vars['js']; ?>>
-<?php echo htmlspecialchars($vars['value'], null, 'UTF-8'); ?>
-</textarea>
diff --git a/mod/tinymce/views/default/js/tinymce.php b/mod/tinymce/views/default/js/tinymce.php
new file mode 100644
index 000000000..adff52129
--- /dev/null
+++ b/mod/tinymce/views/default/js/tinymce.php
@@ -0,0 +1,59 @@
+elgg.tinymce.toggleEditor = function(id) {
+ if (!tinyMCE.get(id)) {
+ tinyMCE.execCommand('mceAddControl', false, id);
+ <?php //FIXME This changes all controls on the page!! ?>
+ $("a.tinymce-toggle-editor").html(elgg.echo('tinymce:remove'));
+ } else {
+ tinyMCE.execCommand('mceRemoveControl', false, id);
+ $("a.tinymce-toggle-editor").html(elgg.echo('tinymce:add'));
+ }
+}
+
+/**
+ * TinyMCE initialization script
+ *
+ * You can find configuration information here:
+ * http://tinymce.moxiecode.com/wiki.php/Configuration
+ */
+elgg.tinymce.init = function() {
+ tinyMCE.init({
+ mode : "specific_textareas",
+ editor_selector : "elgg-input-longtext",
+ theme : "advanced",
+ plugins : "spellchecker,autosave,fullscreen,paste",
+ relative_urls : false,
+ remove_script_host : false,
+ document_base_url : elgg.config.wwwroot,
+ theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,bullist,numlist,undo,redo,link,unlink,image,blockquote,code,pastetext,pasteword,more,fullscreen",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "left",
+ theme_advanced_statusbar_location : "bottom",
+ theme_advanced_resizing : true,
+ theme_advanced_path : true,
+ extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|style],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
+ setup : function(ed) {
+ //show the number of words
+ ed.onLoadContent.add(function(ed, o) {
+ var strip = (tinyMCE.activeEditor.getContent()).replace(/(&lt;([^&gt;]+)&gt;)/ig,"");
+ var text = " <?php echo elgg_echo('tinymce:word_count'); ?>" + strip.split(' ').length + ' ';
+ tinymce.DOM.setHTML(tinymce.DOM.get(tinyMCE.activeEditor.id + '_path_row'), text);
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ var strip = (tinyMCE.activeEditor.getContent()).replace(/(&lt;([^&gt;]+)&gt;)/ig,"");
+ var text = " <?php echo elgg_echo('tinymce:word_count'); ?>" + strip.split(' ').length + ' ';
+ tinymce.DOM.setHTML(tinymce.DOM.get(tinyMCE.activeEditor.id + '_path_row'), text);
+ });
+ },
+ content_css: elgg.config.wwwroot + 'mod/tinymce/tinymce_content.css'
+ });
+
+ $('.elgg-input-longtext').parents('form').submit(function() {
+ tinyMCE.triggerSave();
+ });
+
+});
+
+elgg.register_event_handler('init', 'system', elgg.tinymce.init); \ No newline at end of file
diff --git a/mod/tinymce/views/default/tinymce/init.php b/mod/tinymce/views/default/tinymce/init.php
index 7064709d6..100a1a987 100644
--- a/mod/tinymce/views/default/tinymce/init.php
+++ b/mod/tinymce/views/default/tinymce/init.php
@@ -1,62 +1,4 @@
<?php
-/**
- * TinyMCE initialization script
- *
- * You can find configuration information here:
- * http://tinymce.moxiecode.com/wiki.php/Configuration
- */
-?>
-<?php //@todo JS 1.8: no ?>
-<script type="text/javascript">
-tinyMCE.init({
- mode : "specific_textareas",
- editor_selector : "mceEditor",
- theme : "advanced",
- plugins : "spellchecker,autosave,fullscreen,paste",
- relative_urls : false,
- remove_script_host : false,
- document_base_url : "<?php echo elgg_get_site_url(); ?>",
- theme_advanced_buttons1 : "bold,italic,underline,separator,strikethrough,bullist,numlist,undo,redo,link,unlink,image,blockquote,code,pastetext,pasteword,more,fullscreen",
- theme_advanced_buttons2 : "",
- theme_advanced_buttons3 : "",
- theme_advanced_toolbar_location : "top",
- theme_advanced_toolbar_align : "left",
- theme_advanced_statusbar_location : "bottom",
- theme_advanced_resizing : true,
- theme_advanced_path : true,
- extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|style],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
- setup : function(ed) {
- //show the number of words
- ed.onLoadContent.add(function(ed, o) {
- var strip = (tinyMCE.activeEditor.getContent()).replace(/(&lt;([^&gt;]+)&gt;)/ig,"");
- var text = " <?php echo elgg_echo('tinymce:word_count'); ?>" + strip.split(' ').length + ' ';
- tinymce.DOM.setHTML(tinymce.DOM.get(tinyMCE.activeEditor.id + '_path_row'), text);
- });
- ed.onKeyUp.add(function(ed, e) {
- var strip = (tinyMCE.activeEditor.getContent()).replace(/(&lt;([^&gt;]+)&gt;)/ig,"");
- var text = " <?php echo elgg_echo('tinymce:word_count'); ?>" + strip.split(' ').length + ' ';
- tinymce.DOM.setHTML(tinymce.DOM.get(tinyMCE.activeEditor.id + '_path_row'), text);
- });
- },
- content_css: '<?php echo elgg_get_site_url(); ?>mod/tinymce/tinymce_content.css'
-});
-
-function toggleEditor(id) {
- if (!tinyMCE.get(id)) {
- tinyMCE.execCommand('mceAddControl', false, id);
- <?php $toggleEditor_linktext = elgg_echo('tinymce:remove'); ?>
- $("a.tinymce-toggle-editor").html('<?php echo $toggleEditor_linktext ?>');
- } else {
- tinyMCE.execCommand('mceRemoveControl', false, id);
- <?php $toggleEditor_linktext = elgg_echo('tinymce:add'); ?>
- $("a.tinymce-toggle-editor").html('<?php echo $toggleEditor_linktext ?>');
- }
-}
-
-$(document).ready(function() {
- $('textarea').parents('form').submit(function() {
- tinyMCE.triggerSave();
- });
-});
-</script>
+elgg_register_js('mod/tinymce/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js', 'tinymce');
+elgg_register_js(elgg_get_simplecache_url('js', 'tinymce'), 'elgg.tinymce'); \ No newline at end of file
diff --git a/views/default/input/longtext.php b/views/default/input/longtext.php
index ada419f13..edff2da87 100644
--- a/views/default/input/longtext.php
+++ b/views/default/input/longtext.php
@@ -12,6 +12,7 @@
$defaults = array(
'class' => 'elgg-input-longtext',
+ 'id' => 'elgg-input-' . rand(), //@todo make this more robust
);
// work around for deprecation code in elgg_views()
@@ -20,4 +21,5 @@ unset($vars['internalid']);
$vars = array_merge($defaults, $vars);
+echo elgg_view_menu('longtext', array('sort_by' => 'weight'));
echo elgg_view('input/plaintext', $vars);