Added the getCustomFieldCode, setFieldFilterSet, setFieldFilterListSet, setFilterFieldFile methods to the field compiler area. Refactored few other methods and added setDefaultSidebarFilterHelper, setCategorySidebarFilterHelper, setBatchDisplayHelper, setDefaultBatchHelper, setCategoryBatchHelper methods in the integration area of the compiler. Improved the header ser feature and added the setCategoryBatchHelper method. gh-378

This commit is contained in:
2020-11-29 02:00:20 +02:00
parent 302328c92a
commit 9947113857
166 changed files with 3928 additions and 2779 deletions

View File

@ -829,7 +829,8 @@ class Get
if (isset($config) && count($config))
{
// we do not yet have this set as an option
$config['remove_line_breaks'] = 2; // 2 is global (use the components value)
$config['remove_line_breaks']
= 2; // 2 is global (use the components value)
// load application
$this->app = JFactory::getApplication();
// Set the params
@ -908,13 +909,15 @@ class Get
$this->componentContext = $this->componentCodeName . '.'
. $this->componentID;
// set if language strings line breaks should be removed
$global = ((int) ComponentbuilderHelper::getVar(
$global = ((int) ComponentbuilderHelper::getVar(
'joomla_component', $this->componentID, 'id',
'remove_line_breaks'
) == 1) ? true : false;
$this->removeLineBreaks = ((int) $config['remove_line_breaks'] == 0)
$this->removeLineBreaks = ((int) $config['remove_line_breaks']
== 0)
? false
: (((int) $config['remove_line_breaks'] == 1) ? true : $global);
: (((int) $config['remove_line_breaks'] == 1) ? true
: $global);
// set if placeholders should be added to customcode
$global = ((int) ComponentbuilderHelper::getVar(
'joomla_component', $this->componentID, 'id',
@ -1510,15 +1513,18 @@ class Get
$array['view']
);
// set the filter option for this view
$this->adminFilterType[$array['settings']->name_list_code] = 1; // Side (old) [default for now]
$this->adminFilterType[$array['settings']->name_list_code]
= 1; // Side (old) [default for now]
if (isset($array['filter'])
&& is_numeric(
$array['filter']
)
&& $array['filter'] > 0)
{
$this->adminFilterType[$array['settings']->name_list_code] = (int) $array['filter'];
$this->adminFilterType[$array['settings']->name_list_code]
= (int) $array['filter'];
}
return $array;
}, array_values($component->addadmin_views)
);
@ -2099,14 +2105,16 @@ class Get
}
elseif (!isset($this->langContent[$target][$language]))
{
$this->langContent[$target][$language] = $this->fixLangString($string);
$this->langContent[$target][$language] = $this->fixLangString(
$string
);
}
}
/**
* We need to remove all text breaks from all language strings
*
* @param string $string The language string
* @param string $string The language string
*
* @return string
*
@ -2117,6 +2125,7 @@ class Get
{
return trim(str_replace(array(PHP_EOL, "\r", "\n"), '', $string));
}
return trim($string);
}
@ -2248,8 +2257,9 @@ class Get
{
$this->customScriptBuilder['token'] = array();
}
$this->customScriptBuilder['token'][$view->name_single_code] = false;
$this->customScriptBuilder['token'][$view->name_list_code] = false;
$this->customScriptBuilder['token'][$view->name_single_code]
= false;
$this->customScriptBuilder['token'][$view->name_list_code] = false;
// set some placeholders
$this->placeholders[$this->hhh . 'view' . $this->hhh]
= $view->name_single_code;
@ -2302,7 +2312,8 @@ class Get
// set custom tabs
$this->customTabs[$view->name_single_code] = null;
$view->customtabs = (isset($view->customtabs)
$view->customtabs
= (isset($view->customtabs)
&& ComponentbuilderHelper::checkJson($view->customtabs))
? json_decode($view->customtabs, true) : null;
if (ComponentbuilderHelper::checkArray($view->customtabs))
@ -2476,7 +2487,8 @@ class Get
) {
// set the field details
$this->setFieldDetails(
$field, $view->name_single_code, $view->name_list_code
$field, $view->name_single_code,
$view->name_list_code
);
// check if this field is a default field OR
// check if this is none database related field
@ -2542,7 +2554,9 @@ class Get
foreach ($view->fields as $field)
{
// so first we lock the field name in
$field_name = $this->getFieldName($field, $view->name_list_code);
$field_name = $this->getFieldName(
$field, $view->name_list_code
);
// check if the field changed since the last compilation (default fields never change and are always added)
if (!isset($ignoreFields[$field['field']])
&& ComponentbuilderHelper::checkObject(
@ -2567,7 +2581,8 @@ class Get
. $field['settings']->history->datalenght_other,
$field['settings']->datalenght
. $field['settings']->datalenght_other,
'field.lenght', $view->name_single_code . '.' . $field_name
'field.lenght',
$view->name_single_code . '.' . $field_name
);
}
// check if the name changed
@ -2611,7 +2626,8 @@ class Get
$this->setUpdateSQL(
$old_field_name, $field_name,
'field.name',
$view->name_single_code . '.' . $field_name
$view->name_single_code . '.'
. $field_name
);
}
elseif ($old_field_name !== $field_name)
@ -2624,7 +2640,8 @@ class Get
$this->app->enqueueMessage(
JText::sprintf(
'You have a field called <b>%s</b> that has been added multiple times to the <b>%s</b> view, the name of that field has changed to <b>%s</b>. Normaly we would automaticly add the update SQL to your component, but with multiple fields this does not work automaticly since it could be that noting changed and it just seems like it did. Therefore you will have to do this manualy if it actualy did change!',
$field_name, $view->name_single_code,
$field_name,
$view->name_single_code,
$old_field_name
), 'Notice'
);
@ -2646,7 +2663,8 @@ class Get
$this->setUpdateSQL(
ComponentbuilderHelper::safeString(
$old_view->name_single
), $view->name_single_code, 'table_name', $view->name_single_code
), $view->name_single_code, 'table_name',
$view->name_single_code
);
}
// loop the mysql table settings
@ -2877,7 +2895,7 @@ class Get
// set linked views
$this->linkedAdminViews[$view->name_single_code] = null;
$view->addlinked_views
= (isset($view->addlinked_views)
= (isset($view->addlinked_views)
&& ComponentbuilderHelper::checkJson($view->addlinked_views))
? json_decode($view->addlinked_views, true) : null;
if (ComponentbuilderHelper::checkArray($view->addlinked_views))
@ -2989,7 +3007,9 @@ class Get
);
// check if we have template or layouts to load
$this->setTemplateAndLayoutData($view->{$scripter}, $view->name_single_code);
$this->setTemplateAndLayoutData(
$view->{$scripter}, $view->name_single_code
);
unset($view->{$scripter});
}
@ -3023,7 +3043,9 @@ class Get
);
// check if we have template or layouts to load
$this->setTemplateAndLayoutData($view->{$button_code_field}, $view->name_single_code);
$this->setTemplateAndLayoutData(
$view->{$button_code_field}, $view->name_single_code
);
}
}
// set the button array
@ -3053,7 +3075,7 @@ class Get
{
// update GUI mapper field
$guiMapper['field'] = $importScripter;
$guiMapper['type'] = 'php';
$guiMapper['type'] = 'php';
// Make sure html gets HTML comment for placeholder
if ('html_import_view' === $importScripter)
{
@ -3083,8 +3105,9 @@ class Get
if (isset($view->add_php_ajax) && $view->add_php_ajax == 1)
{
// insure the token is added to edit view atleast
$this->customScriptBuilder['token'][$view->name_single_code] = true;
$addAjaxSite = false;
$this->customScriptBuilder['token'][$view->name_single_code]
= true;
$addAjaxSite = false;
if (isset($this->siteEditView[$id]) && $this->siteEditView[$id])
{
// we should add this site ajax to front ajax
@ -3166,9 +3189,12 @@ class Get
if (ComponentbuilderHelper::checkArray($alias_fields))
{
// load the field names
$this->customAliasBuilder[$view->name_single_code] = (array) array_map(
$this->customAliasBuilder[$view->name_single_code]
= (array) array_map(
function ($field) use (&$view) {
return $this->getFieldName($field, $view->name_list_code);
return $this->getFieldName(
$field, $view->name_list_code
);
}, $alias_fields
);
}
@ -3182,7 +3208,9 @@ class Get
{
// build and add the SQL dump
$this->customScriptBuilder['sql'][$view->name_single_code]
= $this->buildSqlDump($view->tables, $view->name_single_code, $id);
= $this->buildSqlDump(
$view->tables, $view->name_single_code, $id
);
unset($view->tables);
}
elseif ($view->source == 2 && isset($view->sql))
@ -6447,6 +6475,7 @@ class Get
}
}
}
return false;
}
@ -8797,7 +8826,7 @@ class Get
$addScriptTypes = array('install', 'update',
'uninstall');
// the next are php placeholders
$guiMapper['type'] = 'php';
$guiMapper['type'] = 'php';
foreach ($addScriptMethods as $scriptMethod)
{
foreach ($addScriptTypes as $scriptType)
@ -9279,7 +9308,7 @@ class Get
);
// set description
$this->placeholders[$this->hhh . 'DESCRIPTION' . $this->hhh]
= $plugin->description;
= $plugin->description;
$plugin->description = '<p>' . $plugin->description
. '</p>';
}
@ -9765,13 +9794,16 @@ class Get
);
unset(
$this->placeholders[$this->hhh . 'VERSION'
. $this->hhh]);
. $this->hhh]
);
unset(
$this->placeholders[$this->hhh . 'DESCRIPTION'
. $this->hhh]);
. $this->hhh]
);
unset(
$this->placeholders[$this->hhh . 'PLUGIN_NAME'
. $this->hhh]);
. $this->hhh]
);
$this->joomlaPlugins[$id] = $plugin;
@ -10432,19 +10464,26 @@ class Get
if (strpos($script, 'LOCKBASE64((((') !== false)
{
// get the strings
$values = ComponentbuilderHelper::getAllBetween($script, 'LOCKBASE64((((', '))))');
$values = ComponentbuilderHelper::getAllBetween(
$script, 'LOCKBASE64((((', '))))'
);
$locker = array();
// convert them
foreach($values as $value)
foreach ($values as $value)
{
$locker['LOCKBASE64((((' . $value . '))))'] = "base64_decode( preg_replace('/\s+/', ''," .
$locker['LOCKBASE64((((' . $value . '))))']
= "base64_decode( preg_replace('/\s+/', ''," .
PHP_EOL . $this->_t(2) . "'" .
wordwrap(base64_encode($value), 64, PHP_EOL . $this->_t(2), true) .
wordwrap(
base64_encode($value), 64, PHP_EOL . $this->_t(2), true
) .
"'))";
}
// update the script
return $this->setPlaceholders($script, $locker);
}
return $script;
}

View File

@ -2634,11 +2634,13 @@ class Structure extends Get
{
// get the fields ids
$ids = array_map(
'trim', explode(
',', ComponentbuilderHelper::getBetween(
$multi_field['settings']->xml, 'fields="', '"'
)
)
'trim',
explode(
',',
ComponentbuilderHelper::getBetween(
$multi_field['settings']->xml, 'fields="', '"'
)
)
);
if (ComponentbuilderHelper::checkArray($ids))
{

View File

@ -5003,16 +5003,28 @@ class Fields extends Structure
&& $typeName != 'repeatable'
&& $typeName != 'subform'))
{
$this->filterBuilder[$nameListCode][] = array('type' => $typeName,
'multi' => $field['filter'],
'code' => $name,
'lang' => $listLangName,
'database' => $nameSingleCode,
'function' => ComponentbuilderHelper::safeString(
$name, 'F'
),
'custom' => $custom,
'options' => $options);
// this pains me... but to avoid collusion
$filter_type_code = ComponentbuilderHelper::safeString(
$name . $field['filter'] . $typeName
);
$filter_type_code = preg_replace('/_+/', '', $filter_type_code);
$filter_function_name = ComponentbuilderHelper::safeString(
$name, 'F'
);
// add the filter details
$this->filterBuilder[$nameListCode][] = array(
'id' => (int) $field['field'],
'type' => $typeName,
'multi' => $field['filter'],
'code' => $name,
'label' => $langLabel,
'lang' => $listLangName,
'database' => $nameSingleCode,
'function' => $filter_function_name,
'custom' => $custom,
'options' => $options,
'filter_type' => $filter_type_code
);
}
// build the layout
@ -5148,7 +5160,7 @@ class Fields extends Structure
}
// start loading the field type
$this->fileContentDynamic['customfield_' . $data['type']] = array();
// JPREFIX <<DYNAMIC>>>
// JPREFIX <<<DYNAMIC>>>
$this->fileContentDynamic['customfield_' . $data['type']][$this->hhh
. 'JPREFIX' . $this->hhh]
= $jprefix;
@ -5414,6 +5426,275 @@ class Fields extends Structure
}
}
/**
* This is just to get the code.
* Don't use this to build the field
*
* @param array $custom The field complete data set
*
* @return array with the code
*
*/
public function getCustomFieldCode($custom)
{
// the code bucket
$code_bucket = array(
'JFORM_TYPE_HEADER' => '',
'JFORM_TYPE_PHP' => ''
);
// set tab and break replacements
$tabBreak = array(
'\t' => $this->_t(1),
'\n' => PHP_EOL
);
// load the other PHP options
foreach (ComponentbuilderHelper::$phpFieldArray as $x)
{
// reset the php bucket
$phpBucket = '';
// only set if available
if (isset($custom['php' . $x])
&& ComponentbuilderHelper::checkArray(
$custom['php' . $x]
))
{
foreach ($custom['php' . $x] as $line => $code)
{
if (ComponentbuilderHelper::checkString($code))
{
$phpBucket .= PHP_EOL . $this->setPlaceholders(
$code, $tabBreak
);
}
}
// check if this is header text
if ('HEADER' === $x)
{
$code_bucket['JFORM_TYPE_HEADER']
.= PHP_EOL . $phpBucket;
}
else
{
// JFORM_TYPE_PHP <<<DYNAMIC>>>
$code_bucket['JFORM_TYPE_PHP']
.= PHP_EOL . $phpBucket;
}
}
}
return $code_bucket;
}
/**
* set the Filter Field set of a view
*
* @param string $nameSingleCode The single view name
* @param string $nameListCode The list view name
*
* @return string The fields set in xml
*
*/
public function setFieldFilterSet(&$nameSingleCode, &$nameListCode)
{
// check if this is the above/new filter option
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 2
&& isset($this->filterBuilder[$nameListCode])
&& ComponentbuilderHelper::checkArray(
$this->filterBuilder[$nameListCode]
))
{
// we first create the file
$target = array('admin' => 'filter_' . $nameListCode);
$this->buildDynamique(
$target, 'filter'
);
// now build the XML
$field_filter_sets = array();
$field_filter_sets[] = $this->_t(1) . '<fields name="filter">';
// we first add the search
$field_filter_sets[] = $this->_t(2) . '<field';
$field_filter_sets[] = $this->_t(3) . 'type="text"';
$field_filter_sets[] = $this->_t(3) . 'name="search"';
$field_filter_sets[] = $this->_t(3) . 'inputmode="search"';
$field_filter_sets[] = $this->_t(3)
. 'label="COM_CONTENT_FILTER_SEARCH_LABEL"';
$field_filter_sets[] = $this->_t(3)
. 'description="COM_CONTENT_FILTER_SEARCH_DESC"';
$field_filter_sets[] = $this->_t(3) . 'hint="JSEARCH_FILTER"';
$field_filter_sets[] = $this->_t(2) . '/>';
// add the published filter if published is not set
if (!isset($this->fieldsNames[$nameSingleCode]['published']))
{
$field_filter_sets[] = $this->_t(2) . '<field';
$field_filter_sets[] = $this->_t(3) . 'type="status"';
$field_filter_sets[] = $this->_t(3) . 'name="published"';
$field_filter_sets[] = $this->_t(3)
. 'label="COM_CONTENT_FILTER_PUBLISHED"';
$field_filter_sets[] = $this->_t(3)
. 'description="COM_CONTENT_FILTER_PUBLISHED_DESC"';
$field_filter_sets[] = $this->_t(3)
. 'onchange="this.form.submit();"';
$field_filter_sets[] = $this->_t(2) . '>';
$field_filter_sets[] = $this->_t(3)
. '<option value="">JOPTION_SELECT_PUBLISHED</option>';
$field_filter_sets[] = $this->_t(2) . '</field>';
}
// add the access filter if this view has access
// and if access manually is not set
if (isset($this->accessBuilder[$nameSingleCode])
&& ComponentbuilderHelper::checkString(
$this->accessBuilder[$nameSingleCode]
)
&& !isset($this->fieldsNames[$nameSingleCode]['access']))
{
$field_filter_sets[] = $this->_t(2) . '<field';
$field_filter_sets[] = $this->_t(3) . 'type="accesslevel"';
$field_filter_sets[] = $this->_t(3) . 'name="access"';
$field_filter_sets[] = $this->_t(3)
. 'label="JOPTION_FILTER_ACCESS"';
$field_filter_sets[] = $this->_t(3)
. 'description="JOPTION_FILTER_ACCESS_DESC"';
$field_filter_sets[] = $this->_t(3) . 'multiple="true"';
$field_filter_sets[] = $this->_t(3)
. 'class="multipleAccessLevels"';
$field_filter_sets[] = $this->_t(3)
. 'onchange="this.form.submit();"';
$field_filter_sets[] = $this->_t(2) . '/>';
}
// now add the dynamic fields
foreach ($this->filterBuilder[$nameListCode] as $r => &$filter)
{
if ($filter['type'] != 'category')
{
$field_filter_sets[] = $this->_t(2) . '<field';
// if this is a custom field
if (ComponentbuilderHelper::checkArray(
$filter['custom']
))
{
// we use the field type from the custom field
$field_filter_sets[] = $this->_t(3) . 'type="'
. $filter['type'] . '"';
// set css classname of this field
$filter['class'] = ucfirst($filter['type']);
}
else
{
// we use the filter field type that was build
$field_filter_sets[] = $this->_t(3) . 'type="'
. $filter['filter_type'] . '"';
// set css classname of this field
$filter['class'] = ucfirst($filter['filter_type']);
}
$field_filter_sets[] = $this->_t(3) . 'name="'
. $filter['code'] . '"';
$field_filter_sets[] = $this->_t(3) . 'label="'
. $filter['label'] . '"';
// if this is a multi field
if ($filter['multi'] == 2)
{
$field_filter_sets[] = $this->_t(3) . 'class="multiple'
. $filter['class'] . '"';
$field_filter_sets[] = $this->_t(3) . 'multiple="true"';
}
else
{
$field_filter_sets[] = $this->_t(3)
. 'multiple="false"';
}
$field_filter_sets[] = $this->_t(3)
. 'onchange="this.form.submit();"';
$field_filter_sets[] = $this->_t(2) . '/>';
}
}
$field_filter_sets[] = $this->_t(2)
. '<input type="hidden" name="form_submited" value="1"/>';
$field_filter_sets[] = $this->_t(1) . '</fields>';
// now update the file
return implode(PHP_EOL, $field_filter_sets);
}
return '';
}
/**
* set the Filter List set of a view
*
* @param string $nameSingleCode The single view name
* @param string $nameListCode The list view name
*
* @return string The fields set in xml
*
*/
public function setFieldFilterListSet(&$nameSingleCode, &$nameListCode)
{
// soon we will add this TODO
return '';
}
/**
* set Custom Field for Filter
*
* @param string $getOptions The get options php string/code
* @param array $filter The filter details
*
* @return void
*
*/
public function setFilterFieldFile($getOptions, $filter)
{
// make sure it is not already been build
if (!isset(
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']]
)
|| !ComponentbuilderHelper::checkArray(
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']]
)
)
{
// start loading the field type
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']]
= array();
// JPREFIX <<DYNAMIC>>>
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']][$this->hhh
. 'JPREFIX' . $this->hhh]
= 'J';
// Type <<<DYNAMIC>>>
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']][$this->hhh
. 'Type' . $this->hhh]
= ComponentbuilderHelper::safeString(
$filter['filter_type'], 'F'
);
// type <<<DYNAMIC>>>
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']][$this->hhh
. 'type' . $this->hhh]
= ComponentbuilderHelper::safeString($filter['filter_type']);
// JFORM_GETOPTIONS_PHP <<<DYNAMIC>>>
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']][$this->hhh . 'JFORM_GETOPTIONS_PHP'
. $this->hhh]
= $getOptions;
// ADD_BUTTON <<<DYNAMIC>>>
$this->fileContentDynamic['customfilterfield_'
. $filter['filter_type']][$this->hhh . 'ADD_BUTTON' . $this->hhh]
= '';
// now build the custom filter field type file
$target = array('admin' => 'customfilterfield');
$this->buildDynamique(
$target, 'fieldlist',
$filter['filter_type']
);
}
}
/**
* set Add Button To List Field (getInput tweak)
*

View File

@ -14596,7 +14596,7 @@ class Interpretation extends Fields
*
* @return string
*/
public function setGetItemsModelMethod($nameSingleCode, $nameListCode,
public function setGetItemsModelMethod(&$nameSingleCode, &$nameListCode,
$config
= array('functionName' => 'getExportData',
'docDesc' => 'Method to get list export data.',
@ -15155,7 +15155,7 @@ class Interpretation extends Fields
. $this->hhh];
}
public function setListQuery($nameSingleCode, $nameListCode)
public function setListQuery(&$nameSingleCode, &$nameListCode)
{
// check if this view has category added
if (isset($this->categoryBuilder[$nameListCode])
@ -17420,31 +17420,41 @@ class Interpretation extends Fields
* @return string The php to place in view.html.php
*
*/
public function setFilterFunctions($nameSingleCode, $nameListCode)
public function setFilterFieldHelper(&$nameSingleCode, &$nameListCode)
{
// the old filter type uses these functions
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 1
&& isset($this->filterBuilder[$nameListCode])
if (isset($this->filterBuilder[$nameListCode])
&& ComponentbuilderHelper::checkArray(
$this->filterBuilder[$nameListCode]
))
{
// set the function or file path
$funtion_path = true;
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 2)
{
$funtion_path = false;
}
$function = array();
// set component name
$component = $this->componentCodeName;
$Component = ucfirst($component);
foreach ($this->filterBuilder[$nameListCode] as $filter)
{
if ($filter['type'] != 'category'
&& ComponentbuilderHelper::checkArray($filter['custom'])
&& $filter['custom']['extends'] === 'user')
{
$function[] = PHP_EOL . $this->_t(1)
. "protected function getThe" . $filter['function']
. ComponentbuilderHelper::safeString(
$filter['custom']['text'], 'F'
) . "Selections()";
$function[] = $this->_t(1) . "{";
// add if this is a function path
if ($funtion_path)
{
$function[] = PHP_EOL . $this->_t(1)
. "protected function getThe" . $filter['function']
. ComponentbuilderHelper::safeString(
$filter['custom']['text'], 'F'
) . "Selections()";
$function[] = $this->_t(1) . "{";
}
$function[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
. " Get a db connection.";
$function[] = $this->_t(2) . "\$db = JFactory::getDbo();";
@ -17498,7 +17508,11 @@ class Interpretation extends Fields
$function[] = $this->_t(3) . "return \$filter;";
$function[] = $this->_t(2) . "}";
$function[] = $this->_t(2) . "return false;";
$function[] = $this->_t(1) . "}";
// add if this is a function path
if ($funtion_path)
{
$function[] = $this->_t(1) . "}";
}
/* else
{
@ -17554,10 +17568,14 @@ class Interpretation extends Fields
{
$translation = true;
}
$function[] = PHP_EOL . $this->_t(1)
. "protected function getThe" . $filter['function']
. "Selections()";
$function[] = $this->_t(1) . "{";
// add if this is a function path
if ($funtion_path)
{
$function[] = PHP_EOL . $this->_t(1)
. "protected function getThe" . $filter['function']
. "Selections()";
$function[] = $this->_t(1) . "{";
}
$function[] = $this->_t(2) . "//" . $this->setLine(__LINE__)
. " Get a db connection.";
$function[] = $this->_t(2) . "\$db = JFactory::getDbo();";
@ -17620,7 +17638,7 @@ class Interpretation extends Fields
$function[] = $this->_t(2) . "{";
// check if translated value is used
if ($translation)
if ($funtion_path && $translation)
{
$function[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
@ -17628,6 +17646,15 @@ class Interpretation extends Fields
$function[] = $this->_t(3)
. "\$model = \$this->getModel();";
}
elseif ($translation)
{
$function[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
) . " get " . $nameListCode . "model";
$function[] = $this->_t(3)
. "\$model = " . $Component . "Helper::getModel('"
. $nameListCode . "');";
}
// check if usergroup as we change to an object query
if ($filter['type'] !== 'usergroup')
{
@ -17698,10 +17725,70 @@ class Interpretation extends Fields
$function[] = $this->_t(3) . "return \$_filter;";
$function[] = $this->_t(2) . "}";
$function[] = $this->_t(2) . "return false;";
$function[] = $this->_t(1) . "}";
// add if this is a function path
if ($funtion_path)
{
$function[] = $this->_t(1) . "}";
}
}
// we check if this is a multi field
// and if there is a blank option
// and give a notice that this will cause an issue
elseif (!$funtion_path && $filter['type'] != 'category'
&& $filter['multi'] == 2
&& ComponentbuilderHelper::checkArray($filter['custom']))
{
//var_dump($filter);
//jexit();
// get the field code
$field_code = $this->getCustomFieldCode(
$filter['custom']
)['JFORM_TYPE_PHP'];
// check for the [JHtml::_('select.option', '',] code
if (strpos($field_code, "JHtml::_('select.option', '',")
!== false
&& strpos($field_code, '($this->multiple === false)')
=== false)
{
// for now we just give an error message (don't fix it)
$this->app->enqueueMessage(
JText::_('<hr /><h3>Multi Filter Error</h3>'),
'Error'
);
$field_url
= "index.php?option=com_componentbuilder&view=fields&task=field.edit&id="
. $filter['id'];
$field_fix
= "<pre>if (\$this->multiple === false) { // <-- this if statement is needed";
$field_fix .= PHP_EOL . $this->_t(1)
. "\$options[] = JHtml::_('select.option', '', 'Select an option'); // <-- the empty option";
$field_fix .= PHP_EOL . "}</pre>";
$this->app->enqueueMessage(
JText::sprintf(
'We detected that you have an empty option in a <a href="%s" target="_blank">custom field (%s)</a> that is used in a multi filter.<br />This will cause a problem, you will need to add the following code to it.<br />%s',
$field_url,
$filter['code'],
$field_fix
), 'Error'
);
}
}
// divert the code to a file if this is not a funtion path
if (!$funtion_path
&& ComponentbuilderHelper::checkArray(
$function
))
{
// set the filter file
$this->setFilterFieldFile(
implode(PHP_EOL, $function), $filter
);
// clear the filter out
$function = array();
}
}
if (ComponentbuilderHelper::checkArray($function))
// if this is a function path, return the function if set
if ($funtion_path && ComponentbuilderHelper::checkArray($function))
{
// return the function
return PHP_EOL . implode(PHP_EOL, $function);
@ -17758,15 +17845,26 @@ class Interpretation extends Fields
}
/**
* build other filter loading scripts
* build sidebar filter loading scripts
*
* @param string $nameListCode The list view name
* @param string $nameSingleCode The single view name
* @param string $nameListCode The list view name
*
* @return string The php to place in view.html.php
*
*/
public function setOtherFilter(&$nameListCode)
{
public function setFilterFieldSidebarDisplayHelper(&$nameSingleCode,
&$nameListCode
) {
// start the filter bucket
$fieldFilters = array();
// add the default filter
$this->setDefaultSidebarFilterHelper(
$fieldFilters, $nameSingleCode, $nameListCode
);
// add the category filter stuff
$this->setCategorySidebarFilterHelper($fieldFilters, $nameListCode);
// check if filter fields are added
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 1
&& isset($this->filterBuilder[$nameListCode])
@ -17775,88 +17873,72 @@ class Interpretation extends Fields
))
{
// get component name
$Component = $this->fileContentStatic[$this->hhh . 'Component'
$Component = $this->fileContentStatic[$this->hhh . 'Component'
. $this->hhh];
$otherFilter = array();
// load the rest of the filters
foreach ($this->filterBuilder[$nameListCode] as $filter)
{
if ($filter['type'] != 'category'
&& ComponentbuilderHelper::checkArray($filter['custom'])
&& $filter['custom']['extends'] !== 'user')
{
$CodeName = ComponentbuilderHelper::safeString(
$CodeName = ComponentbuilderHelper::safeString(
$filter['code'] . ' ' . $filter['custom']['text'], 'W'
);
$codeName = $filter['code']
$codeName = $filter['code']
. ComponentbuilderHelper::safeString(
$filter['custom']['text'], 'F'
);
$type = ComponentbuilderHelper::safeString(
$type = ComponentbuilderHelper::safeString(
$filter['custom']['type'], 'F'
);
$otherFilter[] = PHP_EOL . $this->_t(2) . "//"
$fieldFilters[] = PHP_EOL . $this->_t(2) . "//"
. $this->setLine(__LINE__) . " Set " . $CodeName
. " Selection";
$otherFilter[] = $this->_t(2) . "\$this->" . $codeName
$fieldFilters[] = $this->_t(2) . "\$this->" . $codeName
. "Options = JFormHelper::loadFieldType('" . $type
. "')->options;";
$otherFilter[] = $this->_t(2) . "//" . $this->setLine(
$fieldFilters[] = $this->_t(2) . "//" . $this->setLine(
__LINE__
) . " We do some sanitation for " . $CodeName
. " filter";
$otherFilter[] = $this->_t(2) . "if (" . $Component
$fieldFilters[] = $this->_t(2) . "if (" . $Component
. "Helper::checkArray(\$this->" . $codeName
. "Options) &&";
$otherFilter[] = $this->_t(3) . "isset(\$this->" . $codeName
$fieldFilters[] = $this->_t(3) . "isset(\$this->"
. $codeName
. "Options[0]->value) &&";
$otherFilter[] = $this->_t(3) . "!" . $Component
$fieldFilters[] = $this->_t(3) . "!" . $Component
. "Helper::checkString(\$this->" . $codeName
. "Options[0]->value))";
$otherFilter[] = $this->_t(2) . "{";
$otherFilter[] = $this->_t(3) . "unset(\$this->" . $codeName
$fieldFilters[] = $this->_t(2) . "{";
$fieldFilters[] = $this->_t(3) . "unset(\$this->"
. $codeName
. "Options[0]);";
$otherFilter[] = $this->_t(2) . "}";
$otherFilter[] = $this->_t(2) . "//" . $this->setLine(
$fieldFilters[] = $this->_t(2) . "}";
$fieldFilters[] = $this->_t(2) . "//" . $this->setLine(
__LINE__
) . " Only load " . $CodeName
. " filter if it has values";
$otherFilter[] = $this->_t(2) . "if (" . $Component
$fieldFilters[] = $this->_t(2) . "if (" . $Component
. "Helper::checkArray(\$this->" . $codeName
. "Options))";
$otherFilter[] = $this->_t(2) . "{";
$otherFilter[] = $this->_t(3) . "//" . $this->setLine(
$fieldFilters[] = $this->_t(2) . "{";
$fieldFilters[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
) . " " . $CodeName . " Filter";
$otherFilter[] = $this->_t(3) . "JHtmlSidebar::addFilter(";
$otherFilter[] = $this->_t(4) . "'- Select '.JText:"
$fieldFilters[] = $this->_t(3) . "JHtmlSidebar::addFilter(";
$fieldFilters[] = $this->_t(4) . "'- Select '.JText:"
. ":_('" . $filter['lang'] . "').' -',";
$otherFilter[] = $this->_t(4) . "'filter_" . $filter['code']
$fieldFilters[] = $this->_t(4) . "'filter_"
. $filter['code']
. "',";
$otherFilter[] = $this->_t(4)
$fieldFilters[] = $this->_t(4)
. "JHtml::_('select.options', \$this->" . $codeName
. "Options, 'value', 'text', \$this->state->get('filter."
. $filter['code'] . "'))";
$otherFilter[] = $this->_t(3) . ");";
$otherFilter[] = PHP_EOL . $this->_t(3)
. "if (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
$otherFilter[] = $this->_t(3) . "{";
$otherFilter[] = $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " " . $CodeName . " Batch Selection";
$otherFilter[] = $this->_t(4)
. "JHtmlBatch_::addListSelection(";
$otherFilter[] = $this->_t(5) . "'- Keep Original '.JText:"
. ":_('" . $filter['lang'] . "').' -',";
$otherFilter[] = $this->_t(5) . "'batch[" . $filter['code']
. "]',";
$otherFilter[] = $this->_t(5)
. "JHtml::_('select.options', \$this->" . $codeName
. "Options, 'value', 'text')";
$otherFilter[] = $this->_t(4) . ");";
$otherFilter[] = $this->_t(3) . "}";
$otherFilter[] = $this->_t(2) . "}";
$fieldFilters[] = $this->_t(3) . ");";
$fieldFilters[] = $this->_t(2) . "}";
}
elseif ($filter['type'] != 'category')
{
@ -17877,82 +17959,384 @@ class Interpretation extends Fields
$functionName = "\$this->getThe" . $filter['function']
. "Selections();";
}
$otherFilter[] = PHP_EOL . $this->_t(2) . "//"
$fieldFilters[] = PHP_EOL . $this->_t(2) . "//"
. $this->setLine(__LINE__) . " Set " . $Codename
. " Selection";
$otherFilter[] = $this->_t(2) . "\$this->" . $filter['code']
$fieldFilters[] = $this->_t(2) . "\$this->"
. $filter['code']
. "Options = " . $functionName;
$otherFilter[] = $this->_t(2) . "//" . $this->setLine(
$fieldFilters[] = $this->_t(2) . "//" . $this->setLine(
__LINE__
) . " We do some sanitation for " . $Codename
. " filter";
$otherFilter[] = $this->_t(2) . "if (" . $Component
$fieldFilters[] = $this->_t(2) . "if (" . $Component
. "Helper::checkArray(\$this->" . $filter['code']
. "Options) &&";
$otherFilter[] = $this->_t(3) . "isset(\$this->"
$fieldFilters[] = $this->_t(3) . "isset(\$this->"
. $filter['code'] . "Options[0]->value) &&";
$otherFilter[] = $this->_t(3) . "!" . $Component
$fieldFilters[] = $this->_t(3) . "!" . $Component
. "Helper::checkString(\$this->" . $filter['code']
. "Options[0]->value))";
$otherFilter[] = $this->_t(2) . "{";
$otherFilter[] = $this->_t(3) . "unset(\$this->"
$fieldFilters[] = $this->_t(2) . "{";
$fieldFilters[] = $this->_t(3) . "unset(\$this->"
. $filter['code'] . "Options[0]);";
$otherFilter[] = $this->_t(2) . "}";
$otherFilter[] = $this->_t(2) . "//" . $this->setLine(
$fieldFilters[] = $this->_t(2) . "}";
$fieldFilters[] = $this->_t(2) . "//" . $this->setLine(
__LINE__
) . " Only load " . $Codename
. " filter if it has values";
$otherFilter[] = $this->_t(2) . "if (" . $Component
$fieldFilters[] = $this->_t(2) . "if (" . $Component
. "Helper::checkArray(\$this->" . $filter['code']
. "Options))";
$otherFilter[] = $this->_t(2) . "{";
$otherFilter[] = $this->_t(3) . "//" . $this->setLine(
$fieldFilters[] = $this->_t(2) . "{";
$fieldFilters[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
) . " " . $Codename . " Filter";
$otherFilter[] = $this->_t(3) . "JHtmlSidebar::addFilter(";
$otherFilter[] = $this->_t(4) . "'- Select '.JText:"
$fieldFilters[] = $this->_t(3) . "JHtmlSidebar::addFilter(";
$fieldFilters[] = $this->_t(4) . "'- Select '.JText:"
. ":_('" . $filter['lang'] . "').' -',";
$otherFilter[] = $this->_t(4) . "'filter_" . $filter['code']
$fieldFilters[] = $this->_t(4) . "'filter_"
. $filter['code']
. "',";
$otherFilter[] = $this->_t(4)
$fieldFilters[] = $this->_t(4)
. "JHtml::_('select.options', \$this->"
. $filter['code']
. "Options, 'value', 'text', \$this->state->get('filter."
. $filter['code'] . "'))";
$otherFilter[] = $this->_t(3) . ");";
$fieldFilters[] = $this->_t(3) . ");";
$otherFilter[] = PHP_EOL . $this->_t(3)
. "if (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
$otherFilter[] = $this->_t(3) . "{";
$otherFilter[] = $this->_t(4) . "//" . $this->setLine(
__LINE__
) . " " . $Codename . " Batch Selection";
$otherFilter[] = $this->_t(4)
. "JHtmlBatch_::addListSelection(";
$otherFilter[] = $this->_t(5) . "'- Keep Original '.JText:"
. ":_('" . $filter['lang'] . "').' -',";
$otherFilter[] = $this->_t(5) . "'batch[" . $filter['code']
. "]',";
$otherFilter[] = $this->_t(5)
. "JHtml::_('select.options', \$this->"
. $filter['code'] . "Options, 'value', 'text')";
$otherFilter[] = $this->_t(4) . ");";
$otherFilter[] = $this->_t(3) . "}";
$otherFilter[] = $this->_t(2) . "}";
$fieldFilters[] = $this->_t(2) . "}";
}
}
if (ComponentbuilderHelper::checkArray($otherFilter))
{
// return the filter
return PHP_EOL . implode(PHP_EOL, $otherFilter);
}
}
// did we find filters
if (ComponentbuilderHelper::checkArray($fieldFilters))
{
// return the filter
return PHP_EOL . implode(PHP_EOL, $fieldFilters);
}
return '';
}
public function setCategoryFilter($nameListCode)
/**
* add default filter helper
*
* @param array $filter The batch code array
* @param string $nameSingleCode The single view name
* @param string $nameListCode The list view name
*
* @return void
*
*/
protected function setDefaultSidebarFilterHelper(&$filter, &$nameSingleCode,
&$nameListCode
) {
// add the default filters if we are on the old filter paths
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 1)
{
// set batch
$filter[] = PHP_EOL . $this->_t(2)
. "//" . $this->setLine(__LINE__)
. " Only load publish filter if state change is allowed";
$filter[] = $this->_t(2)
. "if (\$this->canState)";
$filter[] = $this->_t(2) . "{";
$filter[] = $this->_t(3) . "JHtmlSidebar::addFilter(";
$filter[] = $this->_t(4) . "JText:"
. ":_('JOPTION_SELECT_PUBLISHED'),";
$filter[] = $this->_t(4) . "'filter_published',";
$filter[] = $this->_t(4)
. "JHtml::_('select.options', JHtml::_('jgrid.publishedOptions'), 'value', 'text', \$this->state->get('filter.published'), true)";
$filter[] = $this->_t(3) . ");";
$filter[] = $this->_t(2) . "}";
// check if view has access
if (isset($this->accessBuilder[$nameSingleCode])
&& ComponentbuilderHelper::checkString(
$this->accessBuilder[$nameSingleCode]
)
&& !isset($this->fieldsNames[$nameSingleCode]['access']))
{
$filter[] = PHP_EOL . $this->_t(2) . "JHtmlSidebar::addFilter(";
$filter[] = $this->_t(3) . "JText:"
. ":_('JOPTION_SELECT_ACCESS'),";
$filter[] = $this->_t(3) . "'filter_access',";
$filter[] = $this->_t(3)
. "JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text', \$this->state->get('filter.access'))";
$filter[] = $this->_t(2) . ");";
}
}
}
/**
* build category sidebar display filter helper
*
* @param array $filter The filter code array
* @param string $nameListCode The list view name
*
* @return void
*
*/
protected function setCategorySidebarFilterHelper(&$filter, &$nameListCode)
{
// add the category filter if we are on the old filter paths
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 1
&& isset($this->categoryBuilder[$nameListCode])
&& ComponentbuilderHelper::checkArray(
$this->categoryBuilder[$nameListCode]
)
&& isset($this->categoryBuilder[$nameListCode]['extension']))
{
// set filter
$filter[] = PHP_EOL . $this->_t(2) . "//"
. $this->setLine(__LINE__) . " Category Filter.";
$filter[] = $this->_t(2) . "JHtmlSidebar::addFilter(";
$filter[] = $this->_t(3) . "JText:"
. ":_('JOPTION_SELECT_CATEGORY'),";
$filter[] = $this->_t(3) . "'filter_category_id',";
$filter[] = $this->_t(3)
. "JHtml::_('select.options', JHtml::_('category.options', '"
. $this->categoryBuilder[$nameListCode]['extension']
. "'), 'value', 'text', \$this->state->get('filter.category_id'))";
$filter[] = $this->_t(2) . ");";
}
}
/**
* build batch loading helper scripts
*
* @param string $nameSingleCode The single view name
* @param string $nameListCode The list view name
*
* @return string The php to place in view.html.php
*
*/
public function setBatchDisplayHelper(&$nameSingleCode, &$nameListCode)
{
// start the batch bucket
$fieldBatch = array();
// add the default batch
$this->setDefaultBatchHelper($fieldBatch, $nameSingleCode);
// add the category filter stuff
$this->setCategoryBatchHelper($fieldBatch, $nameListCode);
// check if we have other batch options to add
if (isset($this->filterBuilder[$nameListCode])
&& ComponentbuilderHelper::checkArray(
$this->filterBuilder[$nameListCode]
))
{
// check if we should add some help to get the values
$get_values = false;
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 2)
{
// since the old path is not used, we need to add those values here
$get_values = true;
}
// get component name
$Component = $this->fileContentStatic[$this->hhh . 'Component'
. $this->hhh];
// load the rest of the batch options
foreach ($this->filterBuilder[$nameListCode] as $filter)
{
if ($filter['type'] != 'category'
&& ComponentbuilderHelper::checkArray($filter['custom'])
&& $filter['custom']['extends'] !== 'user')
{
$CodeName = ComponentbuilderHelper::safeString(
$filter['code'] . ' ' . $filter['custom']['text'], 'W'
);
$codeName = $filter['code']
. ComponentbuilderHelper::safeString(
$filter['custom']['text'], 'F'
);
$fieldBatch[] = PHP_EOL . $this->_t(2)
. "//" . $this->setLine(__LINE__)
. " Only load " . $CodeName
. " batch if create, edit, and batch is allowed";
$fieldBatch[] = $this->_t(2)
. "if (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
$fieldBatch[] = $this->_t(2) . "{";
// add the get values here
if ($get_values)
{
$type = ComponentbuilderHelper::safeString(
$filter['custom']['type'], 'F'
);
$fieldBatch[] = $this->_t(3) . "//"
. $this->setLine(__LINE__) . " Set " . $CodeName
. " Selection";
$fieldBatch[] = $this->_t(3) . "\$this->" . $codeName
. "Options = JFormHelper::loadFieldType('" . $type
. "')->options;";
$fieldBatch[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
) . " We do some sanitation for " . $CodeName
. " filter";
$fieldBatch[] = $this->_t(3) . "if (" . $Component
. "Helper::checkArray(\$this->" . $codeName
. "Options) &&";
$fieldBatch[] = $this->_t(4) . "isset(\$this->"
. $codeName
. "Options[0]->value) &&";
$fieldBatch[] = $this->_t(4) . "!" . $Component
. "Helper::checkString(\$this->" . $codeName
. "Options[0]->value))";
$fieldBatch[] = $this->_t(3) . "{";
$fieldBatch[] = $this->_t(4) . "unset(\$this->"
. $codeName
. "Options[0]);";
$fieldBatch[] = $this->_t(3) . "}";
}
$fieldBatch[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
) . " " . $CodeName . " Batch Selection";
$fieldBatch[] = $this->_t(3)
. "JHtmlBatch_::addListSelection(";
$fieldBatch[] = $this->_t(4) . "'- Keep Original '.JText:"
. ":_('" . $filter['lang'] . "').' -',";
$fieldBatch[] = $this->_t(4) . "'batch[" . $filter['code']
. "]',";
$fieldBatch[] = $this->_t(4)
. "JHtml::_('select.options', \$this->" . $codeName
. "Options, 'value', 'text')";
$fieldBatch[] = $this->_t(3) . ");";
$fieldBatch[] = $this->_t(2) . "}";
}
elseif ($filter['type'] != 'category')
{
$CodeName = ComponentbuilderHelper::safeString(
$filter['code'], 'W'
);
$fieldBatch[] = PHP_EOL . $this->_t(2)
. "//" . $this->setLine(__LINE__)
. " Only load " . $CodeName
. " batch if create, edit, and batch is allowed";
$fieldBatch[] = $this->_t(2)
. "if (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
$fieldBatch[] = $this->_t(2) . "{";
// add the get values here
if ($get_values)
{
$fieldBatch[] = $this->_t(3) . "//"
. $this->setLine(__LINE__) . " Set " . $CodeName
. " Selection";
$fieldBatch[] = $this->_t(3) . "\$this->"
. $filter['code']
. "Options = JFormHelper::loadFieldType('"
. $filter['filter_type']
. "')->options;";
$fieldBatch[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
) . " We do some sanitation for " . $CodeName
. " filter";
$fieldBatch[] = $this->_t(3) . "if (" . $Component
. "Helper::checkArray(\$this->" . $filter['code']
. "Options) &&";
$fieldBatch[] = $this->_t(4) . "isset(\$this->"
. $filter['code'] . "Options[0]->value) &&";
$fieldBatch[] = $this->_t(4) . "!" . $Component
. "Helper::checkString(\$this->" . $filter['code']
. "Options[0]->value))";
$fieldBatch[] = $this->_t(3) . "{";
$fieldBatch[] = $this->_t(4) . "unset(\$this->"
. $filter['code'] . "Options[0]);";
$fieldBatch[] = $this->_t(3) . "}";
}
$fieldBatch[] = $this->_t(3) . "//" . $this->setLine(
__LINE__
) . " " . $CodeName . " Batch Selection";
$fieldBatch[] = $this->_t(3)
. "JHtmlBatch_::addListSelection(";
$fieldBatch[] = $this->_t(4) . "'- Keep Original '.JText:"
. ":_('" . $filter['lang'] . "').' -',";
$fieldBatch[] = $this->_t(4) . "'batch[" . $filter['code']
. "]',";
$fieldBatch[] = $this->_t(4)
. "JHtml::_('select.options', \$this->"
. $filter['code'] . "Options, 'value', 'text')";
$fieldBatch[] = $this->_t(3) . ");";
$fieldBatch[] = $this->_t(2) . "}";
}
}
}
// did we find batch options
if (ComponentbuilderHelper::checkArray($fieldBatch))
{
// return the batch
return PHP_EOL . implode(PHP_EOL, $fieldBatch);
}
return '';
}
/**
* add default batch helper
*
* @param array $batch The batch code array
* @param string $nameSingleCode The single view name
*
* @return void
*
*/
protected function setDefaultBatchHelper(&$batch, &$nameSingleCode)
{
// set component name
$COPMONENT = ComponentbuilderHelper::safeString(
$this->componentData->name_code, 'U'
);
// set batch
$batch[] = PHP_EOL . $this->_t(2)
. "//" . $this->setLine(__LINE__)
. " Only load published batch if state and batch is allowed";
$batch[] = $this->_t(2)
. "if (\$this->canState && \$this->canBatch)";
$batch[] = $this->_t(2) . "{";
$batch[] = $this->_t(3) . "JHtmlBatch_::addListSelection(";
$batch[] = $this->_t(4) . "JText:" . ":_('COM_" . $COPMONENT
. "_KEEP_ORIGINAL_STATE'),";
$batch[] = $this->_t(4) . "'batch[published]',";
$batch[] = $this->_t(4)
. "JHtml::_('select.options', JHtml::_('jgrid.publishedOptions', array('all' => false)), 'value', 'text', '', true)";
$batch[] = $this->_t(3) . ");";
$batch[] = $this->_t(2) . "}";
// check if view has access
if (isset($this->accessBuilder[$nameSingleCode])
&& ComponentbuilderHelper::checkString(
$this->accessBuilder[$nameSingleCode]
)
&& !isset($this->fieldsNames[$nameSingleCode]['access']))
{
$batch[] = PHP_EOL . $this->_t(2)
. "//" . $this->setLine(__LINE__)
. " Only load access batch if create, edit and batch is allowed";
$batch[] = $this->_t(2)
. "if (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
$batch[] = $this->_t(2) . "{";
$batch[] = $this->_t(3) . "JHtmlBatch_::addListSelection(";
$batch[] = $this->_t(4) . "JText:" . ":_('COM_" . $COPMONENT
. "_KEEP_ORIGINAL_ACCESS'),";
$batch[] = $this->_t(4) . "'batch[access]',";
$batch[] = $this->_t(4)
. "JHtml::_('select.options', JHtml::_('access.assetgroups'), 'value', 'text')";
$batch[] = $this->_t(3) . ");";
$batch[] = $this->_t(2) . "}";
}
}
/**
* build category batch helper
*
* @param array $batch The batch code array
* @param string $nameListCode The list view name
*
* @return mixed The php to place in view.html.php
*
*/
protected function setCategoryBatchHelper(&$batch, &$nameListCode)
{
if (isset($this->categoryBuilder[$nameListCode])
&& ComponentbuilderHelper::checkArray(
@ -17965,41 +18349,22 @@ class Interpretation extends Fields
$this->componentData->name_code, 'U'
);
// set filter
$filter = array();
$filter[] = PHP_EOL . PHP_EOL . $this->_t(2) . "//"
. $this->setLine(__LINE__) . " Category Filter.";
$filter[] = $this->_t(2) . "JHtmlSidebar::addFilter(";
$filter[] = $this->_t(3) . "JText:"
. ":_('JOPTION_SELECT_CATEGORY'),";
$filter[] = $this->_t(3) . "'filter_category_id',";
$filter[] = $this->_t(3)
. "JHtml::_('select.options', JHtml::_('category.options', '"
. $this->categoryBuilder[$nameListCode]['extension']
. "'), 'value', 'text', \$this->state->get('filter.category_id'))";
$filter[] = $this->_t(2) . ");";
$filter[] = PHP_EOL . $this->_t(2)
$batch[] = PHP_EOL . $this->_t(2)
. "if (\$this->canBatch && \$this->canCreate && \$this->canEdit)";
$filter[] = $this->_t(2) . "{";
$filter[] = $this->_t(3) . "//" . $this->setLine(__LINE__)
$batch[] = $this->_t(2) . "{";
$batch[] = $this->_t(3) . "//" . $this->setLine(__LINE__)
. " Category Batch selection.";
$filter[] = $this->_t(3) . "JHtmlBatch_::addListSelection(";
$filter[] = $this->_t(4) . "JText:" . ":_('COM_" . $COPMONENT
$batch[] = $this->_t(3) . "JHtmlBatch_::addListSelection(";
$batch[] = $this->_t(4) . "JText:" . ":_('COM_" . $COPMONENT
. "_KEEP_ORIGINAL_CATEGORY'),";
$filter[] = $this->_t(4) . "'batch[category]',";
$filter[] = $this->_t(4)
$batch[] = $this->_t(4) . "'batch[category]',";
$batch[] = $this->_t(4)
. "JHtml::_('select.options', JHtml::_('category.options', '"
. $this->categoryBuilder[$nameListCode]['extension']
. "'), 'value', 'text')";
$filter[] = $this->_t(3) . ");";
$filter[] = $this->_t(2) . "}";
// return the filter
return implode(PHP_EOL, $filter);
$batch[] = $this->_t(3) . ");";
$batch[] = $this->_t(2) . "}";
}
return '';
}
public function setRouterCategoryViews($nameSingleCode, $nameListCode)
@ -19731,7 +20096,7 @@ class Interpretation extends Fields
* @return string The code for the filter fields array
*
*/
public function setFilterFields(&$nameListCode)
public function setFilterFieldsArray(&$nameListCode)
{
// keep track of all fields already added
$donelist = array('id' => true, 'search' => true,
@ -20355,8 +20720,9 @@ class Interpretation extends Fields
protected function getPopulateStateFilterCode(&$filter, $new_filter,
$extra = ''
) {
$state = '';
// add category stuff (may still remove these) TODO
if ($filter['type'] === 'category')
if (isset($filter['type']) && $filter['type'] === 'category')
{
$state .= PHP_EOL . PHP_EOL . $this->_t(2)
. "\$category = \$app->getUserStateFromRequest(\$this->context . '.filter.category', 'filter_category');";
@ -20368,7 +20734,7 @@ class Interpretation extends Fields
. "\$this->setState('filter.category_id', \$categoryId);";
}
// always add the default filter
$state = PHP_EOL . PHP_EOL . $this->_t(2) . "\$" . $filter['code']
$state .= PHP_EOL . PHP_EOL . $this->_t(2) . "\$" . $filter['code']
. " = \$this->getUserStateFromRequest(\$this->context . '.filter."
. $filter['code'] . "', 'filter_" . $filter['code']
. "'" . $extra . ");";
@ -21279,6 +21645,15 @@ class Interpretation extends Fields
return $script . $forEachStart . $fix;
}
/**
* Build headers for the model/view/controller headers
*
* @param string $context The name of the context
* @param string $viewsCodeName The view or views name
*
* @return string The php to place in the header
*
*/
public function setClassHeaders($context, $viewsCodeName)
{
// set the defaults
@ -21291,6 +21666,34 @@ class Interpretation extends Fields
$headers[] = 'use Joomla\String\StringHelper;';
$headers[] = 'use Joomla\Utilities\ArrayHelper;';
break;
case 'admin.view':
case 'custom.admin.view':
case 'custom.admin.views':
case 'site.admin.view':
$headers[]
= 'JHtml::addIncludePath(JPATH_COMPONENT.\'/helpers/html\');';
$headers[] = 'JHtml::_(\'behavior.tooltip\');';
$headers[] = 'JHtml::_(\'behavior.formvalidation\');';
$headers[] = 'JHtml::_(\'formbehavior.chosen\', \'select\');';
$headers[] = 'JHtml::_(\'behavior.keepalive\');';
if ($context === 'site.admin.view')
{
$headers[] = 'JHtml::_(\'behavior.tabstate\');';
$headers[] = 'JHtml::_(\'behavior.calendar\');';
}
break;
case 'admin.views':
$headers[] = 'JHtml::_(\'behavior.tooltip\');';
$headers[] = 'JHtml::_(\'behavior.multiselect\');';
$headers[] = 'JHtml::_(\'dropdown.init\');';
// add more headers if the new filter option is used
$this->setChosenMultiSelectionHeaders($headers, $viewsCodeName);
$headers[] = 'JHtml::_(\'formbehavior.chosen\', \'select\');';
break;
case 'site.view':
case 'site.views':
$headers = array();
break;
default:
$headers[] = 'use Joomla\Utilities\ArrayHelper;';
break;
@ -21301,9 +21704,62 @@ class Interpretation extends Fields
array(&$this->componentContext, &$context, &$viewsCodeName,
&$headers)
);
// check if headers were added
if (ComponentbuilderHelper::checkArray($headers))
{
// return the headers
return implode(PHP_EOL, $headers);
}
// return the headers
return implode(PHP_EOL, $headers);
return '';
}
/**
* Build chosen multi selection headers for the view
*
* @param array $headers The headers array
* @param string $nameListCode The list view name
*
* @return void
*
*/
protected function setChosenMultiSelectionHeaders(&$headers, $nameListCode)
{
// check that the filter type is the new filter option
if (isset($this->adminFilterType[$nameListCode])
&& $this->adminFilterType[$nameListCode] == 2
&& isset($this->filterBuilder[$nameListCode])
&& ComponentbuilderHelper::checkArray(
$this->filterBuilder[$nameListCode]
))
{
// main lang prefix
$lang_ = $this->langPrefix . '_FILTER_';
foreach ($this->filterBuilder[$nameListCode] as $filter)
{
// we need this only for filters that are multi
if (isset($filter['multi'])
&& $filter['multi'] == 2)
{
// set the selection string (not ideal)
$select_name = "Select " . strip_tags($filter['name']);
// set the language
$select_lang = $lang_ . ComponentbuilderHelper::safeString(
$select_name, 'U'
);
// set selection lang
$this->setLangContent(
$this->lang, $select_lang, $select_name
);
// add the header
$headers[]
= 'JHtml::_(\'formbehavior.chosen\', \'.multiple'
. $filter['class']
. '\', null, array(\'placeholder_text_multiple\' => JText::_(\''
. $select_lang . '\')));';
}
}
}
}
protected function setModelFieldRelation($item, $nameListCode, $tab)

View File

@ -631,7 +631,7 @@ class Infusion extends Interpretation
$nameSingleCode, $view
);
}
// SITE_VIEW_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the model
// SITE_ADMIN_VIEW_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the controller
$this->fileContentDynamic[$nameSingleCode][$this->hhh
. 'SITE_ADMIN_VIEW_CONTROLLER_HEADER' . $this->hhh]
= $this->setClassHeaders(
@ -645,6 +645,13 @@ class Infusion extends Interpretation
'site.admin.view.model',
$nameSingleCode
);
// SITE_ADMIN_VIEW_HEADER <<<DYNAMIC>>> add the header details for the view
$this->fileContentDynamic[$nameSingleCode][$this->hhh
. 'SITE_ADMIN_VIEW_HEADER' . $this->hhh]
= $this->setClassHeaders(
'site.admin.view',
$nameSingleCode
);
}
// TABLAYOUTFIELDSARRAY <<<DYNAMIC>>> add the tab layout fields array to the model
@ -654,7 +661,7 @@ class Infusion extends Interpretation
$nameSingleCode
);
// ADMIN_VIEW_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the model
// ADMIN_VIEW_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the controller
$this->fileContentDynamic[$nameSingleCode][$this->hhh
. 'ADMIN_VIEW_CONTROLLER_HEADER' . $this->hhh]
= $this->setClassHeaders(
@ -667,6 +674,12 @@ class Infusion extends Interpretation
= $this->setClassHeaders(
'admin.view.model', $nameSingleCode
);
// ADMIN_VIEW_HEADER <<<DYNAMIC>>> add the header details for the view
$this->fileContentDynamic[$nameSingleCode][$this->hhh
. 'ADMIN_VIEW_HEADER' . $this->hhh]
= $this->setClassHeaders(
'admin.view', $nameSingleCode
);
// Trigger Event: jcb_ce_onAfterBuildAdminEditViewContent
$this->triggerEvent(
@ -805,7 +818,7 @@ class Infusion extends Interpretation
// FILTER_FIELDS <<<DYNAMIC>>>
$this->fileContentDynamic[$nameListCode][$this->hhh
. 'FILTER_FIELDS' . $this->hhh]
= $this->setFilterFields(
= $this->setFilterFieldsArray(
$nameListCode
);
@ -828,13 +841,6 @@ class Infusion extends Interpretation
$nameListCode
);
// CATEGORYFILTER <<<DYNAMIC>>>
$this->fileContentDynamic[$nameListCode][$this->hhh
. 'CATEGORYFILTER' . $this->hhh]
= $this->setCategoryFilter(
$nameListCode
);
// CATEGORY_VIEWS
if (!isset(
$this->fileContentStatic[$this->hhh
@ -852,17 +858,44 @@ class Infusion extends Interpretation
$nameListCode
);
// OTHERFILTERS <<<DYNAMIC>>>
// FILTERFIELDDISPLAYHELPER <<<DYNAMIC>>>
$this->fileContentDynamic[$nameListCode][$this->hhh
. 'OTHERFILTERS' . $this->hhh]
= $this->setOtherFilter(
. 'FILTERFIELDDISPLAYHELPER' . $this->hhh]
= $this->setFilterFieldSidebarDisplayHelper(
$nameSingleCode,
$nameListCode
);
// BATCHDISPLAYHELPER <<<DYNAMIC>>>
$this->fileContentDynamic[$nameListCode][$this->hhh
. 'BATCHDISPLAYHELPER' . $this->hhh]
= $this->setBatchDisplayHelper(
$nameSingleCode,
$nameListCode
);
// FILTERFUNCTIONS <<<DYNAMIC>>>
$this->fileContentDynamic[$nameListCode][$this->hhh
. 'FILTERFUNCTIONS' . $this->hhh]
= $this->setFilterFunctions(
= $this->setFilterFieldHelper(
$nameSingleCode,
$nameListCode
);
// FIELDFILTERSETS <<<DYNAMIC>>>
$this->fileContentDynamic['filter_'
. $nameListCode][$this->hhh
. 'FIELDFILTERSETS' . $this->hhh]
= $this->setFieldFilterSet(
$nameSingleCode,
$nameListCode
);
// FIELDLISTSETS <<<DYNAMIC>>>
$this->fileContentDynamic['filter_'
. $nameListCode][$this->hhh
. 'FIELDLISTSETS' . $this->hhh]
= $this->setFieldFilterListSet(
$nameSingleCode,
$nameListCode
);
@ -988,7 +1021,7 @@ class Infusion extends Interpretation
= '';
}
// ADMIN_VIEWS_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the model
// ADMIN_VIEWS_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the controller
$this->fileContentDynamic[$nameListCode][$this->hhh
. 'ADMIN_VIEWS_CONTROLLER_HEADER' . $this->hhh]
= $this->setClassHeaders(
@ -1001,6 +1034,12 @@ class Infusion extends Interpretation
= $this->setClassHeaders(
'admin.views.model', $nameListCode
);
// ADMIN_VIEWS_HEADER <<<DYNAMIC>>> add the header details for the views
$this->fileContentDynamic[$nameListCode][$this->hhh
. 'ADMIN_VIEWS_HEADER' . $this->hhh]
= $this->setClassHeaders(
'admin.views', $nameListCode
);
// Trigger Event: jcb_ce_onAfterBuildAdminListViewContent
$this->triggerEvent(
@ -1459,7 +1498,7 @@ class Infusion extends Interpretation
// set headers based on the main get type
if ($view['settings']->main_get->gettype == 1)
{
// CUSTOM_ADMIN_VIEW_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the model
// CUSTOM_ADMIN_VIEW_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the controller
$this->fileContentDynamic[$view['settings']->code][$this->hhh
. 'CUSTOM_ADMIN_VIEW_CONTROLLER_HEADER' . $this->hhh]
= $this->setClassHeaders(
@ -1472,10 +1511,16 @@ class Infusion extends Interpretation
= $this->setClassHeaders(
'custom.admin.view.model', $view['settings']->code
);
// CUSTOM_ADMIN_VIEW_HEADER <<<DYNAMIC>>> add the header details for the view
$this->fileContentDynamic[$view['settings']->code][$this->hhh
. 'CUSTOM_ADMIN_VIEW_HEADER' . $this->hhh]
= $this->setClassHeaders(
'custom.admin.view', $view['settings']->code
);
}
elseif ($view['settings']->main_get->gettype == 2)
{
// CUSTOM_ADMIN_VIEWS_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the model
// CUSTOM_ADMIN_VIEWS_CONTROLLER_HEADER <<<DYNAMIC>>> add the header details for the controller
$this->fileContentDynamic[$view['settings']->code][$this->hhh
. 'CUSTOM_ADMIN_VIEWS_CONTROLLER_HEADER' . $this->hhh]
= $this->setClassHeaders(
@ -1488,6 +1533,12 @@ class Infusion extends Interpretation
= $this->setClassHeaders(
'custom.admin.views.model', $view['settings']->code
);
// CUSTOM_ADMIN_VIEWS_HEADER <<<DYNAMIC>>> add the header details for the view
$this->fileContentDynamic[$view['settings']->code][$this->hhh
. 'CUSTOM_ADMIN_VIEWS_HEADER' . $this->hhh]
= $this->setClassHeaders(
'custom.admin.views', $view['settings']->code
);
}
// Trigger Event: jcb_ce_onAfterBuildCustomAdminViewContent
@ -1943,6 +1994,12 @@ class Infusion extends Interpretation
= $this->setClassHeaders(
'site.view.model', $view['settings']->code
);
// SITE_VIEW_HEADER <<<DYNAMIC>>> add the header details for the view
$this->fileContentDynamic[$view['settings']->code][$this->hhh
. 'SITE_VIEW_HEADER' . $this->hhh]
= $this->setClassHeaders(
'site.view', $view['settings']->code
);
}
elseif ($view['settings']->main_get->gettype == 2)
{
@ -1965,6 +2022,12 @@ class Infusion extends Interpretation
= $this->setClassHeaders(
'site.views.model', $view['settings']->code
);
// SITE_VIEWS_HEADER <<<DYNAMIC>>> add the header details for the view
$this->fileContentDynamic[$view['settings']->code][$this->hhh
. 'SITE_VIEWS_HEADER' . $this->hhh]
= $this->setClassHeaders(
'site.views', $view['settings']->code
);
}
// Trigger Event: jcb_ce_onAfterBuildSiteViewContent