Dotclear

source: plugins/dcCKEditor/js/popup_media.js @ 3725:b47f38c701ee

Revision 3725:b47f38c701ee, 5.7 KB checked in by franck <carnet.franck.paul@…>, 7 years ago (diff)

Use specialized input fields (color, email, url, number, …) where is relevant

Line 
1/*global $ */
2'use strict';
3
4$(function() {
5  $('#media-insert-cancel').click(function() {
6    window.close();
7  });
8
9  $('#media-insert-ok').click(function() {
10    var insert_form = $('#media-insert-form').get(0);
11    if (insert_form === undefined) {
12      return;
13    }
14
15    var editor_name = window.opener.$.getEditorName(),
16      editor = window.opener.CKEDITOR.instances[editor_name],
17      type = insert_form.elements.type.value,
18      media_align_grid = {
19        left: 'float: left; margin: 0 1em 1em 0;',
20        right: 'float: right; margin: 0 0 1em 1em;',
21        center: 'margin: 0 auto; display: table;'
22      };
23
24    if (type == 'image') {
25      if (editor.mode == 'wysiwyg') {
26
27        var align = $('input[name="alignment"]:checked', insert_form).val();
28        var media_legend = $('input[name="legend"]:checked', insert_form).val();
29        var img_description = $('input[name="description"]', insert_form).val();
30        var style = '';
31        var template = '';
32        var template_figure = [
33          '',
34          ''
35        ];
36        var template_link = [
37          '',
38          ''
39        ];
40        var template_image = '';
41
42        if (media_legend != '' && media_legend != 'title' && media_legend != 'none') {
43          media_legend = 'legend';
44        }
45
46        // Build template
47        if (align != '' && align != 'none') {
48          // Set alignment
49          style = ' style="{figureStyle}"';
50        }
51        if (media_legend == 'legend') {
52          // With a legend
53          template_figure[0] = '<figure' + style + '>';
54          style = ''; // Do not use style further
55          if (img_description != '') {
56            template_figure[1] = '<figcaption>{figCaption}</figcaption>';
57          }
58          template_figure[1] = template_figure[1] + '</figure>';
59        }
60        template_image = '<img class="media" src="{imgSrc}" alt="{imgAlt}"' + style + '/>';
61        if ($('input[name="insertion"]:checked', insert_form).val() == 'link') {
62          // With a link to original
63          template_link[0] = '<a class="media-link" href="{aHref}">';
64          template_link[1] = '</a>';
65        }
66        template = template_figure[0] + template_link[0] + template_image + template_link[1] + template_figure[1];
67
68        var block = new window.opener.CKEDITOR.template(template);
69        var params = {};
70
71        // Set parameters for template
72        if (media_legend != '' && media_legend != 'none') {
73          params.imgAlt = window.opener.CKEDITOR.tools.htmlEncodeAttr(
74            window.opener.$.stripBaseURL($('input[name="title"]', insert_form).val()));
75        } else {
76          params.imgAlt = '';
77        }
78        params.imgSrc = window.opener.$.stripBaseURL($('input[name="src"]:checked', insert_form).val());
79        if (align != '' && align != 'none') {
80          params.figureStyle = media_align_grid[align];
81        }
82        params.figCaption = window.opener.CKEDITOR.tools.htmlEncodeAttr(img_description);
83        if ($('input[name="insertion"]:checked', insert_form).val() == 'link') {
84          params.aHref = window.opener.$.stripBaseURL($('input[name="url"]', insert_form).val());
85        }
86
87        // Insert element
88        var figure = window.opener.CKEDITOR.dom.element.createFromHtml(
89          block.output(params), editor.document
90        );
91        editor.insertElement(figure);
92      }
93    } else if (type == 'mp3') {
94      // Audio media
95      var player_audio = $('#public_player').val();
96      var align_audio = $('input[name="alignment"]:checked', insert_form).val();
97
98      if (align_audio != undefined && align_audio != 'none') {
99        player_audio = '<div style="' + media_align_grid[align_audio] + '">' + player_audio + '</div>';
100      }
101      editor.insertElement(window.opener.CKEDITOR.dom.element.createFromHtml(player_audio));
102    } else if (type == 'flv') {
103      // Video media
104      var oplayer = $('<div>' + $('#public_player').val() + '</div>');
105      var flashvars = $('[name=FlashVars]', oplayer).val();
106
107      var align_video = $('input[name="alignment"]:checked', insert_form).val();
108
109      var title = insert_form.elements.title.value;
110      if (title) {
111        flashvars = 'title=' + encodeURI(title) + '&amp;' + flashvars;
112      }
113
114      var vw = $('#video_w').val();
115      var vh = $('#video_h').val();
116
117      if (vw > 0) {
118        $('video', oplayer).attr('width', vw);
119        $('object', oplayer).attr('width', vw);
120        flashvars = flashvars.replace(/(width=\d*)/, 'width=' + vw);
121      } else {
122        $('video', oplayer).removeAttr('width');
123        $('object', oplayer).removeAttr('width');
124        flashvars = flashvars.replace(/(width=\d*)/, '');
125      }
126      if (vh > 0) {
127        $('video', oplayer).attr('height', vh);
128        $('object', oplayer).attr('height', vh);
129        flashvars = flashvars.replace(/(height=\d*)/, 'height=' + vh);
130      } else {
131        $('video', oplayer).removeAttr('height');
132        $('object', oplayer).removeAttr('height');
133        flashvars = flashvars.replace(/(height=\d*)/, '');
134      }
135
136      $('[name=FlashVars]', oplayer).val(flashvars);
137      var player_video = oplayer.html();
138
139      if (align_video != undefined && align_video != 'none') {
140        player_video = '<div style="' + media_align_grid[align_video] + '">' + player_video + '</div>';
141      }
142      editor.insertElement(window.opener.CKEDITOR.dom.element.createFromHtml(player_video));
143    } else {
144      // Unknown media type
145      var link = '<a href="';
146      link += window.opener.$.stripBaseURL($('input[name="url"]', insert_form).val());
147      link += '">' + window.opener.CKEDITOR.tools.htmlEncodeAttr(insert_form.elements.title.value) + '</a>';
148      var element = window.opener.CKEDITOR.dom.element.createFromHtml(link);
149
150      editor.insertElement(element);
151    }
152
153    window.close();
154  });
155});
Note: See TracBrowser for help on using the repository browser.

Sites map