2016-08-17 5 views
2

На странице добавления новой страницы Plone я хочу предложить заголовок пользователю, полученному из названия папки, добавив его в поле формы заголовка. Какова наилучшая практика реализации этого поведения в моем экземпляре Plone?Предложить название страницы пользователям

+0

Не могли бы вы попробовать JS-решение, что-то неясно, какие препятствия? Для меня, например, препятствие с Plone-5 было бы, как просто добавить JS/CSS-файл ... –

+0

Если человек, который попросил, может помочь нам улучшить наши ответы, это было бы хорошо. –

+0

Итак, я попытался решить проблему с предложением исправления Monkey, просто потому, что у меня нет опыта использования Javascript вообще. Обезьяна, исправляющая функцию _get_title, как предложено, работает только в «edit» -form, «add» -form не вызывает эту функцию. Поэтому нужна специальная форма. Также предложенный заголовок в форме редактирования не будет сохранен, если пользователь не изменяет его, что является еще одной проблемой. В-третьих, у меня есть проблема с получением названия папки. Я попытался вызвать _get_title в папке, но, похоже, ничего не возвращает – Waynebird

ответ

1

Больше MonkeyPatching вы можете найти в Docs. Еще одно решение: вы можете зарегистрировать свой собственный AddForm и установить значение Textline-Widget. Для создания пользовательского AddForm посмотреть на Docs

3

Альтернативное решение может быть использование Javascript, соответственно JQuery:

(function($) { $(document).ready(function() { 

    // A Dexterity-based document is added: 
    if(window.location.href.endsWith('/++add++Document')) { 

    // Grab the parent's title of the current title-tag's content: 
    var title = $('title')[0].innerHTML.split(' — ')[0] 

    // Prefill the new document's title-field with the parent's title: 
    $('#form-widgets-IDublinCore-title').val(title) 
    } 

    // An Archetypes-based document is added: 
    if(window.location.href.indexOf('/portal_factory/Document/') > -1) { 
    var parentUrl= document.referrer 
    var parentTitleEleId = 'parent-fieldname-title' 

    // Provide ele to load parent's title into: 
    var loadEle = document.createElement('span') 

    // Load parent's title into ele: 
    $(loadEle).load(parentUrl + ' #' + parentTitleEleId, function() { 

     // After loading finished, fetch parent-title of ele, remove 
     // trailing spaces and set it into the new doc's title-field: 
     $('#title').val(loadEle.childNodes[0].innerHTML.trim()) 

     // Thy had served y'er purpose, vanish: 
     loadEle.remove() 

    }); 

    } 

});})(jQuery); 
Смежные вопросы