Ctrl+S в ресурсах

Добрый вечер,
сидел, ковырял сайтик на ево и по привычке (от REVO) после изменений в ресурсах нажимал на CTRL + S и ничего полезного не происходило.

Подумал, погуглил и родился мини плагин на событие OnDocFormRender



$e = & $modx->Event;
if ($e->name == "OnDocFormRender") {
        $html = "
           <script type='text/javascript'>      
             document.body.addEventListener('keydown', function (e) {
                           if ((e.which == '115' || e.which == '83' ) && (e.ctrlKey || e.metaKey)) {
                                  documentDirty=false; document.mutate.save.click();
                                  e.preventDefault();
                           }
                        });
           </script>
      ";
        $e->output($html);
}


Называйте как хотите, я обозвал просто ctrlS
Проверял на последнем Хроме и Firefox

Чтобы работало, фрейм с формой должен быть в фокусе.

P.S. Добавлена поддержка сочетания клавиш cmd+s

12 комментариев

avatar
Еще бы cmd + s сразу и было бы супер :) можно даже сразу впилить в Систему:)
avatar
нет под рукой мака, вот если несложно, посмотри такой вариант

$e = & $modx->Event;
if ($e->name == "OnDocFormRender") {
        $html = "
           <script type='text/javascript'>      
             document.body.addEventListener('keydown', function (e) {
                           if ((e.which == '115' || e.which == '83' ) && (e.ctrlKey || e.metaKey)) {
                                  documentDirty=false; document.mutate.save.click();
                                  e.preventDefault();
                           }
                        });
           </script>
      ";
        $e->output($html);
}


Если сработает, обновлю топик.
avatar
Работает :)
Запилю в след релиз ) в ядро все равно надо там ) смысла в отдельном плагине нет для этого дела
avatar
было бы удобно
avatar
подскажите, когда ожидается 1.0.16 и что в нем будет интересного?
avatar
Хороший вопрос. В целом все что есть интересное есть в мой сборке.
Из нее потом по чуть чуть переношу все в офф версию.
Рано или поздно туда попадает все из сборки:)
avatar
Запилил :) теперь работает везде, Документы, элементы, настройки :)
avatar
вру, настройки не сохраняются так :(
avatar
В настройках вроде как другая функция

document.settings.submit();
avatar
ага надо будет доправить условие что если на страничке сохранить то это ) а на остальных как было :) допишу потом
avatar
Так как кнопка сохранить имеет всегда один и тот же родительский id (не плохо было бы добавить id и самой кнопке), то можно просто вызывать клик по кнопке, без привязки к конкретной функции.
Тестировал только на Win


$e = & $modx->Event; 
$html = "
           <script type='text/javascript'>      
             document.body.addEventListener('keydown', function (e) {
			 
                           if ((e.which == '115' || e.which == '83' ) && (e.ctrlKey || e.metaKey)) {						   
						    document.getElementById( 'Button1' ).getElementsByTagName( 'a' )[0].click(); 
                           	e.preventDefault();
                           }
                        });
           </script>
      ";
$e->output($html);
Комментарий отредактирован 2015-11-04 23:14:42 пользователем MrJenika
avatar
Спасибо.
Теперь точно везде работает
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.