From ae10f2b8df7fef06cdc0f2302f68ad6fba5c821d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C3=A9na=20Proxima?= Date: Wed, 11 Nov 2015 15:45:23 -0500 Subject: [PATCH 1/4] Committing media library CKEditor plugin. --- .../install/embed.button.media_library.yml | 9 + .../install/views.view.media_library.yml | 346 ++++++++++++++++++ .../lightning_media/images/star.png | Bin 0 -> 7873 bytes .../lightning_media/js/media_library.js | 87 +++++ .../lightning_media/lightning_media.info.yml | 9 +- .../Plugin/CKEditorPlugin/MediaLibrary.php | 104 ++++++ .../src/Plugin/EmbedType/MediaLibrary.php | 72 ++++ 7 files changed, 622 insertions(+), 5 deletions(-) create mode 100644 modules/lightning_features/lightning_media/config/install/embed.button.media_library.yml create mode 100644 modules/lightning_features/lightning_media/config/install/views.view.media_library.yml create mode 100644 modules/lightning_features/lightning_media/images/star.png create mode 100644 modules/lightning_features/lightning_media/js/media_library.js create mode 100644 modules/lightning_features/lightning_media/src/Plugin/CKEditorPlugin/MediaLibrary.php create mode 100644 modules/lightning_features/lightning_media/src/Plugin/EmbedType/MediaLibrary.php diff --git a/modules/lightning_features/lightning_media/config/install/embed.button.media_library.yml b/modules/lightning_features/lightning_media/config/install/embed.button.media_library.yml new file mode 100644 index 000000000..b253ef53e --- /dev/null +++ b/modules/lightning_features/lightning_media/config/install/embed.button.media_library.yml @@ -0,0 +1,9 @@ +langcode: en +status: true +dependencies: + module: + - lightning_media +label: 'Media Library' +id: media_library +type_id: media_library +type_settings: {} diff --git a/modules/lightning_features/lightning_media/config/install/views.view.media_library.yml b/modules/lightning_features/lightning_media/config/install/views.view.media_library.yml new file mode 100644 index 000000000..fb75801d1 --- /dev/null +++ b/modules/lightning_features/lightning_media/config/install/views.view.media_library.yml @@ -0,0 +1,346 @@ +langcode: en +status: true +dependencies: + module: + - image + - media_entity + - rest + - user +id: media_library +label: 'Media Library' +module: views +description: '' +tag: '' +base_table: media_field_data +base_field: mid +core: 8.x +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: perm + options: + perm: 'access content' + provider: user + perm: 'access content' + cache: + type: tag + options: { } + query: + type: views_query + options: + disable_sql_rewrite: false + distinct: false + replica: false + query_comment: '' + query_tags: { } + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + pager: + type: full + options: + items_per_page: 10 + offset: 0 + id: 0 + total_pages: null + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + tags: + previous: '‹ Previous' + next: 'Next ›' + first: '« First' + last: 'Last »' + quantity: 9 + style: + type: default + options: + grouping: { } + row_class: '' + default_row_class: true + uses_fields: false + row: + type: fields + options: + inline: { } + separator: '' + hide_empty: false + default_field_elements: true + fields: + thumbnail__target_id: + id: thumbnail__target_id + table: media_field_data + field: thumbnail__target_id + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: image + settings: + image_style: media_library + image_link: '' + group_column: '' + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: media + entity_field: thumbnail + plugin_id: field + mid: + id: mid + table: media + field: mid + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: number_integer + settings: + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: media + entity_field: mid + plugin_id: field + uuid: + id: uuid + table: media + field: uuid + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: media + entity_field: uuid + plugin_id: field + filters: + status: + value: true + table: media_field_data + field: status + provider: media + id: status + expose: + operator: '' + group: 1 + sorts: + created: + id: created + table: media_field_data + field: created + order: DESC + entity_type: media + entity_field: created + plugin_id: date + relationship: none + group_type: group + admin_label: '' + exposed: false + expose: + label: '' + granularity: second + header: { } + footer: { } + empty: { } + relationships: { } + arguments: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - user.permissions + tags: { } + json: + display_plugin: rest_export + id: json + display_title: 'REST export' + position: 1 + display_options: + display_extenders: { } + path: media-library + row: + type: data_field + options: + field_options: + name: + alias: '' + raw_output: false + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - request_format + - user.permissions + tags: { } diff --git a/modules/lightning_features/lightning_media/images/star.png b/modules/lightning_features/lightning_media/images/star.png new file mode 100644 index 0000000000000000000000000000000000000000..52fcdef78976691b55845522e7468d4f04bfaea7 GIT binary patch literal 7873 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 HMnV4v^>BoB literal 0 HcmV?d00001 diff --git a/modules/lightning_features/lightning_media/js/media_library.js b/modules/lightning_features/lightning_media/js/media_library.js new file mode 100644 index 000000000..aa2c422b9 --- /dev/null +++ b/modules/lightning_features/lightning_media/js/media_library.js @@ -0,0 +1,87 @@ +(function ($, _, Backbone, Drupal, CKEDITOR) { + + "use strict"; + + var MediaLibrary = Backbone.View.extend({ + + initialize: function (options) { + var self = this; + + var t = this.el; + if (t.rows.length === 0) { + t.insertRow().insertCell(-1).colSpan = 4; + } + + function onAdd (model) { + var r = t.rows[t.rows.length - 1]; + + if (r.cells.length === 4) { + t.insertRow().insertCell(-1).colSpan = 4; + r = r.nextSibling; + } + + var c = r.cells[r.cells.length - 1]; + r.insertCell(-1).colSpan = (c.colSpan - 1); + c.colSpan = 1; + c.style.width = '25%'; + c.innerHTML = model.get('thumbnail__target_id'); + $(c).on('click', function () { + var el = options.editor.document.createElement('drupal-entity'); + + el.setAttribute('data-align', 'none'); + el.setAttribute('data-embed-button', 'media_library'); + el.setAttribute('data-entity-embed-display', 'entity_reference:entity_reference_entity_view'); + el.setAttribute('data-entity-embed-settings', '{"view_mode":"default"}'); + el.setAttribute('data-entity-id', model.get('mid')); + el.setAttribute('data-entity-label', 'N/A'); + el.setAttribute('data-entity-type', 'media'); + el.setAttribute('data-entity-uuid', model.get('uuid')); + + options.editor.insertHtml(el.getOuterHtml()); + self.$el.dialog('close'); + }); + } + + options.collection.on('add', onAdd).fetch(); + }, + + }); + + CKEDITOR.plugins.add('media_library', { + requires: 'drupalentity', + + beforeInit: function (editor) { + _.each(editor.config.mediaLibrary.buttons, function (button) { + editor.ui.addButton(button.id, { + label: button.label, + data: button, + click: function (editor) { + editor.execCommand('media_library', this.data); + }, + icon: button.image + }); + }); + + editor.addCommand('media_library', { + exec: function(editor, data) { + var source = new Backbone.Collection(); + source.url = Drupal.url('media-library'); + var lib = new MediaLibrary({ collection: source, el: document.createElement('table'), editor: editor }); + + lib.$el.dialog({ + draggable: false, + height: '50%', + modal: true, + open: function () { + $(this).width('100%').css('margin', 0); + }, + resizable: false, + title: data.label, + width: '60%' + }); + } + }); + } + }); + +})(jQuery, _, Backbone, Drupal, CKEDITOR); diff --git a/modules/lightning_features/lightning_media/lightning_media.info.yml b/modules/lightning_features/lightning_media/lightning_media.info.yml index 03e93b247..2fe6a9cc7 100644 --- a/modules/lightning_features/lightning_media/lightning_media.info.yml +++ b/modules/lightning_features/lightning_media/lightning_media.info.yml @@ -1,10 +1,9 @@ name: Lightning Media type: module -description: 'Provides install and configuration for great media authoring experiences.' +description: Slick media handling for Lightning. So cool you'll make the A/C jealous. core: 8.x -package: lightning +package: Lightning dependencies: - - embed - entity_embed - - entity_browser - - file_browser + - rest + - serialization diff --git a/modules/lightning_features/lightning_media/src/Plugin/CKEditorPlugin/MediaLibrary.php b/modules/lightning_features/lightning_media/src/Plugin/CKEditorPlugin/MediaLibrary.php new file mode 100644 index 000000000..f90cdb5ce --- /dev/null +++ b/modules/lightning_features/lightning_media/src/Plugin/CKEditorPlugin/MediaLibrary.php @@ -0,0 +1,104 @@ +moduleHandler = $module_handler; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('entity.query')->get('embed_button'), + $container->get('module_handler') + ); + } + + /** + * {@inheritdoc} + */ + public function getDependencies(Editor $editor) { + return ['drupalentity']; + } + + /** + * {@inheritdoc} + */ + public function getFile() { + return $this->moduleHandler->getModule('lightning_media')->getPath() . '/js/media_library.js'; + } + + /** + * {@inheritdoc} + */ + public function getConfig(Editor $editor) { + return [ + 'mediaLibrary' => [ + // This allows several buttons to hook into the media library, which + // opens the possibility of specific ones for embedding video, audio, + // tweets, booplesnoots, etc. + 'buttons' => $this->getButtons(), + ], + ]; + } + + /** + * {@inheritdoc} + */ + protected function getButton(EmbedButtonInterface $embed_button) { + return [ + 'id' => $embed_button->id(), + 'name' => Html::escape($embed_button->label()), + 'label' => Html::escape($embed_button->label()), + 'image' => $embed_button->getIconUrl(), + ]; + } + +} diff --git a/modules/lightning_features/lightning_media/src/Plugin/EmbedType/MediaLibrary.php b/modules/lightning_features/lightning_media/src/Plugin/EmbedType/MediaLibrary.php new file mode 100644 index 000000000..406f44af9 --- /dev/null +++ b/modules/lightning_features/lightning_media/src/Plugin/EmbedType/MediaLibrary.php @@ -0,0 +1,72 @@ +moduleHandler = $module_handler; + $this->stringTranslation = $translator; + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('module_handler'), + $container->get('string_translation') + ); + } + + /** + * {@inheritdoc} + */ + public function getDefaultIconUrl() { + $path = $this->moduleHandler->getModule('lightning_media')->getPath(); + return file_create_url($path . '/images/star.png'); + } + +} From 01404701a705471d60ab8be750bf79265809c24a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C3=A9na=20Proxima?= Date: Thu, 12 Nov 2015 09:53:44 -0500 Subject: [PATCH 2/4] Added dependency on media_entity. --- .../lightning_features/lightning_media/lightning_media.info.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lightning_features/lightning_media/lightning_media.info.yml b/modules/lightning_features/lightning_media/lightning_media.info.yml index 2fe6a9cc7..575f12397 100644 --- a/modules/lightning_features/lightning_media/lightning_media.info.yml +++ b/modules/lightning_features/lightning_media/lightning_media.info.yml @@ -5,5 +5,6 @@ core: 8.x package: Lightning dependencies: - entity_embed + - media_entity - rest - serialization From 75433f2840ee03627dff54aa6b94c60ee798adde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C3=A9na=20Proxima?= Date: Thu, 12 Nov 2015 11:13:19 -0500 Subject: [PATCH 3/4] Added dependencies for sane media defaults. --- .../lightning_media/lightning_media.info.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/lightning_features/lightning_media/lightning_media.info.yml b/modules/lightning_features/lightning_media/lightning_media.info.yml index 575f12397..c9f853599 100644 --- a/modules/lightning_features/lightning_media/lightning_media.info.yml +++ b/modules/lightning_features/lightning_media/lightning_media.info.yml @@ -6,5 +6,11 @@ package: Lightning dependencies: - entity_embed - media_entity + # These next four are temporary dependencies until individual media_entity packages + # provide sane defaults separate from media_pinkeye. + - media_entity_instagram + - media_pinkeye + - media_entity_slideshow + - media_entity_twitter - rest - serialization From 9b028a4e9a3c2847ffd6d7c0eb6f992e81f503e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=C3=A9na=20Proxima?= Date: Thu, 12 Nov 2015 11:15:07 -0500 Subject: [PATCH 4/4] Added media_entity_image dependency, not temporary. --- .../lightning_features/lightning_media/lightning_media.info.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lightning_features/lightning_media/lightning_media.info.yml b/modules/lightning_features/lightning_media/lightning_media.info.yml index c9f853599..dd1434cd0 100644 --- a/modules/lightning_features/lightning_media/lightning_media.info.yml +++ b/modules/lightning_features/lightning_media/lightning_media.info.yml @@ -6,6 +6,7 @@ package: Lightning dependencies: - entity_embed - media_entity + - media_entity_image # These next four are temporary dependencies until individual media_entity packages # provide sane defaults separate from media_pinkeye. - media_entity_instagram