primo commit

This commit is contained in:
2024-12-17 17:34:10 +01:00
commit e650f8df99
16435 changed files with 2451012 additions and 0 deletions

View File

@ -0,0 +1,47 @@
<?php
/**
* @package Conditional Content
* @version 5.2.2
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2024 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\EditorButtonPlugin as RL_EditorButtonPlugin;
use RegularLabs\Library\Extension as RL_Extension;
defined('_JEXEC') or die;
if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/regularlabs.xml')
|| ! class_exists('RegularLabs\Library\Parameters')
|| ! class_exists('RegularLabs\Library\DownloadKey')
|| ! class_exists('RegularLabs\Library\EditorButtonPlugin')
)
{
return;
}
if ( ! RL_Document::isJoomlaVersion(4))
{
RL_Extension::disable('conditionalcontent', 'plugin', 'editors-xtd');
return;
}
if (true)
{
class PlgButtonConditionalContent extends RL_EditorButtonPlugin
{
protected $button_icon = '<svg viewBox="0 0 24 24" style="fill:none;" width="24" height="24" fill="none" stroke="currentColor">'
. '<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2" />'
. '</svg>';
protected function loadScripts()
{
RL_Document::script('conditionalcontent.button');
}
}
}

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<extension version="4" type="plugin" group="editors-xtd" method="upgrade">
<name>PLG_EDITORS-XTD_CONDITIONALCONTENT</name>
<description>PLG_EDITORS-XTD_CONDITIONALCONTENT_DESC</description>
<version>5.2.2</version>
<creationDate>November 2024</creationDate>
<author>Regular Labs (Peter van Westen)</author>
<authorEmail>info@regularlabs.com</authorEmail>
<authorUrl>https://regularlabs.com</authorUrl>
<copyright>Copyright © 2024 Regular Labs - All Rights Reserved</copyright>
<license>GNU General Public License version 2 or later</license>
<namespace path="src">RegularLabs\Plugin\EditorButton\ConditionalContent</namespace>
<scriptfile>script.install.php</scriptfile>
<files>
<file plugin="conditionalcontent">conditionalcontent.php</file>
<folder>forms</folder>
<folder>language</folder>
<folder>src</folder>
<folder>tmpl</folder>
</files>
<config>
<fields name="params" addfieldprefix="RegularLabs\Library\Form\Field">
<fieldset name="basic">
<field name="@load_language_regularlabs" type="LoadLanguage" extension="plg_system_regularlabs"/>
<field name="@license" type="License" extension="CONDITIONALCONTENT"/>
<field name="@version" type="Version" extension="CONDITIONALCONTENT"/>
<field name="@dependency_plugin" type="Dependency" label="COC_THE_SYSTEM_PLUGIN" file="/plugins/system/conditionalcontent/conditionalcontent.xml"/>
<field name="@header" type="Header" label="CONDITIONALCONTENT" description="CONDITIONALCONTENT_DESC" url="https://regularlabs.com/conditionalcontent"/>
<field name="@note__settings" type="Note" class="rl-alert alert alert-info rl-alert-light" text="COC_SETTINGS,&lt;a href=&quot;index.php?option=com_plugins&amp;filter[folder]=system&amp;filter[search]=conditional Content&quot; target=&quot;_blank&quot;&gt;,&lt;/a&gt;"/>
</fieldset>
</fields>
</config>
</extension>

View File

@ -0,0 +1,560 @@
<?xml version="1.0" encoding="utf-8"?>
<config addfieldprefix="RegularLabs\Library\Form\Field">
<fieldset name="content">
<field name="tag_type" type="Radio" default="show" class="btn-group rl-btn-group btn-group-md" label="COC_TAG_TYPE_DESC">
<option value="show" class="btn btn-outline-success">JSHOW</option>
<option value="hide" class="btn btn-outline-danger">JHIDE</option>
</field>
<field name="content" type="Editor" default="" buttons="false" filter="JComponentHelper::filterText" label="COC_CONTENT" description="COC_CONTENT_DESC"/>
</fieldset>
<fieldset name="content_no_editor">
<field name="tag_type" type="Radio" default="show" class="btn-group rl-btn-group btn-group-md" label="COC_TAG_TYPE_DESC">
<option value="show" class="btn btn-outline-success">JSHOW</option>
<option value="hide" class="btn btn-outline-danger">JHIDE</option>
</field>
<field name="content" type="Editor" editor="codemirror" default="" buttons="false" filter="JComponentHelper::filterText" label="COC_CONTENT" description="COC_CONTENT_DESC"/>
</fieldset>
<fieldset name="alternative">
<field name="content_alternative" type="Editor" default="" buttons="false" filter="JComponentHelper::filterText" label="COC_ALTERNATIVE_CONTENT" description="COC_ALTERNATIVE_CONTENT_DESC"/>
</fieldset>
<fieldset name="alternative_no_editor">
<field name="content_alternative" type="Editor" editor="codemirror" default="" buttons="false" filter="JComponentHelper::filterText" label="COC_ALTERNATIVE_CONTENT" description="COC_ALTERNATIVE_CONTENT_DESC"/>
</fieldset>
<fieldset name="conditions">
<field name="@load_language_conditions" type="LoadLanguage" extension="com_conditions"/>
<field name="@showon__has_conditions__a" type="ShowOn" value="has_conditions:1"/>
<field name="condition_type" type="Radio" default="alias" class="btn-group rl-btn-group btn-group-md" label="COC_CONDITION_TYPE">
<option value="id" class="btn btn-outline-info">JGLOBAL_FIELD_ID_LABEL</option>
<option value="alias" class="btn btn-outline-info">JALIAS</option>
<option value="name" class="btn btn-outline-info">JFIELD_NAME_LABEL</option>
</field>
<field name="@showon__has_conditions__b" type="ShowOn"/>
<field name="@conditions" type="Condition" addfieldprefix="RegularLabs\Plugin\EditorButton\ConditionalContent\Form\Field" enable=" menu__menu_item, menu__home_page, date__date, visitor__access_level, visitor__user_group, visitor__language, agent__device, other__condition"/>
</fieldset>
<fieldset name="inline__a">
<field name="@showon__use_inline__a" type="ShowOn" value="use_inline:1[AND]has_conditions:0"/>
<field name="@note__inline_rules" type="Note" class="" title="COC_INLINE_RULES" heading="h3"/>
<field name="matching_method" type="Radio" default="all" class="btn-group rl-btn-group" label="RL_MATCHING_METHOD" description="CON_MATCHING_METHOD_DESC,CON_ALL,CON_ALL_DESC,CON_ANY,CON_ANY_DESC" showon="has_multiple_rules:1">
<option value="all" class="btn btn-outline-info">CON_ALL</option>
<option value="any" class="btn btn-outline-info">CON_ANY</option>
</field>
</fieldset>
<!-- MENU ITEMS -->
<fieldset name="group__menu__a">
<field name="@block__group__menu__a" type="Block" start="1" label="CON_MENU_ITEMS"/>
</fieldset>
<!-- MENU ITEMS -->
<fieldset name="menu__menu_item">
<field name="@block__menuitems__a" type="Block" start="1"/>
<field name="menuitems" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_MENU_ITEMS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__menuitems__a" type="ShowOn" value="menuitems!:"/>
<field name="menuitems__selection" type="MenuItems" multiple="true" default="" label="CON_MENU_ITEMS" hiddenLabel="true"/>
<field name="@showon__menuitems__b" type="ShowOn"/>
<field name="@block__menuitems__b" type="Block" end="1"/>
</fieldset>
<!-- HOMEPAGE -->
<fieldset name="menu__home_page">
<field name="@block__homepage__a" type="Block" start="1"/>
<field name="homepage" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_HOME_PAGE">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__homepage__a" type="ShowOn" value="homepage!:"/>
<field name="@note__homepage" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_HOME_PAGE_DESC"/>
<field name="@showon__homepage__b" type="ShowOn"/>
<field name="@block__homepage__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__menu__b">
<field name="@block__group__menu__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__date__a">
<!-- DATE -->
<field name="@block__group__date__a" type="Block" start="1" label="CON_DATE_TIME"/>
</fieldset>
<fieldset name="date__date">
<!-- DATE :: DATE -->
<field name="@block__date__a" type="Block" start="1"/>
<field name="date" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_DATE">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__date__a" type="ShowOn" value="date!:"/>
<field name="date__comparison" type="Radio" default="after" class="btn-group rl-btn-group btn-group-md" label="">
<option value="before" class="btn btn-outline-info">CON_DATE_BEFORE</option>
<option value="after" class="btn btn-outline-info">CON_DATE_AFTER</option>
<option value="between" class="btn btn-outline-info">CON_DATE_BETWEEN</option>
</field>
<field name="@showon__date__before_after__a" type="ShowOn" value="date__comparison!:between"/>
<field name="date__date" type="Calendar" showtime="true" filter="user_utc" format="%Y-%m-%d %H:%M" default="" label=""/>
<field name="@showon__date__before_after__b" type="ShowOn"/>
<field name="@showon__date__between__a" type="ShowOn" value="date__comparison:between"/>
<field name="date__from" type="Calendar" showtime="true" filter="user_utc" format="%Y-%m-%d %H:%M" default="" label="CON_DATE_FROM"/>
<field name="date__to" type="Calendar" showtime="true" filter="user_utc" format="%Y-%m-%d %H:%M" default="" label="CON_DATE_TO"/>
<field name="@showon__date__between__b" type="ShowOn"/>
<field name="@showon__date__b" type="ShowOn"/>
<field name="@block__date__b" type="Block" end="1"/>
</fieldset>
<fieldset name="date__season">
<!-- DATE :: SEASONS -->
<field name="@block__seasons__a" type="Block" start="1"/>
<field name="seasons" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_SEASONS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__seasons__a" type="ShowOn" value="seasons!:"/>
<field name="seasons__selection" type="List" multiple="true" default="" layout="joomla.form.field.list-fancy-select" label="CON_SEASONS" hiddenLabel="true">
<option value="winter">CON_WINTER</option>
<option value="spring">CON_SPRING</option>
<option value="summer">CON_SUMMER</option>
<option value="fall">CON_FALL</option>
</field>
<field name="@showon__seasons__b" type="ShowOn"/>
<field name="@block__seasons__b" type="Block" end="1"/>
</fieldset>
<fieldset name="date__month">
<!-- DATE :: MONTHS -->
<field name="@block__months__a" type="Block" start="1"/>
<field name="months" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_MONTHS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__months__a" type="ShowOn" value="months!:"/>
<field name="months__selection" type="List" multiple="true" default="" layout="joomla.form.field.list-fancy-select" label="CON_MONTHS" hiddenLabel="true">
<option value="january">JANUARY</option>
<option value="february">FEBRUARY</option>
<option value="march">MARCH</option>
<option value="april">APRIL</option>
<option value="may">MAY</option>
<option value="june">JUNE</option>
<option value="july">JULY</option>
<option value="august">AUGUST</option>
<option value="september">SEPTEMBER</option>
<option value="october">OCTOBER</option>
<option value="november">NOVEMBER</option>
<option value="december">DECEMBER</option>
</field>
<field name="@showon__months__b" type="ShowOn"/>
<field name="@block__months__b" type="Block" end="1"/>
</fieldset>
<fieldset name="date__day">
<!-- DATE :: DAYS -->
<field name="@block__days__a" type="Block" start="1"/>
<field name="days" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_DAYS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__days__a" type="ShowOn" value="days!:"/>
<field name="days__selection" type="List" multiple="true" default="" layout="joomla.form.field.list-fancy-select" label="CON_DAYS" hiddenLabel="true">
<option value="monday">MONDAY</option>
<option value="tuesday">TUESDAY</option>
<option value="wednesday">WEDNESDAY</option>
<option value="thursday">THURSDAY</option>
<option value="friday">FRIDAY</option>
<option value="saturday">SATURDAY</option>
<option value="sunday">SUNDAY</option>
</field>
<field name="@showon__days__b" type="ShowOn"/>
<field name="@block__days__b" type="Block" end="1"/>
</fieldset>
<fieldset name="date__time">
<!-- DATE :: TIME -->
<field name="@block__time__a" type="Block" start="1"/>
<field name="time" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_TIME">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__time__a" type="ShowOn" value="time!:"/>
<field name="time__comparison" type="Radio" default="after" class="btn-group rl-btn-group btn-group-md" label="">
<option value="before" class="btn btn-outline-info">CON_DATE_BEFORE</option>
<option value="after" class="btn btn-outline-info">CON_DATE_AFTER</option>
<option value="between" class="btn btn-outline-info">CON_DATE_BETWEEN</option>
</field>
<field name="@showon__time__before_after__a" type="ShowOn" value="time__comparison!:between"/>
<field name="time__time" type="Text" size="10" default="0:00" class="rl-w-5em text-right" label=""/>
<field name="@showon__time__before_after__b" type="ShowOn"/>
<field name="@showon__time__between__a" type="ShowOn" value="time__comparison:between"/>
<field name="time__from" type="Text" size="10" default="0:00" class="rl-w-5em text-right" label="CON_DATE_FROM"/>
<field name="time__to" type="Text" size="10" default="0:00" class="rl-w-5em text-right" label="CON_DATE_TO"/>
<field name="@showon__time__between__b" type="ShowOn"/>
<field name="@showon__time__b" type="ShowOn"/>
<field name="@block__time__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__date__b">
<!-- DATE (footer) -->
<field name="@showon__group__date__a" type="ShowOn" value="date!:[OR]seasons!:[OR]months!:[OR]days!:[OR]time!:"/>
<field name="@note__group__date" type="Note" class="rl-alert alert alert-warning" text="CON_DATE_TIME_DESC"/>
<field name="@note__group__date__current" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_CURRENT_DATE,[date:Y-m-d H:i]"/>
<field name="@showon__group__date__b" type="ShowOn"/>
<field name="@block__group__date__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__content__a">
<!-- JOOMLA CONTENT -->
<field name="@block__group__content__a" type="Block" start="1" label="RL_JCONTENT"/>
<field name="@load_language_content" type="LoadLanguage" extension="com_content"/>
<field name="@load_language_content_sys" type="LoadLanguage" extension="com_content.sys"/>
</fieldset>
<fieldset name="content__page_type">
<!-- JOOMLA CONTENT :: PAGE TYPES -->
<field name="@block__contentpagetypes__a" type="Block" start="1"/>
<field name="contentpagetypes" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_PAGE_TYPES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__contentpagetypes__a" type="ShowOn" value="contentpagetypes!:"/>
<field name="contentpagetypes__selection" type="List" multiple="true" default="" layout="joomla.form.field.list-fancy-select" label="CON_PAGE_TYPES" hiddenLabel="true">
<option value="archive">COM_CONTENT_ARCHIVE_VIEW_DEFAULT_TITLE</option>
<option value="article">COM_CONTENT_ARTICLE_VIEW_DEFAULT_TITLE</option>
<option value="categories">COM_CONTENT_CATEGORIES_VIEW_DEFAULT_TITLE</option>
<option value="categoryblog">COM_CONTENT_CATEGORY_VIEW_BLOG_TITLE</option>
<option value="category">COM_CONTENT_CATEGORY_VIEW_DEFAULT_TITLE</option>
<option value="featured">COM_CONTENT_FEATURED_VIEW_DEFAULT_TITLE</option>
<option value="form">COM_CONTENT_FORM_VIEW_DEFAULT_TITLE</option>
</field>
<field name="@showon__contentpagetypes__b" type="ShowOn"/>
<field name="@block__contentpagetypes__b" type="Block" end="1"/>
</fieldset>
<fieldset name="content__category">
<!-- JOOMLA CONTENT :: CATEGORIES -->
<field name="@block__categories__a" type="Block" start="1"/>
<field name="categories" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_CATEGORIES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__categories__a" type="ShowOn" value="categories!:"/>
<field name="categories__selection" type="ContentCategories" multiple="true" default="" label="CON_CATEGORIES" hiddenLabel="true"/>
<field name="@showon__categories__b" type="ShowOn"/>
<field name="@block__categories__b" type="Block" end="1"/>
</fieldset>
<fieldset name="content__article__id">
<!-- JOOMLA CONTENT :: ARTICLES -->
<field name="@block__articles__a" type="Block" start="1"/>
<field name="articles" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_ARTICLES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__articles__a" type="ShowOn" value="articles!:"/>
<field name="articles__selection" type="ContentArticles" multiple="true" default="" label="CON_ARTICLES" hiddenLabel="true"/>
<field name="@showon__articles__b" type="ShowOn"/>
<field name="@block__articles__b" type="Block" end="1"/>
</fieldset>
<fieldset name="content__article__featured">
<!-- JOOMLA CONTENT :: ARTICLE FEATURED -->
<field name="@block__featured__a" type="Block" start="1"/>
<field name="featured" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_ARTICLE_FEATURED">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@block__featured__b" type="Block" end="1"/>
</fieldset>
<fieldset name="content__article__status">
<!-- JOOMLA CONTENT :: ARTICLE PUBLISH STATE -->
<field name="@block__article_status__a" type="Block" start="1"/>
<field name="article_status" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_ARTICLE_STATUS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__article_status__a" type="ShowOn" value="article_status!:"/>
<field name="article_status__selection" type="List" multiple="true" default="1" layout="joomla.form.field.list-fancy-select" label="CON_ARTICLE_STATUS" hiddenLabel="true">
<option value="published">JPUBLISHED</option>
<option value="unpublished">JUNPUBLISHED</option>
<option value="archived">JARCHIVED</option>
<option value="trashed">JTRASHED</option>
</field>
<field name="@showon__article_status__b" type="ShowOn"/>
<field name="@block__article_status__b" type="Block" end="1"/>
</fieldset>
<fieldset name="content__article__date">
<!-- JOOMLA CONTENT :: ARTICLE DATE -->
<field name="@block__article_date__a" type="Block" start="1"/>
<field name="article_date" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_ARTICLE_DATE">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__article_date__a" type="ShowOn" value="article_date!:"/>
<field name="article_date__type" type="List" default="created" layout="joomla.form.field.list-fancy-select" label="CON_ARTICLE_DATE" hiddenLabel="true">
<option value="created">COM_CONTENT_FIELD_CREATED_LABEL</option>
<option value="modified">JGLOBAL_FIELD_MODIFIED_LABEL</option>
<option value="publish_up">COM_CONTENT_FIELD_PUBLISH_UP_LABEL</option>
<option value="publish_down">COM_CONTENT_FIELD_PUBLISH_DOWN_LABEL</option>
</field>
<field name="article_date__comparison" type="Radio" default="after" class="btn-group rl-btn-group btn-group-md" label="">
<option value="before" class="btn btn-outline-info">CON_DATE_BEFORE</option>
<option value="after" class="btn btn-outline-info">CON_DATE_AFTER</option>
<option value="between" class="btn btn-outline-info">CON_DATE_BETWEEN</option>
</field>
<field name="@showon__article_date__before_after__a" type="ShowOn" value="article_date__comparison!:between"/>
<field name="article_date__date" type="Calendar" showtime="true" filter="user_utc" format="%Y-%m-%d %H:%M" default="" label=""/>
<field name="@showon__article_date__before_after__b" type="ShowOn"/>
<field name="@showon__article_date__between__a" type="ShowOn" value="article_date__comparison:between"/>
<field name="article_date__from" type="Calendar" showtime="true" filter="user_utc" format="%Y-%m-%d %H:%M" default="" label="CON_DATE_FROM"/>
<field name="article_date__to" type="Calendar" showtime="true" filter="user_utc" format="%Y-%m-%d %H:%M" default="" label="CON_DATE_TO"/>
<field name="@showon__article_date__between__b" type="ShowOn"/>
<field name="@showon__article_date__b" type="ShowOn"/>
<field name="@block__article_date__b" type="Block" end="1"/>
</fieldset>
<fieldset name="content__article__author">
<!-- JOOMLA CONTENT :: ARTICLE AUTHORS -->
<field name="@block__article_authors__a" type="Block" start="1"/>
<field name="article_authors" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_ARTICLE_AUTHORS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__article_authors__a" type="ShowOn" value="article_authors!:"/>
<field name="article_authors__selection" type="Users" multiple="true" show_current="true" default="" username_as_value="true" label="CON_ARTICLE_AUTHORS" hiddenLabel="true"/>
<field name="@showon__article_authors__b" type="ShowOn"/>
<field name="@block__article_authors__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__content__b">
<field name="@block__group__content__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__visitor__a">
<!-- VISITORS -->
<field name="@block__group__visitor__a" type="Block" start="1" label="CON_VISITORS"/>
</fieldset>
<fieldset name="visitor__user">
<!-- USERS -->
<field name="@block__user__a" type="Block" start="1"/>
<field name="users" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_USERS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__users__a" type="ShowOn" value="users!:"/>
<field name="users__selection" type="Users" multiple="true" default="" username_as_value="true" label="CON_USERS" hiddenLabel="true"/>
<field name="@showon__users__b" type="ShowOn"/>
<field name="@block__users__b" type="Block" end="1"/>
</fieldset>
<fieldset name="visitor__access_level">
<!-- ACCESS LEVEL -->
<field name="@block__accesslevels__a" type="Block" start="1"/>
<field name="accesslevels" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_ACCESS_LEVELS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__accesslevels__a" type="ShowOn" value="accesslevels!:"/>
<field name="accesslevels__selection" type="AccessLevels" multiple="true" default="" text_as_value="true" label="CON_ACCESS_LEVELS" hiddenLabel="true"/>
<field name="@showon__accesslevels__b" type="ShowOn"/>
<field name="@block__accesslevels__b" type="Block" end="1"/>
</fieldset>
<fieldset name="visitor__user_group">
<!-- USER GROUPS -->
<field name="@block__usergroups__a" type="Block" start="1"/>
<field name="usergroups" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_USER_GROUPS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__usergroups__a" type="ShowOn" value="usergroups!:"/>
<field name="usergroups__selection" type="UserGroups" multiple="true" notregistered="1" default="" text_as_value="true" label="CON_USER_GROUPS" hiddenLabel="true"/>
<field name="@showon__usergroups__b" type="ShowOn"/>
<field name="@block__usergroups__b" type="Block" end="1"/>
</fieldset>
<fieldset name="visitor__language">
<!-- LANGUAGES -->
<field name="@block__languages__a" type="Block" start="1"/>
<field name="languages" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_LANGUAGES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__languages__a" type="ShowOn" value="languages!:"/>
<field name="languages__selection" type="Languages" multiple="true" default="" label="CON_LANGUAGES" hiddenLabel="true"/>
<field name="@showon__languages__b" type="ShowOn"/>
<field name="@block__languages__b" type="Block" end="1"/>
</fieldset>
<fieldset name="agent__device">
<!-- DEVICES -->
<field name="@block__devices__a" type="Block" start="1"/>
<field name="devices" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_DEVICES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__devices__a" type="ShowOn" value="devices!:"/>
<field name="devices__selection" type="List" multiple="true" default="" layout="joomla.form.field.list-fancy-select" label="CON_DEVICES" hiddenLabel="true">
<option value="desktop">CON_DEVICES_DESKTOP</option>
<option value="tablet">CON_DEVICES_TABLET</option>
<option value="mobile">CON_DEVICES_MOBILE</option>
</field>
<field name="@note__devices" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_DEVICES_DESC"/>
<field name="@showon__devices__b" type="ShowOn"/>
<field name="@block__devices__b" type="Block" end="1"/>
</fieldset>
<fieldset name="visitor__ip">
<!-- IPS -->
<field name="@block__ips__a" type="Block" start="1"/>
<field name="ips" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_IPS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__ips__a" type="ShowOn" value="ips!:"/>
<field name="ips__selection" type="Textarea" default="" label="CON_IPS" hiddenLabel="true"/>
<field name="@note__ips" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_IPS_DESC"/>
<field name="@showon__ips__b" type="ShowOn"/>
<field name="@block__ips__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__visitor__b">
<field name="@block__group__visitor__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__geo__a">
<!-- GEO LOCATION -->
<field name="@block__group__geo__a" type="Block" start="1" label="CON_GEOLOCATION"/>
<field name="has_geoip_library" type="IsInstalled" extension="geoip" extension_type="library"/>
<field name="@showon__geo__1a" type="ShowOn" value="continents!:[OR]countries!:[OR]regions!:[OR]postalcodes!:"/>
<field name="@note__geo__no_geoip_library" type="Note" class="rl-alert alert alert-danger" text="CON_GEO_NO_GEOIP_LIBRARY,&lt;a href=&quot;https://regularlabs.com/geoip&quot; class=&quot;btn btn-sm btn-success&quot; target=&quot;_blank&quot;&gt;,&lt;/a&gt;" showon="has_geoip_library:0"/>
<field name="@showon__geo__1b" type="ShowOn"/>
</fieldset>
<fieldset name="geo__continent">
<!-- GEO LOCATION :: CONTINENTS -->
<field name="@block__continents__a" type="Block" start="1"/>
<field name="continents" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_CONTINENTS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__continents__a" type="ShowOn" value="continents!:"/>
<field name="continents__selection" type="Geo" group="continents" multiple="true" default="" text_as_value="true" label="CON_CONTINENTS" hiddenLabel="true"/>
<field name="@showon__continents__b" type="ShowOn"/>
<field name="@block__continents__b" type="Block" end="1"/>
</fieldset>
<fieldset name="geo__country">
<!-- GEO LOCATION :: COUNTRIES -->
<field name="@block__countries__a" type="Block" start="1"/>
<field name="countries" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_COUNTRIES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__countries__a" type="ShowOn" value="countries!:"/>
<field name="countries__selection" type="Geo" group="countries" multiple="true" default="" text_as_value="true" label="CON_COUNTRIES" hiddenLabel="true"/>
<field name="@showon__countries__b" type="ShowOn"/>
<field name="@block__countries__b" type="Block" end="1"/>
</fieldset>
<fieldset name="geo__postal_code">
<!-- GEO LOCATION :: POSTAL CODES -->
<field name="@block__postalcodes__a" type="Block" start="1"/>
<field name="postalcodes" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_POSTAL_CODES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__postalcodes__a" type="ShowOn" value="postalcodes!:"/>
<field name="postalcodes__selection" type="Textarea" default="" label="CON_POSTAL_CODES" hiddenLabel="true"/>
<field name="@note__postalcodes" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_POSTAL_CODES_DESC,&lt;a href=&quot;https://www.maxmind.com/en/locate-my-ip-address/&quot; target=&quot;_blank&quot;&gt;,&lt;/a&gt;"/>
<field name="@showon__postalcodes__b" type="ShowOn"/>
<field name="@block__postalcodes__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__geo__b">
<!-- GEO LOCATION (footer) -->
<field name="@showon__geo__2a" type="ShowOn" value="continents!:[OR]countries!:[OR]regions!:[OR]postalcodes!:"/>
<field name="@note__geo__info" type="GeoInformation" showon="has_geoip_library:1"/>
<field name="@note__geo" type="Note" class="rl-alert alert alert-warning" text="CON_GEO_DESC"/>
<field name="@note__geo__has_geoip_library" type="Note" class="text-muted" text="CON_GEO_GEOIP_COPYRIGHT_DESC,&lt;a href=&quot;http://www.maxmind.com&quot; target=&quot;_blank&quot;&gt;http://www.maxmind.com&lt;/a&gt;" showon="has_geoip_library:1"/>
<field name="@showon__geo__2b" type="ShowOn"/>
<field name="@block__group__geo__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__other__a">
<!-- MISCELLANEOUS -->
<field name="@block__group__other__a" type="Block" start="1" label="CON_MISCELLANEOUS"/>
</fieldset>
<fieldset name="other__tag">
<!-- TAGS -->
<field name="@block__tags__a" type="Block" start="1"/>
<field name="tags" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_TAGS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__tags__a" type="ShowOn" value="tags!:"/>
<field name="tags__selection" type="Tags" multiple="true" default="" text_as_value="true" label="CON_TAGS" hiddenLabel="true"/>
<field name="@showon__tags__b" type="ShowOn"/>
<field name="@block__tags__b" type="Block" end="1"/>
</fieldset>
<fieldset name="other__component">
<!-- COMPONENTS -->
<field name="@block__components__a" type="Block" start="1"/>
<field name="components" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_COMPONENTS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__components__a" type="ShowOn" value="components!:"/>
<field name="components__selection" type="Components" multiple="true" admin="true" show_content="true" default="" no_com_prefix="true" label="CON_COMPONENTS" hiddenLabel="true"/>
<field name="@showon__components__b" type="ShowOn"/>
<field name="@block__components__b" type="Block" end="1"/>
</fieldset>
<fieldset name="other__template">
<!-- TEMPLATES -->
<field name="@block__templates__a" type="Block" start="1"/>
<field name="templates" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_TEMPLATES">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__templates__a" type="ShowOn" value="templates!:"/>
<field name="templates__selection" type="Templates" multiple="true" default="" label="CON_TEMPLATES" hiddenLabel="true"/>
<field name="@showon__templates__b" type="ShowOn"/>
<field name="@block__templates__b" type="Block" end="1"/>
</fieldset>
<fieldset name="other__url">
<!-- URLS -->
<field name="@block__urls__a" type="Block" start="1"/>
<field name="urls" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_URLS">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__urls__a" type="ShowOn" value="urls!:"/>
<field name="urls__selection" type="Textarea" default="" label="CON_URLS" hiddenLabel="true"/>
<field name="@note__urls" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_URLS_DESC"/>
<field name="@showon__urls__b" type="ShowOn"/>
<field name="@block__urls__b" type="Block" end="1"/>
</fieldset>
<fieldset name="other__php">
<!-- PHP -->
<field name="@block__php__a" type="Block" start="1"/>
<field name="php" type="Radio" default="" class="btn-group rl-btn-group btn-group-md btn-group" label="CON_PHP">
<option value="" class="btn btn-outline-info">CON_IGNORE</option>
<option value="include" class="btn btn-outline-success">CON_INCLUDE</option>
<option value="exclude" class="btn btn-outline-danger">CON_EXCLUDE</option>
</field>
<field name="@showon__php__a" type="ShowOn" value="php!:"/>
<field name="php__selection" type="Editor" editor="codemirror" height="120" default="" label="CON_PHP" hiddenLabel="true"/>
<field name="@note__php" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_PHP_DESC,&lt;pre&gt;return ( $user-&gt;name == 'Peter van Westen' );&lt;/pre&gt;"/>
<field name="@showon__php__b" type="ShowOn"/>
<field name="@block__php__b" type="Block" end="1"/>
</fieldset>
<fieldset name="group__other__b">
<field name="@block__group__other__b" type="Block" end="1"/>
</fieldset>
<fieldset name="inline__b">
<field name="@note__more_in_condition_set" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_MORE_IN_CONDITION_SET"/>
<field name="@note__more_in_pro" type="Note" class="rl-alert alert alert-info rl-alert-light" text="CON_MORE_IN_PRO,&lt;a href=&quot;https://regularlabs.com/conditionalcontent/features&quot; target=&quot;_blank&quot;&gt;,&lt;/a&gt;"/>
<field name="@showon__use_inline__b" type="ShowOn"/>
</fieldset>
<fieldset name="messages">
<field name="has_multiple_rules" type="Hidden" default="0"/>
<field name="@showon__use_inline__c" type="ShowOn" value="use_inline:1[AND]has_conditions:0"/>
<field name="@note__consider_condition_set" type="Note" class="rl-alert alert alert-warning rl-alert-light" text="CON_CONSIDER_CONDITION_SET" showon="has_multiple_rules:1"/>
<field name="@showon__use_inline__d" type="ShowOn"/>
</fieldset>
</config>

View File

@ -0,0 +1,17 @@
;; @package Conditional Content
;; @version 5.2.2
;;
;; @author Peter van Westen <info@regularlabs.com>
;; @link https://regularlabs.com
;; @copyright Copyright © 2024 Regular Labs All Rights Reserved
;; @license GNU General Public License version 2 or later
;;
;; @translate Want to help with translations? See: https://regularlabs.com/translate
PLG_EDITORS-XTD_CONDITIONALCONTENT="Button - Regular Labs - Conditional Content"
PLG_EDITORS-XTD_CONDITIONALCONTENT_DESC="Conditional Content - restrict content based on your conditions in Joomla!"
CONDITIONALCONTENT="Conditional Content"
CONDITIONALCONTENT_DESC="With Conditional Content you can control the display of your content based on your conditions."
COC_SETTINGS="Please see the [[%1:start link%]]Conditional Content system plugin[[%2:end link%]] for settings."
COC_THE_SYSTEM_PLUGIN="the Conditional Content system plugin"

View File

@ -0,0 +1,14 @@
;; @package Conditional Content
;; @version 5.2.2
;;
;; @author Peter van Westen <info@regularlabs.com>
;; @link https://regularlabs.com
;; @copyright Copyright © 2024 Regular Labs All Rights Reserved
;; @license GNU General Public License version 2 or later
;;
;; @translate Want to help with translations? See: https://regularlabs.com/translate
PLG_EDITORS-XTD_CONDITIONALCONTENT="Button - Regular Labs - Conditional Content"
PLG_EDITORS-XTD_CONDITIONALCONTENT_DESC="Conditional Content - restrict content based on your conditions in Joomla!"
CONDITIONALCONTENT="Conditional Content"
CONDITIONALCONTENT_DESC="With Conditional Content you can control the display of your content based on your conditions."

View File

@ -0,0 +1,17 @@
;; @package Conditional Content
;; @version 5.2.2
;;
;; @author Peter van Westen <info@regularlabs.com>
;; @link https://regularlabs.com
;; @copyright Copyright © 2024 Regular Labs All Rights Reserved
;; @license GNU General Public License version 2 or later
;;
;; @translate Want to help with translations? See: https://regularlabs.com/translate
PLG_EDITORS-XTD_CONDITIONALCONTENT="Pulsante - Regular Labs - Conditional Content"
PLG_EDITORS-XTD_CONDITIONALCONTENT_DESC="Conditional Content - Limita il contenuto Joomla! in base alle tue condizioni."
CONDITIONALCONTENT="Conditional Content"
CONDITIONALCONTENT_DESC="Con Conditional Content puoi controllare la visualizzazione del tuo contenuto in base alle tue condizioni."
COC_SETTINGS="Per favore leggi [[%1:start link%]]Conditional Content system plugin[[%2:end link%]] per le impostazioni."
COC_THE_SYSTEM_PLUGIN="il Conditional Content system plugin"

View File

@ -0,0 +1,14 @@
;; @package Conditional Content
;; @version 5.2.2
;;
;; @author Peter van Westen <info@regularlabs.com>
;; @link https://regularlabs.com
;; @copyright Copyright © 2024 Regular Labs All Rights Reserved
;; @license GNU General Public License version 2 or later
;;
;; @translate Want to help with translations? See: https://regularlabs.com/translate
PLG_EDITORS-XTD_CONDITIONALCONTENT="Pulsante - Regular Labs - Conditional Content"
PLG_EDITORS-XTD_CONDITIONALCONTENT_DESC="Conditional Content - Limita il contenuto Joomla! in base alle tue condizioni."
CONDITIONALCONTENT="Conditional Content"
CONDITIONALCONTENT_DESC="Con Conditional Content puoi controllare la visualizzazione del tuo contenuto in base alle tue condizioni."

View File

@ -0,0 +1,58 @@
<?php
/**
* @package Conditional Content
* @version 5.2.2
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2024 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
defined('_JEXEC') or die;
use Joomla\CMS\Filesystem\File as JFile;
use Joomla\CMS\Filesystem\Folder as JFolder;
class PlgEditorsXtdConditionalContentInstallerScript
{
public function postflight($install_type, $adapter)
{
if ( ! in_array($install_type, ['install', 'update']))
{
return true;
}
self::deleteJoomla3Files();
return true;
}
private static function delete($files = [])
{
foreach ($files as $file)
{
if (is_dir($file))
{
JFolder::delete($file);
}
if (is_file($file))
{
JFile::delete($file);
}
}
}
private static function deleteJoomla3Files()
{
self::delete(
[
JPATH_SITE . '/plugins/editors-xtd/conditionalcontent/fields.xml',
JPATH_SITE . '/plugins/editors-xtd/conditionalcontent/helper.php',
JPATH_SITE . '/plugins/editors-xtd/conditionalcontent/popup.php',
JPATH_SITE . '/plugins/editors-xtd/conditionalcontent/popup.tmpl.php',
]
);
}
}

View File

@ -0,0 +1,232 @@
<?php
/**
* @package Conditional Content
* @version 5.2.2
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2024 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
namespace RegularLabs\Plugin\EditorButton\ConditionalContent\Form\Field;
defined('_JEXEC') or die;
use Joomla\CMS\Language\Text as JText;
use Joomla\CMS\Object\CMSObject as JCMSObject;
use RegularLabs\Component\Conditions\Administrator\Helper\Helper;
use RegularLabs\Component\Conditions\Administrator\Model\ItemModel;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\Form\FormField as RL_FormField;
use RegularLabs\Library\Language as RL_Language;
use RegularLabs\Library\ShowOn as RL_ShowOn;
class ConditionField extends RL_FormField
{
private $enabled_types;
public function getCondition()
{
return (new ItemModel)->getConditionByExtensionItem(
$this->extension,
$this->item_id,
false,
$this->enabled_types
);
}
protected function getButtonUrl($view, $task = '', $layout = 'modal')
{
return 'index.php?option=com_conditions'
. '&view=' . $view
. ($task ? '&task=' . $view . '.' . $task : '')
. '&extension=conditionalcontent'
. '&enabled_types=' . $this->enabled_types
. '&layout=' . $layout
. '&tmpl=component';
}
protected function getInput()
{
$this->enabled_types = $this->get('enable', '');
$this->enabled_types = str_replace(' ', '', $this->enabled_types);
RL_Language::load('com_conditions', JPATH_ADMINISTRATOR);
RL_Document::script('regularlabs.regular');
RL_Document::script('conditions.script');
$html = [];
$html[] = '<input type="hidden" name="' . $this->getName('has_conditions') . '" id="' . $this->getId('', 'has_conditions') . '" value="0">';
$html[] = '<input type="hidden" name="' . $this->getName('condition_id') . '" id="' . $this->getId('', 'condition_id') . '" value="">';
$html[] = '<input type="hidden" name="' . $this->getName('condition_alias') . '" id="' . $this->getId('', 'condition_alias') . '" value="">';
$html[] = '<input type="hidden" name="' . $this->getName('condition_name') . '" id="' . $this->getId('', 'condition_name') . '" value="">';
$html[] = '<input type="hidden" name="' . $this->getName('use_inline') . '" id="' . $this->getId('', 'use_inline') . '" value="1">';
$html[] = '<div id="rules_summary" class="position-relative">';
$html[] = '<div id="rules_summary_message" class="alert alert-warning hidden">'
. '</div>';
$html[] = $this->getButtons();
$html[] = '<div id="rules_summary_content" class="mt-4">';
$html[] = '</div >';
$html[] = '</div >';
return implode('', $html);
}
protected function getLabel()
{
return '';
}
private function addSaveButtons(&$options)
{
$modal = 'this.closest(\'.modal-content\')';
$iframe = $modal . '.querySelector(\'.modal-body > iframe\')';
$hide_self = 'this.classList.add(\'hidden\');';
$save = $hide_self . $modal . ' && ' . $iframe . ' && ' . $iframe . '.contentWindow.Joomla.submitbutton(\'item.save\')';
$options = [
...$options,
'keyboard' => false,
'backdrop' => 'static',
'confirm2Text' => JText::_('JSAVE'),
'confirm2Callback' => $save,
'confirm2Class' => 'btn btn-success hidden conditions-button',
'confirm2Icon' => 'save',
];
}
private function getButton($name, $text, $link, $icon, $class = 'primary', $options = [])
{
$button = new JCMSObject;
$button->name = $this->id . '_' . $name;
$button->text = JText::_($text);
$button->icon = $icon;
$button->class = 'btn-' . $class . ' mb-1';
$button->options = $options;
if ($link)
{
$button->link = $link;
}
return $button;
}
private function getButtonCreate()
{
$options = [];
$this->addSaveButtons($options);
return $this->renderButtonAndModal(
'create',
'CON_BUTTON_CREATE',
$this->getButtonUrl('item', 'modaledit', 'modal_edit'),
'file-add',
'success',
$options
);
}
private function getButtonInline()
{
$button = $this->getButton('inline',
'COC_BUTTON_INLINE',
'',
'code',
'warning'
);
$button->onclick = 'RegularLabs.ConditionalContentPopup.setInline();';
return $this->getRenderer('regularlabs.buttons.button')
->addIncludePath(JPATH_SITE . '/libraries/regularlabs/layouts')
->render($button);
}
private function getButtonSelect()
{
if ( ! Helper::thereAreConditions())
{
return '';
}
return $this->renderButton(
'select',
'CON_BUTTON_SELECT',
$this->getButtonUrl('items', ''),
'hand-pointer'
);
}
private function getButtons()
{
$html = [
$this->getButtonSelect(),
$this->getButtonCreate(),
RL_ShowOn::open('use_inline:0[OR]has_conditions:1')
. $this->getButtonInline()
. RL_ShowOn::close(),
$this->getModalSelect(),
];
return implode('<br>', $html);
}
private function getModalButton($name, $text, $link, $icon, $class = 'primary', $options = [])
{
$button = $this->getButton($name, $text, $link, $icon, $class, $options);
$button->modal = true;
$button->options = [
'height' => '400px',
'width' => '800px',
'bodyHeight' => '70',
'modalWidth' => '80',
... $button->options,
];
return $button;
}
private function getModalSelect()
{
return $this->renderModal(
'select',
'CON_BUTTON_SELECT',
$this->getButtonUrl('items', ''),
'hand-pointer'
);
}
private function renderButton($name, $text, $link, $icon, $class = 'primary', $options = [])
{
$button = $this->getModalButton($name, $text, $link, $icon, $class, $options);
return $this->getRenderer('regularlabs.buttons.button')
->addIncludePath(JPATH_SITE . '/libraries/regularlabs/layouts')
->render($button);
}
private function renderButtonAndModal(
$name,
$text,
$link,
$icon,
$class = 'primary',
$options = []
)
{
return $this->renderButton($name, $text, $link, $icon, $class, $options)
. $this->renderModal($name, $text, $link, $icon, $class, $options);
}
private function renderModal($name, $text, $link, $icon, $class = 'primary', $options = [])
{
$button = $this->getModalButton($name, $text, $link, $icon, $class, $options);
return $this->getRenderer('regularlabs.buttons.modal')
->addIncludePath(JPATH_SITE . '/libraries/regularlabs/layouts')
->render($button);
}
}

View File

@ -0,0 +1,55 @@
<?php
/**
* @package Conditional Content
* @version 5.2.2
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2024 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
namespace RegularLabs\Plugin\EditorButton\ConditionalContent;
defined('_JEXEC') or die;
use Joomla\CMS\Form\Form as JForm;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\EditorButtonPopup as RL_EditorButtonPopup;
use RegularLabs\Library\Input as RL_Input;
use RegularLabs\Library\RegEx as RL_RegEx;
class Popup extends RL_EditorButtonPopup
{
protected $extension = 'conditionalcontent';
protected $require_core_auth = false;
protected function loadScripts()
{
$params = $this->getParams();
$this->editor_name = RL_Input::getString('editor', 'text');
// Remove any dangerous character to prevent cross site scripting
$this->editor_name = RL_RegEx::replace('[\'\";\s]', '', $this->editor_name);
RL_Document::scriptOptions([
'tag_show' => $params->tag_show ?? 'show',
'tag_hide' => $params->tag_hide ?? 'hide',
'tag_characters' => explode('.', $params->tag_characters),
'editor_name' => $this->editor_name,
], 'conditionalcontent_button');
RL_Document::script('regularlabs.regular');
RL_Document::script('regularlabs.admin-form');
RL_Document::script('regularlabs.admin-form-descriptions');
RL_Document::script('conditionalcontent.popup');
$xmlfile = dirname(__FILE__, 2) . '/forms/popup.xml';
$this->form = new JForm('conditionalcontent');
$this->form->loadFile($xmlfile, 1, '//config');
$script = "document.addEventListener('DOMContentLoaded', function(){RegularLabs.ConditionalContentPopup.init()});";
RL_Document::scriptDeclaration($script, 'Conditional Content Button', true, 'after');
}
}

View File

@ -0,0 +1,135 @@
<?php
/**
* @package Conditional Content
* @version 5.2.2
*
* @author Peter van Westen <info@regularlabs.com>
* @link https://regularlabs.com
* @copyright Copyright © 2024 Regular Labs All Rights Reserved
* @license GNU General Public License version 2 or later
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper as JHtml;
use Joomla\CMS\Language\Text as JText;
use RegularLabs\Library\ArrayHelper as RL_Array;
use RegularLabs\Library\Parameters as RL_Parameters;
$rule_types = [
'menu' => [
'menu__menu_item',
'menu__home_page',
],
'date' => [
'date__date',
],
'visitor' => [
'visitor__access_level',
'visitor__user_group',
'visitor__language',
'agent__device',
],
];
$disabled_rule_types = RL_Array::toArray(RL_Parameters::getComponent('conditions')->disabled_rule_types);
foreach ($rule_types as $group => $types)
{
foreach ($types as $i => $type)
{
if (in_array($type, $disabled_rule_types))
{
unset($rule_types[$group][$i]);
}
}
}
foreach ($rule_types as $group => $types)
{
if (empty($types))
{
unset($rule_types[$group]);
}
}
?>
<form action="index.php" id="adminForm" name="conditionalcontentForm" method="post"
class="rl-form labels-sm">
<div class="container-fluid container-main">
<div class="row">
<div class="fixed-top d-lg-none">
<button type="button" class="btn btn-success mb-4 w-100"
onclick="RegularLabs.ConditionalContentPopup.insertText();window.parent.Joomla.Modal.getCurrent().close();">
<span class="icon-file-import" aria-hidden="true"></span>
<?php echo JText::_('RL_INSERT'); ?>
</button>
</div>
<div class="pt-5 d-lg-none"></div>
<div class="col-lg-6 border-end">
<input type="hidden" name="type" id="type" value="url">
<?php echo JHtml::_('uitab.startTabSet', 'main', ['active' => 'tab-content']); ?>
<?php echo JHtml::_('uitab.addTab', 'main', 'tab-content', JText::_('COC_CONTENT')); ?>
<div class="form-vertical">
<?php echo $this->form->renderFieldset($this->params->use_editors ? 'content' : 'content_no_editor'); ?>
</div>
<?php echo JHtml::_('uitab.endTab'); ?>
<?php echo JHtml::_('uitab.addTab', 'main', 'tab-alternative', JText::_('COC_ALTERNATIVE_CONTENT')); ?>
<div class="form-vertical">
<?php echo $this->form->renderFieldset($this->params->use_editors ? 'alternative' : 'alternative_no_editor'); ?>
</div>
<?php echo JHtml::_('uitab.endTab'); ?>
<?php echo JHtml::_('uitab.addTab', 'main', 'tab-conditions', JText::_('COC_CONDITIONS')); ?>
<?php echo $this->form->renderFieldset('conditions'); ?>
<div id="inline_rules">
<?php
echo $this->form->renderFieldset('inline__a');
foreach ($rule_types as $group => $types)
{
echo $this->form->renderFieldset('group__' . $group . '__a');
foreach ($types as $type)
{
echo $this->form->renderFieldset($type);
}
echo $this->form->renderFieldset('group__' . $group . '__b');
}
echo $this->form->renderFieldset('inline__b');
?>
</div>
<?php echo JHtml::_('uitab.endTab'); ?>
<?php echo JHtml::_('uitab.endTabSet'); ?>
</div>
<div class="col-lg-6">
<div class="position-sticky" style="top:1.25rem;">
<button type="button" class="btn btn-success mb-4 w-100 hidden d-lg-block"
onclick="RegularLabs.ConditionalContentPopup.insertText();window.parent.Joomla.Modal.getCurrent().close();">
<span class="icon-file-import" aria-hidden="true"></span>
<?php echo JText::_('RL_INSERT'); ?>
</button>
<fieldset class="options-form mt-2 position-relative">
<legend class="mb-1"><?php echo JText::_('JGLOBAL_PREVIEW'); ?></legend>
<span id="preview_spinner" class="rl-spinner hidden"></span>
<div id="preview_code" class="hidden"></div>
</fieldset>
<?php echo $this->form->renderFieldset('messages'); ?>
</div>
</div>
</div>
</div>
</form>