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]
Візуально адміністративна частина наслідує попередні версії, але за допомогою нових значків:
- набір основних значків для навігації розроблений Sebastian Desbenoit для SPIP
- інші значки вибрані з набору, який був отриманий з FatCow.
Реконструкція інтерфейсу, по суті, технічна, хоча вона також вирішила низку ергономічних недоліків.
Навігаційна система була змінена. Меню, що випадає, в даний час повністю кероване з клавіатури, а також інтегровані затримки заради простоти використання за допомогою миші і більшої стійкості до погано контрольованих рухів.
Вся адміністративна частина оформлена нині за допомогою шаблонів, що зберігаються в каталозі 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 інформацію... :
- Exemples de `BOUCLE(DATA)`
- http://zzz.rezo.net/La-boucle-iCalendar.html
- http://zzz.rezo.net/Exemples-de-boucles-YQL.html
Для забезпечення простої міграції шаблонів, що містять 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 в шаблонах.
Спеціалізація критеріїв: Можна використовувати як префікс ім’я цільової функції з ім’ям сервера і / або назвою таблиці. Пошук здійснюється в наступному порядку:
-
critere_serveur_TABLE_mycriterion_dist
, -
critere_serveur_TABLE_mycriterion
, -
critere_serveur_mycriterion_dist
, -
critere_serveur_mycriterion
, -
critere_TABLE_mycriterion_dist
, -
critere_TABLE_mycriterion
, -
critere_mycriterion_dist
, -
critere_mycriterion
В файлі options.php
плагіну або в файлі mes_options.php
$GLOBALS['marqueur_skel'] .= ":prefix"
може бути використаний для диференціації в кеші скомпільованих шаблонів, так само, як $GLOBALS['marker'] .= ":prefix"
використовується для диференціації шаблонів у кеші.