Scrivito 1.2.0 

Verbesserungen

Dateien umbenennen

Im Bearbeitungs-Modus können Dateien, die mit binären Attributen von CMS-Objekten oder Widgets assoziiert sind, nun in der Detail-Ansicht des Content Browsers umbenannt werden, wenn sie mit dem  scrivito_tag oder scrivito_image_tag-Helper gerendert wurden.

Um zu verhindern, dass eine Datei umbenannt wird, kann die Option data-scrivito-editors-binary-filename folgendermaßen auf false, gesetzt werden:

<%= scrivito_tag(:div, @obj, :my_binary_attribute, data: {
  scrivito_editors_binary_filename: false,
  scrivito_editors_allow_delete: true
}) %>

Weitere Inforamtionen zu Data-Attributen finden Sie in der Scrivito Editors Übersicht (in englischer Sprache).

Der Content Browser unterstützt Tags 

Um die im Content Browser angezeigten CMS-Objekte weiter eingrenzen zu können, beispielsweise auf die Ergebnisse einer Suche, können diese Objekte nun nach den Tags, die Ihnen zugeordnet wurden, gefiltert werden. Wenn beispielsweise Tags genutzt werden, um Bilder nach ihrer vorherrschenden Farbe zu kategorisieren, kann die gewünschte Farbkombination ausgewählt werden, um die passenden Bilder zu finden.

Damit ein CMS-Objekt eine Übereinstimmung mit einer Tag-basierten Suche liefert, müssen mindestens die ausgewählten Tags mit ihm assoziiert sein. 

Um die Tag-Filterung für den Content Browser zu aktivieren, wird ein „tags“ benanntes Stringlist-Attribut zu den CMS-Objektklassen, die Tagging unterstützen sollen, hinzugefügt:

class ProductPage < Obj
  …
  attribute :tags, :stringlist
  …
end

Um die Tags eines CMS-Objekts bearbeiten zu können, muss das „tags“-Attribut in der Detail-Ansicht der Objektklasse mit Hilfe des Standard-Helpers gerendert werden:

<%= scrivito_tag(:div, @obj, :tags) %>

Editoren für Aufzählungsattribute

Es gibt nun zwei neue Editoren in Scrivito, mit denen Attribute des Typs enum und multienum bearbeitet werden können.

Bisher mussten diese Editoren explizit angeklickt werden, um sie zu aktivieren. Nun sind sie im Bearbeitungsmodus immer aktiviert.

Der jeweilige Editor wird automatisch bereitgestellt, wenn der scrivito_tag-Helper ein enum oder multienum-Attribut rendert. Möchte man jedoch weiterhin das alte Verhalten für die Bearbeitung von enum und multienum-Attributen nutzen, können dafür die folgenden CoffeeScript-Abschnitte zu den Assets hinzugefügt werden.

# select_editor.coffee:

template = (values) ->
  element = $('<select></select>')
    .addClass('form-control')

  $.each values, (index, value) ->
    $('<option></option>')
      .attr('value', value)
      .text(value)
      .appendTo(element)

  element

save = (event, options) ->
  element = $(event.currentTarget)
  cmsField = element.data('scrivitoEditorsCmsField')
  content = element.val()

  if content == ''
    content = null

  cmsField.scrivito('save', content).done ->
    cmsField.trigger 'scrivito_editors:save'
    if options?.blur
      cmsField.trigger 'scrivito_editors:blur'

change = (event) ->
  save event

blur = (event) ->
  save event, blur: true

activate = (element) ->
  cmsField = $(element)

  cmsField.on 'click', ->
    content = cmsField.scrivito('content')
    values = cmsField.scrivito('valid_values')
    values.unshift('')

    template(values)
      .data('scrivitoEditorsCmsField', cmsField)
      .val(content or '')
      .insertAfter(cmsField)
      .change(change)
      .blur(blur)
      .focus()

    cmsField.hide()

selectEditor =
  can_edit: (element) -> $(element).is '[data-scrivito-field-type=enum]'
  activate: (element) -> activate element

scrivito.on 'load', ->
  scrivito.define_editor 'select', selectEditor
# multi_select_editor.coffee:

template = (values) ->
  element = $('<select></select>')
    .attr('multiple', 'true')

  $.each values, (index, value) ->
    $('<option></option>')
      .attr('value', value)
      .text(value)
      .appendTo(element)

  element

save = (event) ->
  element = $(event.currentTarget)
  cmsField = element.data('cmsField')
  content = element.val() ? []
  cmsField.scrivito('save', content).done ->
    cmsField.trigger('save.scrivito_editors')

activate = (element) ->
  cmsField = $(element)

  cmsField.on 'click', ->
    selected = cmsField.scrivito('content')
    values = cmsField.scrivito('valid_values')

    template(values)
      .data('cmsField', cmsField)
      .val(selected)
      .insertAfter(cmsField)
      .change(save)
      .focusout(save)
      .focus()

    cmsField.hide()

multiSelectEditor =
  can_edit: (element) -> $(element).is '[data-scrivito-field-type=multienum]'
  activate: (element) -> activate element

scrivito.on 'load', ->
  scrivito.define_editor 'multi_select', multiSelectEditor
# Die Auswahl-Editoren mit Hilfe des scrivito.select_editor-Callbacks global aktivieren:

scrivito.select_editor (element, editing) ->
  if $(element).is("[data-scrivito-field-type=enum]")
    editing.use("select")
  if $(element).is("[data-scrivito-field-type=multienum]")
    editing.use("multi_select")

Die Verwendung von Widgets wurde verbessert

Man kann nun einfach ein Widget ober- oder unterhalb von Containern einfügen, indem man die Plus-Buttons anklickt, die am oberen und unteren Rand dieser Widgets hinzugefügt wurden.

Zugunsten dieser Funktion wurde der „Widget einfügen“-Eintrag aus dem Widget-Menü entfernt. Darüberhinaus wird das Bearbeitungselement von Container-Widgets – wie bei allen anderen Widgets auch – nun an ihrer oberen rechten Ecke angezeigt.

Zusätzlich können Widgets nun mit einem einzigen Klick dupliziert werden und müssen nicht mehr kopiert und wieder eingefügt werden: in Widget-Menüs gibt es dafür nun einen eigenen Eintrag.