diff --git a/cms/djangoapps/contentstore/tests/test_contentstore.py b/cms/djangoapps/contentstore/tests/test_contentstore.py index 0b028cdca068..1185966d2135 100644 --- a/cms/djangoapps/contentstore/tests/test_contentstore.py +++ b/cms/djangoapps/contentstore/tests/test_contentstore.py @@ -142,7 +142,7 @@ def test_advanced_components_in_edit_unit(self): # response HTML self.check_components_on_page( ADVANCED_COMPONENT_TYPES, - ['Word cloud', 'Annotation', 'Text Annotation', 'Video Annotation', + ['Word cloud', 'Annotation', 'Text Annotation', 'Video Annotation', 'Image Annotation', 'Open Response Assessment', 'Peer Grading Interface', 'openassessment'], ) diff --git a/cms/djangoapps/contentstore/views/component.py b/cms/djangoapps/contentstore/views/component.py index 425b33035326..10fed6ff4cfe 100644 --- a/cms/djangoapps/contentstore/views/component.py +++ b/cms/djangoapps/contentstore/views/component.py @@ -57,6 +57,7 @@ 'annotatable', 'textannotation', # module for annotating text (with annotation table) 'videoannotation', # module for annotating video (with annotation table) + 'imageannotation', # module for annotating images (with annotation table) 'word_cloud', 'graphical_slider_tool', 'lti', diff --git a/cms/envs/common.py b/cms/envs/common.py index 00e606e42f47..98295e0fbbd1 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -337,6 +337,13 @@ ], 'output_filename': 'css/cms-style-vendor-tinymce-skin.css', }, + 'style-annotator' :{ + 'source_filenames':[ + 'css/vendor/ova/annotator.css', + 'css/vendor/ova/token-input.css' + ], + 'output_filename': 'css/lms-style-vendor-ova-annotator.css', + }, 'style-app': { 'source_filenames': [ 'sass/style-app.css', diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py index 58d81709674f..5e667fe8071f 100644 --- a/common/lib/xmodule/setup.py +++ b/common/lib/xmodule/setup.py @@ -36,6 +36,7 @@ "annotatable = xmodule.annotatable_module:AnnotatableDescriptor", "textannotation = xmodule.textannotation_module:TextAnnotationDescriptor", "videoannotation = xmodule.videoannotation_module:VideoAnnotationDescriptor", + "imageannotation = xmodule.imageannotation_module:ImageAnnotationDescriptor", "foldit = xmodule.foldit_module:FolditDescriptor", "word_cloud = xmodule.word_cloud_module:WordCloudDescriptor", "hidden = xmodule.hidden_module:HiddenDescriptor", diff --git a/common/lib/xmodule/xmodule/annotator_mixin.py b/common/lib/xmodule/xmodule/annotator_mixin.py new file mode 100644 index 000000000000..74f794b2bf25 --- /dev/null +++ b/common/lib/xmodule/xmodule/annotator_mixin.py @@ -0,0 +1,74 @@ +""" +Annotations Tool Mixin +This file contains global variables and functions used in the various Annotation Tools. +""" +from pkg_resources import resource_string +from lxml import etree +from urlparse import urlparse +from os.path import splitext, basename +from HTMLParser import HTMLParser + +def get_instructions(xmltree): + """ Removes from the xmltree and returns them as a string, otherwise None. """ + instructions = xmltree.find('instructions') + if instructions is not None: + instructions.tag = 'div' + xmltree.remove(instructions) + return etree.tostring(instructions, encoding='unicode') + return None + +def get_extension(srcurl): + ''' get the extension of a given url ''' + if 'youtu' in srcurl: + return 'video/youtube' + else: + disassembled = urlparse(srcurl) + file_ext = splitext(basename(disassembled.path))[1] + return 'video/' + file_ext.replace('.', '') + +ANNOTATOR_COMMON_JS = [ + resource_string(__name__, 'js/src/ova/annotator-full.js'), + resource_string(__name__, 'js/src/ova/annotator-full-firebase-auth.js'), + resource_string(__name__, 'js/src/ova/video.dev.js'), + resource_string(__name__, 'js/src/ova/vjs.youtube.js'), + resource_string(__name__, 'js/src/ova/rangeslider.js'), + resource_string(__name__, 'js/src/ova/share-annotator.js'), + resource_string(__name__, 'js/src/ova/richText-annotator.js'), + resource_string(__name__, 'js/src/ova/reply-annotator.js'), + resource_string(__name__, 'js/src/ova/tags-annotator.js'), + resource_string(__name__, 'js/src/ova/flagging-annotator.js'), + resource_string(__name__, 'js/src/ova/diacritic-annotator.js'), + resource_string(__name__, 'js/src/ova/jquery-Watch.js'), + resource_string(__name__, 'js/src/ova/ova.js'), + resource_string(__name__, 'js/src/ova/openseadragon.js'), + resource_string(__name__, 'js/src/ova/OpenSeaDragonAnnotation.js'), + resource_string(__name__, 'js/src/ova/catch/js/handlebars-1.1.2.js'), + resource_string(__name__, 'js/src/ova/catch/js/catch.js'), +] + +ANNOTATOR_COMMON_CSS = [ + resource_string(__name__, 'css/ova/edx-annotator.css'), + resource_string(__name__, 'css/ova/rangeslider.css'), + resource_string(__name__, 'css/ova/share-annotator.css'), + resource_string(__name__, 'css/ova/richText-annotator.css'), + resource_string(__name__, 'css/ova/diacritic-annotator.css'), + resource_string(__name__, 'css/ova/flagging-annotator.css'), + resource_string(__name__, 'css/ova/ova.css'), + resource_string(__name__, 'js/src/ova/catch/css/main.css'), +] + +class MLStripper(HTMLParser): + def __init__(self): + self.reset() + self.fed = [] + def handle_data(self, d): + self.fed.append(d) + def handle_entityref(self, name): + self.fed.append('&%s;' % name) + def get_data(self): + return ''.join(self.fed) + +def html_to_text(html): + s = MLStripper() + s.feed(html) + return s.get_data() \ No newline at end of file diff --git a/common/lib/xmodule/xmodule/annotator_token.py b/common/lib/xmodule/xmodule/annotator_token.py index 9d4496249583..6fa569597851 100644 --- a/common/lib/xmodule/xmodule/annotator_token.py +++ b/common/lib/xmodule/xmodule/annotator_token.py @@ -17,11 +17,16 @@ def retrieve_token(userid, secret): the token was issued. This will be stored with the user along with the id for identification purposes in the backend. ''' + + # the following five lines of code allows you to include the default timezone in the iso format + # for more information: http://stackoverflow.com/questions/3401428/how-to-get-an-isoformat-datetime-string-including-the-default-timezone dtnow = datetime.datetime.now() dtutcnow = datetime.datetime.utcnow() delta = dtnow - dtutcnow newhour, newmin = divmod((delta.days * 24 * 60 * 60 + delta.seconds + 30) // 60, 60) newtime = "%s%+02d:%02d" % (dtnow.isoformat(), newhour, newmin) + # uses the issued time (UTC plus timezone), the consumer key and the user's email to maintain a + # federated system in the annotation backend server custom_data = {"issuedAt": newtime, "consumerKey": secret, "userId": userid, "ttl": 86400} newtoken = create_token(secret, custom_data) - return newtoken \ No newline at end of file + return newtoken diff --git a/common/lib/xmodule/xmodule/css/ova/diacritic-annotator.css b/common/lib/xmodule/xmodule/css/ova/diacritic-annotator.css new file mode 100644 index 000000000000..f9055978c455 --- /dev/null +++ b/common/lib/xmodule/xmodule/css/ova/diacritic-annotator.css @@ -0,0 +1,8 @@ +.mark{ + width: 10px; + height: 10px; + position: absolute; + background-size: contain; + background-repeat: no-repeat; + background-position: 50% 0%; +} diff --git a/common/static/css/vendor/ova/edx-annotator.css b/common/lib/xmodule/xmodule/css/ova/edx-annotator.css similarity index 96% rename from common/static/css/vendor/ova/edx-annotator.css rename to common/lib/xmodule/xmodule/css/ova/edx-annotator.css index 9b0c0de0b8fa..a4bc6f91ca2f 100644 --- a/common/static/css/vendor/ova/edx-annotator.css +++ b/common/lib/xmodule/xmodule/css/ova/edx-annotator.css @@ -1,4 +1,8 @@ /*This is written to fix some design problems with edX*/ +.annotatable-wrapper .annotatable-header .annotatable-title{ + padding-top: 20px !important; +} + .annotator-wrapper .annotator-adder button { opacity:0; } diff --git a/common/static/css/vendor/ova/flagging-annotator.css b/common/lib/xmodule/xmodule/css/ova/flagging-annotator.css similarity index 100% rename from common/static/css/vendor/ova/flagging-annotator.css rename to common/lib/xmodule/xmodule/css/ova/flagging-annotator.css diff --git a/common/static/css/vendor/ova/ova.css b/common/lib/xmodule/xmodule/css/ova/ova.css similarity index 100% rename from common/static/css/vendor/ova/ova.css rename to common/lib/xmodule/xmodule/css/ova/ova.css diff --git a/common/static/css/vendor/ova/rangeslider.css b/common/lib/xmodule/xmodule/css/ova/rangeslider.css similarity index 100% rename from common/static/css/vendor/ova/rangeslider.css rename to common/lib/xmodule/xmodule/css/ova/rangeslider.css diff --git a/common/static/css/vendor/ova/richText-annotator.css b/common/lib/xmodule/xmodule/css/ova/richText-annotator.css similarity index 86% rename from common/static/css/vendor/ova/richText-annotator.css rename to common/lib/xmodule/xmodule/css/ova/richText-annotator.css index 395cfc5f173c..1985731032d8 100644 --- a/common/static/css/vendor/ova/richText-annotator.css +++ b/common/lib/xmodule/xmodule/css/ova/richText-annotator.css @@ -17,9 +17,21 @@ } .annotator-wrapper .mce-container { - z-index:3000000000!important; /*To fix full-screen problems*/ + z-index: 3000000000!important; /*To fix full-screen problems*/ } +.mce-container-body { + min-width: 400px; +} + +.iframe[id="annotator-field"] { + width: inherit; + min-width: 400px; +} + +div.mce-tinymce.mce-container.mce-panel { + min-width:400px; +} /* Some change in the design of Annotator */ .annotator-editor .annotator-widget{ diff --git a/common/static/css/vendor/ova/share-annotator.css b/common/lib/xmodule/xmodule/css/ova/share-annotator.css similarity index 100% rename from common/static/css/vendor/ova/share-annotator.css rename to common/lib/xmodule/xmodule/css/ova/share-annotator.css diff --git a/common/lib/xmodule/xmodule/imageannotation_module.py b/common/lib/xmodule/xmodule/imageannotation_module.py new file mode 100644 index 000000000000..58993e71aea4 --- /dev/null +++ b/common/lib/xmodule/xmodule/imageannotation_module.py @@ -0,0 +1,116 @@ +""" +Module for Image annotations using annotator. +""" +from lxml import etree +from pkg_resources import resource_string + +from xmodule.x_module import XModule +from xmodule.raw_module import RawDescriptor +from xblock.core import Scope, String +from xmodule.annotator_mixin import get_instructions, html_to_text, ANNOTATOR_COMMON_JS, ANNOTATOR_COMMON_CSS +from xmodule.annotator_token import retrieve_token + +import textwrap + + +class AnnotatableFields(object): + """ Fields for `ImageModule` and `ImageDescriptor`. """ + data = String(help="XML data for the annotation", scope=Scope.content, default=textwrap.dedent("""\ + + +

+ Add the instructions to the assignment here. +

+
+

+ Lorem ipsum dolor sit amet, at amet animal petentium nec. Id augue nemore postulant mea. Ex eam dicant noluisse expetenda, alia admodum abhorreant qui et. An ceteros expetenda mea, tale natum ipsum quo no, ut pro paulo alienum noluisse. +

+ + navigatorSizeRatio: 0.25, + wrapHorizontal: false, + showNavigator: true, + navigatorPosition: "BOTTOM_LEFT", + showNavigationControl: true, + tileSources: [{ + Image: { + xmlns: "http://schemas.microsoft.com/deepzoom/2009", + Url: "http://static.seadragon.com/content/misc/milwaukee_files/", + TileSize: "254", + Overlap: "1", + Format: "jpg", + ServerFormat: "Default", + Size: { + Width: "15497", + Height: "5378" + } + } + },], + +
+ """)) + display_name = String( + display_name="Display Name", + help="Display name for this module", + scope=Scope.settings, + default='Image Annotation', + ) + annotation_storage_url = String(help="Location of Annotation backend", scope=Scope.settings, default="http://your_annotation_storage.com", display_name="Url for Annotation Storage") + annotation_token_secret = String(help="Secret string for annotation storage", scope=Scope.settings, default="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", display_name="Secret Token String for Annotation") + + +class ImageAnnotationModule(AnnotatableFields, XModule): + '''Image Annotation Module''' + js = { + 'coffee': [ + resource_string(__name__, 'js/src/javascript_loader.coffee'), + resource_string(__name__, 'js/src/html/display.coffee'), + resource_string(__name__, 'js/src/annotatable/display.coffee'), + ], + 'js': ANNOTATOR_COMMON_JS + [ + resource_string(__name__, 'js/src/collapsible.js'), + ] + } + css = {'scss': ANNOTATOR_COMMON_CSS + [resource_string(__name__, 'css/annotatable/display.scss')]} + icon_class = 'imageannotation' + + def __init__(self, *args, **kwargs): + super(ImageAnnotationModule, self).__init__(*args, **kwargs) + + xmltree = etree.fromstring(self.data) + + self.instructions = self._extract_instructions(xmltree) + self.openseadragonjson = html_to_text(etree.tostring(xmltree.find('json'), encoding='unicode')) + self.user = "" + if self.runtime.get_real_user is not None: + self.user = self.runtime.get_real_user(self.runtime.anonymous_student_id).email + + def _extract_instructions(self, xmltree): + """ Removes from the xmltree and returns them as a string, otherwise None. """ + return get_instructions(xmltree) + + def get_html(self): + """ Renders parameters to template. """ + context = { + 'display_name': self.display_name_with_default, + 'instructions_html': self.instructions, + 'annotation_storage': self.annotation_storage_url, + 'token':retrieve_token(self.user, self.annotation_token_secret), + 'openseadragonjson': self.openseadragonjson, + } + + return self.system.render_template('imageannotation.html', context) + + +class ImageAnnotationDescriptor(AnnotatableFields, RawDescriptor): + ''' Image annotation descriptor ''' + module_class = ImageAnnotationModule + mako_template = "widgets/raw-edit.html" + + @property + def non_editable_metadata_fields(self): + non_editable_fields = super(ImageAnnotationDescriptor, self).non_editable_metadata_fields + non_editable_fields.extend([ + ImageAnnotationDescriptor.annotation_storage_url, + ImageAnnotationDescriptor.annotation_token_secret, + ]) + return non_editable_fields \ No newline at end of file diff --git a/common/static/js/vendor/ova/annotator-full-firebase-auth.js b/common/lib/xmodule/xmodule/js/src/ova/annotator-full-firebase-auth.js similarity index 100% rename from common/static/js/vendor/ova/annotator-full-firebase-auth.js rename to common/lib/xmodule/xmodule/js/src/ova/annotator-full-firebase-auth.js diff --git a/common/static/js/vendor/ova/annotator-full.js b/common/lib/xmodule/xmodule/js/src/ova/annotator-full.js similarity index 100% rename from common/static/js/vendor/ova/annotator-full.js rename to common/lib/xmodule/xmodule/js/src/ova/annotator-full.js diff --git a/common/static/js/vendor/ova/catch/css/main.css b/common/lib/xmodule/xmodule/js/src/ova/catch/css/main.css similarity index 100% rename from common/static/js/vendor/ova/catch/css/main.css rename to common/lib/xmodule/xmodule/js/src/ova/catch/css/main.css diff --git a/common/static/js/vendor/ova/catch/js/catch.js b/common/lib/xmodule/xmodule/js/src/ova/catch/js/catch.js similarity index 92% rename from common/static/js/vendor/ova/catch/js/catch.js rename to common/lib/xmodule/xmodule/js/src/ova/catch/js/catch.js index 113d7d95c818..17d2a60cd2d7 100644 --- a/common/static/js/vendor/ova/catch/js/catch.js +++ b/common/lib/xmodule/xmodule/js/src/ova/catch/js/catch.js @@ -1,3 +1,22 @@ +/* +Grid Annotation Plugin v1.0 +Copyright (C) 2014 Daniel Cebrian Robles and Luis Duarte +License: https://github.com/danielcebrian/share-annotator/blob/master/License.rst + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ //The name of the plugin that the user will write in the html window.CatchAnnotation = ("CatchAnnotation" in window) ? CatchAnnotation : {}; window.CatchSources = ("CatchSources" in window) ? CatchSources : {}; @@ -76,13 +95,10 @@ annotationMediaSelector: '
  • '+ 'Video'+ '
  • '+ + 'li class="ui-state-default" media="image">'+ + 'Image'+ + ''+ '', -// '
    Texttext
    '+ -// '
    Videovideo
    ', -// '
    Imagesimage
    '+ -// '
    Audioaudio
    '+ -// '
    Mapsmap
    '+ -// '
    3D studio3d
    ', //Main->ContainerRow annotationItem: @@ -162,7 +178,15 @@ annotationRow: //Main->ContainerRow->DetailRow annotationDetail: - '
    '+ + '{{#if mediatypeforgrid.text}}'+ + '
    '+ + '{{/if}}'+ + '{{#if mediatypeforgrid.video}}'+ + '
    '+ + '{{/if}}'+ + '{{#if mediatypeforgrid.image}}'+ + '
    '+ + '{{/if}}'+ '
    '+ ''+ 'Hide Details'+ @@ -181,77 +205,25 @@ annotationDetail: '{{/if}}'+ '
    '+ + '{{#if mediatypeforgrid.text}}'+ '
    '+ '
    '+ '
    {{{ quote }}}
    '+ ''+ ''+ '
    '+ - - '
    '+ - '{{{ text }}}'+ - '
    '+ - - '
    '+ - '
    Reply
     '+ - '
    Show Replies
     '+ - '{{#if authToEditButton}}'+ - '
    Edit
    '+ - '{{/if}}'+ - '{{#if authToDeleteButton}}'+ - '
    Delete
    '+ - '{{/if}}'+ - - '
    '+ - - '
    '+ - - '{{#if tags}}'+ - '
    '+ - '

    Tags:

    '+ - '{{#each tags}}'+ - '
    '+ - '{{this}}'+ - '
    '+ - '{{/each}}'+ - '
    '+ '{{/if}}'+ - - '
    '+ - //'Privacy Settings'+ -// 'Groups Access'+ - //''+ - '
    '+ - '
    ', - -//Main->ContainerRow->DetailRow (Video) -videoAnnotationDetail: - '
    '+ - '
    '+ - ''+ - 'Hide Details'+ - ''+ - 'On {{ updated }} {{{ user.name }}}{{#if geolocation}}, wrote from {{/if}}'+ - '{{#if geolocation}}'+ - ''+ - 'Location Map'+ - ''+ - ''+ - ''+ - ''+ - '
    '+ - '
    '+ - '
    '+ - '{{/if}}'+ - '
    '+ - + '{{#if mediatypeforgrid.video}}'+ '
    '+ 'Play segment {{{ rangeTime.start }}} - {{{ rangeTime.end }}}'+ ''+ ''+ ''+ '
    '+ - + '{{/if}}'+ + '{{#if mediatypeforgrid.image}}'+ + ''+ + '{{/if}}'+ '
    '+ '{{{ text }}}'+ '
    '+ @@ -343,7 +315,6 @@ CatchAnnotation.prototype = { "annotationReply",//Main->ContainerRow->Reply "annotationRow", //Main->ContainerRow->Row "annotationDetail",//Main->ContainerRow->DetailRow - "videoAnnotationDetail"//Main->ContainerRow->DetailRow (Video) ]; //annotator var wrapper = $('.annotator-wrapper').parent()[0], @@ -400,7 +371,7 @@ CatchAnnotation.prototype = { evenOrOdd: index % 2 ? "odd" : "even", openOrClosed: "closed", annotationRow: self.TEMPLATES.annotationRow(item), - annotationDetail: (mediaType === "video") ? self.TEMPLATES.videoAnnotationDetail(item):self.TEMPLATES.annotationDetail(item), + annotationDetail: self.TEMPLATES.annotationDetail(item), }); index++; annotationItems.push(html); @@ -568,7 +539,6 @@ CatchAnnotation.prototype = { var moreBut = this.element.find('.annotationListButtons .moreButtonCatch'); moreBut.html('More'); - setTimeout(); }, // @@ -678,6 +648,9 @@ CatchAnnotation.prototype = { });//Change to < and > tags item.plainText = item.plainText.replace(/<\/?[^>]+(>|$)/g, "").replace(' ',''); //remove all the html tags + item.mediatypeforgrid = {}; + item.mediatypeforgrid[item.media] = true; + //Flags if(!this.options.flags && typeof item.tags != 'undefined' && item.tags.length > 0){ for(var len=item.tags.length, index = len-1; index >= 0; --index){ @@ -1095,11 +1068,10 @@ CatchAnnotation.prototype = { annotation = item.data('annotation'); var authorized = permissions.options.userAuthorize('delete', annotation,permissions.user); if(authorized){ - //annotator.deleteAnnotation(annotation); if(confirm('Would you like to delete this reply?')){ annotator.plugins['Store']._apiRequest('destroy', annotation, function(){}); item.remove(); - } + } } } } diff --git a/common/static/js/vendor/ova/catch/js/handlebars-1.1.2.js b/common/lib/xmodule/xmodule/js/src/ova/catch/js/handlebars-1.1.2.js similarity index 100% rename from common/static/js/vendor/ova/catch/js/handlebars-1.1.2.js rename to common/lib/xmodule/xmodule/js/src/ova/catch/js/handlebars-1.1.2.js diff --git a/common/lib/xmodule/xmodule/js/src/ova/diacritic-annotator.js b/common/lib/xmodule/xmodule/js/src/ova/diacritic-annotator.js new file mode 100644 index 000000000000..87456096acaf --- /dev/null +++ b/common/lib/xmodule/xmodule/js/src/ova/diacritic-annotator.js @@ -0,0 +1,204 @@ +/* + Diacritic Annotator Plugin v1.0 (https://github.com/lduarte1991/diacritic-annotator) + Copyright (C) 2014 Luis F Duarte + License: https://github.com/lduarte1991/diacritic-annotator/blob/master/LICENSE.rst + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +var _ref, + __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + __hasProp = {}.hasOwnProperty, + __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; + +Annotator.Plugin.Diacritics = (function(_super) { + __extends(Diacritics, _super); + + //Options will include diacritic name, picture used, baseline + Diacritics.prototype.options = null; + Diacritics.prototype.diacriticmarks = null; + + //initiate diacritics elements + function Diacritics(element,options) { + this.pluginSubmit = __bind(this.pluginSubmit, this); + this.updateDiacritics = __bind(this.updateDiacritics, this); + this.updateViewer = __bind(this.updateViewer, this); + this.getDiacritics = __bind(this.getDiacritics, this); + this.getPos = __bind(this.getPos, this); + this.putMarkatLocation = __bind(this.putMarkatLocation, this); + this.updateEditorForDiacritics = __bind(this.updateEditorForDiacritics, this); + + this.options = options; + this.diacriticmarks = this.getDiacritics(); + _ref = Diacritics.__super__.constructor.apply(this, arguments); + return _ref; + } + + //example variables to be used to receive input in the annotator view + Diacritics.prototype.field = null; + Diacritics.prototype.input = null; + + //this function will initialize the plug in + Diacritics.prototype.pluginInit = function() { + console.log("Diacritics-pluginInit"); + + //Check that annotator is working + if (!Annotator.supported()) { + return; + } + var di = this.diacriticmarks; + + //-- Editor + var self = this; + if(di != 'undefined'){ + $.each(di,function(item){ + self.field = self.annotator.editor.addField({ + type: 'checkbox', //options (textarea,input,select,checkbox) + label: Annotator._t(item), + submit: self.pluginSubmit, + }); + }); + + //-- Viewer + var newview = this.annotator.viewer.addField({ + load: this.updateViewer, + }); + + this.annotator.subscribe('annotationsLoaded', this.updateDiacritics); + this.annotator.subscribe('annotationUploaded', this.updateDiacritics); + this.annotator.subscribe('annotationDeleted', this.updateDiacritics); + this.annotator.subscribe('annotationUpdated', this.updateDiacritics); + this.annotator.subscribe('annotationEditorShown', this.updateEditorForDiacritics, this.field); + + var self = this; + $(window).resize(function() { + self.updateDiacritics(); + }); + } + + return this.input = $(this.field).find(':input'); + }; + + //The following function is run when a person hits submit. + Diacritics.prototype.pluginSubmit = function(field, annotation) { + var checkedItems = $(this.field).find(':input'); + var self = this; + $.each(checkedItems, function(item){ + if(typeof annotation.tags != 'undefined'){ + var index = $.inArray(checkedItems[item].placeholder, annotation.tags); + if(index != -1){ + annotation.tags.splice(index, 1); + if (typeof $($('.annotator-wrapper')[0]).find('div.'+annotation.id)[0] != 'undefined'){ + $($('.annotator-wrapper')[0]).find('div.'+annotation.id)[0].remove(); + } else { + $($('.annotator-wrapper')[0]).find('div.undefined')[0].remove(); + } + } + + if(checkedItems[item].checked == true){ + annotation.tags.unshift(checkedItems[item].placeholder); + self.putMarkatLocation(annotation, checkedItems[item].placeholder); + } + } else { + if(checkedItems[item].checked == true){ + annotation['tags'] = [checkedItems[item].placeholder]; + self.putMarkatLocation(annotation, checkedItems[item].placeholder); + } + } + }); + + } + + Diacritics.prototype.putMarkatLocation = function (annotation, mark){ + var loc = this.getPos(annotation.highlights[0]); + var alignment = this.diacriticmarks[mark][1]; + var imgurl = this.diacriticmarks[mark][0]; + + var newdiv = document.createElement('div'); + var className = 'mark ' + annotation.id; + newdiv.setAttribute('class',className); + if(alignment == 'top'){ + $(newdiv).css('top',""+(loc.y-5)+"px"); + } else if(alignment == 'bottom'){ + $(newdiv).css('top',""+(loc.y+loc.height-5)+"px"); + } else{ + $(newdiv).css('top',""+loc.y+"px"); + } + $(newdiv).css('left',""+(loc.x+(loc.width/2.0)-5)+"px"); + $(newdiv).css('background-image', 'url('+imgurl+')'); + $('.annotator-wrapper')[0].appendChild(newdiv); + } + + Diacritics.prototype.getDiacritics = function(){ + if(typeof this.options.diacritics != 'undefined'){ + var self = this; + var final = new Object(), prelim = this.options.diacritics.split(","); + prelim.forEach(function(item){ + var temp = item.split(";"); + if (temp.length <3) {return undefined;} + final[temp[0]] = [temp[1],temp[2]]; + }); + return final; + } + console.log("Was undefined"); + return undefined; + } + + Diacritics.prototype.getPos = function(el) { + var off = $(el).offset(); + return {x: off.left-$($('.annotator-wrapper')[0]).offset().left, y: off.top-$($('.annotator-wrapper')[0]).offset().top, width:$(el).width(), height:$(el).height()}; + } + + Diacritics.prototype.updateDiacritics = function(){ + $('.mark').remove(); + var annotations = this.annotator.plugins['Store'].annotations; + var self = this; + annotations.forEach(function(ann){ + $.each(self.diacriticmarks, function(item){ + if($.inArray(item, ann.tags) != -1){ + self.putMarkatLocation(ann, item); + } + }); + }); + } + + Diacritics.prototype.updateViewer = function(field,annotation){ + $(field).remove(); + } + + Diacritics.prototype.updateEditorForDiacritics = function(field, annotation){ + if (typeof annotation.tags == 'undefined'){ + return; + } + var self = this; + + var inputItems = $(this.field).find(':input'); + var dictOfItems = {} + $.each(inputItems, function(item){ + inputItems[item].checked = false; + dictOfItems[inputItems[item].placeholder] = inputItems[item]; + }); + annotation.tags.forEach(function(tag){ + if(typeof self.diacriticmarks[tag] != 'undefined'){ + dictOfItems[tag].checked = true; + } + }); + } + + + + return Diacritics; + +})(Annotator.Plugin); \ No newline at end of file diff --git a/common/static/js/vendor/ova/flagging-annotator.js b/common/lib/xmodule/xmodule/js/src/ova/flagging-annotator.js similarity index 98% rename from common/static/js/vendor/ova/flagging-annotator.js rename to common/lib/xmodule/xmodule/js/src/ova/flagging-annotator.js index ac24ffff240d..8aa792334ffe 100644 --- a/common/static/js/vendor/ova/flagging-annotator.js +++ b/common/lib/xmodule/xmodule/js/src/ova/flagging-annotator.js @@ -1,4 +1,3 @@ -// Generated by CoffeeScript 1.6.3 var _ref, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, @@ -101,4 +100,4 @@ Annotator.Plugin.Flagging = (function(_super) { return Flagging; -})(Annotator.Plugin); \ No newline at end of file +})(Annotator.Plugin); diff --git a/common/static/js/vendor/ova/jquery-Watch.js b/common/lib/xmodule/xmodule/js/src/ova/jquery-Watch.js similarity index 100% rename from common/static/js/vendor/ova/jquery-Watch.js rename to common/lib/xmodule/xmodule/js/src/ova/jquery-Watch.js diff --git a/common/static/js/vendor/ova/ova.js b/common/lib/xmodule/xmodule/js/src/ova/ova.js similarity index 99% rename from common/static/js/vendor/ova/ova.js rename to common/lib/xmodule/xmodule/js/src/ova/ova.js index 059af1322f6e..fc5bda3d3698 100644 --- a/common/static/js/vendor/ova/ova.js +++ b/common/lib/xmodule/xmodule/js/src/ova/ova.js @@ -1,6 +1,6 @@ /* Open Video Annotation v1.0 (http://openvideoannotation.org/) -Copyright (C) 2014 CHS (Harvard University), Daniel Cebri�n Robles and Phil Desenne +Copyright (C) 2014 CHS (Harvard University), Daniel Cebrian Robles and Phil Desenne License: https://github.com/CtrHellenicStudies/OpenVideoAnnotation/blob/master/License.rst This program is free software; you can redistribute it and/or @@ -2389,17 +2389,8 @@ OpenVideoAnnotation.Annotator = function (element, options) { if (typeof options.optionsAnnotator.highlightTags!='undefined') this.annotator.addPlugin("HighlightTags", options.optionsAnnotator.highlightTags); - - /* - this.annotator.addPlugin("Filter", { - filters: [ - { - label: 'Media', - property: 'media' - } - ] - });//it is obligatory to have - */ + if (typeof options.optionsAnnotator.diacriticMarks != 'undefined' && typeof Annotator.Plugin["Diacritics"] === 'function') + this.annotator.addPlugin("Diacritics", options.optionsAnnotator.diacriticMarks); if (typeof Annotator.Plugin["Geolocation"] === 'function') this.annotator.addPlugin("Geolocation",options.optionsAnnotator.geolocation); @@ -2415,7 +2406,7 @@ OpenVideoAnnotation.Annotator = function (element, options) { if (typeof Annotator.Plugin["Reply"] === 'function') this.annotator.addPlugin("Reply"); - if (typeof Annotator.Plugin["Flagging"] === 'function') + if (typeof Annotator.Plugin["Flagging"] === 'function') this.annotator.addPlugin("Flagging"); //Will be add the player and the annotations plugin for video-js in the annotator diff --git a/common/static/js/vendor/ova/rangeslider.js b/common/lib/xmodule/xmodule/js/src/ova/rangeslider.js similarity index 99% rename from common/static/js/vendor/ova/rangeslider.js rename to common/lib/xmodule/xmodule/js/src/ova/rangeslider.js index 51e054fcbad7..e0250b936a80 100644 --- a/common/static/js/vendor/ova/rangeslider.js +++ b/common/lib/xmodule/xmodule/js/src/ova/rangeslider.js @@ -1,6 +1,6 @@ /* RangeSlider v1.0 (https://github.com/danielcebrian/rangeslider-videojs) -Copyright (C) 2014 Daniel Cebri�n Robles +Copyright (C) 2014 Daniel Cebrian Robles License: https://github.com/danielcebrian/rangeslider-videojs/blob/master/License.rst This program is free software; you can redistribute it and/or diff --git a/common/static/js/vendor/ova/reply-annotator.js b/common/lib/xmodule/xmodule/js/src/ova/reply-annotator.js similarity index 98% rename from common/static/js/vendor/ova/reply-annotator.js rename to common/lib/xmodule/xmodule/js/src/ova/reply-annotator.js index f88efae2daf0..91a55b2b1402 100644 --- a/common/static/js/vendor/ova/reply-annotator.js +++ b/common/lib/xmodule/xmodule/js/src/ova/reply-annotator.js @@ -1,6 +1,6 @@ /* Reply Annotator Plugin v1.0 (https://github.com/danielcebrian/reply-annotator) - Copyright (C) 2014 Daniel Cebri�n Robles + Copyright (C) 2014 Daniel Cebrian Robles License: https://github.com/danielcebrian/reply-annotator/blob/master/License.rst This program is free software; you can redistribute it and/or @@ -83,6 +83,7 @@ Annotator.Plugin.Reply = (function(_super) { return self; }); this.annotation = annotation; + field.remove(); //Create the actions for the buttons return ret; }; diff --git a/common/static/js/vendor/ova/richText-annotator.js b/common/lib/xmodule/xmodule/js/src/ova/richText-annotator.js similarity index 93% rename from common/static/js/vendor/ova/richText-annotator.js rename to common/lib/xmodule/xmodule/js/src/ova/richText-annotator.js index 828d7ef8ef89..0ce8ea33e985 100644 --- a/common/static/js/vendor/ova/richText-annotator.js +++ b/common/lib/xmodule/xmodule/js/src/ova/richText-annotator.js @@ -1,6 +1,6 @@ /* Rich Text Annotator Plugin v1.0 (https://github.com/danielcebrian/richText-annotator) -Copyright (C) 2014 Daniel Cebri�n Robles +Copyright (C) 2014 Daniel Cebrian Robles License: https://github.com/danielcebrian/richText-annotator/blob/master/License.rst This program is free software; you can redistribute it and/or @@ -17,7 +17,6 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -// Generated by CoffeeScript 1.6.3 var _ref, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, @@ -31,11 +30,21 @@ Annotator.Plugin.RichText = (function(_super) { RichText.prototype.options = { tinymce:{ selector: "li.annotator-item textarea", - plugins: "media image insertdatetime link code", + skin: 'studio-tmce4', + formats: { + code: { + inline: 'code' + } + }, + codemirror: { + path: "" + baseUrl + "js/vendor" + }, + plugins: "image link codemirror", menubar: false, toolbar_items_size: 'small', extended_valid_elements : "iframe[src|frameborder|style|scrolling|class|width|height|name|align|id]", - toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media rubric | code ", + toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image rubric | code ", + resize: "both", } }; @@ -125,7 +134,7 @@ Annotator.Plugin.RichText = (function(_super) { RichText.prototype.updateEditor = function(field, annotation) { var text = typeof annotation.text!='undefined'?annotation.text:''; - tinymce.activeEditor.setContent(text); + tinymce.activeEditor.setContent(text); $(field).remove(); //this is the auto create field by annotator and it is not necessary } @@ -139,4 +148,3 @@ Annotator.Plugin.RichText = (function(_super) { return RichText; })(Annotator.Plugin); - diff --git a/common/static/js/vendor/ova/share-annotator.js b/common/lib/xmodule/xmodule/js/src/ova/share-annotator.js similarity index 99% rename from common/static/js/vendor/ova/share-annotator.js rename to common/lib/xmodule/xmodule/js/src/ova/share-annotator.js index 013933703f36..b6648e32456d 100644 --- a/common/static/js/vendor/ova/share-annotator.js +++ b/common/lib/xmodule/xmodule/js/src/ova/share-annotator.js @@ -1,6 +1,6 @@ /* Share Annotation Plugin v1.0 (https://github.com/danielcebrian/share-annotator) -Copyright (C) 2014 Daniel Cebri�n Robles +Copyright (C) 2014 Daniel Cebrian Robles License: https://github.com/danielcebrian/share-annotator/blob/master/License.rst This program is free software; you can redistribute it and/or @@ -17,7 +17,6 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -// Generated by CoffeeScript 1.6.3 var _ref, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, diff --git a/common/static/js/vendor/ova/tags-annotator.js b/common/lib/xmodule/xmodule/js/src/ova/tags-annotator.js similarity index 95% rename from common/static/js/vendor/ova/tags-annotator.js rename to common/lib/xmodule/xmodule/js/src/ova/tags-annotator.js index 36a28fa9de82..7d9a47c13929 100644 --- a/common/static/js/vendor/ova/tags-annotator.js +++ b/common/lib/xmodule/xmodule/js/src/ova/tags-annotator.js @@ -1,3 +1,27 @@ +/* + HighlightTags Annotator Plugin v1.0 (https://github.com/lduarte1991/tags-annotator) + Copyright (C) 2014 Luis F Duarte + License: https://github.com/lduarte1991/tags-annotator/blob/master/LICENSE.rst + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +/*=============================================================================== + =============================================================================== + =============================================================================== + =============================================================================== + ==============================================================================*/ /* * jQuery Plugin: Tokenizing Autocomplete Text Entry * Version 1.6.0 @@ -22,7 +46,7 @@ var DEFAULT_SETTINGS = { // Display settings hintText: "Type in a search term", - noResultsText: "No results", + noResultsText: "Not Found. Hit ENTER to add a personal tag", searchingText: "Searching...", deleteText: "×", animateDropdown: true, @@ -39,7 +63,7 @@ var DEFAULT_SETTINGS = { prePopulate: null, processPrePopulate: false, - // Manipulation settings + // Manipulation settings idPrefix: "token-input-", // Formatters @@ -271,6 +295,9 @@ $.TokenList = function (input, url_or_data, settings) { add_token($(selected_dropdown_item).data("tokeninput")); hidden_input.change(); return false; + } else{ + add_token({id:$(this).val(), name:$(this).val()}); + hidden_input.change(); } break; @@ -859,7 +886,6 @@ $.TokenList.Cache = function (options) { }; }(jQuery)); -// Generated by CoffeeScript 1.6.3 var _ref, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, __hasProp = {}.hasOwnProperty, @@ -886,7 +912,7 @@ Annotator.Plugin.HighlightTags = (function(_super) { HighlightTags.prototype.field = null; HighlightTags.prototype.input = null; HighlightTags.prototype.colors = null; - HighlightTags.prototype.isFirstTime = true; + HighlightTags.prototype.isFirstTime = true; //this function will initialize the plug in. Create your fields here in the editor and viewer. HighlightTags.prototype.pluginInit = function() { diff --git a/common/static/js/vendor/ova/tinymce.min.js b/common/lib/xmodule/xmodule/js/src/ova/tinymce.min.js similarity index 100% rename from common/static/js/vendor/ova/tinymce.min.js rename to common/lib/xmodule/xmodule/js/src/ova/tinymce.min.js diff --git a/common/static/js/vendor/ova/video.dev.js b/common/lib/xmodule/xmodule/js/src/ova/video.dev.js similarity index 100% rename from common/static/js/vendor/ova/video.dev.js rename to common/lib/xmodule/xmodule/js/src/ova/video.dev.js diff --git a/common/static/js/vendor/ova/vjs.youtube.js b/common/lib/xmodule/xmodule/js/src/ova/vjs.youtube.js similarity index 100% rename from common/static/js/vendor/ova/vjs.youtube.js rename to common/lib/xmodule/xmodule/js/src/ova/vjs.youtube.js diff --git a/common/lib/xmodule/xmodule/textannotation_module.py b/common/lib/xmodule/xmodule/textannotation_module.py index 6cc0f9512fbd..5593cbfbea3e 100644 --- a/common/lib/xmodule/xmodule/textannotation_module.py +++ b/common/lib/xmodule/xmodule/textannotation_module.py @@ -7,6 +7,7 @@ from xmodule.raw_module import RawDescriptor from xblock.core import Scope, String from xmodule.annotator_token import retrieve_token +from xmodule.annotator_mixin import get_instructions, ANNOTATOR_COMMON_JS, ANNOTATOR_COMMON_CSS import textwrap @@ -46,18 +47,18 @@ class AnnotatableFields(object): annotation_storage_url = String(help="Location of Annotation backend", scope=Scope.settings, default="http://your_annotation_storage.com", display_name="Url for Annotation Storage") annotation_token_secret = String(help="Secret string for annotation storage", scope=Scope.settings, default="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", display_name="Secret Token String for Annotation") diacritics = String( - display_name="Diacritic Marks", - help= "Add diacritic marks to be added to a text using the comma-separated form, i.e. markname;urltomark;baseline,markname2;urltomark2;baseline2", - scope=Scope.settings, - default='', + display_name="Diacritic Marks", + help= "Add diacritic marks to be added to a text using the comma-separated form, i.e. markname;urltomark;baseline,markname2;urltomark2;baseline2", + scope=Scope.settings, + default='', ) class TextAnnotationModule(AnnotatableFields, XModule): ''' Text Annotation Module ''' js = {'coffee': [], - 'js': []} - css = {'scss': [resource_string(__name__, 'css/annotatable/display.scss')]} + 'js': ANNOTATOR_COMMON_JS} + css = {'scss': ANNOTATOR_COMMON_CSS + [resource_string(__name__, 'css/annotatable/display.scss')]} icon_class = 'textannotation' def __init__(self, *args, **kwargs): @@ -73,12 +74,7 @@ def __init__(self, *args, **kwargs): def _extract_instructions(self, xmltree): """ Removes from the xmltree and returns them as a string, otherwise None. """ - instructions = xmltree.find('instructions') - if instructions is not None: - instructions.tag = 'div' - xmltree.remove(instructions) - return etree.tostring(instructions, encoding='unicode') - return None + return get_instructions(xmltree) def get_html(self): """ Renders parameters to template. """ diff --git a/common/lib/xmodule/xmodule/videoannotation_module.py b/common/lib/xmodule/xmodule/videoannotation_module.py index 2a7a0e75e5c3..05610c97ffcc 100644 --- a/common/lib/xmodule/xmodule/videoannotation_module.py +++ b/common/lib/xmodule/xmodule/videoannotation_module.py @@ -8,6 +8,7 @@ from xmodule.raw_module import RawDescriptor from xblock.core import Scope, String from xmodule.annotator_token import retrieve_token +from xmodule.annotator_mixin import get_instructions, get_extension, ANNOTATOR_COMMON_JS, ANNOTATOR_COMMON_CSS import textwrap @@ -42,11 +43,11 @@ class VideoAnnotationModule(AnnotatableFields, XModule): resource_string(__name__, 'js/src/html/display.coffee'), resource_string(__name__, 'js/src/annotatable/display.coffee'), ], - 'js': [ + 'js': ANNOTATOR_COMMON_JS + [ resource_string(__name__, 'js/src/collapsible.js'), ] } - css = {'scss': [resource_string(__name__, 'css/annotatable/display.scss')]} + css = {'scss': ANNOTATOR_COMMON_CSS + [resource_string(__name__, 'css/annotatable/display.scss')]} icon_class = 'videoannotation' def __init__(self, *args, **kwargs): @@ -62,24 +63,11 @@ def __init__(self, *args, **kwargs): def _extract_instructions(self, xmltree): """ Removes from the xmltree and returns them as a string, otherwise None. """ - instructions = xmltree.find('instructions') - if instructions is not None: - instructions.tag = 'div' - xmltree.remove(instructions) - return etree.tostring(instructions, encoding='unicode') - return None + return get_instructions(xmltree) def _get_extension(self, srcurl): ''' get the extension of a given url ''' - if 'youtu' in srcurl: - return 'video/youtube' - else: - spliturl = srcurl.split(".") - extensionplus1 = spliturl[len(spliturl) - 1] - spliturl = extensionplus1.split("?") - extensionplus2 = spliturl[0] - spliturl = extensionplus2.split("#") - return 'video/' + spliturl[0] + return get_extension(srcurl) def get_html(self): """ Renders parameters to template. """ @@ -91,7 +79,7 @@ def get_html(self): 'sourceUrl': self.sourceurl, 'typeSource': extension, 'poster': self.poster_url, - 'content_html': self._render_content(), + 'content_html': self.content, 'annotation_storage': self.annotation_storage_url, 'token': retrieve_token(self.user, self.annotation_token_secret), } diff --git a/common/static/css/vendor/ova/tags-annotator.css b/common/static/css/vendor/ova/token-input.css similarity index 99% rename from common/static/css/vendor/ova/tags-annotator.css rename to common/static/css/vendor/ova/token-input.css index e1e58286286a..054e797e967e 100644 --- a/common/static/css/vendor/ova/tags-annotator.css +++ b/common/static/css/vendor/ova/token-input.css @@ -43,7 +43,7 @@ li.token-input-input-token { div.token-input-dropdown { position: absolute; - width: 120px; + width: 400px; background-color: #fff; overflow: hidden; border-left: 1px solid #ccc; diff --git a/common/static/js/vendor/ova/images/fullpage_grouphover.png b/common/static/js/vendor/ova/images/fullpage_grouphover.png new file mode 100755 index 000000000000..3ca4e1e3c366 Binary files /dev/null and b/common/static/js/vendor/ova/images/fullpage_grouphover.png differ diff --git a/common/static/js/vendor/ova/images/fullpage_hover.png b/common/static/js/vendor/ova/images/fullpage_hover.png new file mode 100644 index 000000000000..d8cbd6630b0e Binary files /dev/null and b/common/static/js/vendor/ova/images/fullpage_hover.png differ diff --git a/common/static/js/vendor/ova/images/fullpage_pressed.png b/common/static/js/vendor/ova/images/fullpage_pressed.png new file mode 100644 index 000000000000..f5bb48376d14 Binary files /dev/null and b/common/static/js/vendor/ova/images/fullpage_pressed.png differ diff --git a/common/static/js/vendor/ova/images/fullpage_rest.png b/common/static/js/vendor/ova/images/fullpage_rest.png new file mode 100644 index 000000000000..2cf72a3d7305 Binary files /dev/null and b/common/static/js/vendor/ova/images/fullpage_rest.png differ diff --git a/common/static/js/vendor/ova/images/home_grouphover.png b/common/static/js/vendor/ova/images/home_grouphover.png new file mode 100755 index 000000000000..204e1cc94b50 Binary files /dev/null and b/common/static/js/vendor/ova/images/home_grouphover.png differ diff --git a/common/static/js/vendor/ova/images/home_hover.png b/common/static/js/vendor/ova/images/home_hover.png new file mode 100644 index 000000000000..1828267cf62c Binary files /dev/null and b/common/static/js/vendor/ova/images/home_hover.png differ diff --git a/common/static/js/vendor/ova/images/home_pressed.png b/common/static/js/vendor/ova/images/home_pressed.png new file mode 100644 index 000000000000..655d66528664 Binary files /dev/null and b/common/static/js/vendor/ova/images/home_pressed.png differ diff --git a/common/static/js/vendor/ova/images/home_rest.png b/common/static/js/vendor/ova/images/home_rest.png new file mode 100644 index 000000000000..bba978a57aa5 Binary files /dev/null and b/common/static/js/vendor/ova/images/home_rest.png differ diff --git a/common/static/js/vendor/ova/images/newan_grouphover.png b/common/static/js/vendor/ova/images/newan_grouphover.png new file mode 100755 index 000000000000..ab0cb6ece13b Binary files /dev/null and b/common/static/js/vendor/ova/images/newan_grouphover.png differ diff --git a/common/static/js/vendor/ova/images/newan_hover.png b/common/static/js/vendor/ova/images/newan_hover.png new file mode 100644 index 000000000000..997c848dd7de Binary files /dev/null and b/common/static/js/vendor/ova/images/newan_hover.png differ diff --git a/common/static/js/vendor/ova/images/newan_pressed.png b/common/static/js/vendor/ova/images/newan_pressed.png new file mode 100644 index 000000000000..9f4a4eb830ee Binary files /dev/null and b/common/static/js/vendor/ova/images/newan_pressed.png differ diff --git a/common/static/js/vendor/ova/images/newan_rest.png b/common/static/js/vendor/ova/images/newan_rest.png new file mode 100644 index 000000000000..7b5284a9fe87 Binary files /dev/null and b/common/static/js/vendor/ova/images/newan_rest.png differ diff --git a/common/static/js/vendor/ova/images/next_grouphover.png b/common/static/js/vendor/ova/images/next_grouphover.png new file mode 100755 index 000000000000..8d83d8a14285 Binary files /dev/null and b/common/static/js/vendor/ova/images/next_grouphover.png differ diff --git a/common/static/js/vendor/ova/images/next_hover.png b/common/static/js/vendor/ova/images/next_hover.png new file mode 100644 index 000000000000..4beeb4a93761 Binary files /dev/null and b/common/static/js/vendor/ova/images/next_hover.png differ diff --git a/common/static/js/vendor/ova/images/next_pressed.png b/common/static/js/vendor/ova/images/next_pressed.png new file mode 100644 index 000000000000..173734c7771b Binary files /dev/null and b/common/static/js/vendor/ova/images/next_pressed.png differ diff --git a/common/static/js/vendor/ova/images/next_rest.png b/common/static/js/vendor/ova/images/next_rest.png new file mode 100644 index 000000000000..de92d99d1345 Binary files /dev/null and b/common/static/js/vendor/ova/images/next_rest.png differ diff --git a/common/static/js/vendor/ova/images/previous_grouphover.png b/common/static/js/vendor/ova/images/previous_grouphover.png new file mode 100755 index 000000000000..016e63957a87 Binary files /dev/null and b/common/static/js/vendor/ova/images/previous_grouphover.png differ diff --git a/common/static/js/vendor/ova/images/previous_hover.png b/common/static/js/vendor/ova/images/previous_hover.png new file mode 100644 index 000000000000..9547e65b79cf Binary files /dev/null and b/common/static/js/vendor/ova/images/previous_hover.png differ diff --git a/common/static/js/vendor/ova/images/previous_pressed.png b/common/static/js/vendor/ova/images/previous_pressed.png new file mode 100644 index 000000000000..0c7a1bf5ec3d Binary files /dev/null and b/common/static/js/vendor/ova/images/previous_pressed.png differ diff --git a/common/static/js/vendor/ova/images/previous_rest.png b/common/static/js/vendor/ova/images/previous_rest.png new file mode 100644 index 000000000000..7b7f6db7f6fd Binary files /dev/null and b/common/static/js/vendor/ova/images/previous_rest.png differ diff --git a/common/static/js/vendor/ova/images/zoomin_grouphover.png b/common/static/js/vendor/ova/images/zoomin_grouphover.png new file mode 100755 index 000000000000..c985d0f958d7 Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomin_grouphover.png differ diff --git a/common/static/js/vendor/ova/images/zoomin_hover.png b/common/static/js/vendor/ova/images/zoomin_hover.png new file mode 100644 index 000000000000..206d2055409a Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomin_hover.png differ diff --git a/common/static/js/vendor/ova/images/zoomin_pressed.png b/common/static/js/vendor/ova/images/zoomin_pressed.png new file mode 100644 index 000000000000..ebe3df83ef31 Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomin_pressed.png differ diff --git a/common/static/js/vendor/ova/images/zoomin_rest.png b/common/static/js/vendor/ova/images/zoomin_rest.png new file mode 100644 index 000000000000..df0c52467522 Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomin_rest.png differ diff --git a/common/static/js/vendor/ova/images/zoomout_grouphover.png b/common/static/js/vendor/ova/images/zoomout_grouphover.png new file mode 100755 index 000000000000..46d21b3e507e Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomout_grouphover.png differ diff --git a/common/static/js/vendor/ova/images/zoomout_hover.png b/common/static/js/vendor/ova/images/zoomout_hover.png new file mode 100644 index 000000000000..e3b0fcd794c1 Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomout_hover.png differ diff --git a/common/static/js/vendor/ova/images/zoomout_pressed.png b/common/static/js/vendor/ova/images/zoomout_pressed.png new file mode 100644 index 000000000000..6b4d8199c327 Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomout_pressed.png differ diff --git a/common/static/js/vendor/ova/images/zoomout_rest.png b/common/static/js/vendor/ova/images/zoomout_rest.png new file mode 100644 index 000000000000..f9661201dfc8 Binary files /dev/null and b/common/static/js/vendor/ova/images/zoomout_rest.png differ diff --git a/common/static/js/vendor/ova/skins/lightgray/content.inline.min.css b/common/static/js/vendor/ova/skins/lightgray/content.inline.min.css deleted file mode 100644 index 771b83e55384..000000000000 --- a/common/static/js/vendor/ova/skins/lightgray/content.inline.min.css +++ /dev/null @@ -1 +0,0 @@ -.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:green;color:#fff}.mce-spellchecker-word{background:url(img/wline.gif) repeat-x bottom left;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333} \ No newline at end of file diff --git a/common/static/js/vendor/ova/skins/lightgray/content.min.css b/common/static/js/vendor/ova/skins/lightgray/content.min.css deleted file mode 100644 index b9bbab143f92..000000000000 --- a/common/static/js/vendor/ova/skins/lightgray/content.min.css +++ /dev/null @@ -1 +0,0 @@ -body{background-color:#fff;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px;scrollbar-3dlight-color:#f0f0ee;scrollbar-arrow-color:#676662;scrollbar-base-color:#f0f0ee;scrollbar-darkshadow-color:#ddd;scrollbar-face-color:#e0e0dd;scrollbar-highlight-color:#f0f0ee;scrollbar-shadow-color:#f0f0ee;scrollbar-track-color:#f5f5f5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.mce-object{border:1px dotted #3a3a3a;background:#d5d5d5 url(img/object.gif) no-repeat center}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px!important;height:9px!important;border:1px dotted #3a3a3a;background:#d5d5d5 url(img/anchor.gif) no-repeat center}.mce-nbsp{background:#AAA}hr{cursor:default}.mce-match-marker{background:green;color:#fff}.mce-spellchecker-word{background:url(img/wline.gif) repeat-x bottom left;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td.mce-item-selected,th.mce-item-selected{background-color:#39f!important}.mce-edit-focus{outline:1px dotted #333} \ No newline at end of file diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.eot b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.eot deleted file mode 100644 index 43a30f992596..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.eot and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.svg b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.svg deleted file mode 100644 index d338114f0784..000000000000 --- a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.svg +++ /dev/null @@ -1,175 +0,0 @@ - - - - -This is a custom SVG font generated by IcoMoon. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.ttf b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.ttf deleted file mode 100644 index 841c79c18234..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.ttf and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.woff b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.woff deleted file mode 100644 index ad14a2406e78..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon-small.woff and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.eot b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.eot deleted file mode 100644 index eed4f8149a44..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.eot and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.svg b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.svg deleted file mode 100644 index 727f61af1383..000000000000 --- a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.svg +++ /dev/null @@ -1,153 +0,0 @@ - - - - -This is a custom SVG font generated by IcoMoon. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.ttf b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.ttf deleted file mode 100644 index dea6e458f9db..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.ttf and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.woff b/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.woff deleted file mode 100644 index f17657986c6a..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/fonts/icomoon.woff and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/img/anchor.gif b/common/static/js/vendor/ova/skins/lightgray/img/anchor.gif deleted file mode 100644 index 606348c7f53d..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/img/anchor.gif and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/img/loader.gif b/common/static/js/vendor/ova/skins/lightgray/img/loader.gif deleted file mode 100644 index c69e937232b2..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/img/loader.gif and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/img/object.gif b/common/static/js/vendor/ova/skins/lightgray/img/object.gif deleted file mode 100644 index cccd7f023fb8..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/img/object.gif and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/img/trans.gif b/common/static/js/vendor/ova/skins/lightgray/img/trans.gif deleted file mode 100644 index 388486517fa8..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/img/trans.gif and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/img/wline.gif b/common/static/js/vendor/ova/skins/lightgray/img/wline.gif deleted file mode 100644 index 7d0a4dbca03c..000000000000 Binary files a/common/static/js/vendor/ova/skins/lightgray/img/wline.gif and /dev/null differ diff --git a/common/static/js/vendor/ova/skins/lightgray/skin.ie7.min.css b/common/static/js/vendor/ova/skins/lightgray/skin.ie7.min.css deleted file mode 100644 index 0d29f3a81fe2..000000000000 --- a/common/static/js/vendor/ova/skins/lightgray/skin.ie7.min.css +++ /dev/null @@ -1 +0,0 @@ -.mce-container,.mce-container *,.mce-widget,.mce-widget *{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#000;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-container ::-webkit-scrollbar{width:8px;height:8px;-webkit-border-radius:4px}.mce-container ::-webkit-scrollbar-track,.mce-container ::-webkit-scrollbar-track-piece{background-color:transparent}.mce-container ::-webkit-scrollbar-thumb{background-color:rgba(53,57,71,0.3);width:6px;height:6px;-webkit-border-radius:4px}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:visible!important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td div{border:1px solid #808080;width:12px;height:12px;margin:2px;cursor:pointer}.mce-grid td div:hover{border-color:black}.mce-grid td div:focus{border-color:#59a5e1;outline:1px solid rgba(82,168,236,0.8);border-color:rgba(82,168,236,0.8)}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover{border-color:#c5c5c5}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#e8e8e8;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#c4daff;background:#deeafa}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:#ccc 5px 5px 5px;-moz-box-shadow:#ccc 5px 5px 5px;box-shadow:#ccc 5px 5px 5px}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{top:0;left:0;background:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #EEE;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:bold;line-height:20px;color:#CCC;text-shadow:0 1px 0 white;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#AAA}.mce-window-head .mce-title{display:inline-block;*display:inline;*zoom:1;line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:whiteSmoke;border-top:1px solid #DDD;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000;-moz-box-shadow:0 0 5px #000;box-shadow:0 0 5px #000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:0;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #c5c5c5;position:relative;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-btn:hover,.mce-btn:focus{text-decoration:none;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn.mce-disabled,.mce-btn.mce-disabled:hover{cursor:default;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);zoom:1;border-color:#04c #04c #002b80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary:hover,.mce-primary:focus{color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#005fb3;background-image:-moz-linear-gradient(top,#0077b3,#003cb3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0077b3),to(#003cb3));background-image:-webkit-linear-gradient(top,#0077b3,#003cb3);background-image:-o-linear-gradient(top,#0077b3,#003cb3);background-image:linear-gradient(to bottom,#0077b3,#003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3',endColorstr='#ff003cb3',GradientType=0);zoom:1;border-color:#003cb3 #003cb3 #026;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary button{color:#fff}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:3px 5px;font-size:12px;line-height:15px}.mce-btn-small i{margin-top:0}.mce-btn .mce-caret{margin-top:8px;*margin-top:6px;margin-left:0}.mce-btn-small .mce-caret{margin-top:6px;*margin-top:4px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #444;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#999}.mce-caret.mce-up{border-bottom:4px solid #444;border-top:0}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-btn:hover,.mce-btn-group .mce-btn:focus{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-disabled,.mce-btn-group .mce-btn.mce-disabled:hover{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-active,.mce-btn-group .mce-btn.mce-active:hover,.mce-btn-group .mce-btn:active{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn-group .mce-btn.mce-disabled button{opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn-group .mce-first{border-left:1px solid #c5c5c5;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #c5c5c5;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0}.mce-checked i.mce-i-checkbox{color:#000;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox{border:1px solid #59a5e1;border:1px solid rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-colorbutton .mce-ico{position:relative}.mce-colorpicker{background:#FFF}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-17px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-combobox{display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:rgba(0,0,0,0.15);height:28px}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox *:focus{border-color:#59a5e1;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#000}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:gray;color:white}.mce-path .mce-divider{display:inline}.mce-fieldset{border:0 solid #9e9e9e;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);border:0 solid #c5c5c5;overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label-disabled .mce-text{color:#999}.mce-label.mce-multiline{white-space:pre-wrap}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #ddd}.mce-menubar .mce-menubtn button{color:#000}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#ddd;filter:none}.mce-menubtn.mce-disabled span{color:#999}.mce-menubtn span{margin-right:2px;line-height:20px;*line-height:16px}.mce-menubtn.mce-btn-small span{font-size:12px;line-height:15px;*line-height:16px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item.mce-disabled .mce-text{color:#999}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0);zoom:1}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#999}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #666}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret{border-left-color:#FFF}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item-sep,.mce-menu-item-sep:hover{padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#e5e5e5;border-bottom:1px solid white;cursor:default;filter:none}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item.mce-active{background-color:#c8def4;outline:1px solid #c5c5c5}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa;background-color:transparent;outline:0}.mce-menu-item-checkbox.mce-active{background-color:#FFF;outline:0}.mce-menu{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#FFF;border:1px solid #CCC;border:1px solid rgba(0,0,0,0.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline;*zoom:1}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}i.mce-radio{padding:1px;margin:0 3px 0 0;background-color:#fafafa;border:1px solid #cacece;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}i.mce-radio:after{font-family:Arial;font-size:12px;color:#000;content:'\25cf'}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#000}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #ccc}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #ccc;border-width:1px 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-textbox{background:#FFF;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);display:inline-block;-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#000}.mce-textbox:focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}@font-face{font-family:'icomoon';src:url('fonts/icomoon.eot');src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon.svg#icomoon') format('svg'),url('fonts/icomoon.woff') format('woff'),url('fonts/icomoon.ttf') format('truetype');font-weight:normal;font-style:normal}@font-face{font-family:'icomoon-small';src:url('fonts/icomoon-small.eot');src:url('fonts/icomoon-small.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon-small.svg#icomoon') format('svg'),url('fonts/icomoon-small.woff') format('woff'),url('fonts/icomoon-small.ttf') format('truetype');font-weight:normal;font-style:normal}.mce-ico{font-family:'icomoon';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'icomoon-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = this.currentStyle['-ie7-icon'].substr(1,1)+' ')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-inserttime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#BBB} \ No newline at end of file diff --git a/common/static/js/vendor/ova/skins/lightgray/skin.min.css b/common/static/js/vendor/ova/skins/lightgray/skin.min.css deleted file mode 100644 index 23a89fdfc1a6..000000000000 --- a/common/static/js/vendor/ova/skins/lightgray/skin.min.css +++ /dev/null @@ -1 +0,0 @@ -.mce-container,.mce-container *,.mce-widget,.mce-widget *{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#000;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-container ::-webkit-scrollbar{width:8px;height:8px;-webkit-border-radius:4px}.mce-container ::-webkit-scrollbar-track,.mce-container ::-webkit-scrollbar-track-piece{background-color:transparent}.mce-container ::-webkit-scrollbar-thumb{background-color:rgba(53,57,71,0.3);width:6px;height:6px;-webkit-border-radius:4px}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:visible!important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;border-radius:2px}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#d9d9d9}.mce-grid td div{border:1px solid #808080;width:12px;height:12px;margin:2px;cursor:pointer}.mce-grid td div:hover{border-color:black}.mce-grid td div:focus{border-color:#59a5e1;outline:1px solid rgba(82,168,236,0.8);border-color:rgba(82,168,236,0.8)}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover{border-color:#c5c5c5}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#e8e8e8;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#c4daff;background:#deeafa}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.mce-scroll{position:relative}.mce-panel{border:0 solid #9e9e9e;background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}.mce-floatpanel{position:absolute;-webkit-box-shadow:#ccc 5px 5px 5px;-moz-box-shadow:#ccc 5px 5px 5px;box-shadow:#ccc 5px 5px 5px}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{top:0;left:0;background:#fff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;background:#FFF;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;-webkit-transition:opacity 150ms ease-in;transition:opacity 150ms ease-in}.mce-window.mce-in{opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #EEE;position:relative}.mce-window-head .mce-close{position:absolute;right:15px;top:9px;font-size:20px;font-weight:bold;line-height:20px;color:#CCC;text-shadow:0 1px 0 white;cursor:pointer;height:20px;overflow:hidden}.mce-close:hover{color:#AAA}.mce-window-head .mce-title{display:inline-block;*display:inline;*zoom:1;line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:10px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:whiteSmoke;border-top:1px solid #DDD;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window.mce-fullscreen,.mce-window.mce-fullscreen .mce-foot{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-tooltip-inner{-webkit-box-shadow:0 0 5px #000;-moz-box-shadow:0 0 5px #000;box-shadow:0 0 5px #000}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:0;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-btn{border:1px solid #c5c5c5;position:relative;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-btn:hover,.mce-btn:focus{text-decoration:none;color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn.mce-disabled,.mce-btn.mce-disabled:hover{cursor:default;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#333;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #fff}.mce-primary{min-width:50px;color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#006dcc;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);zoom:1;border-color:#04c #04c #002b80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary:hover,.mce-primary:focus{color:#fff;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#005fb3;background-image:-moz-linear-gradient(top,#0077b3,#003cb3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#0077b3),to(#003cb3));background-image:-webkit-linear-gradient(top,#0077b3,#003cb3);background-image:-o-linear-gradient(top,#0077b3,#003cb3);background-image:linear-gradient(to bottom,#0077b3,#003cb3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0077b3',endColorstr='#ff003cb3',GradientType=0);zoom:1;border-color:#003cb3 #003cb3 #026;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-primary button{color:#fff}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:3px 5px;font-size:12px;line-height:15px}.mce-btn-small i{margin-top:0}.mce-btn .mce-caret{margin-top:8px;*margin-top:6px;margin-left:0}.mce-btn-small .mce-caret{margin-top:6px;*margin-top:4px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #444;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#999}.mce-caret.mce-up{border-bottom:4px solid #444;border-top:0}.mce-btn-group .mce-btn{border-width:1px 0 1px 0;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mce-btn-group .mce-btn:hover,.mce-btn-group .mce-btn:focus{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#e3e3e3;background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#ccc));background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(to bottom,#f2f2f2,#ccc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffcccccc',GradientType=0);zoom:1;border-color:#ccc #ccc #a6a6a6;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-disabled,.mce-btn-group .mce-btn.mce-disabled:hover{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fff,#d9d9d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#d9d9d9));background-image:-webkit-linear-gradient(top,#fff,#d9d9d9);background-image:-o-linear-gradient(top,#fff,#d9d9d9);background-image:linear-gradient(to bottom,#fff,#d9d9d9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffd9d9d9',GradientType=0);zoom:1;border-color:#d9d9d9 #d9d9d9 #b3b3b3;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25)}.mce-btn-group .mce-btn.mce-active,.mce-btn-group .mce-btn.mce-active:hover,.mce-btn-group .mce-btn:active{color:#333;text-shadow:0 1px 1px rgba(255,255,255,0.75);background-color:#d6d6d6;background-image:-moz-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-webkit-gradient(linear,0 0,0 100%,from(#e6e6e6),to(#bfbfbf));background-image:-webkit-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:-o-linear-gradient(top,#e6e6e6,#bfbfbf);background-image:linear-gradient(to bottom,#e6e6e6,#bfbfbf);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe6e6e6',endColorstr='#ffbfbfbf',GradientType=0);zoom:1;border-color:#bfbfbf #bfbfbf #999;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-btn-group .mce-btn.mce-disabled button{opacity:.65;filter:alpha(opacity=65);zoom:1}.mce-btn-group .mce-first{border-left:1px solid #c5c5c5;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.mce-btn-group .mce-last{border-right:1px solid #c5c5c5;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.mce-btn-group .mce-first.mce-last{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0}.mce-checked i.mce-i-checkbox{color:#000;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox{border:1px solid #59a5e1;border:1px solid rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-colorbutton .mce-ico{position:relative}.mce-colorpicker{background:#FFF}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-14px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-17px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;border-left:1px solid transparent;border-right:1px solid transparent}.mce-colorbutton:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-combobox{display:inline-block;*display:inline;*zoom:1;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;width:100px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:rgba(0,0,0,0.15);height:28px}.mce-combobox.mce-has-open input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.mce-combobox .mce-btn{border-left:0;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox *:focus{border-color:#59a5e1;border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#000}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:gray;color:white}.mce-path .mce-divider{display:inline}.mce-fieldset{border:0 solid #9e9e9e;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);border:0 solid #c5c5c5;overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label-disabled .mce-text{color:#999}.mce-label.mce-multiline{white-space:pre-wrap}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar{border:1px solid #ddd}.mce-menubar .mce-menubtn button{color:#000}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:transparent;background:#ddd;filter:none}.mce-menubtn.mce-disabled span{color:#999}.mce-menubtn span{margin-right:2px;line-height:20px;*line-height:16px}.mce-menubtn.mce-btn-small span{font-size:12px;line-height:15px;*line-height:16px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item.mce-disabled .mce-text{color:#999}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0);zoom:1}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:white}.mce-menu-item.mce-disabled:hover{background:#CCC}.mce-menu-shortcut{display:inline-block;color:#999}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #666}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret{border-left-color:#FFF}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item-sep,.mce-menu-item-sep:hover{padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#e5e5e5;border-bottom:1px solid white;cursor:default;filter:none}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item.mce-active{background-color:#c8def4;outline:1px solid #c5c5c5}.mce-menu-item-preview.mce-active{border-left:5px solid #aaa;background-color:transparent;outline:0}.mce-menu-item-checkbox.mce-active{background-color:#FFF;outline:0}.mce-menu{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:2px 0 0;min-width:160px;background:#FFF;border:1px solid #CCC;border:1px solid rgba(0,0,0,0.2);z-index:1002;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline;*zoom:1}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}i.mce-radio{padding:1px;margin:0 3px 0 0;background-color:#fafafa;border:1px solid #cacece;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);background-color:#f0f0f0;background-image:-moz-linear-gradient(top,#fdfdfd,#ddd);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fdfdfd),to(#ddd));background-image:-webkit-linear-gradient(top,#fdfdfd,#ddd);background-image:-o-linear-gradient(top,#fdfdfd,#ddd);background-image:linear-gradient(to bottom,#fdfdfd,#ddd);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffdfdfd',endColorstr='#ffdddddd',GradientType=0);zoom:1}i.mce-radio:after{font-family:Arial;font-size:12px;color:#000;content:'\25cf'}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#000}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent;border-right:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#c5c5c5;border-right-color:#c5c5c5}.mce-splitbtn button{padding-right:4px}.mce-splitbtn .mce-open{padding-left:4px}.mce-splitbtn .mce-open.mce-active{-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #ccc}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #ccc;border-width:1px 1px 0 0;background:#e3e3e3;padding:8px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#fdfdfd}.mce-tab.mce-active{background:#fdfdfd;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-textbox{background:#FFF;border:1px solid #c5c5c5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);display:inline-block;-webkit-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#000}.mce-textbox:focus{border-color:rgba(82,168,236,0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}@font-face{font-family:'tinymce';src:url('fonts/icomoon.eot');src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon.svg#icomoon') format('svg'),url('fonts/icomoon.woff') format('woff'),url('fonts/icomoon.ttf') format('truetype');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/icomoon-small.eot');src:url('fonts/icomoon-small.eot?#iefix') format('embedded-opentype'),url('fonts/icomoon-small.svg#icomoon') format('svg'),url('fonts/icomoon-small.woff') format('woff'),url('fonts/icomoon-small.ttf') format('truetype');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#333}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-inserttime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-untitled:before{content:"\e029"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB} \ No newline at end of file diff --git a/lms/envs/common.py b/lms/envs/common.py index 161349528429..01f48bc52c61 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -797,21 +797,6 @@ 'js/vendor/jquery.qtip.min.js', 'js/vendor/swfobject/swfobject.js', 'js/vendor/jquery.ba-bbq.min.js', - 'js/vendor/ova/annotator-full.js', - 'js/vendor/ova/annotator-full-firebase-auth.js', - 'js/vendor/ova/video.dev.js', - 'js/vendor/ova/vjs.youtube.js', - 'js/vendor/ova/rangeslider.js', - 'js/vendor/ova/share-annotator.js', - 'js/vendor/ova/tinymce.min.js', - 'js/vendor/ova/richText-annotator.js', - 'js/vendor/ova/reply-annotator.js', - 'js/vendor/ova/tags-annotator.js', - 'js/vendor/ova/flagging-annotator.js', - 'js/vendor/ova/jquery-Watch.js', - 'js/vendor/ova/ova.js', - 'js/vendor/ova/catch/js/catch.js', - 'js/vendor/ova/catch/js/handlebars-1.1.2.js', 'js/vendor/URI.min.js', ] @@ -828,16 +813,7 @@ 'css/vendor/jquery.qtip.min.css', 'css/vendor/responsive-carousel/responsive-carousel.css', 'css/vendor/responsive-carousel/responsive-carousel.slide.css', - 'css/vendor/ova/edx-annotator.css', - 'css/vendor/ova/annotator.css', 'css/vendor/ova/video-js.min.css', - 'css/vendor/ova/rangeslider.css', - 'css/vendor/ova/share-annotator.css', - 'css/vendor/ova/richText-annotator.css', - 'css/vendor/ova/tags-annotator.css', - 'css/vendor/ova/flagging-annotator.css', - 'css/vendor/ova/ova.css', - 'js/vendor/ova/catch/css/main.css' ], 'output_filename': 'css/lms-style-vendor.css', }, @@ -853,6 +829,13 @@ ], 'output_filename': 'css/lms-style-vendor-tinymce-skin.css', }, + 'style-annotator' :{ + 'source_filenames':[ + 'css/vendor/ova/annotator.css', + 'css/vendor/ova/token-input.css' + ], + 'output_filename': 'css/lms-style-vendor-ova-annotator.css', + }, 'style-app': { 'source_filenames': [ 'sass/application.css', diff --git a/lms/templates/imageannotation.html b/lms/templates/imageannotation.html new file mode 100644 index 000000000000..3e50ce4ee863 --- /dev/null +++ b/lms/templates/imageannotation.html @@ -0,0 +1,206 @@ +<%! from django.utils.translation import ugettext as _ %> +<%namespace name='static' file='/static_content.html'/> +<%static:css group='style-annotator'/> +<%static:css group='style-vendor-tinymce-content'/> +<%static:css group='style-vendor-tinymce-skin'/> + \ No newline at end of file diff --git a/lms/templates/textannotation.html b/lms/templates/textannotation.html index adb39c1189e7..ba5becaedf55 100644 --- a/lms/templates/textannotation.html +++ b/lms/templates/textannotation.html @@ -1,4 +1,10 @@ <%! from django.utils.translation import ugettext as _ %> +<%namespace name='static' file='/static_content.html'/> +<%static:css group='style-annotator'/> +<%static:css group='style-vendor-tinymce-content'/> +<%static:css group='style-vendor-tinymce-skin'/> +