Код панелей PHP-Fusion 7 (подробный мануал)

Портал Vveb.ws / Бесплатная CMS PHP-Fusion 7 Bogatyr / Код панелей PHP-Fusion 7 (подробный мануал)


 Russian

Добавление прав доступа в код панели

В большинстве случаев удобнее задать права доступа на панель при добавлении панели в админке.

Однако чтобы по ошибке не забыть это сделать для административных панелей, надо именно прописать в саму панель права доступа.

Зарегистрированный пользователь

if (iMEMBER) {

...

}

 

Админ

if (iADMIN) {

...

}

 

СуперАдмин

if (iSUPERADMIN) {

...

}

 

СуперАдмин

if (iSUPERADMIN) {

...

}

 

Незарегистрированный пользователь

if (iGUEST) {

...

}

 

Где заданы дифайны прав

maincore_users_cookies.php

// User level, Admin Rights & User Group definitions

define("iGUEST", $userdata['user_level'] == 0 ? 1 : 0);

define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0);

define("iADMIN", $userdata['user_level'] >= 102 ? 1 : 0);

define("iSUPERADMIN", $userdata['user_level'] == 103 ? 1 : 0);

define("iUSER", $userdata['user_level']);

define("iUSER_RIGHTS", $userdata['user_rights']);

define("iUSER_GROUPS", substr($userdata['user_groups'], 1));

В файле maincore_user_rights_func.php смотрите функции для работы с правами пользователя.

Пример задания прав доступа по пользовательским группам в коде:

submit_now.php

$free_groups = array(9999,9998);//free groups (1,5,7,29)

/*

RUS: Для определённых групп пользовталей разрешает сабмит без утверждения статей, новостей, ссылок и фотографий.

ENG: No approve for submit - you can select several groups of users, who not needed approve in submit.php (works with articles,news.links, and photos nice)

-- here you can choose the groops without confirmation.

101 = all users (not recommend); admins always have instant submit.

*/

//check

foreach ($free_groups as $group) {

if(checkgroup($group)){define('esFREEMEMBER',true);break;}

}

Если задан esFREEMEMBER - значит пользователю выводится соответствующий контент.

 

* * *

 

Добавление ссылок на CSS и JS файлы в <head> страницы

Для многих панелей и контентных страниц требуется добавление CSS и JS файлов в <head> страницы.

Например, CSS из папки плагина:

infusions/comments_management/comments_management.php

add_to_head("<link rel='stylesheet' href='comments.css' type='text/css' media='screen' />n");

Например, CSS из папки темы:

infusions/h_iflogo_userinfo_panel/h_iflogo_userinfo_panel.php

add_to_head("n<link rel='stylesheet' href='".THEME."h_iflogo_userinfo_panel.css' type='text/css' media='screen' />n");

Функции add_to_head() и add_to_footer() находятся в файле "includes/output_handling_include.php". И этот файл инклюдится в maincore.php.

Нужные для этих целей дифайны папок заданы тут

maincore_defines.php

define("INCLUDES", BASEDIR."includes/");

define("LOCALE", BASEDIR."locale/");

define("INFUSIONS", BASEDIR."infusions/");

define("THEMES", BASEDIR."themes/");

 

* * *

 

Внедрение в панели локалей

локали плагинов и панелей рекомендуется добавлять в папки /locale/ соответствующих плагинов и панелей.

/infusions/latest_images_panel/latest_images_panel.php

// Check if locale file is available matching the current site locale setting.

if (file_exists(INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php")) {

// Load the locale file matching the current site locale setting.

include INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php";

} else {

// Load the infusion's default locale file.

include INFUSIONS."latest_images_panel/locale/English.php";

}

 

* * *

 

Внедрение в панели функций, переменных и дифайнов плагинов

Панель плагина может отображаться как на страницах плагина (или контентного модуля), так и на любых других страницах.

Чтобы все функции, переменные и дифайны для панели были заданы, необходимо их вынести в отдельный инклюд плагина, который будет использоваться для всех панелей этого плагина и всех контентных страниц.

Например для панели "infusions/pagex-links_panel/pagex-links_panel.php" из 2 строчек

require_once INFUSIONS.'pagex_panel/func_pagex.php';

pagex_t_menu( $bloktype='t' );

нужна строка

require_once INFUSIONS.'pagex_panel/func_pagex.php';

так как в файле "infusions/pagex_panel/func_pagex.php" задаётся функция pagex_t_menu().

 

* * *

 

Как сделать чтобы панель отображалась только на определённой php-странице

if ($_SERVER['SCRIPT_URL']==BASEDIR."forum/viewforum.php") {

opentable("My panel");

echo "<p>Text</p>";

closetable();

}

 

* * *

 

Как сделать чтобы панели плагина отображались только на страницах плагина или контентного модуля

можно добавить такие строки в контентные страницы

define("PLUGIN_NAME", ".........."); // строка в начале файла

define("PAGE_NAME", ".........._.........."); // строка в начале файла или там, где начинается отображение страницы или категории в файлах типа articles.php, downloads.php

вместо ".........." свои названия

обязательно до строки

require_once THEMES."templates/header.php";

 

Например так:

forum

forum/index.php

define("PLUGIN_NAME", "forum");

define("PAGE_NAME", "forum_index");

forum/viewforum.php

define("PLUGIN_NAME", "forum");

define("PAGE_NAME", "forum_viewforum");

forum/viewthread.php

define("PLUGIN_NAME", "forum");

define("PAGE_NAME", "forum_viewthread");

news

news.php

define("PLUGIN_NAME", "news");

define("PAGE_NAME", "news_id");

news_cats.php

define("PLUGIN_NAME", "news");

define("PAGE_NAME", "news_cat");

articles

articles.php (где страница)

define("PLUGIN_NAME", "articles");

define("PAGE_NAME", "article_id");

articles.php (где категория)

define("PLUGIN_NAME", "articles");

define("PAGE_NAME", "article_cat");

downloads

downloads.php (где страница)

define("PLUGIN_NAME", "downloads");

define("PAGE_NAME", "download_id");

downloads.php (где категория)

define("PLUGIN_NAME", "downloads");

define("PAGE_NAME", "download_cat");

 

Добавляем в код панели if (...) {...} для группы php-страниц

if (defined("PLUGIN_NAME") and PLUGIN_NAME=="forum") {

opentable("My panel");

echo "<p>Text</p>";

closetable();

}

или конкретной php-страницы

if (defined("PAGE_NAME") and PAGE_NAME=="forum_viewforum") {

opentable("My panel");

echo "<p>Text</p>";

closetable();

}

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

Код панелей PHP-Fusion 7 (подробный мануал)

Портал Vveb.ws / Бесплатная CMS PHP-Fusion 7 Bogatyr / Код панелей PHP-Fusion 7 (подробный мануал)


 English

Добавление прав доступа в код панели

В большинстве случаев удобнее задать права доступа на панель при добавлении панели в админке.

Однако чтобы по ошибке не забыть это сделать для административных панелей, надо именно прописать в саму панель права доступа.

Зарегистрированный пользователь

if (iMEMBER) {

...

}

 

Админ

if (iADMIN) {

...

}

 

СуперАдмин

if (iSUPERADMIN) {

...

}

 

СуперАдмин

if (iSUPERADMIN) {

...

}

 

Незарегистрированный пользователь

if (iGUEST) {

...

}

 

Где заданы дифайны прав

maincore_users_cookies.php

// User level, Admin Rights & User Group definitions

define("iGUEST", $userdata['user_level'] == 0 ? 1 : 0);

define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0);

define("iADMIN", $userdata['user_level'] >= 102 ? 1 : 0);

define("iSUPERADMIN", $userdata['user_level'] == 103 ? 1 : 0);

define("iUSER", $userdata['user_level']);

define("iUSER_RIGHTS", $userdata['user_rights']);

define("iUSER_GROUPS", substr($userdata['user_groups'], 1));

В файле maincore_user_rights_func.php смотрите функции для работы с правами пользователя.

Пример задания прав доступа по пользовательским группам в коде:

submit_now.php

$free_groups = array(9999,9998);//free groups (1,5,7,29)

/*

RUS: Для определённых групп пользовталей разрешает сабмит без утверждения статей, новостей, ссылок и фотографий.

ENG: No approve for submit - you can select several groups of users, who not needed approve in submit.php (works with articles,news.links, and photos nice)

-- here you can choose the groops without confirmation.

101 = all users (not recommend); admins always have instant submit.

*/

//check

foreach ($free_groups as $group) {

if(checkgroup($group)){define('esFREEMEMBER',true);break;}

}

Если задан esFREEMEMBER - значит пользователю выводится соответствующий контент.

 

* * *

 

Добавление ссылок на CSS и JS файлы в <head> страницы

Для многих панелей и контентных страниц требуется добавление CSS и JS файлов в <head> страницы.

Например, CSS из папки плагина:

infusions/comments_management/comments_management.php

add_to_head("<link rel='stylesheet' href='comments.css' type='text/css' media='screen' />n");

Например, CSS из папки темы:

infusions/h_iflogo_userinfo_panel/h_iflogo_userinfo_panel.php

add_to_head("n<link rel='stylesheet' href='".THEME."h_iflogo_userinfo_panel.css' type='text/css' media='screen' />n");

Функции add_to_head() и add_to_footer() находятся в файле "includes/output_handling_include.php". И этот файл инклюдится в maincore.php.

Нужные для этих целей дифайны папок заданы тут

maincore_defines.php

define("INCLUDES", BASEDIR."includes/");

define("LOCALE", BASEDIR."locale/");

define("INFUSIONS", BASEDIR."infusions/");

define("THEMES", BASEDIR."themes/");

 

* * *

 

Внедрение в панели локалей

локали плагинов и панелей рекомендуется добавлять в папки /locale/ соответствующих плагинов и панелей.

/infusions/latest_images_panel/latest_images_panel.php

// Check if locale file is available matching the current site locale setting.

if (file_exists(INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php")) {

// Load the locale file matching the current site locale setting.

include INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php";

} else {

// Load the infusion's default locale file.

include INFUSIONS."latest_images_panel/locale/English.php";

}

 

* * *

 

Внедрение в панели функций, переменных и дифайнов плагинов

Панель плагина может отображаться как на страницах плагина (или контентного модуля), так и на любых других страницах.

Чтобы все функции, переменные и дифайны для панели были заданы, необходимо их вынести в отдельный инклюд плагина, который будет использоваться для всех панелей этого плагина и всех контентных страниц.

Например для панели "infusions/pagex-links_panel/pagex-links_panel.php" из 2 строчек

require_once INFUSIONS.'pagex_panel/func_pagex.php';

pagex_t_menu( $bloktype='t' );

нужна строка

require_once INFUSIONS.'pagex_panel/func_pagex.php';

так как в файле "infusions/pagex_panel/func_pagex.php" задаётся функция pagex_t_menu().

 

* * *

 

Как сделать чтобы панель отображалась только на определённой php-странице

if ($_SERVER['SCRIPT_URL']==BASEDIR."forum/viewforum.php") {

opentable("My panel");

echo "<p>Text</p>";

closetable();

}

 

* * *

 

Как сделать чтобы панели плагина отображались только на страницах плагина или контентного модуля

можно добавить такие строки в контентные страницы

define("PLUGIN_NAME", ".........."); // строка в начале файла

define("PAGE_NAME", ".........._.........."); // строка в начале файла или там, где начинается отображение страницы или категории в файлах типа articles.php, downloads.php

вместо ".........." свои названия

обязательно до строки

require_once THEMES."templates/header.php";

 

Например так:

forum

forum/index.php

define("PLUGIN_NAME", "forum");

define("PAGE_NAME", "forum_index");

forum/viewforum.php

define("PLUGIN_NAME", "forum");

define("PAGE_NAME", "forum_viewforum");

forum/viewthread.php

define("PLUGIN_NAME", "forum");

define("PAGE_NAME", "forum_viewthread");

news

news.php

define("PLUGIN_NAME", "news");

define("PAGE_NAME", "news_id");

news_cats.php

define("PLUGIN_NAME", "news");

define("PAGE_NAME", "news_cat");

articles

articles.php (где страница)

define("PLUGIN_NAME", "articles");

define("PAGE_NAME", "article_id");

articles.php (где категория)

define("PLUGIN_NAME", "articles");

define("PAGE_NAME", "article_cat");

downloads

downloads.php (где страница)

define("PLUGIN_NAME", "downloads");

define("PAGE_NAME", "download_id");

downloads.php (где категория)

define("PLUGIN_NAME", "downloads");

define("PAGE_NAME", "download_cat");

 

Добавляем в код панели if (...) {...} для группы php-страниц

if (defined("PLUGIN_NAME") and PLUGIN_NAME=="forum") {

opentable("My panel");

echo "<p>Text</p>";

closetable();

}

или конкретной php-страницы

if (defined("PAGE_NAME") and PAGE_NAME=="forum_viewforum") {

opentable("My panel");

echo "<p>Text</p>";

closetable();

}

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

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Яндекс.Метрика