diff options
| author | chm@openerp.com <> | 2014-03-26 16:58:22 +0100 |
|---|---|---|
| committer | chm@openerp.com <> | 2014-03-26 16:58:22 +0100 |
| commit | a7dc05bf6e14fdaf2657e4c3e8c0600e663cc62f (patch) | |
| tree | e2ccaadcdf42dd0842550749ffdbd626863cad0e /addons/website/static/src | |
| parent | 368bf4dff634fb1097d264f9d5c877ba7958f732 (diff) | |
[WIP] website: add media editor template
bzr revid: chm@openerp.com-20140326155822-f4wascgyrm7ffeg8
Diffstat (limited to 'addons/website/static/src')
| -rw-r--r-- | addons/website/static/src/js/website.editor.js | 46 | ||||
| -rw-r--r-- | addons/website/static/src/xml/website.editor.xml | 175 |
2 files changed, 141 insertions, 80 deletions
diff --git a/addons/website/static/src/js/website.editor.js b/addons/website/static/src/js/website.editor.js index 57d18cac873..e7e7a44e31e 100644 --- a/addons/website/static/src/js/website.editor.js +++ b/addons/website/static/src/js/website.editor.js @@ -64,7 +64,7 @@ return new website.editor.RTELinkDialog(editor).appendTo(document.body); } function image_dialog(editor, image) { - return new website.editor.RTEImageDialog(editor, image).appendTo(document.body); + return new website.editor.MediaDialog(editor, image).appendTo(document.body); } // only enable editors manually @@ -80,7 +80,7 @@ website.init_editor = function () { CKEDITOR.plugins.add('customdialogs', { -// requires: 'link,image', + // requires: 'link,image', init: function (editor) { editor.on('doubleclick', function (evt) { var element = evt.data.element; @@ -754,7 +754,11 @@ }) } - $image_button.find("button.hover-style-button").addClass("btn-primary").removeClass("btn-default"); + if ($selected.parents('[data-oe-field="image"]').length) { + $image_button.find("button.hover-style-button").hide(); + } else { + $image_button.find("button.hover-style-button").show().addClass("btn-primary").removeClass("btn-default"); + } }).on('mouseleave', 'a, img, .fa', function (e) { var current = document.elementFromPoint(e.clientX, e.clientY); if (current === $link_button[0] || $(current).parent()[0] === $link_button[0] || @@ -1324,6 +1328,31 @@ }, }); + website.editor.Media = openerp.Widget.extend({ + init: function (editor) { + this._super(); + this.editor = editor; + }, + }); + website.editor.MediaDialog = website.editor.Dialog.extend({ + template: 'website.editor.dialog.media', + init: function (editor, media) { + this.media = media; + this.editor = editor; + this._super(editor); + }, + start: function (editor, media) { + this.imageDialog = new website.editor.RTEImageDialog(this.editor, this.media); + this.imageDialog.appendTo(this.$("#editor-media-image")); + console.log(this.imageDialog.$el[0]); + this.iconDialog = new website.editor.FontIconsDialog(this.editor, this.media); + this.iconDialog.appendTo(this.$("#editor-media-icon")); + this.videoDialog = null; + //this.videoDialog.appendTo(this.$("#editor-media-video")); + return this._super(); + } + }); + /** * ImageDialog widget. Lets users change an image, including uploading a * new image in OpenERP or selecting the image style (if supported by @@ -1341,7 +1370,7 @@ * selected by the users (or possibly the ones * originally passed in) */ - website.editor.ImageDialog = website.editor.Dialog.extend({ + website.editor.ImageDialog = website.editor.Media.extend({ template: 'website.editor.dialog.image', events: _.extend({}, website.editor.Dialog.prototype.events, { 'change .url-source': function (e) { this.changed($(e.target)); }, @@ -1447,6 +1476,7 @@ new website.editor.ExistingImageDialog(this).appendTo(document.body); }, }); + website.editor.RTEImageDialog = website.editor.ImageDialog.extend({ init: function (editor, image) { this._super(editor); @@ -1614,7 +1644,7 @@ range.shrink(CKEDITOR.SHRINK_TEXT); var commonAncestor = range.getCommonAncestor(); var viewRoot = editor.elementPath(commonAncestor).contains(function (element) { - return element.data('oe-model') === 'ir.ui.view' + return element.data('oe-model') === 'ir.ui.view'; }); if (!viewRoot) { return null; } // if viewRoot is the first link, don't edit it. @@ -1622,7 +1652,7 @@ .contains('a', true); } - website.editor.FontIconsDialog = website.editor.Dialog.extend({ + website.editor.FontIconsDialog = website.editor.Media.extend({ template: 'website.editor.dialog.font-icons', events : _.extend({}, website.editor.Dialog.prototype.events, { change: 'update_preview', @@ -1679,7 +1709,7 @@ * all the new ones if necessary. */ save: function () { - var classes = this.element.className.split(/\s+/); + var classes = (this.element.className||"").split(/\s+/); var non_fa_classes = _.reject(classes, function (cls) { return cls === 'fa' || /^fa-/.test(cls); }); @@ -1695,7 +1725,7 @@ * which may not match the visual look of the element. */ load_data: function () { - var classes = this.element.className.split(/\s+/); + var classes = (this.element.className||"").split(/\s+/); for (var i = 0; i < classes.length; i++) { var cls = classes[i]; switch(cls) { diff --git a/addons/website/static/src/xml/website.editor.xml b/addons/website/static/src/xml/website.editor.xml index 617a2cf59df..343e7070014 100644 --- a/addons/website/static/src/xml/website.editor.xml +++ b/addons/website/static/src/xml/website.editor.xml @@ -88,49 +88,83 @@ </form> </t> </t> - <t t-name="website.editor.dialog.image"> - <t t-call="website.editor.dialog"> - <t t-set="title">Image:</t> - <div class="row"> - <form method="POST" action="/website/attach" - enctype="multipart/form-data" - target="fileframe" - class="col-sm-8"> - <div class="text-center"> - <input type="file" name="upload" accept="image/*" style="position: absolute; opacity: 0; width: 1px; height: 1px;"/> - <button type="button" class="btn btn-primary btn-lg filepicker"> - Upload an image from your computer - </button> - <button type="button" class="btn btn-lg hidden wait" disabled="disabled"/> - <p class="text-muted mt16">— or —</p> + <t t-name="website.editor.dialog.media"> + <div class="modal" tabindex="-1" role="dialog" aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <!-- Nav tabs --> + <ul class="nav nav-tabs"> + <li class="active"><a href="#editor-media-image" data-toggle="tab">Image</a></li> + <li><a href="#editor-media-icon" data-toggle="tab">Pictogram</a></li> + <li><a href="#editor-media-video" data-toggle="tab">Video</a></li> + </ul> </div> - <div class="well"> - <a href="#existing" class="pull-right">Browse existing images</a> - <h3 class="list-group-item-heading">Image URL</h3> - <input type="text" class="form-control url" - placeholder="http://openerp.com"/> + <div class="modal-body"> + <!-- Tab panes --> + <div class="tab-content"> + <div class="tab-pane fade in active" id="editor-media-image"> + + </div> + <div class="tab-pane fade" id="editor-media-icon"> + + </div> + <div class="tab-pane fade" id="editor-media-video"> + + </div> + </div> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-primary save">Save</button> + <button type="button" class="btn hidden wait" disabled="disabled"/> + or + <a href="#" data-dismiss="modal" aria-hidden="true">Discard</a> </div> - <input type="hidden" name="func"/> - <div class="help-block"/> - </form> - <div class="col-sm-4 image-preview-container"> - <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAC0lEQVQIHWP4zwAAAgEBAMVfG14AAAAASUVORK5CYII%3D" - class="pull-right img-rounded image-preview" - width="100%"/> - <img src="/web/static/src/img/throbber-large.gif" - class="pull-right img-rounded wait hidden" - width="100%"/> - <select class="form-control image-style"> - <option value="">No styling</option> - <option value="img-rounded">Rounded corners</option> - <option value="img-thumbnail">Box</option> - <option value="img-circle">Circle</option> - <option value="shadow">Shadow</option> - </select> </div> </div> - <iframe src="about:blank" name="fileframe" class="hidden"/> - </t> + </div> + </t> + <t t-name="website.editor.dialog.image"> + <div class="row"> + <form method="POST" action="/website/attach" + enctype="multipart/form-data" + target="fileframe" + class="col-sm-8"> + <div class="text-center"> + <input type="file" name="upload" accept="image/*" style="position: absolute; opacity: 0; width: 1px; height: 1px;"/> + <button type="button" class="btn btn-primary btn-lg filepicker"> + Upload an image from your computer + </button> + <button type="button" class="btn btn-lg hidden wait" disabled="disabled"/> + <p class="text-muted mt16">— or —</p> + </div> + <div class="well"> + <a href="#existing" class="pull-right">Browse existing images</a> + <h3 class="list-group-item-heading">Image URL</h3> + <input type="text" class="form-control url" + placeholder="http://openerp.com"/> + </div> + <input type="hidden" name="func"/> + <div class="help-block"/> + </form> + <div class="col-sm-4 image-preview-container"> + <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAC0lEQVQIHWP4zwAAAgEBAMVfG14AAAAASUVORK5CYII%3D" + class="pull-right img-rounded image-preview" + width="100%"/> + <img src="/web/static/src/img/throbber-large.gif" + class="pull-right img-rounded wait hidden" + width="100%"/> + <select class="form-control image-style"> + <option value="">No styling</option> + <option value="img-rounded">Rounded corners</option> + <option value="img-thumbnail">Box</option> + <option value="img-circle">Circle</option> + <option value="shadow">Shadow</option> + </select> + </div> + </div> + <iframe src="about:blank" name="fileframe" class="hidden"/> </t> <t t-name="website.editor.dialog.image.existing"> <div class="modal" tabindex="-1" role="dialog" aria-hidden="true"> @@ -225,41 +259,38 @@ </t> <t t-name="website.editor.dialog.font-icons"> - <t t-call="website.editor.dialog"> - <t t-set="title">Icon:</t> - <form> - <div class="form-group" id="fa-preview"> + <form> + <div class="form-group" id="fa-preview"> + </div> + <div class="form-group font-icons fa fa-search"> + <input type="hidden" id="fa-icon" class="form-control"/> + <input type="hidden" id="fa-size" class="form-control"/> + <input type="search" class="form-control" id="icon-search"/> + <div class="font-icons-icons"> + <t t-call="website.editor.dialog.font-icons.icons"> + <t t-set="icons" t-value="widget.icons"/> + </t> </div> - <div class="form-group font-icons fa fa-search"> - <input type="hidden" id="fa-icon" class="form-control"/> - <input type="hidden" id="fa-size" class="form-control"/> - <input type="search" class="form-control" id="icon-search"/> - <div class="font-icons-icons"> - <t t-call="website.editor.dialog.font-icons.icons"> - <t t-set="icons" t-value="widget.icons"/> - </t> - </div> - </div> - <div class="form-group"> - <label for="fa-rotation">Rotation</label> - <select id="fa-rotation" class="form-control"> - <option value="">None</option> - <option value="fa-spin">Spin</option> - <option value="fa-rotate-90">Rotate 90º</option> - <option value="fa-rotate-180">Rotate 180º</option> - <option value="fa-rotate-270">Rotate 270º</option> - <option value="fa-flip-horizontal">Horizontal flip</option> - <option value="fa-flip-vertical">Vertical flip</option> - </select> - </div> - <div class="form-group"> - <label> - <input type="checkbox" id="fa-border"/> border - </label> - </div> - </form> - </t> + </div> + <div class="form-group"> + <label for="fa-rotation">Rotation</label> + <select id="fa-rotation" class="form-control"> + <option value="">None</option> + <option value="fa-spin">Spin</option> + <option value="fa-rotate-90">Rotate 90º</option> + <option value="fa-rotate-180">Rotate 180º</option> + <option value="fa-rotate-270">Rotate 270º</option> + <option value="fa-flip-horizontal">Horizontal flip</option> + <option value="fa-flip-vertical">Vertical flip</option> + </select> + </div> + <div class="form-group"> + <label> + <input type="checkbox" id="fa-border"/> border + </label> + </div> + </form> </t> <t t-name="website.editor.dialog.font-icons.icons"> <span t-foreach="icons" t-as="icon" |
