SPIP 3.0

SPIP 3 - це велике оновлення. Треба особливо відзначити такі зміни: повністю перероблена адміністративна частина (на основі шаблонів), високий ступінь модульності (всі непрофільні функціональні можливості зібрані зараз в плагінах) і революційний цикл даних, який дозволяє SPIP підключати багато нових видів даних.

  • Apparu en : SPIP 3.0

SPIP 2.0 вже можна було використовувати як «каркас» (framework) для розробки веб-додатків, на відміну від первісної мети створення SPIP як простого CMS. SPIP 3 штовхає логіку «каркасу» далі, так що тепер він може бути застосований до самого SPIP. Вся адміністративна частина SPIP була повністю перероблена в шаблони, які самі базуються на основі інструментів і функцій, що їх пропонує мова шаблонів SPIP.

Ця переробка адміністративної частини надала можливість переосмислити всі редакційні об’єкти і стандартизувати їх використання, щоб зробити їх максимально загальніми: більшість історичних особливостей кожного об’єкта (і пов’язаних з цим винятків обробки коду в SPIP ) була скорочена до простої декларації.

Таким чином, створення нових редакційних об’єктів та налаштування існуючих об’єктів стали набагато простішими і швидшими.

SPIP 3 також завершує модулярізацію програмного забезпечення в плагіни, розпочату SPIP 2: всі можливості, запропоновані SPIP 2, тепер зібрані в ядрі SPIP 3 у супроводі 23 плагінів.

Така сегментація ядра дозволила завершити систему API і точок входу для розробників плагінів.

SPIP 3 значною мірою використовує розробки, виконані співтовариством SPIP-Zone, і це знаменує розворот: він вже не є основною програмою, яка заохочує розвиток плагінів, але натомість розвиток плагінів, завдяки їх експериментальному характеру, суттєво впливає на просування SPIP. [1].

Серед нових функцій, SPIP 3 вводить новий цикл DATA, який в даний час робить можливим перебор будь-яких даних, а не тільки з SQL таблиць. Тепер ви можете переглядати числені CSV, XML, YAML файли. І навіть більше - цикл DATA може бути використаний безпосередньо в URL, таким чином стає можливим безпосередньо інтегрувати дані з таблиці Google, онлайн календар, списку Youtube відео, фотографій на Flickr... увесь Web стає вашою базою даних!

Системні вимоги: для правильного функціонування SPIP 3.0 потребує PHP версії 5.1.0 або новіше.

Нова адміністративна частина [2]

Візуально адміністративна частина наслідує попередні версії, але за допомогою нових значків:

Реконструкція інтерфейсу, по суті, технічна, хоча вона також вирішила низку ергономічних недоліків.

Навігаційна система була змінена. Меню, що випадає, в даний час повністю кероване з клавіатури, а також інтегровані затримки заради простоти використання за допомогою миші і більшої стійкості до погано контрольованих рухів.

Вся адміністративна частина оформлена нині за допомогою шаблонів, що зберігаються в каталозі prive/squelettes, підкаталоги якого відповідають поділу сторінки на блоки. Це розділення використовується в основному для перевантаження частині сторінки з Ajax, уникаючи повного перезавантаження сторінок і робить дії більш плавними [3].

Багато точок входу (які в першу чергу використовуються плагінами ядра) доступні як «трубопроводи» (pipelines), щоб дозволити плагінам розширювати функціональність адміністративної частини.

Сторінки адміністративної частини були реорганізовані і перейменовані. Зокрема, всі сторінки редакційних об’єктів використовують послідовну схему іменування, яка базується на імені об’єкта.

Переписування також дозволило модернізувати HTML структуру та підвищити її доступність. Керівництво з програмування було створено таким чином, що розробники плагінів можуть використовувати одні й ті ж структури, а інтерфейси, які вони додають, залишають незмінним ядро.

Всі списки об’єктів є шаблонами, і, отже, їх легко налаштувати. Всі вони мають вбудовані сортування за колонками і Ajax нумерацію сторінок.

Риштування системи сторінок об’єктів може автоматично побудувати мінімальний інтерфейс для нових об’єктів, оголошених за допомогою плагінів. Кожен елемент усталеного інтерфейсу можна налаштувати відповідно до особливостей кожного об’єкта: [4].

Всі інтерактивні форми записуються у вигляді CVT Forms, який забезпечує хороше управління повідомленнями про помилки, перевірку вводу, сильний Ajax контроль і, за необхідності, доступність багатосторінкових форм. Вони всі можуть бути легко розширені за допомогою плагінів.

У режимі редагування SPIP 3 приймає до уваги перехід на новий рядок (тобто більше не потрібно використовувати «_», щоб створити новий рядок).

Нарешті, адміністративна частина включає в себе механізм для тем, що дозволяє налаштовувати таблиці стилів, а також усі значки або деякі з них. Цей механізм може бути використаний плагіном, який пропонує користувачеві вибрати той вигляд, який йому здається кращим.

Модульність з плагінами

SPIP 3 завершив процес розподілу системи на плагіни. Ядро зберігає управління статтями, рубриками та авторами, мовними шаблонами і структурою адмінистративної частини. Всі інші функції тепер передані в плагіни, які автоматично встановлюються разом з усталеним дистрибутивом SPIP 3. Ці плагіни за замовчуванням розміщуються в каталозі plugins-dist/ [5]

Цей розподіл функцій дозволив визначити ряд неявних API, тепер доступних для розробників плагінів, які зможуть необмежено додавати функціональність, за зразком рідних плагінів SPIP.

В сфері плагінів SPIP 3 також приносить капітальну перебудову формалізму декларації XML. Крім того, поліпшено читабельність, вирішено питання перекладу плагінів і наявні автоматичні інструменти для відображення переліку плагінів і для їх завантаження.

Плагіни можуть також використовувати функцій модернізації основної бази даних (з відновленням після тайм-ауту) простою декларацією процедури.

Плагіни, що поставляються з SPIP за замовчуванням:

  • Brèves працює з редакційними об’єктами Новини.
  • Companion відображає інформацію і підтримку для початківців у перших кроках в адміністративній частині.
  • Compressor) (з’явився в SPIP 2.1) оптимізує продуктивність шляхом стиснення і об’єднання CSS і JavaScript файлів. Ця версія плагіна покращує вигляд таблиць стилів для різних видів медіа. Використання @media об’єднує всі медіа в один файл без зміни порядку завантаження. Абсолютні URL-адреси управляються без протоколу, отже стиснені таблиці стилів працюватимуть як з HTTP, так і з HTTPS.
  • Dump управляє резервним копіюванням і відновленням. Функція була повністю переписана, щоб забезпечити повне і надійне резервне копіювання. Формат резервного копіювання тепер SQLite, і всі таблиці систематично зберігаються.
  • Forum управляє редакційним об’єктом форум, як на загальнодоступному сайті, так і в адміністративній частині. На додаток до переробленого інтерфейсу модерації, тепер з’явилась можливість використовувати форуми для всіх об’єктів SPIP (чи то рідних, чи то доданих за допомогою плагінів).
  • Images (з’явився в SPIP 2.1) управляє всіма зображеннями і кольоровими фільтрами, які можуть бути використані в шаблонах.
  • jQueryUI реалізує цю бібліотеку в SPIP. Це полегшує створення динамічних графічних компонентів: tabs, drag & drop, progress bars, widgets, effects ...
  • Mediabox інтегрує усталене pop-in вікно для перегляду медіа або для пропозицій взаємодій [6].
  • Medias [7] управляє документами і зображеннями. Він змінює інтерфейс і дозволяє документам бути приєднаними до будь-якого редакційного об’єкта.
  • Mots управляє ключовими словами та їх групами. Ключові слова в даний час можуть бути використані для всіх редакційних об’єктів.
  • Organiseur надає функції обміну повідомленнями і внутрішнього календаря в адміністративній частині. Інтерфейс повністю перероблений. Внутрішнє листування має повідомлення електронною поштою. Календар, заснований на бібліотеці FullCalendar, дозволяє плавну навігацію.
  • Pétitions обробляє петиції і пропонує перероблений інтерфейс їхнього модерування.
  • Quill (Porte-plume) (з’явився в SPIP 2.1) забезпечує допомогу при написанні текстів на сайті.
  • Revisions забезпечує управління версіями, яка може використовуватися для всіх редакційних об’єктів SPIP. Інтерфейс управління був оновлений.
  • SafeHTML (з’явився в SPIP 2.1) оберігає від потенційно загрозливого зовнішнього вмісту.
  • Sites працює з об’єктами «Синдиковані сайти», а також з синдикованими статтями. Надає інтерфейс для модерації синдикованих статей.
  • Squelettes par rubriques (Шаблони за рубриками) створює шаблони з суфіксами для роботи (article-2.html для статей з рубрики 2 та її підрубрик тощо).
  • Statistics забезпечує розрахунок статистичних даних для сайтів і статей, з повністю переробленим інтерфейсом.
  • Support of older browsers (з’явився в SPIP 2.1) пропонує функції JavaScript, які можуть бути активовані, щоб старі браузери правильно відображали ваш сайт.
  • SVP управляє плагінами: пошук, встановлення, активація, оновлення, ...
  • TextWheel це двигун, який підтримує типографські ярлики в SPIP. В даний час вони визначені у файлі правил у форматі YAML. Це значно пришвидчує розрахунок ярликів (вдвічі швидше для певного контенту) і сприяє розвитку і налаштуванню ярликів.
  • Urls Etendues підтримує контекстні адреси або ієрархічні URL і забезпечує інтерфейс для конфігурації і додатковий інтерфейс розширеного управління, щоб надати точний контроль над URL-адресою кожної сторінки.
  • Vertebrae (з’явився в SPIP 2.1) дозволяє веб-майстру відобразити вміст SQL-таблиці в SPIP, використовуючи автоматично згенерований шаблон, який базується на структурі SQL-таблиці. Це відображення в даний час здійснюється в адміністративній частині.

Новий набір усталених шаблонів

Шаблони за замовчуванням були переглянуті. Стилі були поділені на незалежні таблиці стилів (див. Daisy method та One, two, three ... CSS) і створили модульну HTML/CSS основу, на якій сайт може бути побудований відразу. Повна, гармонійна типографська обработка, заснована на фреймворку Blueprint, утворює одну частину CSS. Стара таблиці стилів spip_style.css поступається таблиці spip.css, що може бути використана як доповнення до звичайного фреймворку.

Шаблони прийняли нову основну HTML-структуру, яка вже вводить в дію деякі елементи HTML5; вони стали responsive за замовчуванням, і завантажують умовні селектори для більшої гнучкості CSS.

Нові можливості

SQLite підтримку було значно поліпшено, і цей формат, через простоту його установки, тепер є усталеним форматом бази даних (якщо підтримується сервером) при інсталяції нового сайту [8].

Управління редакційними об’єктами було зроблено більш загальним. Тому автори, документи, ключові слова, форуми, версії та логотипи можуть бути використані для будь-яких об’єктів (всіх об’єктів SPIP, а також на будь-яких редакційних об’єктах, доданих за допомогою плагінів, що відповідають новій декларації API). Статус, дата публікації, мова та переклад також узагальнені і можуть бути використані на будь-якому об’єкті простою декларацією. Коли увімкнено сигналізацію про одночасне редагування, будь-який об’єкт, що редагується, з’являється в сигналізації.

Індивідуальність сайту доповнюється його гаслом, чимось посереднім між назвою і описом. Воно відображається за допомогою тегу #SLOGAN_SITE_SPIP.

Захисний екран входить в стандартну комплектацію.

Рівнем відстеження, що записується в лог-файли, можна управляти. За замовчуванням, логи стали значно менш багатослівними і повідомляють лише про аномалії чи важливу інформацію. Їх рівень може бути скоригованим в разі налагодження або розвитку сайту.

Окремі cron-завдання, що базувалися на основі файлів, замінені чергою завдань (яка також управляє періодичними завданнями). Ця черга завдань дозволяє програмувати асинхронні дії [9] і пропонує простий у використанні API для розробників плагінів.

Ajax у шаблонах ({ajax} в INCLURE) підтримує ARIA attributes, що підвищує його accessibility. Крім того, історія перегляду також автоматично обробляються через API “History” на HTML5 [10]. URL з браузера автоматично оновлюється на AJAX посиланнях, що дозволяють уникнути проблем backtracking.

Моделі, що використовуються в тексті, тепер автоматично отримують шаблони, які їх відображають.

Форми адміністративної частини використовують функції HTML5, наприклад атрибути required та placeholder.

Символи # [] () {} <> тепер можуть бути видалені з шаблонів за допомогою слеш: \. Це дозволяє, наприклад, написати умови для check-box більш елегантним спосібом, без квадратних дужок для імені атрибуту включеного тега SPIP:

[(#ENV{param}|yes) 
   <label for='kindness'>With kindness?</label>
   <input type='checkbox' name='what_with\[\]' id='kindness' checked='checked' value='kindness' /> 
] 

Ярлики, або скорочення)

Існуючий в даний час ярлик для скорочень: [NHS|National Health Service] (або [SNCF|Société Nationale des Chemins de fer Français{fr}] щоб вказати іншу мову основного тексту) генерує тег abbr [11].

Моделі документів приймають аргументи висоти або ширини, щоб обмежити їх розмір: <docxx|largeur=150>.

Double-entry таблиці (чи то горизонтальні, чи то вертикальні) тепер обробляються правильно.

Вже не потрібно використовувати ярлик « _ », щоб зробити просте «повернення каретки», або створити новий рядок. Новий рядок в тексті з’являється звичайним чином. Для підтримки попередньої поведінки цю функцію можна відключити шляхом розміщення коду define ('_AUTOBR', '') в файлі mes_options.php.

Цикли

Система циклів SPIP була узагальнена так, що вона застосовується вже не безпосередньо до SQL-таблиці, а для ітератора. SQL-ітератор зберігає традиційну операцію циклів над SQL-таблицями, але тепер можливо застосовувати його для перебору будь-якого набору даних: Les itérateurs de SPIP - la boucle (DATA)

Перший приклад програми для цього: цикл DATA розширює роботу циклів з інформацією, структурованою в табличній формі. Це робить можливим цикл над файлом CSV або на віддаленому URL, який повертає JSON інформацію... :

Для забезпечення простої міграції шаблонів, що містять POUR та цикли CONDITION, ці цикли також підтримуються як особливі випадки циклом DATA, з попереднім синтаксисом.

Критерії

{si ...}: дозволяє помістити умову на виконання циклу, яка залежить від контексту шаблону, а не від значення в базі даних.

{tri ...}: використовується з тегом #TRI для зручного сортування.

{feuille}: робить можливим вибрати рубрики без підрубрик (тобто ті, що знаходяться на нижніх щабелях ієрархії).

{noeud}: робить можливим вибрати рубрики, які мають підрубрики.

{!racine}: виключає рубрики першого рівня (сектори).

{profondeur=3}: вибирає тільки розділи третього рівня (корінь сайту - рівень 0, сектори - рівень 1, підрубрики секторів - рівень 2 і т.д.).

Теги

Моделі можуть мати кеш, якщо вони містять тег #CACHE, але за замовчуванням вони його не мають, як і раніше.

В адміністративній зоні шаблони не кешуются, якщо тільки не присутній тег #CACHE.

#LOGO_DOCUMENT може приймати аргументи, які визначають режим відображення логотипу:

  • auto (за замовчуванням, відповідно до режиму функціонування в попередніх версіях) автоматично відображає ескіз документа, якщо це доступно, або огляд, інакше - значок типу документа.
  • icone вказує, що повинен бути відображений значок.
  • apercu відображає лише зображення попереднього перегляду, навіть якщо існує мініатюра.
  • vignette відображує мініатюру, якщо вона існує, в іншому випадку - нічого.

Тег #SPIP_CRON більше не використовується. Якщо він присутній в шаблоні, його буде проігноровано.

#BOUTON_ACTION{label, url, class, confirm, title, callback} генерує міні-HTML форму з кнопкю з написом «label», натискання на яку викликає POST для «url». Краще використовувати цю кнопку, ніж посилання, коли «url» сторінка буде змінювати базу даних. Якщо «class» містить значення «ajax», кнопка викличе перезавантаження AJAX блоку, який його містить. «confirm» дозволяє вказати повідомлення до користувача з проханням підтвердження дії. «title» є назвою атрибуту кнопки, а «callback» - JavaScript функція, яка викликається при натисканні кнопки.

#INFO_XXX{article, 13}:робить можливим знайти елемент #XXX без необхідності циклу ARTICLES. Подібний код може бути використаний в будь-якому циклі і будь-яким тегом: #INFO_TITRE{article, 13},#INFO_NOM{author, 2}, ...

#CONFIG{name} відображає значення конфігурації мета name. Якщо мета являє собою масив, можна безпосередньо отримати доступ до значень, використовуючи синтаксис #CONFIG{name/subvalue}, який повертає subvalue з мета name. Щоб отримати доступ до мета для конкретної таблиці плагіна, використовуйте синтаксис #CONFIG{/metamyplugin/name}: починаючи з / ми вказуємо, що хочемо отримати мета з таблиці spip_metamyplugin замість таблиці spip_meta в SPIP. В будь-якому разі можна вказати другий аргумент, щоб забезпечити значення за замовчуванням, які будуть використовуватися, якщо мета не існує: #CONFIG{name, default_value}.

Подібно до #CONFIG{name/subvalue}, теги #ENV, #GET і #SESSION дозволяють використовували слеші аби дістати значення з суб-масиву, ось так: #ENV{name/subvalue}, #GET{table/key/subkey}, #SESSION{prefs/colour}.

#PUBLISHED перевіряє стану об’єкту (опублікований чи неопублікований). Використовується в циклі, неявно отримує значення з поточного об’єкта. В іншому випадку він може бути використаний з явними аргументами: [(#PUBLISHED{article, 3}|oui) ... ] для будь-якого іншого об’єкта.

#CLE і #VALEUR - це два теги, які відображають ключ і значення в циклі DATA. #VALEUR{x} відображає значення x, якщо #VALEUR є масивом (тобо еквівалентно [(#VALEUR|table_valeur{x}) ]). Декілька суб-індексів можуть бути поєднані разом: #VALEUR{x/y/z}, щоб відобразити значення з суб-рівнів масиву.

#PRODUIRE повертає ім’я статичного файлу, отриманого за шаблоном. Це корисно для таблиці стилів, яка розраховується, або для javascript файлу. Синтаксис такий же, як і для тегу #INCLURE: #PRODUIRE{fond=mystyle.css, color=ffffff} використовує шаблон mystyle.css.html

#LISTE{a,b,c} просто повертає масив, що містить значення a, b і c. Це спрощений запис, еквівалентний #ARRAY{0,a,1,b,2,c}.

#TOTAL_UNIQUE повертає кількість елементів, які відображаються через фільтр |unique. Якщо використовується |unique{name}, те ж саме ім’я name має бути посиланням для тегу #TOTAL_UNIQUE{name}.

В адміністративній частині:

#AIDER{subtitle} відображає посилання на розділ допомоги SPIP із заголовком subtitle.

#BOITE_OUVRIR, #BOITE_PIED і #BOITE_FERMER роблять стилі боксів (box) в адміністративній частині доступними для широкого використання:

  • #BOITE_OUVRIR{title, class} відкриває бокс (title можна опустити). Класи стилю такі: simple, info, notes, shortcuts та important.
  • будь-який HTML після цього тега розміщується в боксі.
  • #BOITE_PIED to go to the bottom of the box when a footer is required.
  • #BOITE_FERMER closes the dialogue box.

Дивіться сторінку з багатьма прикладами в адміністративній частині ecrire/?exec=charte_boites плагіна http://plugins.spip.net/dev

#FORMULAIRE_RECHERCHE_ECRIRE відображає форму пошуку в адміністративній частині. Може прийняти два аргументи: перший аргумент дає URL, на який він вказує, а другий - клас. У присутності JavaScript форма поводиться як посилання на URL, що передає параметр пошуку, представлений введеним значенням. Якщо другий аргумент є ajax, форма викликає перезавантаження ajax блоку, який вона містить, іншими словами, діє як Ajax посилання: #FORMULAIRE_RECHERCHE_ECRIRE{#SELF, ajax}.

#CHEMIN_IMAGE{article-24.png} повертає шлях до іконки article-24.png тієї теми адміністративної частини, яку в даний час використовує авторизований користувач.

Фільтри

|lien_ou_expose може бути використаний, наприклад, для створення меню з декількома посиланнями, в якому вибраний елемент буде відмічено як <strong>, а для інших буде збережено посилання <a>. Приклад: [(#URL_PAGE{mypage}|{lien_ou_expose{label, #ENV{page}|}=={mypage, class, title, rel})].

|singulier_ou_pluriel відображає один рядок або інший залежно від номеру, до якого цей код застосовується: [(#TOTAL_BOUCLE|singulier_ou_pluriel{1_article,nb_articles})]. 1_article і nb_articles мовні рядки, які отримують число як аргумент @nb@. Якщо число дорівнює нулю, фільтр ігнорується.

|balise_img може швидко побудувати HTML тег <img> з іменем файлу, який включає ширину і висоту для більш швидкого рендеринга сторінки: [(#CHEMIN{myimage.png}|balise_img{alt, class})]

|affdate_debut_fin відображає інтервал часу зручним для читача чином, беручи до уваги, чи попадають дата початку та дата закінчення в один день, місяць або рік чи ні; і, відповідно до другого аргументу (oui або non, відображає або не відображає час. Приклад: [(#DATE_DEBUT|date_debut_fin{#DATE_FIN, oui})].

|timestamp додає до імені файлу мітку дати у вигляді ?1234567890, де число являє собою дату файлу в секундах від 1 січня 1970. Цей фільтр корисний, наприклад, при посиланні на таблицю стилів, щоб переконатися, що браузер перезавантажує файл при його зміні: [<link rel="stylesheet" href="(#CHEMIN{css/perso.css}|timestamp)"  type="text/css" />]

|objet_icone повертає стандартну іконку SPIP об’єкта. За замовчуванням повертається версія 24px, якщо в якості аргументу не вказано розмір 16 або 32: [(#OBJECT|objet_icone{16})].

|objet_info повертає властивість об’єкта SPIP заявлену (або автоматично надану SPIP) за допомогою API declarer_tables_objets_sql.

|objet_afficher_nb відображає кількість об’єктів з урахуванням застосованого фільтру і того, яки мовні рядки оголошені для об’єкта: [(#TOTAL_BOUCLE|objet_afficher_nb{auteur})], наприклад, відобразить 1 автора або 23 автори.

|wrap оточує html тегами текст, який повертає SPIP тег: [(#TITLE|wrap{<h3>})] дасть такий самий результат, як [<h3>(#TITLE)</h3>].

|generer_info_entite відображає поле SPIP об’єкта: [(#ID_ARTICLE|generer_info_entite{article,titre})] повертає заголовок статті #ID_ARTICLE. Це еквівалентно коду [(#INFO_TITRE{article,#ID_ARTICLE})].

В адміністративній частині:

|icone_horizontale відображає значок адміністративної частини в горизонтальному форматі. Синтаксис: [(#URL|{icone_horizontale{label,icon,function})]. icon може бути позначений абревіатурою (наприклад article) для формату 24px, або явно (article-24.png). Третій аргумент, function, визначає вид дії, пов’язаної з іконкою, і може бути одним з наступних: add, del edit, new або бути пропущеним. Приклад: [(#URL_ECRIRE{auteur_edit,new=oui}|icone_horizontale{<:icone_creer_nouvel_auteur:>,auteur,new})]

|icone_verticale відображає значок адміністративної частини у вертикальному форматі. Синтаксис такий самий, як і для |icone_horizontale.

|bouton_action_horizontal використовує той же синтаксис, як і |icone_horizontale, і відображає візуально схожий результат. Однак HTML розмітка буде мати той же тип, що #BOUTON_ACTION, щоб викликати POST до URL, і це корисно, коли гіперпосилання вносить зміни в базу даних.

|sinon_interdire_acces, розміщений будь-де на сторінці, дозволяє заблокувати доступ до неї, коли вираз, до якого він застосовується, є false. У цьому випадку відображається сторінка з помилкою, якщо перенаправлення URL не передбачено в якості аргументу (ви можете також задати статус HTTP перенаправлення в якості другого аргументу). Як правило, використовується для перевірки авторизації: [(#AUTORISER{modifier,article,#ID_ARTICLE}|sinon_interdire_acces)].

JavaScript

SPIP 3 використовує jQuery версії 1.7.2, а також включає jQuery UI (v. 1.8.20). Можна використовувати іншу версію jQuery на загальнодоступній частині сайту просто перевантаживши javascript /jquery.js в каталозі squelettes/ без будь-якого ризику для адміністративної частини сайту.

Ajax посилання: .ajax посилання більше не порушують історію відвіданих сторінок в браузерах, які підтримують HTML5 History API (Firefox, Safari, Chrome на момент написання). Тобто коли ви натискаєте на посилання, яке перезавантажує AJAX частину SPIP сторінки, URL-адреса оновлюється в браузері, і відвідувач може натиснути на кнопку Назад, щоб повернутися до попереднього екрана.

Спеціальні класи для AJAX-посилань:

  • .nohistory вказує, що посилання не повинне впливати на історію браузера при натисканні.
  • .preload повідомляє SPIP, що контент посиланнь AJAX має бути попередньо завантажений при завантаженні сторінки. Таким чином, натискання на посилання буде спричиняти негайне оновлення.
  • .nocache повідомляє SPIP, що контент, завантажений за посиланням AJAX, не слід кешувати. Отже кілька кліків на те саме посилання викличе стільки ж завантажень з сервера (за замовчуванням лише перше завантаження проводиться для даного URL і потім контент кешується браузером).

Перезавантаження віддалених AJAX блоків Посилання .ajax, за замовчуванням, перезавантажує блок, який його містить, але іноді необхідно поновити AJAX блок в іншому місці на сторінці.

Щоб досягти цього можна використати імена для Ajax блоків, коли вони включаються: <INCLURE{fond=...,ajax=blockname} />. Іменований блок може бути перезавантажений за допомогою виклику ajaxReload('blockname'). Список опцій, що можуть бути прийняті другим аргументом:

  • callback: зворотний виклик функції, яка буде викликана після завантаження AJAX блоку.
  • args: список аргументів, що передаються в URL при завантаженні блоку (дозволяє змінити #ENV в блоці, що оновлюється).
  • history: чи буде завантаження впливати на історію відвіданих сторінок, чи ні (за замовчуванням: false). Приклад:
    ajaxReload('blockname', { 
       callback:function(){alert('done');}, 
       args:{id_article:3}, 
       history:false 
       });
    

ajaxReload також може бути використаний для селектора JQuery. В цьому випадку буде перезавантажений найменший AJAX-блок, що містить цільовий елемент. Для цього посилання приймає тільки один можливий аргумент (масив варіантів): $('#content').ajaxReload({args:{id_article:3}})

Javascript анімації У взаємодії, викликаній користувачем, можна викликати кілька загальних анімації, які всі застосовуються до селектора jQuery:

  • jQuery('#myid').animateLoading() запускає завантаження анімації на #myid (автоматично спрацьовує, коли AJAX перезавантажується).
  • jQuery('#myid').endLoading() зупиняє завантаження анімації на #myid (автоматично спрацьовує, коли AJAX перезавантажується).
  • jQuery('#myid').animateAppend() анімує блок #myid аби показати, що він був доданий в результаті взаємодії.
  • jQuery('#myid').animateRemove() анімує блок #myid аби показати, що він був видалений в результаті взаємодії.

Utility functions: parametre_url() використовується як PHP-версія фільтру з такою самою назвою (|parametre_url) аби додати, видалити або відновити параметри URL:

  • parametre_url(url,arg,value) додає arg=value до url і повертає модифікований URL.
  • parametre_url(url,arg,'') видаляє значення arg з url і повертає модифікований URL.
  • parametre_url(url,arg) повертає значення arg з url.

$('a').followLink() слідує за посиланням, імітуючи натискання на нього (беручи до уваги, чи є посилання AJAX-посиланням, чи ні).

Спливаючі вікна в адміністративній частині: Посилання на сторінку в адміністративній частині з класом .popin відкриває спливаюче вікно, що містить центр цільової сторінки ( блок content/). Посилання зберігає здатність бути відкритим в новій вкладці за допомогою правої кнопки миші, і в цьому випадку відображається повна сторінка.

API

SPIP 3 приносить кілька загальних APIs для керування редакційними об’єктами:

  • API editer_liens управляє таблицями посилань між будь-якими двома об’єктами.
  • Створення нових редакцій об’єктів спрощується декларацією API.
  • Управління функціями контролю вставки, модифікації або публікації редакційних об’єктів: API editer_objet.
  • objet_test_si_publie($object, $id_object) перевіряє, чи є об’єкт опублікованим, чи ні, відповідно до його заявиленого статусу (і відповідно до можливості пост-публікації).
  • generer_url_ecrire_objet($object,$id_object,$args,$anchor) повертає посилання на сторінку об’єкта в адміністративній частині. $args і $anchor є опціональними.
  • «Трубопровід» optimiser_base_disparus викликається для очищення бази даних від об’єктів, які були binned, і в результаті створили мертві посилання.

SPIP 3 також має управління чергою завдань, що дозволяє програмувати завдання для майбутнього виконання або просто встановлювати їх як асинхронні (тобто виконувати їх так швидко, як можливо, але не змушуючи користувача очікувати).

Налаштування конфігурації плагіна спрощується автоматизованою підтримкою для форм: #FORMULAIRE_CONFIGURER_XXX, і функціями lire_config, ecrire_config та effacer_config (див. Configurer une fonctionnalité de votre site, ou un plugin).

CVT forms полегшує побудову багатосторінкових форм, а також підтримує автоматичне резервне копіювання введенного тексту простою декларацією. «Трубопровід» formulaire_fond надає можливість налаштувати фон форм (тобто редагувати HTML форми) [12]

Для SQL API:

  • Додано функцію sql_skip, це дозволяє пропускати певну кількість результатів.
  • Значення null в sql_updateq і sql_insertq перекладені в NULL для SQL і більше не будуть розглядатися як порожній рядок.
  • Функції sql_demarrer_transaction і sql_terminer_transaction, як зрозуміло з їхніх назв, використовуються відповідно для запуску або закриття транзакції SQL [13].

Точка входу до пісочниці (public/sandbox.php) для компіляції шаблону дозволяє плагіну управляти компіляцією шаблонів за допомогою набору фільтрів, створювати білий або чорний список функцій і заборонити PHP в шаблонах.

Спеціалізація критеріїв: Можна використовувати як префікс ім’я цільової функції з ім’ям сервера і / або назвою таблиці. Пошук здійснюється в наступному порядку:

  1. critere_serveur_TABLE_mycriterion_dist,
  2. critere_serveur_TABLE_mycriterion,
  3. critere_serveur_mycriterion_dist,
  4. critere_serveur_mycriterion,
  5. critere_TABLE_mycriterion_dist,
  6. critere_TABLE_mycriterion,
  7. critere_mycriterion_dist,
  8. critere_mycriterion

В файлі options.php плагіну або в файлі mes_options.php $GLOBALS['marqueur_skel'] .= ":prefix" може бути використаний для диференціації в кеші скомпільованих шаблонів, так само, як $GLOBALS['marker'] .= ":prefix" використовується для диференціації шаблонів у кеші.

Примітки

[1Окрім плагіна The Quill, який вже був інтегрований у SPIP 2, цей рух включає плагіни Afficher Objets, Base CSS, multi-page CVT forms, Forum, Job queue, Mediabox, Media Library, TextWheel, Editable URLs, Comments та інші. Деякі з них надихали розвиток основного коду SPIP, в той час як інші були інтегровані після деяких змін, як нові плагіни.

[2Цей проект розпочався якийсь час тому на SPIP-Zone, і ті, хто вже використовував плагіни Navigation du privé чи Média Library, упізнають зміни.

[3Наприклад, відкриття статті для редагування стає миттєвим завдяки Ajax pre-loading.

[5В SPIP 2.1 вони розміщувалися в каталозі extensions/, який зараз зник.

[6Це заснована на бібліотеці ColorBox альтернатива плагінам, таким як ThickBox, LightBox...

[7Відомий у SPIP 2 під назвою «Media Library»

[8Проте підтримка PostgreSQL повинна розглядатися як експериментальна і неповна для використання на «робочому» сайті.

[9наприклад, відправити email «коли це стане можливим», що дозволяє користувачеві продовжувати працювати, не чекаючи, доки повідомлення електронною поштою дійсно відправиться

[10у всіх сучасних браузерах, крім Internet Explorer, який поки не підтримує це

[11Тег <acronym> більше не використовується в HTML5.

[13Ще додано експериментальну функцію sql_preferer_transaction щоб обійти проблему повільності для multiple insertions в SQLite, які виконуються швидше в режимі транзакцій. Ця функція повертає true лише в SQLite.

Автор olly Publié le : Mis à jour : 19/04/23

Traductions : عربي, English, français, Nederlands, українська