From 4ef8b621e5a9ca91713ace8b53729609a28f72f3 Mon Sep 17 00:00:00 2001 From: Nicolas Brassard Date: Fri, 15 May 2015 10:41:00 -0400 Subject: [PATCH] Added assets --- assets/multilingual_oembed_field.publish.css | 7 ++ assets/multilingual_oembed_field.publish.js | 4 + assets/multilingual_oembed_field.settings.js | 83 ++++++++++++++++++++ extension.driver.php | 31 ++++++++ fields/field.multilingual_oembed.php | 2 + 5 files changed, 127 insertions(+) create mode 100644 assets/multilingual_oembed_field.publish.css create mode 100644 assets/multilingual_oembed_field.publish.js create mode 100644 assets/multilingual_oembed_field.settings.js diff --git a/assets/multilingual_oembed_field.publish.css b/assets/multilingual_oembed_field.publish.css new file mode 100644 index 0000000..8535df2 --- /dev/null +++ b/assets/multilingual_oembed_field.publish.css @@ -0,0 +1,7 @@ +.field-multilingual-oembed .invalid .tab-panel label > div { + color: #222; +} + +.field-multilingual-oembed .invalid .tab-panel label > div > i { + color: #a9a9a9; +} \ No newline at end of file diff --git a/assets/multilingual_oembed_field.publish.js b/assets/multilingual_oembed_field.publish.js new file mode 100644 index 0000000..8bfe477 --- /dev/null +++ b/assets/multilingual_oembed_field.publish.js @@ -0,0 +1,4 @@ +(function ($, undefined) { + + +})(this.jQuery); diff --git a/assets/multilingual_oembed_field.settings.js b/assets/multilingual_oembed_field.settings.js new file mode 100644 index 0000000..72ddf4f --- /dev/null +++ b/assets/multilingual_oembed_field.settings.js @@ -0,0 +1,83 @@ +(function ($, undefined) { + + 'use strict'; + + if (!!Symphony.Extensions.MultilingualoEmbedField) { + return; + } + Symphony.Extensions.MultilingualoEmbedField = true; + + // from backend.views.js + var change = function (e) { + var selectbox = $(this); + var parent = selectbox.parents('.instance'); + var headline = parent.find('.frame-header h4'); + var values = selectbox.find(':selected'); + var span = headline.find('.required'); + + if(!!values.length) { + var langs = []; + values.each(function (index, elem) { + var text = $(this).text(); + langs.push(text); + if (index < values.length - 2) { + langs.push(', '); + } else if (index < values.length - 1) { + langs.push(' and '); + } + }); + + if (!span.length) { + span = $('', { + class: 'required' + }).appendTo(headline); + } + + span.html( + '—  ' + langs.join('') + ' ' + + Symphony.Language.get(langs.length > 1 ? 'are' : 'is') + ' ' + + Symphony.Language.get('required') + ); + } + + // Is not required + else { + headline.find('.required').remove(); + } + }; + + $(function () { + $('.field-multilingual_oembed.instance select[name*="[required_languages]"]') + .on('change', change) + .trigger('change'); + + /*if (!!Symphony.Context.get().version) { + Symphony.Elements.contents.find('.instance.field-textbox').each(function () { + var $field = $(this); + var $header = $field.find('.frame-header'); + $header.append( + $('').attr('class', 'field-multilingual_textbox-converter debug') + .attr('style', 'right: 11rem;font-size: 0.9em;') + .text(Symphony.Language.get('Convert to multilingual')) + ); + }).on('click', '.field-multilingual_textbox-converter', function (e) { + var $field = $(this).closest('.field-textbox'); + var id = $field.find('input[name$=\\[id\\]]').val(); + + e.stopPropagation(); + if (!confirm(Symphony.Language.get('Are you sure?'))) { + return false; + } + + $.post(Symphony.Context.get('path') + '/extension/multilingual_field/convert/' + id + '/') + .done(function (data) { + if (data && data.ok) { + window.location.reload(); + } + }); + return; + }); + }*/ + }); + +})(jQuery); diff --git a/extension.driver.php b/extension.driver.php index 1ffdb19..d666030 100644 --- a/extension.driver.php +++ b/extension.driver.php @@ -8,6 +8,10 @@ class extension_multilingual_oembed_field extends Extension { + private static $appendedHeaders = 0; + const PUBLISH_HEADERS = 1; + const SETTINGS_HEADERS = 2; + /** * Name of the extension * @var string @@ -21,6 +25,33 @@ private static function requireoEmbed() { require_once(EXTENSIONS . '/multilingual_oembed_field/fields/field.multilingual_oembed.php'); } + /** + * Add headers to the page. + * + * @param $type + */ + static public function appendHeaders($type) { + if ( + (self::$appendedHeaders & $type) !== $type + && class_exists('Administration') + && Administration::instance() instanceof Administration + && Administration::instance()->Page instanceof HTMLPage + ) { + $page = Administration::instance()->Page; + + if ($type === self::PUBLISH_HEADERS) { + $page->addStylesheetToHead(URL . '/extensions/multilingual_oembed_field/assets/multilingual_oembed_field.publish.css', 'screen'); + $page->addScriptToHead(URL . '/extensions/multilingual_oembed_field/assets/multilingual_oembed_field.publish.js'); + } + + if ($type === self::SETTINGS_HEADERS) { + $page->addScriptToHead(URL . '/extensions/multilingual_oembed_field/assets/multilingual_oembed_field.settings.js'); + } + + self::$appendedHeaders &= $type; + } + } + /* ********* INSTALL/UPDATE/UNISTALL ******* */ protected static function checkDependency($depname) { diff --git a/fields/field.multilingual_oembed.php b/fields/field.multilingual_oembed.php index 0d58627..277192d 100644 --- a/fields/field.multilingual_oembed.php +++ b/fields/field.multilingual_oembed.php @@ -386,6 +386,7 @@ public function appendFormattedElement(&$wrapper, $data, $encode = false, $mode */ public function displayPublishPanel(&$wrapper, $data=NULL, $flagWithError=NULL, $fieldnamePrefix=NULL, $fieldnamePostfix=NULL) { Extension_Frontend_Localisation::appendAssets(); + extension_multilingual_oembed_field::appendHeaders(extension_multilingual_oembed_field::PUBLISH_HEADERS); $main_lang = FLang::getMainLang(); $all_langs = FLang::getAllLangs(); $langs = FLang::getLangs(); @@ -495,6 +496,7 @@ public function displayPublishPanel(&$wrapper, $data=NULL, $flagWithError=NULL, * @param array $errors */ public function displaySettingsPanel(&$wrapper, $errors=NULL){ + extension_multilingual_oembed_field::appendHeaders(extension_multilingual_oembed_field::SETTINGS_HEADERS); /* first line, label and such */ parent::displaySettingsPanel($wrapper, $errors);