muck-contents 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +9 -0
- data/VERSION +1 -1
- data/app/views/tiny_mce/files.html.erb +1 -1
- data/app/views/tiny_mce/images.html.erb +1 -1
- data/app/views/tiny_mce/links.html.erb +1 -1
- data/config/initializers/mce_options.rb +1 -1
- data/lib/active_record/acts/muck_content.rb +1 -1
- data/muck-contents.gemspec +38 -26
- data/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/editor_plugin.js +3 -3
- data/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/editor_plugin_src.js +3 -3
- data/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/js/functions.js +0 -0
- data/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/langs/en_dlg.js +0 -0
- data/{test/rails_root/public/javascripts/tiny_mce/plugins/advimagetoo → public/javascripts/tiny_mce/plugins/muckimage}/editor_plugin.js +3 -3
- data/{test/rails_root/public/javascripts/tiny_mce/plugins/advimagetoo → public/javascripts/tiny_mce/plugins/muckimage}/editor_plugin_src.js +3 -3
- data/public/javascripts/tiny_mce/plugins/{advimagetoo → muckimage}/js/functions.js +0 -0
- data/public/javascripts/tiny_mce/plugins/{advimagetoo → muckimage}/langs/en_dlg.js +0 -0
- data/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/editor_plugin.js +5 -5
- data/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/editor_plugin_src.js +5 -5
- data/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/js/functions.js +2 -2
- data/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/langs/en_dlg.js +0 -0
- data/test/rails_root/config/global_config.yml +2 -0
- data/test/rails_root/config/initializers/mce_options.rb +17 -14
- data/test/rails_root/public/javascripts/tiny_mce/plugins/bramus_cssextras/editor_plugin.js +649 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/bramus_cssextras/editor_plugin_src.js +649 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/codehighlighting.htm +50 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/css/codehighlighting.css +32 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/editor_plugin.js +1 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/editor_plugin_src.js +62 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/img/Thumbs.db +0 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/img/codehighlight.gif +0 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/img/codehighlight2.gif +0 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/js/codehighlighting.js +37 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/langs/en.js +12 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/langs/en_dlg.js +12 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/editor_plugin.js +3 -3
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/editor_plugin_src.js +3 -3
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/js/functions.js +0 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advfiletoo → muckfile}/langs/en_dlg.js +0 -0
- data/{public/javascripts/tiny_mce/plugins/advimagetoo → test/rails_root/public/javascripts/tiny_mce/plugins/muckimage}/editor_plugin.js +3 -3
- data/{public/javascripts/tiny_mce/plugins/advimagetoo → test/rails_root/public/javascripts/tiny_mce/plugins/muckimage}/editor_plugin_src.js +3 -3
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advimagetoo → muckimage}/image.htm +0 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advimagetoo → muckimage}/js/functions.js +0 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advimagetoo → muckimage}/langs/en_dlg.js +0 -0
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/editor_plugin.js +5 -5
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/editor_plugin_src.js +5 -5
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/js/functions.js +2 -2
- data/test/rails_root/public/javascripts/tiny_mce/plugins/{advlinktoo → mucklink}/langs/en_dlg.js +0 -0
- data/test/rails_root/public/stylesheets/tinymce.css +1 -1
- metadata +38 -26
data/README.rdoc
CHANGED
|
@@ -35,6 +35,15 @@ In your app do
|
|
|
35
35
|
|
|
36
36
|
== Setup
|
|
37
37
|
|
|
38
|
+
=== Global Config
|
|
39
|
+
Add the following settings to your global_config.yml file and change as is appropriate for your application. In particular
|
|
40
|
+
be sure to set content_css to any css files you want to have show up in your tinymce editor.
|
|
41
|
+
# Content options
|
|
42
|
+
content_git_repository: "#{File.join(RAILS_ROOT, 'repo', RAILS_ENV)}"
|
|
43
|
+
enable_auto_translations: true
|
|
44
|
+
content_enable_solr: false
|
|
45
|
+
content_css: ['/stylesheets/reset.css', '/stylesheets/styles.css']
|
|
46
|
+
|
|
38
47
|
=== Initializer
|
|
39
48
|
Running rake muck:contents:sync will copy all the needed javascript, image and css files into your project. It will also create an initializer called mce_options.rb. That file
|
|
40
49
|
contains two basic configurations for tinymce as well as examples on how to create templates. It is recommended that you don't modify that file as it will be overwritten the
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.2.
|
|
1
|
+
0.2.9
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
</form>
|
|
80
80
|
|
|
81
81
|
<% content_for :head do -%>
|
|
82
|
-
<%= javascript_include_tag 'tiny_mce/plugins/
|
|
82
|
+
<%= javascript_include_tag 'tiny_mce/plugins/muckfile/js/functions.js' -%>
|
|
83
83
|
<% end -%>
|
|
84
84
|
<script language="javascript" type="text/javascript">
|
|
85
85
|
jQuery(document).ready(function()
|
|
@@ -244,7 +244,7 @@
|
|
|
244
244
|
</form>
|
|
245
245
|
|
|
246
246
|
<% content_for :head do -%>
|
|
247
|
-
<%= javascript_include_tag 'tiny_mce/plugins/
|
|
247
|
+
<%= javascript_include_tag 'tiny_mce/plugins/muckimage/js/functions.js' -%>
|
|
248
248
|
<% end -%>
|
|
249
249
|
<script language="javascript" type="text/javascript">
|
|
250
250
|
jQuery(document).ready(function()
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
</form>
|
|
294
294
|
|
|
295
295
|
<% content_for :head do -%>
|
|
296
|
-
<%= javascript_include_tag 'tiny_mce/plugins/
|
|
296
|
+
<%= javascript_include_tag 'tiny_mce/plugins/mucklink/js/functions.js' -%>
|
|
297
297
|
<% end -%>
|
|
298
298
|
<script language="javascript" type="text/javascript">
|
|
299
299
|
jQuery(document).ready(function() {
|
|
@@ -34,7 +34,7 @@ GlobalConfig.advanced_mce_options = {
|
|
|
34
34
|
sub sup charmap separator
|
|
35
35
|
template visualaid fullscreen code},
|
|
36
36
|
:theme_advanced_buttons3 => [],
|
|
37
|
-
:plugins => %w{ paste media preview inlinepopups safari save searchreplace table style template fullscreen print autosave
|
|
37
|
+
:plugins => %w{ paste media preview inlinepopups safari save searchreplace table style template fullscreen print autosave muckimage mucklink muckfile},
|
|
38
38
|
:editor_deselector => "mceNoEditor",
|
|
39
39
|
:editor_selector => 'mceEditor',
|
|
40
40
|
:remove_script_host => true,
|
|
@@ -207,7 +207,7 @@ module ActiveRecord
|
|
|
207
207
|
puts ex
|
|
208
208
|
# Translations failed, but update the default language
|
|
209
209
|
translation = translation_for(self.locale)
|
|
210
|
-
translation.update_attributes!(:title => self.title, :body => self.body)
|
|
210
|
+
translation.update_attributes!(:title => self.title, :body => self.body) unless translation.blank?
|
|
211
211
|
end
|
|
212
212
|
end
|
|
213
213
|
|
data/muck-contents.gemspec
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{muck-contents}
|
|
8
|
-
s.version = "0.2.
|
|
8
|
+
s.version = "0.2.9"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Justin Ball", "Joel Duffin"]
|
|
@@ -162,10 +162,6 @@ Gem::Specification.new do |s|
|
|
|
162
162
|
"public/javascripts/tiny_mce/langs/vi.js",
|
|
163
163
|
"public/javascripts/tiny_mce/langs/zh.js",
|
|
164
164
|
"public/javascripts/tiny_mce/license.txt",
|
|
165
|
-
"public/javascripts/tiny_mce/plugins/advfiletoo/editor_plugin.js",
|
|
166
|
-
"public/javascripts/tiny_mce/plugins/advfiletoo/editor_plugin_src.js",
|
|
167
|
-
"public/javascripts/tiny_mce/plugins/advfiletoo/js/functions.js",
|
|
168
|
-
"public/javascripts/tiny_mce/plugins/advfiletoo/langs/en_dlg.js",
|
|
169
165
|
"public/javascripts/tiny_mce/plugins/advhr/css/advhr.css",
|
|
170
166
|
"public/javascripts/tiny_mce/plugins/advhr/editor_plugin.js",
|
|
171
167
|
"public/javascripts/tiny_mce/plugins/advhr/editor_plugin_src.js",
|
|
@@ -307,10 +303,6 @@ Gem::Specification.new do |s|
|
|
|
307
303
|
"public/javascripts/tiny_mce/plugins/advimage/langs/uk_dlg.js",
|
|
308
304
|
"public/javascripts/tiny_mce/plugins/advimage/langs/vi_dlg.js",
|
|
309
305
|
"public/javascripts/tiny_mce/plugins/advimage/langs/zh_dlg.js",
|
|
310
|
-
"public/javascripts/tiny_mce/plugins/advimagetoo/editor_plugin.js",
|
|
311
|
-
"public/javascripts/tiny_mce/plugins/advimagetoo/editor_plugin_src.js",
|
|
312
|
-
"public/javascripts/tiny_mce/plugins/advimagetoo/js/functions.js",
|
|
313
|
-
"public/javascripts/tiny_mce/plugins/advimagetoo/langs/en_dlg.js",
|
|
314
306
|
"public/javascripts/tiny_mce/plugins/advlink/css/advlink.css",
|
|
315
307
|
"public/javascripts/tiny_mce/plugins/advlink/editor_plugin.js",
|
|
316
308
|
"public/javascripts/tiny_mce/plugins/advlink/editor_plugin_src.js",
|
|
@@ -381,10 +373,6 @@ Gem::Specification.new do |s|
|
|
|
381
373
|
"public/javascripts/tiny_mce/plugins/advlink/langs/vi_dlg.js",
|
|
382
374
|
"public/javascripts/tiny_mce/plugins/advlink/langs/zh_dlg.js",
|
|
383
375
|
"public/javascripts/tiny_mce/plugins/advlink/link.htm",
|
|
384
|
-
"public/javascripts/tiny_mce/plugins/advlinktoo/editor_plugin.js",
|
|
385
|
-
"public/javascripts/tiny_mce/plugins/advlinktoo/editor_plugin_src.js",
|
|
386
|
-
"public/javascripts/tiny_mce/plugins/advlinktoo/js/functions.js",
|
|
387
|
-
"public/javascripts/tiny_mce/plugins/advlinktoo/langs/en_dlg.js",
|
|
388
376
|
"public/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js",
|
|
389
377
|
"public/javascripts/tiny_mce/plugins/autoresize/editor_plugin_src.js",
|
|
390
378
|
"public/javascripts/tiny_mce/plugins/autosave/editor_plugin.js",
|
|
@@ -657,6 +645,18 @@ Gem::Specification.new do |s|
|
|
|
657
645
|
"public/javascripts/tiny_mce/plugins/media/langs/vi_dlg.js",
|
|
658
646
|
"public/javascripts/tiny_mce/plugins/media/langs/zh_dlg.js",
|
|
659
647
|
"public/javascripts/tiny_mce/plugins/media/media.htm",
|
|
648
|
+
"public/javascripts/tiny_mce/plugins/muckfile/editor_plugin.js",
|
|
649
|
+
"public/javascripts/tiny_mce/plugins/muckfile/editor_plugin_src.js",
|
|
650
|
+
"public/javascripts/tiny_mce/plugins/muckfile/js/functions.js",
|
|
651
|
+
"public/javascripts/tiny_mce/plugins/muckfile/langs/en_dlg.js",
|
|
652
|
+
"public/javascripts/tiny_mce/plugins/muckimage/editor_plugin.js",
|
|
653
|
+
"public/javascripts/tiny_mce/plugins/muckimage/editor_plugin_src.js",
|
|
654
|
+
"public/javascripts/tiny_mce/plugins/muckimage/js/functions.js",
|
|
655
|
+
"public/javascripts/tiny_mce/plugins/muckimage/langs/en_dlg.js",
|
|
656
|
+
"public/javascripts/tiny_mce/plugins/mucklink/editor_plugin.js",
|
|
657
|
+
"public/javascripts/tiny_mce/plugins/mucklink/editor_plugin_src.js",
|
|
658
|
+
"public/javascripts/tiny_mce/plugins/mucklink/js/functions.js",
|
|
659
|
+
"public/javascripts/tiny_mce/plugins/mucklink/langs/en_dlg.js",
|
|
660
660
|
"public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin.js",
|
|
661
661
|
"public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js",
|
|
662
662
|
"public/javascripts/tiny_mce/plugins/noneditable/editor_plugin.js",
|
|
@@ -1654,10 +1654,6 @@ Gem::Specification.new do |s|
|
|
|
1654
1654
|
"test/rails_root/public/javascripts/tiny_mce/langs/vi.js",
|
|
1655
1655
|
"test/rails_root/public/javascripts/tiny_mce/langs/zh.js",
|
|
1656
1656
|
"test/rails_root/public/javascripts/tiny_mce/license.txt",
|
|
1657
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advfiletoo/editor_plugin.js",
|
|
1658
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advfiletoo/editor_plugin_src.js",
|
|
1659
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advfiletoo/js/functions.js",
|
|
1660
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advfiletoo/langs/en_dlg.js",
|
|
1661
1657
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advhr/css/advhr.css",
|
|
1662
1658
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advhr/editor_plugin.js",
|
|
1663
1659
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advhr/editor_plugin_src.js",
|
|
@@ -1799,11 +1795,6 @@ Gem::Specification.new do |s|
|
|
|
1799
1795
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advimage/langs/uk_dlg.js",
|
|
1800
1796
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advimage/langs/vi_dlg.js",
|
|
1801
1797
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advimage/langs/zh_dlg.js",
|
|
1802
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advimagetoo/editor_plugin.js",
|
|
1803
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advimagetoo/editor_plugin_src.js",
|
|
1804
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advimagetoo/image.htm",
|
|
1805
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advimagetoo/js/functions.js",
|
|
1806
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advimagetoo/langs/en_dlg.js",
|
|
1807
1798
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advlink/css/advlink.css",
|
|
1808
1799
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advlink/editor_plugin.js",
|
|
1809
1800
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advlink/editor_plugin_src.js",
|
|
@@ -1874,16 +1865,24 @@ Gem::Specification.new do |s|
|
|
|
1874
1865
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advlink/langs/vi_dlg.js",
|
|
1875
1866
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advlink/langs/zh_dlg.js",
|
|
1876
1867
|
"test/rails_root/public/javascripts/tiny_mce/plugins/advlink/link.htm",
|
|
1877
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advlinktoo/editor_plugin.js",
|
|
1878
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advlinktoo/editor_plugin_src.js",
|
|
1879
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advlinktoo/js/functions.js",
|
|
1880
|
-
"test/rails_root/public/javascripts/tiny_mce/plugins/advlinktoo/langs/en_dlg.js",
|
|
1881
1868
|
"test/rails_root/public/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js",
|
|
1882
1869
|
"test/rails_root/public/javascripts/tiny_mce/plugins/autoresize/editor_plugin_src.js",
|
|
1883
1870
|
"test/rails_root/public/javascripts/tiny_mce/plugins/autosave/editor_plugin.js",
|
|
1884
1871
|
"test/rails_root/public/javascripts/tiny_mce/plugins/autosave/editor_plugin_src.js",
|
|
1885
1872
|
"test/rails_root/public/javascripts/tiny_mce/plugins/bbcode/editor_plugin.js",
|
|
1886
1873
|
"test/rails_root/public/javascripts/tiny_mce/plugins/bbcode/editor_plugin_src.js",
|
|
1874
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/bramus_cssextras/editor_plugin.js",
|
|
1875
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/bramus_cssextras/editor_plugin_src.js",
|
|
1876
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/codehighlighting.htm",
|
|
1877
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/css/codehighlighting.css",
|
|
1878
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/editor_plugin.js",
|
|
1879
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/editor_plugin_src.js",
|
|
1880
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/img/Thumbs.db",
|
|
1881
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/img/codehighlight.gif",
|
|
1882
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/img/codehighlight2.gif",
|
|
1883
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/js/codehighlighting.js",
|
|
1884
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/langs/en.js",
|
|
1885
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/codehighlighting/langs/en_dlg.js",
|
|
1887
1886
|
"test/rails_root/public/javascripts/tiny_mce/plugins/compat2x/editor_plugin.js",
|
|
1888
1887
|
"test/rails_root/public/javascripts/tiny_mce/plugins/compat2x/editor_plugin_src.js",
|
|
1889
1888
|
"test/rails_root/public/javascripts/tiny_mce/plugins/contextmenu/editor_plugin.js",
|
|
@@ -2150,6 +2149,19 @@ Gem::Specification.new do |s|
|
|
|
2150
2149
|
"test/rails_root/public/javascripts/tiny_mce/plugins/media/langs/vi_dlg.js",
|
|
2151
2150
|
"test/rails_root/public/javascripts/tiny_mce/plugins/media/langs/zh_dlg.js",
|
|
2152
2151
|
"test/rails_root/public/javascripts/tiny_mce/plugins/media/media.htm",
|
|
2152
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckfile/editor_plugin.js",
|
|
2153
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckfile/editor_plugin_src.js",
|
|
2154
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckfile/js/functions.js",
|
|
2155
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckfile/langs/en_dlg.js",
|
|
2156
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckimage/editor_plugin.js",
|
|
2157
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckimage/editor_plugin_src.js",
|
|
2158
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckimage/image.htm",
|
|
2159
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckimage/js/functions.js",
|
|
2160
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/muckimage/langs/en_dlg.js",
|
|
2161
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/mucklink/editor_plugin.js",
|
|
2162
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/mucklink/editor_plugin_src.js",
|
|
2163
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/mucklink/js/functions.js",
|
|
2164
|
+
"test/rails_root/public/javascripts/tiny_mce/plugins/mucklink/langs/en_dlg.js",
|
|
2153
2165
|
"test/rails_root/public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin.js",
|
|
2154
2166
|
"test/rails_root/public/javascripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js",
|
|
2155
2167
|
"test/rails_root/public/javascripts/tiny_mce/plugins/noneditable/editor_plugin.js",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
return;
|
|
15
15
|
ed.windowManager.open({
|
|
16
16
|
file : jQuery('#tiny_mce_files_path').val(),
|
|
17
|
-
width : parseInt(jQuery('#tiny_mce_files_width').val()) + parseInt(ed.getLang('
|
|
18
|
-
height : parseInt(jQuery('#tiny_mce_files_height').val()) + parseInt(ed.getLang('
|
|
17
|
+
width : parseInt(jQuery('#tiny_mce_files_width').val()) + parseInt(ed.getLang('muckfile.delta_width', 0)),
|
|
18
|
+
height : parseInt(jQuery('#tiny_mce_files_height').val()) + parseInt(ed.getLang('muckfile.delta_height', 0)),
|
|
19
19
|
inline : 1
|
|
20
20
|
}, {
|
|
21
21
|
plugin_url : url
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
40
|
// Register plugin
|
|
41
|
-
tinymce.PluginManager.add('
|
|
41
|
+
tinymce.PluginManager.add('muckfile', tinymce.plugins.AdvancedFileTooPlugin);
|
|
42
42
|
})();
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
return;
|
|
15
15
|
ed.windowManager.open({
|
|
16
16
|
file : jQuery('#tiny_mce_files_path').val(),
|
|
17
|
-
width : parseInt(jQuery('#tiny_mce_files_width').val()) + parseInt(ed.getLang('
|
|
18
|
-
height : parseInt(jQuery('#tiny_mce_files_height').val()) + parseInt(ed.getLang('
|
|
17
|
+
width : parseInt(jQuery('#tiny_mce_files_width').val()) + parseInt(ed.getLang('muckfile.delta_width', 0)),
|
|
18
|
+
height : parseInt(jQuery('#tiny_mce_files_height').val()) + parseInt(ed.getLang('muckfile.delta_height', 0)),
|
|
19
19
|
inline : 1
|
|
20
20
|
}, {
|
|
21
21
|
plugin_url : url
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
}
|
|
39
39
|
});
|
|
40
40
|
// Register plugin
|
|
41
|
-
tinymce.PluginManager.add('
|
|
41
|
+
tinymce.PluginManager.add('muckfile', tinymce.plugins.AdvancedFileTooPlugin);
|
|
42
42
|
})();
|
|
File without changes
|
|
File without changes
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
return;
|
|
15
15
|
ed.windowManager.open({
|
|
16
16
|
file : jQuery('#tiny_mce_images_path').val(),
|
|
17
|
-
width : parseInt(jQuery('#tiny_mce_images_width').val()) + parseInt(ed.getLang('
|
|
18
|
-
height : parseInt(jQuery('#tiny_mce_images_height').val()) + parseInt(ed.getLang('
|
|
17
|
+
width : parseInt(jQuery('#tiny_mce_images_width').val()) + parseInt(ed.getLang('muckfile.delta_width', 0)),
|
|
18
|
+
height : parseInt(jQuery('#tiny_mce_images_height').val()) + parseInt(ed.getLang('muckfile.delta_height', 0)),
|
|
19
19
|
inline : 1
|
|
20
20
|
}, {
|
|
21
21
|
plugin_url : url
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
// Register plugin
|
|
40
|
-
tinymce.PluginManager.add('
|
|
40
|
+
tinymce.PluginManager.add('muckimage', tinymce.plugins.AdvancedImageTooPlugin);
|
|
41
41
|
})();
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
return;
|
|
15
15
|
ed.windowManager.open({
|
|
16
16
|
file : jQuery('#tiny_mce_images_path').val(),
|
|
17
|
-
width : parseInt(jQuery('#tiny_mce_images_width').val()) + parseInt(ed.getLang('
|
|
18
|
-
height : parseInt(jQuery('#tiny_mce_images_height').val()) + parseInt(ed.getLang('
|
|
17
|
+
width : parseInt(jQuery('#tiny_mce_images_width').val()) + parseInt(ed.getLang('muckfile.delta_width', 0)),
|
|
18
|
+
height : parseInt(jQuery('#tiny_mce_images_height').val()) + parseInt(ed.getLang('muckfile.delta_height', 0)),
|
|
19
19
|
inline : 1
|
|
20
20
|
}, {
|
|
21
21
|
plugin_url : url
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
// Register plugin
|
|
40
|
-
tinymce.PluginManager.add('
|
|
40
|
+
tinymce.PluginManager.add('muckimage', tinymce.plugins.AdvancedImageTooPlugin);
|
|
41
41
|
})();
|
|
File without changes
|
|
File without changes
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
return;
|
|
16
16
|
ed.windowManager.open({
|
|
17
17
|
file : jQuery('#tiny_mce_links_path').val(),
|
|
18
|
-
width : parseInt(jQuery('#tiny_mce_links_width').val()) + parseInt(ed.getLang('
|
|
19
|
-
height : parseInt(jQuery('#tiny_mce_links_height').val()) + parseInt(ed.getLang('
|
|
18
|
+
width : parseInt(jQuery('#tiny_mce_links_width').val()) + parseInt(ed.getLang('mucklink.delta_width', 0)),
|
|
19
|
+
height : parseInt(jQuery('#tiny_mce_links_height').val()) + parseInt(ed.getLang('mucklink.delta_height', 0)),
|
|
20
20
|
inline : 1
|
|
21
21
|
}, {
|
|
22
22
|
plugin_url : url
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
});
|
|
25
25
|
// Register buttons
|
|
26
26
|
ed.addButton('link', {
|
|
27
|
-
title : '
|
|
27
|
+
title : 'mucklink.link_desc',
|
|
28
28
|
cmd : 'mceAdvLinkToo'
|
|
29
29
|
});
|
|
30
|
-
ed.addShortcut('ctrl+k', '
|
|
30
|
+
ed.addShortcut('ctrl+k', 'mucklink.advlink_desc', 'mceAdvLinkToo');
|
|
31
31
|
ed.onNodeChange.add(function(ed, cm, n, co) {
|
|
32
32
|
cm.setDisabled('link', co && n.nodeName != 'A');
|
|
33
33
|
cm.setActive('link', n.nodeName == 'A' && !n.name);
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
// Register plugin
|
|
46
|
-
tinymce.PluginManager.add('
|
|
46
|
+
tinymce.PluginManager.add('mucklink', tinymce.plugins.AdvancedLinkTooPlugin);
|
|
47
47
|
})();
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
return;
|
|
16
16
|
ed.windowManager.open({
|
|
17
17
|
file : jQuery('#tiny_mce_links_path').val(),
|
|
18
|
-
width : parseInt(jQuery('#tiny_mce_links_width').val()) + parseInt(ed.getLang('
|
|
19
|
-
height : parseInt(jQuery('#tiny_mce_links_height').val()) + parseInt(ed.getLang('
|
|
18
|
+
width : parseInt(jQuery('#tiny_mce_links_width').val()) + parseInt(ed.getLang('mucklink.delta_width', 0)),
|
|
19
|
+
height : parseInt(jQuery('#tiny_mce_links_height').val()) + parseInt(ed.getLang('mucklink.delta_height', 0)),
|
|
20
20
|
inline : 1
|
|
21
21
|
}, {
|
|
22
22
|
plugin_url : url
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
});
|
|
25
25
|
// Register buttons
|
|
26
26
|
ed.addButton('link', {
|
|
27
|
-
title : '
|
|
27
|
+
title : 'mucklink.link_desc',
|
|
28
28
|
cmd : 'mceAdvLinkToo'
|
|
29
29
|
});
|
|
30
|
-
ed.addShortcut('ctrl+k', '
|
|
30
|
+
ed.addShortcut('ctrl+k', 'mucklink.advlink_desc', 'mceAdvLinkToo');
|
|
31
31
|
ed.onNodeChange.add(function(ed, cm, n, co) {
|
|
32
32
|
cm.setDisabled('link', co && n.nodeName != 'A');
|
|
33
33
|
cm.setActive('link', n.nodeName == 'A' && !n.name);
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
}
|
|
44
44
|
});
|
|
45
45
|
// Register plugin
|
|
46
|
-
tinymce.PluginManager.add('
|
|
46
|
+
tinymce.PluginManager.add('mucklink', tinymce.plugins.AdvancedLinkTooPlugin);
|
|
47
47
|
})();
|
|
@@ -26,8 +26,8 @@ function init() {
|
|
|
26
26
|
var action = "insert";
|
|
27
27
|
var html;
|
|
28
28
|
|
|
29
|
-
document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','
|
|
30
|
-
document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','
|
|
29
|
+
document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','mucklink');
|
|
30
|
+
document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','mucklink');
|
|
31
31
|
document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
|
|
32
32
|
document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
|
|
33
33
|
document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
|
|
File without changes
|
|
@@ -57,9 +57,11 @@ default: &DEFAULT
|
|
|
57
57
|
content_git_repository: "#{File.join(RAILS_ROOT, 'repo', RAILS_ENV)}"
|
|
58
58
|
enable_auto_translations: true
|
|
59
59
|
content_enable_solr: false
|
|
60
|
+
content_css: ['/stylesheets/reset.css', '/stylesheets/styles.css']
|
|
60
61
|
|
|
61
62
|
production:
|
|
62
63
|
<<: *DEFAULT
|
|
64
|
+
content_css: ['/stylesheets/all.css']
|
|
63
65
|
|
|
64
66
|
development:
|
|
65
67
|
<<: *DEFAULT
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
content_css = ['/stylesheets/reset.css', '/stylesheets/ie.css', '/stylesheets/application.css', '/stylesheets/common.css', '/stylesheets/standard.css']
|
|
2
|
-
if Rails.env.production?
|
|
3
|
-
content_css = ['/stylesheets/all.css']
|
|
4
|
-
end
|
|
5
1
|
GlobalConfig.advanced_mce_options = {
|
|
6
2
|
:theme => 'advanced',
|
|
7
|
-
:content_css => content_css,
|
|
3
|
+
:content_css => GlobalConfig.content_css,
|
|
8
4
|
:body_id => 'content',
|
|
9
5
|
:mode => "textareas",
|
|
10
6
|
:height => 650,
|
|
@@ -24,17 +20,24 @@ GlobalConfig.advanced_mce_options = {
|
|
|
24
20
|
:theme_advanced_buttons1 => %w{save cancel print preview separator
|
|
25
21
|
search replace separator
|
|
26
22
|
cut copy paste pastetext pasteword selectall undo redo separator
|
|
27
|
-
bold italic underline strikethrough
|
|
23
|
+
bold italic underline strikethrough separator
|
|
28
24
|
justifyleft justifycenter justifyright indent outdent separator
|
|
29
25
|
bullist numlist separator
|
|
30
|
-
link unlink image file media anchor separator
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
link unlink image file media anchor separator
|
|
27
|
+
template visualaid separator
|
|
28
|
+
fullscreen code},
|
|
29
|
+
:theme_advanced_buttons2 => %w{styleprops styleselect separator
|
|
30
|
+
formatselect fontselect fontsizeselect separator
|
|
31
|
+
forecolor backcolor separator
|
|
33
32
|
tablecontrols separator
|
|
34
|
-
sub sup charmap
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
:plugins => %w{ paste media preview inlinepopups safari save searchreplace table style template fullscreen print autosave
|
|
33
|
+
sub sup charmap },
|
|
34
|
+
:theme_advanced_buttons3 => %w{}, #bramus_cssextras_classes bramus_cssextras_ids
|
|
35
|
+
#:theme_advanced_buttons3 => %w{cleanup code insertdate inserttime removeformat insertlayer},
|
|
36
|
+
:plugins => %w{ paste media preview inlinepopups safari save searchreplace table style template fullscreen print autosave muckimage mucklink},
|
|
37
|
+
# codehighlighting
|
|
38
|
+
# spellchecker,pagebreak,layer,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,
|
|
39
|
+
# contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template
|
|
40
|
+
# bramus_cssextras
|
|
38
41
|
:editor_deselector => "mceNoEditor",
|
|
39
42
|
:editor_selector => 'mceEditor',
|
|
40
43
|
:remove_script_host => true,
|
|
@@ -50,7 +53,7 @@ GlobalConfig.advanced_mce_options = {
|
|
|
50
53
|
|
|
51
54
|
GlobalConfig.simple_mce_options = {
|
|
52
55
|
:theme => 'advanced',
|
|
53
|
-
:content_css => content_css,
|
|
56
|
+
:content_css => GlobalConfig.content_css,
|
|
54
57
|
:body_id => 'content',
|
|
55
58
|
:browsers => %w{msie gecko safari},
|
|
56
59
|
:cleanup_on_startup => true,
|
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name bramus_cssextras
|
|
3
|
+
* @version 0.5.0
|
|
4
|
+
*
|
|
5
|
+
* @author Bramus! (Bram Van Damme)
|
|
6
|
+
* @authorURL http://www.bram.us/
|
|
7
|
+
* @infoURL http://www.bram.us/projects/tinymce-plugins/
|
|
8
|
+
*
|
|
9
|
+
* @license Creative Commons Attribution-Share Alike 2.5
|
|
10
|
+
* @licenseURL http://creativecommons.org/licenses/by-sa/2.5/
|
|
11
|
+
*
|
|
12
|
+
* v 0.5.0 - 2007.12.11 - NEW : TinyMCE 3.x Compatibility (TinyMCE 2.x is no longer supported)
|
|
13
|
+
* v 0.4.1 - 2007.11.22 - BUG : didn't work with multiple content_css files specified (@see http://www.bram.us/projects/tinymce-plugins/tinymce-classes-and-ids-plugin-bramus_cssextras/#comment-89820)
|
|
14
|
+
* - BUG : If for example p.test is defined multiple times, show "test" only once in the dropdown.
|
|
15
|
+
* v 0.4.0 - 2007.09.10 - BUG : selection noclass returned "undefined" as class, should be empty
|
|
16
|
+
* - ADD : automatic building of the bramus_cssextras_classesstring and bramus_cssextras_idsstring
|
|
17
|
+
* v 0.3.3 - 2007.07.27 - getInfo returned wrong version. Fixed + version increment.
|
|
18
|
+
* v 0.3.2 - 2007.07.23 - minor change in outputted HTML of the selects
|
|
19
|
+
* v 0.3.1 - 2007.06.28 - ids must be unique, so added a check and confirm thingy ;-)
|
|
20
|
+
* v 0.3 - 2007.06.27 - Plugin changed from bramus_classeslist to bramus_cssextras as it now supports the settings of ids too :-)
|
|
21
|
+
* v 0.2 - 2007.06.22 - added Undo Levels + a few extra comments (should be fully commented now)
|
|
22
|
+
* v 0.1 - 2007.06.19 - initial build
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
(function() {
|
|
26
|
+
|
|
27
|
+
// Load plugin specific language pack
|
|
28
|
+
// tinymce.PluginManager.requireLangPack('bramus_cssextras');
|
|
29
|
+
|
|
30
|
+
tinymce.create('tinymce.plugins.BramusCssExtras', {
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Returns information about the plugin as a name/value array.
|
|
34
|
+
* The current keys are longname, author, authorurl, infourl and version.
|
|
35
|
+
*
|
|
36
|
+
* @return {Object} Name/value array containing information about the plugin.
|
|
37
|
+
*/
|
|
38
|
+
getInfo : function() {
|
|
39
|
+
return {
|
|
40
|
+
longname : 'Plugin to support the adding of classes and ids to elements (or their parent element)',
|
|
41
|
+
author : 'Bramus!',
|
|
42
|
+
authorurl : 'http://www.bram.us/',
|
|
43
|
+
infourl : 'http://www.bram.us/projects/tinymce-plugins/',
|
|
44
|
+
version : "0.5.0"
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Initializes the plugin, this will be executed after the plugin has been created.
|
|
51
|
+
* This call is done before the editor instance has finished it's initialization so use the onInit event
|
|
52
|
+
* of the editor instance to intercept that event.
|
|
53
|
+
*
|
|
54
|
+
* @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
|
|
55
|
+
* @param {string} url Absolute URL to where the plugin is located.
|
|
56
|
+
*/
|
|
57
|
+
init : function(ed, url) {
|
|
58
|
+
this._init(ed, url);
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Creates control instances based in the incomming name. This method is normally not
|
|
64
|
+
* needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
|
|
65
|
+
* but you sometimes need to create more complex controls like listboxes, split buttons etc then this
|
|
66
|
+
* method can be used to create those.
|
|
67
|
+
*
|
|
68
|
+
* @param {String} n Name of the control to create.
|
|
69
|
+
* @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
|
|
70
|
+
* @return {tinymce.ui.Control} New control instance or null if no control was created.
|
|
71
|
+
*/
|
|
72
|
+
createControl : function(n, cm) {
|
|
73
|
+
switch (n) {
|
|
74
|
+
case 'bramus_cssextras_classes':
|
|
75
|
+
case 'bramus_cssextras_ids':
|
|
76
|
+
return this._createControl(n, cm);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return null;
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Internally used variables
|
|
86
|
+
* ---------------------------------------------------------------------------------------------------
|
|
87
|
+
*/
|
|
88
|
+
|
|
89
|
+
// Strings that will hold all possible classes/ids /* removed, these are global now */
|
|
90
|
+
// _coreClassesString : null,
|
|
91
|
+
// _coreIdsStrings : null,
|
|
92
|
+
|
|
93
|
+
// Arrays that will hold all possible classes/ids /* removed, these are global now */
|
|
94
|
+
// _coreClassesArray : null,
|
|
95
|
+
// _coreIdsArray : null,
|
|
96
|
+
|
|
97
|
+
// The dropdowns
|
|
98
|
+
_coreClassesDropdown : null,
|
|
99
|
+
_coreIdsDropdown : null,
|
|
100
|
+
|
|
101
|
+
// XHR Object & Response - needed for loading the content_css file(s) if needed
|
|
102
|
+
_xmlhttp : null,
|
|
103
|
+
_xmlhttpresponse : null,
|
|
104
|
+
|
|
105
|
+
// CPU Power Savers : The previous node (don't calculate if nothing changed) and Already loaded (only init this plugin once)
|
|
106
|
+
_previousNode : null,
|
|
107
|
+
// _loaded : null, /* removed, these are global now */
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Helper Functions
|
|
112
|
+
* ---------------------------------------------------------------------------------------------------
|
|
113
|
+
*/
|
|
114
|
+
|
|
115
|
+
// Helper function : trim a string
|
|
116
|
+
_trim : function(str) {
|
|
117
|
+
return str.replace(/^\s+|\s+$/g,"");
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
// Helper function : left trim a string
|
|
121
|
+
_ltrim : function(str) {
|
|
122
|
+
return str.replace(/^\s+/,"");
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
// Helper function : right trim a a string
|
|
126
|
+
_rtrim : function() {
|
|
127
|
+
return this.replace(/\s+$/,"");
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
// Helper function : is element in array (and return position if so)
|
|
131
|
+
_inArray : function(needle, haystack) {
|
|
132
|
+
|
|
133
|
+
// loop all elements of array (haystack)
|
|
134
|
+
for (var i = 0; i < haystack.length; i++){
|
|
135
|
+
|
|
136
|
+
// compare with needle
|
|
137
|
+
if (needle == haystack[i]) {
|
|
138
|
+
|
|
139
|
+
// got hit : return position in array
|
|
140
|
+
return i;
|
|
141
|
+
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
}
|
|
145
|
+
// no hit
|
|
146
|
+
return false;
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Init function
|
|
151
|
+
* ---------------------------------------------------------------------------------------------------
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
_init : function (ed, url) {
|
|
155
|
+
|
|
156
|
+
// if not intialized yet: get the params & build the arrays
|
|
157
|
+
if (tinymce.plugins.BramusCssExtras._loaded == undefined) {
|
|
158
|
+
|
|
159
|
+
// get the params
|
|
160
|
+
tinymce.plugins.BramusCssExtras._coreClassesString = tinyMCE.activeEditor.getParam("bramus_cssextras_classesstring", undefined);
|
|
161
|
+
tinymce.plugins.BramusCssExtras._coreIdsString = tinyMCE.activeEditor.getParam("bramus_cssextras_idsstring", undefined);
|
|
162
|
+
|
|
163
|
+
// one of the params was not set, try to get the content_css over XHR (Ajax)
|
|
164
|
+
if ((tinymce.plugins.BramusCssExtras._coreClassesString == undefined) || (tinymce.plugins.BramusCssExtras._coreIdsString == undefined)) {
|
|
165
|
+
this._loadContentCSS(tinyMCE.activeEditor.getParam("content_css", false));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// now that we have the params, process 'm
|
|
169
|
+
tinymce.plugins.BramusCssExtras._coreClassesArray = this._processElementsAndShizzle(tinymce.plugins.BramusCssExtras._coreClassesString.split(';'));
|
|
170
|
+
tinymce.plugins.BramusCssExtras._coreIdsArray = this._processElementsAndShizzle(tinymce.plugins.BramusCssExtras._coreIdsString.split(';'));
|
|
171
|
+
|
|
172
|
+
// debug
|
|
173
|
+
// console.log(tinymce.plugins.BramusCssExtras._coreClassesArray);
|
|
174
|
+
// console.log(tinymce.plugins.BramusCssExtras._coreIdsArray);
|
|
175
|
+
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// hook plugin to nodeChange event
|
|
179
|
+
ed.onNodeChange.add(this._nodeChange, this);
|
|
180
|
+
|
|
181
|
+
// hook Commands
|
|
182
|
+
ed.addCommand('bceClass', function(ui, v) {
|
|
183
|
+
this._execCommand(ed, v, this._coreClassesDropdown, "class");
|
|
184
|
+
}, this);
|
|
185
|
+
|
|
186
|
+
ed.addCommand('bceId', function(ui, v) {
|
|
187
|
+
this._execCommand(ed, v, this._coreIdsDropdown, "id");
|
|
188
|
+
}, this);
|
|
189
|
+
|
|
190
|
+
// set loaded
|
|
191
|
+
tinymce.plugins.BramusCssExtras._loaded = true;
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* loadContentCSS function : loads in the content_css over XHR
|
|
196
|
+
* ---------------------------------------------------------------------------------------------------
|
|
197
|
+
*/
|
|
198
|
+
|
|
199
|
+
_loadContentCSS : function(content_css) {
|
|
200
|
+
|
|
201
|
+
// only proceed if content_css is set
|
|
202
|
+
if (content_css == false) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// create nex XHR object
|
|
207
|
+
if (window.XMLHttpRequest) {
|
|
208
|
+
this._xmlhttp = new XMLHttpRequest();
|
|
209
|
+
} else if (window.ActiveXObject) {
|
|
210
|
+
this._xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// var which will hold all data from all files referred through content_css
|
|
214
|
+
content_css_data = "";
|
|
215
|
+
|
|
216
|
+
// make sure it's an object
|
|
217
|
+
if (typeof(this._xmlhttp) == 'object') {
|
|
218
|
+
|
|
219
|
+
// content_css exists?
|
|
220
|
+
if (content_css && (content_css != null) && (content_css != "")) {
|
|
221
|
+
|
|
222
|
+
// support the referring of multiple classes
|
|
223
|
+
content_css_arr = content_css.split(',');
|
|
224
|
+
|
|
225
|
+
// loop all referred css files
|
|
226
|
+
for (i = 0; i < content_css_arr.length; i++) {
|
|
227
|
+
|
|
228
|
+
// load it in, but <<<< SYNCHRONOUS >>>>
|
|
229
|
+
// this._xmlhttp.onreadystatechange = this._doneLoadContentCSS; // SYNCHRONOUS, no need to set onreadystatechange!
|
|
230
|
+
this._xmlhttp.open('GET', this._trim(content_css_arr[i]), false); // false == SYNCHRONOUS ;-)
|
|
231
|
+
this._xmlhttp.send(null);
|
|
232
|
+
|
|
233
|
+
// wait for it to load
|
|
234
|
+
if (this._xmlhttp.readyState == 4) {
|
|
235
|
+
|
|
236
|
+
// loaded!
|
|
237
|
+
if (this._xmlhttp.status == 200) {
|
|
238
|
+
|
|
239
|
+
// get the responseText
|
|
240
|
+
this._xmlhttpresponse = this._xmlhttp.responseText;
|
|
241
|
+
|
|
242
|
+
// run some prelim regexes on them
|
|
243
|
+
this._xmlhttpresponse = this._xmlhttpresponse.replace(/(\r\n)/g, ""); // get all CSS rules on 1 line per selector : 1 line on whole document
|
|
244
|
+
this._xmlhttpresponse = this._xmlhttpresponse.replace(/(\})/g, "}\n"); // get all CSS rules on 1 line per selector : 1 line per selector
|
|
245
|
+
this._xmlhttpresponse = this._xmlhttpresponse.replace(/\{(.*)\}/g, ""); // strip out css rules themselves
|
|
246
|
+
this._xmlhttpresponse = this._xmlhttpresponse.replace(/\/\*(.*)\*\//g, ""); // strip out comments
|
|
247
|
+
this._xmlhttpresponse = this._xmlhttpresponse.replace(/\t/g, ""); // strip out tabs
|
|
248
|
+
|
|
249
|
+
content_css_data += this._xmlhttpresponse + "\n";
|
|
250
|
+
|
|
251
|
+
// not loaded!
|
|
252
|
+
} else {
|
|
253
|
+
tinyMCE.activeEditor.windowManager.alert("[bramus_cssextras] Error while loading content_css file '" + content_css_arr[i] + "', make sure the path is correct!");
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// clear the xhr object
|
|
259
|
+
this._xmlhttp = null;
|
|
260
|
+
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// process the content_css_data (only if the vars are not set yet - viz. don't overwrite)
|
|
265
|
+
if (tinymce.plugins.BramusCssExtras._coreClassesString == undefined) {
|
|
266
|
+
tinymce.plugins.BramusCssExtras._coreClassesString = this._processContentCSSMatches(content_css_data, ".");
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (tinymce.plugins.BramusCssExtras._coreIdsString == undefined) {
|
|
270
|
+
tinymce.plugins.BramusCssExtras._coreIdsString = this._processContentCSSMatches(content_css_data, "#");
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
},
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* processContentCSSMatches function : processes the matches loaded over XHR
|
|
278
|
+
* ---------------------------------------------------------------------------------------------------
|
|
279
|
+
*/
|
|
280
|
+
|
|
281
|
+
_processContentCSSMatches : function(content_css_data, identifier) {
|
|
282
|
+
|
|
283
|
+
// split da sucker!
|
|
284
|
+
if (identifier == ".") {
|
|
285
|
+
matches = content_css_data.match(/([a-zA-Z0-9])+(\.)([a-zA-Z0-9_\-])+(\b)?/g);
|
|
286
|
+
} else {
|
|
287
|
+
matches = content_css_data.match(/([a-zA-Z0-9])+(\#)([a-zA-Z0-9_\-])+(\b)?/g);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// got any matches?
|
|
291
|
+
if (!matches) {
|
|
292
|
+
return "";
|
|
293
|
+
} else {
|
|
294
|
+
arr_selectors = new Array();
|
|
295
|
+
arr_values = new Array();
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// run matches and build selectors and values arrays.
|
|
299
|
+
for (var i = 0; i < matches.length; i++) {
|
|
300
|
+
|
|
301
|
+
// split on the identifier
|
|
302
|
+
matches[i] = matches[i].split(identifier);
|
|
303
|
+
|
|
304
|
+
var position = this._inArray(((matches[i][0] != "ul")?matches[i][0]:"li") + "::" + ((matches[i][0] != "ul")?"self":matches[i][0]), arr_selectors);
|
|
305
|
+
|
|
306
|
+
// not found : add selector and classes/ids
|
|
307
|
+
if (position === false) {
|
|
308
|
+
arr_selectors.push(((matches[i][0] != "ul")?matches[i][0]:"li") + "::" + ((matches[i][0] != "ul")?"self":matches[i][0]));
|
|
309
|
+
arr_values.push(matches[i][1]);
|
|
310
|
+
|
|
311
|
+
// found, adjust ids on position
|
|
312
|
+
} else {
|
|
313
|
+
// extra check: check if ain't class/id isn't in values yet!
|
|
314
|
+
if (this._inArray(matches[i][1], arr_values[position].split(',')) === false) {
|
|
315
|
+
arr_values[position] = arr_values[position] + "," + matches[i][1];
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// build the elmsAndShizzleArray (Shizzle being either Ids or Classes)
|
|
322
|
+
var elmsAndShizzleArray = new Array();
|
|
323
|
+
|
|
324
|
+
for (var i = 0; i < arr_selectors.length; i++) {
|
|
325
|
+
elmsAndShizzleArray.push(arr_selectors[i] + "[" + arr_values[i] + "]");
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
return elmsAndShizzleArray.join(';');
|
|
329
|
+
},
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* processMatches
|
|
333
|
+
* ---------------------------------------------------------------------------------------------------
|
|
334
|
+
*/
|
|
335
|
+
|
|
336
|
+
_processElementsAndShizzle : function(elmsAndShizzleArray) {
|
|
337
|
+
|
|
338
|
+
// create new array to hold the real stuff
|
|
339
|
+
coreArray = new Array();
|
|
340
|
+
|
|
341
|
+
// if no array passed in, return an empty array!
|
|
342
|
+
if (!elmsAndShizzleArray) {
|
|
343
|
+
return coreArray;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// loop the entries of elmsAndClassesArray
|
|
347
|
+
if (elmsAndShizzleArray.length > 0) {
|
|
348
|
+
for (var i = 0; i < elmsAndShizzleArray.length; i++) {
|
|
349
|
+
|
|
350
|
+
// check if syntax is correct and get data from the entry
|
|
351
|
+
var elmAndShizzleString = elmsAndShizzleArray[i];
|
|
352
|
+
var elmAndShizzleArray = elmAndShizzleString.match(/(.*)::(.*)\[(.*)\]/);
|
|
353
|
+
|
|
354
|
+
// got less than 4 matches : invalid entry!
|
|
355
|
+
if ((!elmAndShizzleArray) || (elmAndShizzleArray.length < 4)) {
|
|
356
|
+
|
|
357
|
+
// nothing
|
|
358
|
+
|
|
359
|
+
// found 4 matches : valid entry!
|
|
360
|
+
} else{
|
|
361
|
+
|
|
362
|
+
// get elementNodeName, parentElementNodeName, elementClasses and push them on the arrayz!
|
|
363
|
+
coreArray.push(new Array(elmAndShizzleArray[1], elmAndShizzleArray[2], elmAndShizzleArray[3].split(',')));
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// return it
|
|
369
|
+
return coreArray;
|
|
370
|
+
},
|
|
371
|
+
|
|
372
|
+
/**
|
|
373
|
+
* createControl function
|
|
374
|
+
* ---------------------------------------------------------------------------------------------------
|
|
375
|
+
*/
|
|
376
|
+
|
|
377
|
+
_createControl : function (n, cm) {
|
|
378
|
+
|
|
379
|
+
switch(n) {
|
|
380
|
+
|
|
381
|
+
// bramus_cssextras_classes
|
|
382
|
+
case "bramus_cssextras_classes":
|
|
383
|
+
|
|
384
|
+
// create a dropdown
|
|
385
|
+
ddm = cm.createListBox('bramus_cssextras_classes_dropdown_' + tinyMCE.activeEditor.id, {
|
|
386
|
+
title : '.class',
|
|
387
|
+
cmd : 'bceClass'
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
// keep a reference to it in our own instance!
|
|
391
|
+
this._coreClassesDropdown = ddm;
|
|
392
|
+
|
|
393
|
+
// return it
|
|
394
|
+
return ddm;
|
|
395
|
+
|
|
396
|
+
break;
|
|
397
|
+
|
|
398
|
+
// bramus_cssextras_ids
|
|
399
|
+
case "bramus_cssextras_ids":
|
|
400
|
+
|
|
401
|
+
// create a dropdown
|
|
402
|
+
ddm = cm.createListBox('bramus_cssextras_ids_dropdown_' + tinyMCE.activeEditor.id, {
|
|
403
|
+
title : '#id',
|
|
404
|
+
cmd : 'bceId'
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
// keep a reference to it in our own instance!
|
|
408
|
+
this._coreIdsDropdown = ddm;
|
|
409
|
+
|
|
410
|
+
// return it
|
|
411
|
+
return ddm;
|
|
412
|
+
|
|
413
|
+
break;
|
|
414
|
+
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
return null;
|
|
418
|
+
},
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* nodeChange Function : event which gets triggered when the node has changed
|
|
423
|
+
* ---------------------------------------------------------------------------------------------------
|
|
424
|
+
*/
|
|
425
|
+
|
|
426
|
+
_nodeChange : function(ed, cm, n) {
|
|
427
|
+
|
|
428
|
+
// save your energy : check if ed.id equals tinyMCE.activeEditor.id
|
|
429
|
+
if (tinyMCE.activeEditor.id != ed.id) {
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
// save your energy : no node select : return!
|
|
434
|
+
if (n == null)
|
|
435
|
+
return;
|
|
436
|
+
|
|
437
|
+
// save your energy : check if node differs from previousnode. If not, then we don't need to loop this all again ;-)
|
|
438
|
+
if (n == this._previousNode) {
|
|
439
|
+
return;
|
|
440
|
+
} else {
|
|
441
|
+
this._previousNode = n;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// check if current elem has a match in the _coreArrayClasses or _coreArrayIds
|
|
445
|
+
var gotHitClass = this._checkHit(tinymce.plugins.BramusCssExtras._coreClassesArray);
|
|
446
|
+
var gotHitIds = this._checkHit(tinymce.plugins.BramusCssExtras._coreIdsArray);
|
|
447
|
+
|
|
448
|
+
// now do something with that hit and that dropdown!
|
|
449
|
+
this._rebuildDropdown(gotHitClass, this._coreClassesDropdown, "class", ed);
|
|
450
|
+
this._rebuildDropdown(gotHitIds, this._coreIdsDropdown, "id", ed);
|
|
451
|
+
|
|
452
|
+
},
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* checkHit : checks if the current node matches any of the arrays
|
|
457
|
+
* ---------------------------------------------------------------------------------------------------
|
|
458
|
+
*/
|
|
459
|
+
_checkHit : function(coreArray) {
|
|
460
|
+
|
|
461
|
+
// correarray not null?
|
|
462
|
+
if (coreArray) {
|
|
463
|
+
for (var i = 0; i < coreArray.length; i++) {
|
|
464
|
+
if (coreArray[i][0].toLowerCase() == this._previousNode.nodeName.toLowerCase()) {
|
|
465
|
+
return coreArray[i];
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
return null;
|
|
471
|
+
|
|
472
|
+
},
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* rebuildDropdown : rebuilds the dropdowns and makes it so that the correct value is selected
|
|
477
|
+
* ---------------------------------------------------------------------------------------------------
|
|
478
|
+
*/
|
|
479
|
+
_rebuildDropdown : function(gotHit, selectDropDown, what, ed) {
|
|
480
|
+
|
|
481
|
+
if (gotHit === null) {
|
|
482
|
+
|
|
483
|
+
// only continue if a dropdown is present!
|
|
484
|
+
if (selectDropDown) {
|
|
485
|
+
|
|
486
|
+
// remove existing items
|
|
487
|
+
selectDropDown.items = [];
|
|
488
|
+
|
|
489
|
+
// TinyMCE fix - TIP : Moxiecode should provide a neat way to removing all items!
|
|
490
|
+
selectDropDown.oldID = null;
|
|
491
|
+
|
|
492
|
+
// select nothing
|
|
493
|
+
selectDropDown.select();
|
|
494
|
+
|
|
495
|
+
// disable the dropdown
|
|
496
|
+
selectDropDown.setDisabled(true);
|
|
497
|
+
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
} else {
|
|
501
|
+
|
|
502
|
+
// get params from gotHit
|
|
503
|
+
var elemNodeName = gotHit[0];
|
|
504
|
+
var parentElemNodeName = gotHit[1];
|
|
505
|
+
var elementClasses = gotHit[2];
|
|
506
|
+
|
|
507
|
+
// continue if parentElemNodeName equals self, or if parent node equals parentElemNodeName
|
|
508
|
+
if ((parentElemNodeName == "self") || (ed.dom.getParent(this._previousNode, parentElemNodeName).nodeName.toLowerCase() == parentElemNodeName)) {
|
|
509
|
+
|
|
510
|
+
// remove existing items
|
|
511
|
+
selectDropDown.items = [];
|
|
512
|
+
|
|
513
|
+
// TinyMCE fix - TIP : Moxiecode should provide a neat way to removing all items!
|
|
514
|
+
selectDropDown.oldID = null;
|
|
515
|
+
|
|
516
|
+
// push on the new ones (and enforce first one)
|
|
517
|
+
selectDropDown.add('[ no ' + what + ' ]', parentElemNodeName + "::");
|
|
518
|
+
|
|
519
|
+
// select nothing
|
|
520
|
+
selectDropDown.select();
|
|
521
|
+
|
|
522
|
+
// fill the dropdown with the values
|
|
523
|
+
for (var i = 0; i < elementClasses.length; i++) {
|
|
524
|
+
|
|
525
|
+
selectDropDown.add(elementClasses[i], parentElemNodeName + "::" + elementClasses[i]);
|
|
526
|
+
|
|
527
|
+
// this node or the parent node?
|
|
528
|
+
if (parentElemNodeName == "self") {
|
|
529
|
+
var pNode = this._previousNode;
|
|
530
|
+
} else {
|
|
531
|
+
var pNode = ed.dom.getParent(this._previousNode, parentElemNodeName);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
// if the instance currently has this class, set this option as selected
|
|
535
|
+
switch(what) {
|
|
536
|
+
case "class":
|
|
537
|
+
if (ed.dom.hasClass(pNode, elementClasses[i])) {
|
|
538
|
+
selectDropDown.select(parentElemNodeName + "::" + elementClasses[i]);
|
|
539
|
+
}
|
|
540
|
+
break;
|
|
541
|
+
case "id":
|
|
542
|
+
if (pNode.id == elementClasses[i]) {
|
|
543
|
+
selectDropDown.select(parentElemNodeName + "::" + elementClasses[i]);
|
|
544
|
+
}
|
|
545
|
+
break;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// render the selectdropdown
|
|
553
|
+
selectDropDown.renderMenu();
|
|
554
|
+
|
|
555
|
+
// enable the selectbox!
|
|
556
|
+
selectDropDown.setDisabled(false);
|
|
557
|
+
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
},
|
|
561
|
+
|
|
562
|
+
_execCommand : function(ed, listValue, selectDropDown, what) {
|
|
563
|
+
|
|
564
|
+
// this node or the parent node?
|
|
565
|
+
if (listValue.split("::")[0] == "self") {
|
|
566
|
+
var node = ed.selection.getNode();
|
|
567
|
+
} else {
|
|
568
|
+
var node = ed.dom.getParent(ed.selection.getNode(), listValue.split("::")[0]);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// begin Undo
|
|
572
|
+
tinyMCE.execCommand('mceBeginUndoLevel');
|
|
573
|
+
|
|
574
|
+
// define what to set class or id to
|
|
575
|
+
toSetTo = (listValue.split("::")[1] != undefined)?listValue.split("::")[1]:"";
|
|
576
|
+
|
|
577
|
+
// set className
|
|
578
|
+
if (what == "class") {
|
|
579
|
+
node.className = toSetTo;
|
|
580
|
+
|
|
581
|
+
// set id
|
|
582
|
+
} else {
|
|
583
|
+
|
|
584
|
+
// toSetTo is not empty : perform a check if an element with that id already exists
|
|
585
|
+
if (toSetTo != "") {
|
|
586
|
+
|
|
587
|
+
// there already exists an element with that id?
|
|
588
|
+
if (ed.getDoc().getElementById(toSetTo)) {
|
|
589
|
+
|
|
590
|
+
// confirm the move of the id
|
|
591
|
+
if (confirm("There already exists an element with that id, ids must be unique.\nPress 'OK' to move the id to the current element.\nPress 'Cancel' to leave unchanged")) {
|
|
592
|
+
|
|
593
|
+
// remove id from current element with that id
|
|
594
|
+
ed.getDoc().getElementById(toSetTo).id = "";
|
|
595
|
+
|
|
596
|
+
// set id on node
|
|
597
|
+
node.id = toSetTo;
|
|
598
|
+
|
|
599
|
+
// not confirmed, set selectedindex of node to the first item
|
|
600
|
+
} else {
|
|
601
|
+
|
|
602
|
+
// select the first item
|
|
603
|
+
selectDropDown.select(listValue.split("::")[0] + '::');
|
|
604
|
+
|
|
605
|
+
// stop the click event
|
|
606
|
+
// console.log(tinymce.dom.Event.events);
|
|
607
|
+
tinymce.dom.Event.cancel(tinymce.dom.Event.events[0]); // BUG! - this ain't workin :-( ... how can I cancel the current event (viz. the click on the item in the ListBox)?
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
// no element with that id exists yet : set the id
|
|
611
|
+
} else {
|
|
612
|
+
|
|
613
|
+
// set id on node
|
|
614
|
+
node.id = toSetTo;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
// toSetTo is empty : clear the id on the selected element
|
|
618
|
+
} else {
|
|
619
|
+
|
|
620
|
+
// set id on node
|
|
621
|
+
node.id = toSetTo;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
// endUndo
|
|
626
|
+
tinyMCE.execCommand('mceEndUndoLevel');
|
|
627
|
+
|
|
628
|
+
// repaint the instance
|
|
629
|
+
ed.execCommand('mceRepaint');
|
|
630
|
+
|
|
631
|
+
// This is needed?
|
|
632
|
+
// EditorManager.activeEditor.nodeChanged();
|
|
633
|
+
|
|
634
|
+
},
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
/**
|
|
638
|
+
* End Of Plugin (EOP)
|
|
639
|
+
* ---------------------------------------------------------------------------------------------------
|
|
640
|
+
*/
|
|
641
|
+
|
|
642
|
+
// The last one (so I don't forget to close)
|
|
643
|
+
EOP : true
|
|
644
|
+
|
|
645
|
+
});
|
|
646
|
+
|
|
647
|
+
// Register plugin
|
|
648
|
+
tinymce.PluginManager.add('bramus_cssextras', tinymce.plugins.BramusCssExtras);
|
|
649
|
+
})();
|