Создание черновиков при добавлении материала как на WordPress для uCoz by Apocalypse
Сегодня утром я подумал - а почему бы не запилить новый скрипт. В качестве идеи уже давно в голове вертелась мыслишка сделать черновики - постоянное сохранение записи по мере того, как человек оформляет её. Данная штука очень полезна и прекрасно работает на WordPress. Это подстрахует вас, если вы случайно закроете вкладку, у вас выключат свет или начнётся ещё какая-то дичь, что обломает ваше время, которое вы потратили
Плюсы:
- Миниатюрный код
- Очень простая установка
- Стабильная работа
Минусы:
- Не умеет работать с визуальным редактором добавления материалов (Может оно и к лучшему)
Для начала посмотрите ДЕМО
Установка:
1#: Управление дизайном - Каталог файлов - Форма добавления/редактирования материала - В самый низ вставьте:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?if($PAGE_ID$ == 'add')?> <script> $(function() { apointerval = setInterval(function() { apomakebackupinter(); // Запускаем интервал сохранения в черновики. 30000 - 30 секунд }, 30000); $('.manTdBrief a[data-uemode="3"], .manTdText a[data-uemode="3"]').click(); // Включаем режим HTML кодов. Остальные не поддерживаются $('#addEntForm').attr('onsubmit', 'apomakebackup();return false;'); // Подменяем функцию добавления материалов }); function apomakebackup() { $('#ispen').removeAttr('checked'); // Перед добавлением материала на сайт открываем материал для всех clearInterval(apointerval); // И останавливаем интервал сохранения в черновик _uPostForm($('#addEntForm'), { success: function(a) { if($(a).text().indexOf('успешно изменен') != -1 || $(a).text().indexOf('успешно добавлен') != -1) { _uWnd.alert('Материал успешно добавлен. <a href="/load/' + $(a).text().split('/load/')[1].split('"')[0] + '">ПОСМОТРЕТЬ</a>', '', {w: 300, h: 50, tm: 20000}); // Выводим на 20 сек. окно с уведомлением о том, что материал добавлен и даём ссылку на его просмотр // Можете сделать автоматическое перенаправление на материал сразу после его добавления. Замените строчку _uWnd.alert... на location.replace('/load/' + $(a).text().split('/load/')[1].split('"')[0]); }; } }); }; function apomakebackupinter() { $('#ispen').attr('checked', 'checked'); // Перед добавлением в черновик закрываем материал от пользователей _uPostForm($('#addEntForm'), { success: function(a) { if($(a).text().indexOf('успешно добавлен') != -1) { $('input[name="a"]').val('14').before('<input type="hidden" name="id" value="' + $(a).text().split('/load/')[1].split('"')[0].split('-')[3] + '">'); _uWnd.alert('Черновик создан', '', {w: 200, h: 50}); // Материал добавлен. Невидим для пользователей } else if($(a).text().indexOf('успешно изменен') != -1) { _uWnd.alert('Черновик сохранён', '', {w: 200, h: 50}); // Материал отредактирован. Невидим для пользователей }; } }); } // imapo.ru (c) 2017 </script> <?endif?> |
Вкратце о механизме скрипта: при первом запросе скрипт добавляет материал на сайт и делает его невидимым для остальных пользователей. При следующих запросах мы уже редактируем этот самый материал, сохраняя изменения каждые 30 секунд. После добавления материала сохраняем то, что не успело сохраниться в черновик и открываем материал для всех на сайте
Возникли вопросы? Задайте их в комментариях
На разработку ушло пять часов и, надеюсь, оно того стоило
Привет. Подскажи пожалуйста. Есть ли скрипт, который позволяет давать бонусы за активность на сайте и возможность обмена их на что-нибудь по запросу пользователей?
Демо битое 🙂