From bc02fec191072645cbc319557172853b7dd8507b Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 13:28:37 +0200 Subject: [PATCH 001/398] Added classes from module "Categories Manager" to core - by https://modx.com/extras/author/stefan --- .../actions/category_mgr/inc/Categories.php | 211 +++++++++++++ .../inc/Module_Categories_Manager.php | 141 +++++++++ .../category_mgr/inc/request_trigger.inc.php | 290 ++++++++++++++++++ .../actions/category_mgr/skin/add.tpl.phtml | 26 ++ .../category_mgr/skin/categorize.tpl.phtml | 28 ++ .../skin/chunks/categorize/category.tpl.phtml | 10 + .../chunks/categorize/drag_element.tpl.phtml | 6 + .../categorize/elements_select.tpl.phtml | 6 + .../uncategorized_elements.tpl.phtml | 7 + .../skin/chunks/db_setup.tpl.phtml | 14 + .../chunks/edit/assigned_elements.tpl.phtml | 14 + .../skin/chunks/global_messages.tpl.phtml | 12 + .../skin/chunks/messages.tpl.phtml | 9 + .../actions/category_mgr/skin/css/module.css | 251 +++++++++++++++ .../actions/category_mgr/skin/edit.tpl.phtml | 43 +++ manager/actions/category_mgr/skin/img/add.png | Bin 0 -> 733 bytes .../category_mgr/skin/img/add_soft.png | Bin 0 -> 747 bytes .../category_mgr/skin/img/ajax_loading.gif | Bin 0 -> 10819 bytes .../category_mgr/skin/img/arrow_left.png | Bin 0 -> 345 bytes .../category_mgr/skin/img/arrow_up.png | Bin 0 -> 372 bytes .../actions/category_mgr/skin/img/attach.png | Bin 0 -> 391 bytes .../category_mgr/skin/img/bullet_black.png | Bin 0 -> 211 bytes .../category_mgr/skin/img/button-gradient.png | Bin 0 -> 253 bytes .../category_mgr/skin/img/categorize.png | Bin 0 -> 391 bytes .../category_mgr/skin/img/categorize_soft.png | Bin 0 -> 666 bytes .../actions/category_mgr/skin/img/delete.png | Bin 0 -> 715 bytes .../actions/category_mgr/skin/img/edit.png | Bin 0 -> 703 bytes .../category_mgr/skin/img/edit_soft.png | Bin 0 -> 679 bytes .../category_mgr/skin/img/exclamation.png | Bin 0 -> 701 bytes .../category_mgr/skin/img/information.png | Bin 0 -> 778 bytes manager/actions/category_mgr/skin/img/ok.png | Bin 0 -> 781 bytes .../actions/category_mgr/skin/img/proceed.png | Bin 0 -> 634 bytes .../actions/category_mgr/skin/img/sort.png | Bin 0 -> 683 bytes .../category_mgr/skin/img/sort_soft.png | Bin 0 -> 664 bytes .../category_mgr/skin/img/translate.png | Bin 0 -> 743 bytes .../category_mgr/skin/img/translate_soft.png | Bin 0 -> 740 bytes .../category_mgr/skin/js/categories.js | 157 ++++++++++ .../actions/category_mgr/skin/js/mootips.js | 215 +++++++++++++ .../actions/category_mgr/skin/main.tpl.phtml | 104 +++++++ .../actions/category_mgr/skin/sort.tpl.phtml | 37 +++ .../category_mgr/skin/translate.tpl.phtml | 32 ++ 41 files changed, 1613 insertions(+) create mode 100644 manager/actions/category_mgr/inc/Categories.php create mode 100644 manager/actions/category_mgr/inc/Module_Categories_Manager.php create mode 100644 manager/actions/category_mgr/inc/request_trigger.inc.php create mode 100644 manager/actions/category_mgr/skin/add.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/categorize.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/categorize/drag_element.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/categorize/elements_select.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/categorize/uncategorized_elements.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/db_setup.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/edit/assigned_elements.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/global_messages.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/chunks/messages.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/css/module.css create mode 100644 manager/actions/category_mgr/skin/edit.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/img/add.png create mode 100644 manager/actions/category_mgr/skin/img/add_soft.png create mode 100644 manager/actions/category_mgr/skin/img/ajax_loading.gif create mode 100644 manager/actions/category_mgr/skin/img/arrow_left.png create mode 100644 manager/actions/category_mgr/skin/img/arrow_up.png create mode 100644 manager/actions/category_mgr/skin/img/attach.png create mode 100644 manager/actions/category_mgr/skin/img/bullet_black.png create mode 100644 manager/actions/category_mgr/skin/img/button-gradient.png create mode 100644 manager/actions/category_mgr/skin/img/categorize.png create mode 100644 manager/actions/category_mgr/skin/img/categorize_soft.png create mode 100644 manager/actions/category_mgr/skin/img/delete.png create mode 100644 manager/actions/category_mgr/skin/img/edit.png create mode 100644 manager/actions/category_mgr/skin/img/edit_soft.png create mode 100644 manager/actions/category_mgr/skin/img/exclamation.png create mode 100644 manager/actions/category_mgr/skin/img/information.png create mode 100644 manager/actions/category_mgr/skin/img/ok.png create mode 100644 manager/actions/category_mgr/skin/img/proceed.png create mode 100644 manager/actions/category_mgr/skin/img/sort.png create mode 100644 manager/actions/category_mgr/skin/img/sort_soft.png create mode 100644 manager/actions/category_mgr/skin/img/translate.png create mode 100644 manager/actions/category_mgr/skin/img/translate_soft.png create mode 100644 manager/actions/category_mgr/skin/js/categories.js create mode 100644 manager/actions/category_mgr/skin/js/mootips.js create mode 100644 manager/actions/category_mgr/skin/main.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/sort.tpl.phtml create mode 100644 manager/actions/category_mgr/skin/translate.tpl.phtml diff --git a/manager/actions/category_mgr/inc/Categories.php b/manager/actions/category_mgr/inc/Categories.php new file mode 100644 index 0000000000..84d24d16c4 --- /dev/null +++ b/manager/actions/category_mgr/inc/Categories.php @@ -0,0 +1,211 @@ +db = & $modx->db; + $this->db_tbl['categories'] = $modx->getFullTableName('categories'); + + foreach( $this->elements as $element ) + { + $this->db_tbl[$element] = $modx->getFullTableName('site_' . $element ); + } + } + + + /** + * Get all categories + * @return array $categories / array contains all categories + */ + function getCategories() + { + $categories = $this->db->makeArray( + $this->db->select( + '*', + $this->db_tbl['categories'], + '1', + '`rank`,`category`' + ) + ); + + if( !empty( $categories ) ) + { + return $categories; + } + return false; + } + + function getCategory( $search, $where = 'category' ) + { + $category = $this->db->getRow( + $this->db->select( + '*', + $this->db_tbl['categories'], + "`" . $where . "` = '" . $search . "'" + ) + ); + return $category; + } + + function getCategoryValue( $value, $search, $where = 'category' ) + { + $_value = $this->db->getValue( + $this->db->select( + '`' . $value . '`', + $this->db_tbl['categories'], + "`" . $where . "` = '" . $search . "'" + ) + ); + return $_value; + } + + function getAssignedElements( $category_id, $element ) + { + if( in_array( $element, $this->elements, true ) ) + { + + $fields = '`name`,`description`'; + if( $element === 'templates' ) + { + $fields = '`templatename`,`description`'; + } + + $fields = '*'; + + $elements = $this->db->makeArray( + $this->db->select( + $fields, + $this->db_tbl[$element], + "`category` = '" . $category_id . "'" + ) + ); + + // correct the name of templates + if( $element === 'templates' ) + { + $_elements_count = count($elements); + for( $i=0; $i < $_elements_count; $i++ ) + { + $elements[$i]['name'] = $elements[$i]['templatename']; + } + } + return $elements; + } + return false; + } + + function getAllAssignedElements( $category_id ) + { + $elements = array(); + foreach( $this->elements as $element ) + { + $elements[$element] = $this->getAssignedElements( $category_id, $element ); + } + return $elements; + } + + function deleteCategory( $category_id ) + { + $_update = array('category' => 0); + foreach( $this->elements as $element ) + { + $this->db->update( + $_update, + $this->db_tbl[$element], + "`category` = '" . $category_id . "'" + ); + } + + $this->db->delete( + $this->db_tbl['categories'], + "`id` = '" . $category_id . "'" + ); + + if( $this->db->getAffectedRows() === 1 ) + { + return true; + } + return false; + } + + function updateCategory( $category_id, $data = array() ) + { + if( empty( $data ) + || empty( $category_id ) ) + { + return false; + } + + $_update = array( + 'category' => $this->db->escape( $data['category'] ), + 'rank' => (int)$data['rank'] + ); + + $this->db->update( + $_update, + $this->db_tbl['categories'], + "`id` = '" . (int)$category_id . "'" + ); + + if( $this->db->getAffectedRows() === 1 ) + { + return true; + } + + return false; + } + + function addCategory( $category_name, $category_rank ) + { + if( $this->isCategoryExists( $category_name ) ) + { + return false; + } + + $_insert = array( + 'category' => $this->db->escape( $category_name ), + 'rank' => (int)$category_rank + ); + + $this->db->insert( + $_insert, + $this->db_tbl['categories'] + ); + + if( $this->db->getAffectedRows() === 1 ) + { + return $this->db->getInsertId(); + } + + //return $this->db->getLastError(); // this will never happen... + return false; + } + + function isCategoryExists( $category_name ) + { + $category = $this->db->escape( $category_name ); + + $category_id = $this->db->getValue( + $this->db->select( + '`id`', + $this->db_tbl['categories'], + "`category` = '" . $category . "'" + ) + ); + + if( $this->db->getAffectedRows() === 1 ) + { + return $category_id; + } + return false; + } +} \ No newline at end of file diff --git a/manager/actions/category_mgr/inc/Module_Categories_Manager.php b/manager/actions/category_mgr/inc/Module_Categories_Manager.php new file mode 100644 index 0000000000..ae24bfd7ef --- /dev/null +++ b/manager/actions/category_mgr/inc/Module_Categories_Manager.php @@ -0,0 +1,141 @@ +isBackend() === false ) +{ + die('Please use the MODx Backend.'); +} + +require_once realpath( dirname(__FILE__) ) . DIRECTORY_SEPARATOR . 'Categories.php'; + +class Module_Categories_Manager extends Categories +{ + var $params = array(); + var $translations = array(); + var $new_translations = array(); + + + /** + * Set a paramter key and its value + * + * @return null + * @param string $key paramter key + * @param mixed $value parameter value - could be mixed value-types + */ + function set($key, $value) + { + $this->params[$key] = $value; + return null; + } + + + /** + * Get a parameter value + * + * @return mixed return the parameter value if exists, otherwise false + * @param string $key Paramter-key + */ + function get( $key ) + { + global $modx; + + if( isset( $this->params[$key] ) ) + { + return $this->params[$key]; + } + elseif( isset( $modx->config[$key] ) ) + { + return $modx->config[$key]; + } + elseif( isset( $modx->event->params[$key] ) ) + { + return $modx->event->params[$key]; + } + return false; + } + + + function addMessage( $message, $namespace = 'default' ) + { + $this->params['messages'][$namespace][] = $message; + } + + + function getMessages( $namespace = 'default' ) + { + if( isset( $this->params['messages'][$namespace] ) ) + { + return $this->params['messages'][$namespace]; + } + return false; + } + + + function renderView( $view_name, $data = array() ) + { + $filename = trim( $view_name ) . '.tpl.phtml'; + $file = self::get('views_dir') . $filename; + $view = & $this; + + if( is_file( $file ) + && is_readable( $file ) ) + { + include $file; + } + else + { + echo sprintf( + 'View "%s%s" not found.', + self::get('views_dir'), + $filename + ); + } + } + + function updateElement( $element, $element_id, $category_id ) + { + + $_update = array( + 'id' => (int)$element_id, + 'category' => (int)$category_id + ); + + $this->db->update( + $_update, + $this->db_tbl[$element], + "`id` = '" . (int)$element_id . "'" + ); + + if( $this->db->getAffectedRows() === 1 ) + { + return true; + } + return false; + } + + + function txt( $txt ) + { + return $txt; + + if( self::get('use_translator') === 'true' + && is_file( self::get('_libdir') . 'Translator.php' ) ) + { + if( !is_object( $translator ) ) + { + include self::get('_libdir') . 'Translator.php'; + $translator = new Translator('Module_Categories_Manager', self::get('manager_language') ); + $translator->setType('phrase'); + } + return $translator->txt( $txt ); + } + elseif( is_file( self::get('languages_dir') . $modx->config['manager_language'] . '.txt' ) ) + { + $_txt = file( self::get('languages_dir') . self::get('manager_language') . '.txt' ); + } + + } + +} \ No newline at end of file diff --git a/manager/actions/category_mgr/inc/request_trigger.inc.php b/manager/actions/category_mgr/inc/request_trigger.inc.php new file mode 100644 index 0000000000..1bfbd1d7ff --- /dev/null +++ b/manager/actions/category_mgr/inc/request_trigger.inc.php @@ -0,0 +1,290 @@ +get('request_key')]['ajax'] ) ) +{ + $_data = $_REQUEST[$cm->get('request_key')]; + $output = ''; + $task = $_data['task']; + switch( $task ) + { + /** + * get categories + */ + case 'categorize_load_elements': + $elements = $_data['elements']; + + if( $uncategorized_elements = $cm->getAssignedElements( 0, $_data['elements'] ) ) + { + $output .= $cm->renderView('chunks/categorize/uncategorized_elements', $uncategorized_elements); + } + + foreach( $cm->getCategories() as $category ) + { + $category['elements'] = $cm->getAssignedElements( $category['id'], $_data['elements'] ); + $output .= $cm->renderView('chunks/categorize/category', $category); + } + break; + } + exit( $output ); +} +/** + * Categorize elements + * + * @notice array [data] removed + * @see /manager/includes/protect.inc.php ($limit) + * @see http://modxcms.com/forums/index.php/topic,40430.msg251476.html#msg251476 + * + */ +if( isset( $_POST[$cm->get('request_key')]['categorize']['submit'] ) ) +{ + $_data = $_POST[$cm->get('request_key')]['categorize']; + $_changes = 0; + + $cm->addMessage( + sprintf( + $cm->txt('Categorize %s'), + $cm->txt($_data['elementsgroup']) + ), + 'categorize' + ); + + if( !isset( $_data['elements'] ) ) + { + $cm->addMessage( $cm->txt('Something went wrong.'), 'categorize' ); + return; + } + + foreach( $_data['elements'] as $element_id => $data ) + { + if( $cm->updateElement( $_data['elementsgroup'], $element_id, $data['category_id'] ) ) + { + $cm->addMessage( + sprintf( + $cm->txt('%s(%s) has been assigned to category %s(%s)'), + $data['element_name'], + $element_id, + $data['category_name'], + $data['category_id'] + ), + 'categorize' + ); + $_changes++; + } + } + + if( $_changes === 0 ) + { + $cm->addMessage( $cm->txt('No categorization made.'), 'categorize' ); + return; + } + else + { + $cm->addMessage( + sprintf( + $cm->txt('%s changes made'), + $_changes + ), + 'categorize' + ); + } +} + +/** + * Add a new category + */ +if( isset( $_POST[$cm->get('request_key')]['add']['submit'] ) ) +{ + $_data = $_POST[$cm->get('request_key')]['add']['data']; + $category = trim( html_entity_decode($_data['name']) ); + $rank = (int) $_data['rank']; + + if( empty( $category ) ) + { + $cm->addMessage( $cm->txt('Please enter a name for the new category.'), 'add' ); + return; + } + + if( $cm->isCategoryExists( $category ) ) + { + $cm->addMessage( sprintf( $cm->txt('Category %s already exists.'), $category ), 'add' ); + return; + } + + if( $cm->addCategory( $category, $rank ) !== 0 ) + { + $cm->addMessage( + sprintf( + $cm->txt( 'The new category %s was saved at position %s.' ), + $category, + $rank + ), + 'add' + ); + } + else + { + $cm->addMessage( $cm->txt('Something went wrong on adding a category.'), 'add' ); + } +} + +/** + * Sort categories + */ +if( isset( $_POST[$cm->get('request_key')]['sort']['submit'] ) ) +{ + $categories = $_POST[$cm->get('request_key')]['sort']['data']; + $_changes = 0; + + foreach( $categories as $category_id => $_data ) + { + $data = array( + 'category' => urldecode( $_data['category'] ), + 'rank' => $_data['rank'] + ); + + if( $cm->updateCategory( $category_id, $data ) ) + { + $cm->addMessage( + sprintf( + $cm->txt('Category %s was moved to position %s'), + $data['category'], + $data['rank'] + ), + 'sort' + ); + $_changes++; + } + } + + if( $_changes === 0 ) + { + $cm->addMessage( $cm->txt( 'Nothing to change, so no changes made.' ), 'sort'); + } + else + { + $cm->addMessage( + sprintf( + $cm->txt('%s changes made'), + $_changes + ), + 'sort' + ); + } +} + +/** + * Edit categories + */ +if( isset( $_POST[$cm->get('request_key')]['edit']['submit'] ) ) +{ + $categories = $_POST[$cm->get('request_key')]['edit']['data']; + $_changes = 0; + + foreach( $categories as $category_id => $_data ) + { + if( isset( $_data['delete'] ) ) + { + if( $cm->deleteCategory( $category_id ) ) + { + $cm->addMessage( + sprintf( + $cm->txt('Category %s has been deleted'), + urldecode( $_data['origin'] ) + ), + 'edit' + ); + } + $_changes++; + continue; + } + + $data = array( + 'category' => trim( html_entity_decode( $_data['category'] ) ), + 'rank' => $_data['rank'] + ); + + if( $cm->updateCategory( $category_id, $data ) ) + { + $cm->addMessage( + sprintf( + $cm->txt('Category %s was renamed to %s'), + urldecode( $_data['origin'] ), + $data['category'] + ), + 'edit' + ); + $_changes++; + } + } + + if( $_changes === 0 ) + { + $cm->addMessage( $cm->txt( 'Nothing to change, so no changes made.' ), 'edit'); + } +} + +/** + * Delete singel category by $_GET + */ +if( isset( $_GET[$cm->get('request_key')]['delete'] ) + && !empty( $_GET[$cm->get('request_key')]['delete'] ) ) +{ + $category_id = (int)$_GET[$cm->get('request_key')]['delete']; + + if( $cm->deleteCategory( $category_id ) ) + { + $cm->addMessage( + sprintf( + $cm->txt('Category %s has been deleted'), + urldecode( $_GET[$cm->get('request_key')]['category'] ) + ), + 'edit' + ); + } +} +/** + * Translate phrases + */ +if( isset( $_POST[$cm->get('request_key')]['translate']['submit'] ) ) +{ + $translations = $_POST[$cm->get('request_key')]['translate']['data']; + + foreach( $translations as $native_phrase => $translation ) + { + $native_phrase = urldecode( $native_phrase ); + + if( empty( $translation ) ) + { + $translation = $native_phrase; + + $cm->addMessage( + sprintf( + $cm->txt('Translation for %s was empty'), + $native_phrase + ), + 'translate' + ); + } + + //$cm->c('Translator')->setType('phrase'); + $cm->c('Translator')->addTranslation( $native_phrase, $translation, 'phrase' ); + + $cm->addMessage( + sprintf( + $cm->txt('Translation for %s to %s successfully saved'), + $native_phrase, + $translation + ), + 'translate' + ); + } + + if( empty( $cm->new_translations ) ) + { + //$_REQUEST['webfxtab_manage-categories-pane'] = 0; + // unset( $_COOKIE['webfxtab_manage-categories-pane'] ); + // setcookie('webfxtab_manage-categories-pane', 0); + } +} \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/add.tpl.phtml b/manager/actions/category_mgr/skin/add.tpl.phtml new file mode 100644 index 0000000000..9bbe2b2acb --- /dev/null +++ b/manager/actions/category_mgr/skin/add.tpl.phtml @@ -0,0 +1,26 @@ +
+ +

Add a new category to the Manager.

+ + + + + + + + + + + + + + + + + + + +
txt('Category name'); ?>txt('Category position'); ?>
+ +
+
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/categorize.tpl.phtml b/manager/actions/category_mgr/skin/categorize.tpl.phtml new file mode 100644 index 0000000000..ca51f86ea7 --- /dev/null +++ b/manager/actions/category_mgr/skin/categorize.tpl.phtml @@ -0,0 +1,28 @@ +
+ +

Categorize elements easily by dragging them into categories.

+ +
+ renderView('chunks/categorize/elements_select'); ?> +
+ + + +
+ +
+ + + +
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml b/manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml new file mode 100644 index 0000000000..c9ba154073 --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml @@ -0,0 +1,10 @@ +
+
+

+ + + renderView('chunks/categorize/drag_element',$element); ?> + + +
+
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/categorize/drag_element.tpl.phtml b/manager/actions/category_mgr/skin/chunks/categorize/drag_element.tpl.phtml new file mode 100644 index 0000000000..64d1fd0c7c --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/categorize/drag_element.tpl.phtml @@ -0,0 +1,6 @@ +
+

+ +

+ +
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/categorize/elements_select.tpl.phtml b/manager/actions/category_mgr/skin/chunks/categorize/elements_select.tpl.phtml new file mode 100644 index 0000000000..96ba5ae82d --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/categorize/elements_select.tpl.phtml @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/categorize/uncategorized_elements.tpl.phtml b/manager/actions/category_mgr/skin/chunks/categorize/uncategorized_elements.tpl.phtml new file mode 100644 index 0000000000..073ae9a6e5 --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/categorize/uncategorized_elements.tpl.phtml @@ -0,0 +1,7 @@ +
+

txt('uncategorized elements'); ?>

+ + renderView('chunks/categorize/drag_element', $element); ?> + +
+
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/db_setup.tpl.phtml b/manager/actions/category_mgr/skin/chunks/db_setup.tpl.phtml new file mode 100644 index 0000000000..02aec99186 --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/db_setup.tpl.phtml @@ -0,0 +1,14 @@ +
+

+ Database not ready. +

+ +

+ The column "rank" don't exist. Please click the "Add rank column" button to add a new column to categories table.
+ After that go to module configuration and set "Check DB-table" to "false" (optional). +

+ +
+ +
+
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/edit/assigned_elements.tpl.phtml b/manager/actions/category_mgr/skin/chunks/edit/assigned_elements.tpl.phtml new file mode 100644 index 0000000000..6b3ad2e7e9 --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/edit/assigned_elements.tpl.phtml @@ -0,0 +1,14 @@ +
+ $items ) : ?> +

txt( $element ); ?>

+ +

txt('No %s assigned'), $element ); ?>

+ + + + +
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/global_messages.tpl.phtml b/manager/actions/category_mgr/skin/chunks/global_messages.tpl.phtml new file mode 100644 index 0000000000..e4afc1b819 --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/global_messages.tpl.phtml @@ -0,0 +1,12 @@ + +
txt('Global Messages'); ?>
+
+
+
    + +
  • + +
+
+
+ \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/chunks/messages.tpl.phtml b/manager/actions/category_mgr/skin/chunks/messages.tpl.phtml new file mode 100644 index 0000000000..0398627081 --- /dev/null +++ b/manager/actions/category_mgr/skin/chunks/messages.tpl.phtml @@ -0,0 +1,9 @@ + +
+ +
+ \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/css/module.css b/manager/actions/category_mgr/skin/css/module.css new file mode 100644 index 0000000000..cf9ad55bb8 --- /dev/null +++ b/manager/actions/category_mgr/skin/css/module.css @@ -0,0 +1,251 @@ +@charset 'utf-8'; + +/** + $Id: module.css 3 2009-10-07 20:55:13Z stefan $ +----------------------------------------------------------------------------- */ + +h1 span.version { + font-size: .6em; + margin-left: 3px; +} + +div#section-body-categories .hidden { + display: none; +} + + +/* image to tab-headers +h2#tab-header-add{ background: url(../img/add_soft.png) no-repeat 3px center; padding-left: 25px; } +h2#tab-header-sort{ background: url(../img/sort_soft.png) no-repeat 3px center; padding-left: 25px; } +h2#tab-header-edit{ background: url(../img/edit_soft.png) no-repeat 3px center; padding-left: 25px; } +h2#tab-header-categorize{ background: url(../img/categorize_soft.png) no-repeat 3px center; padding-left: 25px; } +h2#tab-header-translate{ background: url(../img/translate_soft.png) no-repeat 3px center; padding-left: 25px; } + */ + +div#section-body-categories div.messages { + max-height: 100px; + overflow: auto; + padding: 6px; + padding-left: 0px; + margin-bottom: 10px; + border-bottom: 1px dotted #748394 +} + +div#section-body-categories div.messages ul { + margin: 0; + padding: 0 +} + +div#section-body-categories div.messages ul li { + list-style-type: none; + list-style-image: none; + background: url(../img/information.png) no-repeat left center; + margin: 0; + padding: 5px; + padding-left: 20px; +} + +div#section-body-categories div.messages ul li span.highlight { + background-color: #f5f5f5; + color: #222; + padding: 1px 3px; +} + +div#section-body-categories fieldset { + margin: 0; + padding: 10px 0; +} + +div#section-body-categories table tr td.gridHeader { + padding: 3px 5px; +} + +div#section-body-categories table tr td.submit { + border-top: 1px solid #748394; + padding: 5px; + text-align: right; +} + +div#section-body-categories table tr td.assigned { + width: 150px; +} + +div#section-body-categories table tr td.assigned img { + cursor: help +} + +div#section-body-categories table tr td.assigned div.assigned_elements { + display: none; +} + + +/* Translations */ + +div#section-body-categories table tr td.native { + width: 30% +} + +div#section-body-categories table tr td.translation input { + width: 90%; +} + +div#section-body-categories table tr td.translation textarea { + background-color: #fff; + height: 3em; + width: 95%; +} + + +/* Edit */ + +.assigned-tip { + z-index: 13000; +} + +.assigned-tip, +div#section-body-categories div.assigned_elements { + background-color: #fff; + border: 1px solid #748394; + padding: 10px 10px; +} + +.assigned-tip h4, +div#section-body-categories div.assigned_elements h4 { + font-weight: bold; + margin-bottom: 0px; +} + +.assigned-tip ul, +div#section-body-categories div.assigned_elements ul { + margin: 0; + padding: 0; +} + +.assigned-tip ul li, +div#section-body-categories div.assigned_elements ul li { + list-style-type: none; + list-style-image: none; + background: url(../img/bullet_black.png) no-repeat left center; + margin: 0; + margin-bottom: 0; + padding: 1px 5px; + padding-left: 18px; +} + +.assigned-tip p.no_assigned_elements, +div#section-body-categories div.assigned_elements p.no_assigned_elements { + color: #aaa; +} + +div#section-body-categories tr.move td { + background-color: #88939E; + color: #fff; +} + +div#section-body-categories table#category-edit td.input input { + width: 90%; +} + +div#section-body-categories table#category-edit td.delete a img { + vertical-align: middle; +} + +div#section-body-categories table#category-edit td.delete a { + display: inline-block; + color: #3b454f; + font-weight: bold; + font-size: 12px; + background: #fff; + padding: 4px 6px; + white-space: nowrap; + text-decoration: none; + border: 1px solid #3697CD; + border-radius: 3px !important; + outline: none; +} + +div#section-body-categories table#category-edit td.delete a:hover { + color: #fff; + background: #3697CD; +} + + +/* Categorization */ + +div#section-body-categories div#categorize-workbench { + min-height: 50px; +} + +div#section-body-categories div.drag { + padding: 2px 5px; + border: solid 1px #88939E; + cursor: move; + position: relative; + float: left; + margin: 3px; +} + +div#section-body-categories div.drag h4 { + margin-bottom: 0; + font-size: 1em; +} + +div#section-body-categories div.drag p { + display: none; + position: absolute; + z-index: 10000; + width: 250px; + background-color: #fff; + top: 30px; + left: 30px; + padding: 5px; + border: 1px solid #88939E; +} + +div#section-body-categories div.drag:hover p { + display: block; +} + +div#section-body-categories div.uncategorized_elements, +div#section-body-categories div.drop { + width: 32%; + float: left; + min-height: 50px; + margin: .5%; + border: 1px solid #333; + position: relative; +} + +div#section-body-categories div.uncategorized_elements { + width: auto; +} + +div#section-body-categories div.uncategorized_elements h2, +div#section-body-categories div.drop h2 { + padding: 5px 7px 6px 7px; + background: #555; + color: #fff; + font-size: 12px; + font-weight: bold; + margin-bottom: 0; +} + +div#section-body-categories div.over { + background-color: #E0E8EF +} + +div#section-body-categories .ajax_loading { + background: url(../img/ajax_loading.gif) no-repeat center center +} + +div#section-body-categories div.ok { + background: url(../img/ok.png) no-repeat 2px center; + padding-left: 20px; +} + +div#section-body-categories div.nok { + background: url(../img/exclamation.png) no-repeat left top; +} + +/* Avoid jumping when Tooltip is longer than viewport-bottom */ +html { overflow-y:scroll; } \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/edit.tpl.phtml b/manager/actions/category_mgr/skin/edit.tpl.phtml new file mode 100644 index 0000000000..527a64032a --- /dev/null +++ b/manager/actions/category_mgr/skin/edit.tpl.phtml @@ -0,0 +1,43 @@ +
+ +

Change category name or delete category from the Manager.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
txt('Assigned elements'); ?>txt('Edit name'); ?>txt('Mark for deletion'); ?>txt('Delete immediately'); ?>
+ <?php echo $view->txt('Show assigned elements'); ?> +
renderView( 'chunks/edit/assigned_elements', $view->getAllAssignedElements( $category['id'] ) ); ?>
+
+ + + + + + + txt('Delete'); ?> +
+ +
+
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/img/add.png b/manager/actions/category_mgr/skin/img/add.png new file mode 100644 index 0000000000000000000000000000000000000000..6332fefea4be19eeadf211b0b202b272e8564898 GIT binary patch literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S literal 0 HcmV?d00001 diff --git a/manager/actions/category_mgr/skin/img/add_soft.png b/manager/actions/category_mgr/skin/img/add_soft.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb92643c0b8dac5f5970d0cbba70f46b4a5cd97 GIT binary patch literal 747 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 D%iv@b literal 0 HcmV?d00001 diff --git a/manager/actions/category_mgr/skin/img/categorize.png b/manager/actions/category_mgr/skin/img/categorize.png new file mode 100644 index 0000000000000000000000000000000000000000..ea897cc9f18ca49aa0f30bad4e6b67e4afc7f498 GIT binary patch literal 391 zcmV;20eJq2P)`oHYyCmI1nr3DC<^9@PyNudrDc9~P$75b!T6T2tv<*K=EzTZ+r6P_ zRz+%oP}wCAt50K zCMG73Mg}D%C5FDfzRmLT@(j0c-)8vw^($B{KmcJF@cHxS%_~=~WDph>W?*GyWe^h+ zV^B~~V3;sr0+@dP{yoFJd-oV7Po4}`4-h~o27LVZar4@>YZ;`ar5XPI{R;|d23=iU zhQ`K51|1z8aNwOebB3Y6zn?)sKmhC=fB=FU@afa1&Fj{!18W8WkZsD!%3#e#Mn(*e zA3tU|apDBS#EBC@uJeWI0|+2+G=BK-Ve|6k%fUAK`};F2TC|Aa;lqav@7}#*u(7dW zc>44y!_lKh8RpNQ4+>OYWLEJ4vASMP10YHEO0FV3BNUGxGtpET307*qoM6N<$f(DZx A^8f$< literal 0 HcmV?d00001 diff --git a/manager/actions/category_mgr/skin/img/delete.png b/manager/actions/category_mgr/skin/img/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..08f249365afd29594b51210c6e21ba253897505d GIT binary patch literal 715 zcmV;+0yO=JP)C4}Mrzlg<+1Y8PEBfUp0jJpx4B>@E+cy3`^(Gw`Mf+2&yxZm<$to~Vpgvg&QKNR z_f#1(r6svZt%iF?s+n<8X?B&!h3g9Dbb8_=MX}!;HiQSAh`bp^WMl~Z-44teO7W_Y zV4thSL{h;rJY7!l3%5J4H1!tIzB`Dv+YxO(haWeausGZYkI8^hWj6mzo=L0{%;yxzh{5!Htr?51 zvG|W62MzC8BZ76hRpCyO2zOn<%e)K>NHge!-~)Ap33OdWw6hsLYbCxGNt0%wk_2z7 zfyYvXheSG)5HRK1VB~%mq7Dmurw#bi@hEcOr3&G1ZiF*$M=&9nB#VNf&Q^r$4G5kp zTURh&s)E0%5&hyVD}sp<72~zmAY`Y(9aqO6CXF%=zFHGzO-A&I(pE}v70YQxCPJ{Y z4L+?5-crdLn3ZRPEs!A4ehEY3ZRpL~w9>@aMN+{F4dI@v&>(QDHQum!mG~E^$OS8l z!7?%Uwib*ROP67Hw`ika)gX-(8Ia`-u_IEhxG7U<13kSsMW+$lbb2dUMm5p6pa}cjgA+U$^mJ^AjD?&bdi)8~y+Q002ovPDHLkV1g8IMc@Dc literal 0 HcmV?d00001 diff --git a/manager/actions/category_mgr/skin/img/edit.png b/manager/actions/category_mgr/skin/img/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2efb8775442af862ef0ef111f371e5857928d3 GIT binary patch literal 703 zcmV;w0zmzVP)FxeKF=OosmQ6jmTLP{}-6iF>nO8f(+aY2!Xm^*5Av6NhR zD0!Nar%`rnu~v@R4hO^8&iS41=VQN>+65QO>m_E!|B#IbuI^pAy5?9WYjHC`6;s8j z!_-hy%sJEya}KAD$C|Z-~!ZLFQctG09Uhp@QPcl?mU}7$E{?cz}t3fC%LK?;}5+keI!OTyHb6 z@j}nbBm-HHT&CJnb^IYBAVSCka_RdNzT74;XDve?FCx*eM2ky^TZSvCN4lf#zADBt{VLMZ58~8Xlk&tIj2}J+_M1=n24SuBB zC|kIW{HG=&F(WrHgY=^pRBSp=QTYN)m5{Hh{2@SBTQi04uPMk>dS9PrQdx|l%yhmz zOH#Sz0@1`YLTX0HPj&aS)SnFM)H&2CwbI1q`b)fRK1k<-HpW#}^Sv*{jiIgdH9W>t zQ6<#EFflVmJF;g{aA;S(kLP%K=NdiTT|X03N>|n%ZExo<#LO72ZdK{vlG)|{vIVoS lXs&IrKfQB(A`n^0AgVPhY}+b zBZ$Go$OQE7e?}me@jnA2%fH{B4zawsCamJgE3N+Nsr=J3I{^ZS1sEnk4NO4e85tQE z8JIxf!T_`ZXu{w3Cs=>o^yEG(<8N+mVRkNlfB<4ajt7Xge~b*wj10fuon!oV zl}Fn0*PC6e91PEIJ^1>ALCqx-Ab^w|TY4UpVE+BH zVBFvuQu|=%goo!Zu}P?XdHd?fFORqLE-`?T7lXc<1W*G&05Kwm(!93F7@t4}roXpN z9eDNTwM9}tmxw%Cd;N#0$9Ug7g~-`rQ^qx~m@y2OU8A z#zh~=7n#Z$Z*fx-GOtDf07cgx0suCz_W(2~Y(0tf@FX@P6EPuM_dgn$vj9LucO)%W zw%HgMW>=#oL>nZ>M&NEf08>)#)k<{$fCT_r>rPi=BV=hFh6WS^qqze>C6Ek}o{M5% za|@JGowu0t{&hgNzySHZxy@LTNh);YzZ2zSp_ zl$^T&Dnc|NLb&RD_!4>pt@VHdP)ZGER%5ZmWEe$lryR&y;2u^3cOkO4#6c%-(EY6a{600000NkvXXu0mjfxS2AI literal 0 HcmV?d00001 diff --git a/manager/actions/category_mgr/skin/img/information.png b/manager/actions/category_mgr/skin/img/information.png new file mode 100644 index 0000000000000000000000000000000000000000..12cd1aef900803abba99b26920337ec01ad5c267 GIT binary patch literal 778 zcmV+l1NHogP)BVme|mWaqy4$_pJm?y9KM{-*hp?1+Ey3e-CEDooTa!B;e(Q>TSF?bj>5At13y1p zriN3w3x~5SfZj{@J4M{kp{?=M_Lh2bV+5LH)Q)5W!-ePA$RgE1@5f1cyHki0Y}JyVEYZF(LD$xXlt$7A5CgE@ zpV-&l%vf;=5kZ2-2gi@Y6J&=cuwt>!vJ^#(&n|LcZyUzi6Duj$$hJ1s*HD-#;k-w@ zpdrwAuoDG_N2bvb07G$Zk*?Hc)JLtW4yqOnic_$zO7NZ#l>Fm){;fE?b$IbOaX2fe z0la4g0Dfw2xk7Wi7NapVD8YMPCZu?A1QCK*67dgsvRKBLFtrM>?$%&_lD1882mzdO zWPdw5KWw6IT`m1b_8=lS5jt8D3=RDa=&jWzR-)S@56WMslZ~mKu1)-wpXB>rNBQ>N zU#K`#1B&v|_AQK;7I~B}OdGiUT9LX>f0xm6<;LeP!=vFjPsUQF*wCJ*dO)4YBypgdiuF!=i@6Zyi7F|q#K zz?tlSZULa@t1D?$e;f@b36&N!V2mjOHw|*WdP)4-QibtN)VXQDpczE`xXAkUjh%RI>;okxb7K@0kpyQ1k_Y(|Oe7$m(^ zNYX>mI||sUbmn+c3<&FnE=4u#()KBS^SH8e)Qs5i!#lY=$-1gbH6VluzU=m=EP78&5vQ z-?+fFP-G2l&l_QzYealK$;1Rl?FkzXR&Jv@fBPNjCr#AYRyJ7UJQ0v#?)7Ott=>3`#-pV!7>9}>Q1jL)H6h&gkP@3nI=+F3nA~M>u#(n* z8T!#8oEw&-mED4!h4s!N@Jo3S7N&Q6%6l3}nlcd~X@>;uelvPsSkXIgg~e+^T1zSf z3SNj(5%jK~i8@b;C3kp_oQM4NsQ6$aEKj6mx0hg})10sT;E2V;K zUHNY7qG&TIJ`gc&M*EmdrgP_>>zSLTO=}7j2M*`nnfbo+_|8cvrSLzG(R^{I&fHg| z3Nfi70*Jk=pS3m4lD_qhO!oanz~FpWe?InrjDM6H7D@P(w+NOTuL0gfPQ>)8EiKPO>RV|@%G(EApK7|ni6$Or7s}#zN5D2fFuoW z?SUp(cysDe%D^FVRe!-fK+o2zXp zH&*H~_``&05AX{CqjQ9Pq)Pw`p&~+e-<5=lgjH9A;4MsYR*p|Xp3o{VtL6Q8vD&1u z_TBwgt>E(`Zp(h8_8f=r&cr~-uy!|BC|zGKq17aQeR}wL=f1PUhPjus5Lo&7j={xc zCLhQZ=E~bn;<}`gh7Bu?>ih@P+*yw5-^u2k8!el-HG?lt4o$V&*`tbh^4#JtCOgRB z@^-thiGaZ!P|20J4^o7;v)78_|FldDe9Z$i&;9^|y&bKi-n=y{JsccrzVF2T076QP UWao5~B>(^b07*qoM6N<$g7%3ha{vGU literal 0 HcmV?d00001 diff --git a/manager/actions/category_mgr/skin/img/sort.png b/manager/actions/category_mgr/skin/img/sort.png new file mode 100644 index 0000000000000000000000000000000000000000..258c16c63a20f7474764507475af7961ecf4263a GIT binary patch literal 683 zcmV;c0#yBpP)A3WJ2dfsV78ToP)wU4~UJxT^#Yl8pW;T)B2y+W_BqqmW z&#t|w0SE!KR$a#7aL!?!V{G>0(f7&GF0n$i_yAiovkXpE$M|c8KDe}2*w(W8jK3Y2*x)V03j=u2XF48q6F<0_UD&z zFmi~T?K=p$491faq~>RsPR$VB89_xzOpK2V+=|x$1lD3~x!;g2Mz5ELE831k>xd528II@{FM*4t5cwMI2$KMmfFm;RN43xW+e;$tzEyd|PV<@i4gUfKh|U-I$hymfQ} zt?kWDj37pE;wZ>1WHG%+SvbnRqEaTN#u*-slSm{u7_C6WGBh|el4$>24G=QE;Y9f< z)G2BOvC3T5Jn;{4ig%R|E{ITA5W$|ds8uW$Z^f(HeLnnp>dACn(D>^wEGjH6Et2~F zjpx1H%%|rOCx{iqDPk27MT{DNK*OCgPK;oDLHt!jVx&(zZS&Lq>Ld9Y&Ck!LvbvJw zmn1{|Z(}o^vo(KE_?LCoRgJHj8F8#mk$iTn5um0fyw{^2&BPN)t7+*=$HTh{xdv& z|M2e1yMO=xl^0WBXJ!5K_y0eJzyJRIy>agr$3M=hfI5HxVge~-04fC`pcPUA(%Mp5 zpFV$LVP^UB_wS$ofByXa^XDHB|NZsrH_!%v001!n&i@4d{r|Jou>So10sjIX5g#HI zBMk}=1pfr&>gDb6?Cb386%!Ty{rv#=0)SeB00002h!GyFzyAE(dvo{wx3{$wbZ$Pr zdGYqebmtsBS^b0w(L#bEeen|^$^Zfg5lTRP{~7<^dVK50uOA8$iod@Bo%0VU{`<%8 zKc9ZXl>r10W6jP|paX$UWcd4Em|x`Ur>}CN@-h;#PhUQ{dFS@yCy$ln761PI|NZ@s ziTRU(8UO-_v0`hXp@K0aDE|EW_u=EmCyyT6o7w*bdJY)Y|Nnsi!@uK4PyGMz*q`5j z!J7UmiYOHaRGhwg;>_{0k6%0%6cA8RQ+fIP)$b2~CRT!+1Q0;r2*VAo-@oQt=$+UQ y4;KLlAOaeIpmK8guiwAmTz~*#BsF;h1Q-Cg@Qi7#)g5{O0000?P)vCi#|P&Xm-dkucwL z3)87{8iWe96huvPHfK`KOdC2Z({T6vJ9pwDx$D4>d(Pqff6w7Lmj{5i6;ZyPPpPN; zroaW=6d#@oL2Fa53F~$Su10(RG%K0p3VTuP3?Z=nBA8z$uq+XLUL^QrC74`bU|!e| zr>hK{)%Q!vdmIO5Z3JIvaOyjOX`X@c8-ua03`Q&)f&%p*{(A$q`ZTTjk%q_T7>v^J zu!R-a9fFLScYlKkNBP_Cob=9m9JLVoC-?c{)eOtMnh7qNN{ejy2sM{pS^mgFHJm@(buuM4>=<5Vr$&Kzw{B?uPr; z(1Yf=#g)zADkWnx=MR%ykl| z3Ui42k+O2{bCn)01-s5Sxp|z{G2di&KT(_M6;$EI zDL57JFf}cw4bP1P$pgTRKH$0@h|~aA>j`qZ2*kU5t2EVD5#~@VNhqx{vz8ethDD-=+1vnemftUBA zF;N!Q%PBB5B=KLB#QO(CHe?;R+-C8M?ppDW>R$5`cCPq@YpusFRTaH1i9Kv;l<>I( Ze*oTy+;kdDB`N>_002ovPDHLkV1l3CM+g7_ literal 0 HcmV?d00001 diff --git a/manager/actions/category_mgr/skin/img/translate_soft.png b/manager/actions/category_mgr/skin/img/translate_soft.png new file mode 100644 index 0000000000000000000000000000000000000000..d481b65917d6471b29c189015ba5761101e5f9bc GIT binary patch literal 740 zcmVEAQn{j z{Nd+hV`5_Z{`=p*{|rD4K=SW@upY2GxH(t>0tm%kE_RlW-+%r4_m71Ms^|~cc(7^^ z{`Tt+Kmb8)`1kkkiA_shoL z2ILvY)>F+JE86gIAwpoYVjU2x`NJ z8^;BeO#}sbuUxy%ba@H;A7*QhkPFXk-hBFg^vd(IcV0W_OXmmZ162Y95Y&c~D>@Xk zjCt7qKYQ}z=eIAcyuzp7@N-FOUb_F*#ZbmZTMF(^fB=Hp@Kem{$BPRBD*CFbD!=|R z-oA19!B0hZQQjbHWwh7;2q2IKV6Yr{!1IfPi}B~tf6ScB48QNc6=wUxVXPv;fB^sk zh!LoI#`=4I|8N+&NuRlN>CaCFAW~D)yLJ4L0N; 0 ) { + elements.each(function(element,index) { + var element_id = element.getProperty('id').split('-')[2]; + var element_name = element.getElement('h4').getText(); + var id_input_element = 'input-element-'+element_id; + var id_input_element_name = 'input-element-name-'+element_id; + var id_input_category_name = 'input-category-name-'+element_id; + + new Element( 'input', { + 'type' : 'text', + 'id' : id_input_element_name, + 'name' : request_key + '[categorize][elements]['+element_id+'][element_name]', + 'value': element_name.trim() + }).injectInside( $('categorize-formfields') ); + + new Element( 'input', { + 'type' : 'text', + 'id' : id_input_element, + 'name' : request_key + '[categorize][elements]['+element_id+'][category_id]', + 'value': category_id + }).injectInside( $('categorize-formfields') ); + + new Element( 'input', { + 'type' : 'text', + 'id' : id_input_category_name, + 'name' : request_key + '[categorize][elements]['+element_id+'][category_name]', + 'value': category_name.trim() + }).injectInside( $('categorize-formfields') ); + + }); + } + }); + + this.removeProperty('disabled'); + this.setProperty('value','Save categorization'); +}); + +//}); diff --git a/manager/actions/category_mgr/skin/js/mootips.js b/manager/actions/category_mgr/skin/js/mootips.js new file mode 100644 index 0000000000..2e77c449c9 --- /dev/null +++ b/manager/actions/category_mgr/skin/js/mootips.js @@ -0,0 +1,215 @@ +var MooTips = new Class({ + + options: { // modded for X3 + onShow: function(tip){ + tip.setStyle('visibility', 'visible'); + }, + onHide: function(tip){ + tip.setStyle('visibility', 'hidden'); + }, + showOnClick: false, + showOnMouseEnter: true, + maxTitleChars: 30, + showDelay: 100, + hideDelay: 100, + className: 'tool', + offsets: {'x': 16, 'y': 16}, + fixed: false, + loadingText: 'Loading...', + errTitle: 'Error...', + errText: 'There was a problem retrieving the contents of this tooltip.', + evalAlways: false + }, + + initialize: function(elements, options){ + this.setOptions(options); + this.toolTip = new Element('div', { + 'class': this.options.className + '-tip', + 'styles': { + 'position': 'absolute', + 'top': '0', + 'left': '0', + 'visibility': 'hidden' + }, + 'events': { + 'mouseenter': function(event){ + //setting state property, needed on end function + this.setProperty('state','mouseenter'); + }, + 'mouseleave': function(event){ + //setting state property, needed on end function + this.setProperty('state','mouseleave'); + this.pather.end(event); + } + } + }).inject(document.body); + + //didn't find other way to get owner of toolTip inside toolTip + this.toolTip.pather = this; + + this.wrapper = new Element('div').inject(this.toolTip); + $$(elements).each(this.buildEvents, this); + $$(elements).each(this.build, this); + if (this.options.initialize) this.options.initialize.call(this); + }, + + buildEvents: function(el) { + //code with errors but works + //that's why showOnClick option is false by default + if (this.options.showOnClick) { + el.addEvent('click', function(event){ + this.start(el); + if (!this.options.fixed) this.locate(event); + else this.position(el); + }.bindWithEvent(this)); + } + + if (this.options.showOnMouseEnter) { + el.addEvent('mouseenter', function(event){ + this.start(el); + if (!this.options.fixed) this.locate(event); + else this.position(el); + }.bind(this)); + } + + if (!this.options.fixed) el.addEvent('mousemove', this.locate.bindWithEvent(this)); + var end = this.end.bind(this); + el.addEvent('mouseleave', end); + el.addEvent('trash', end); + }, + + build: function(el){ // modded for X3 + el.$tmp.myTitle = (el.href && el.getTag() == 'a') ? el.href.replace('http://', '') : (el.rel || false); + if (el.title){ + + if (el.title.test('^DOM:', 'i')) { // check if we need to extract contents from a DOM element + el.title = $(el.title.split(':')[1].trim()).innerHTML; + } else if (el.title.test('^AJAX:', 'i')) { // check for an URL to retrieve content from + el.title = this.options.loadingText + '::' + el.title; + } else if (el.title.test('^EVAL:', 'i')) { // check for a statement to eval + el.title = this.options.loadingText + '::' + el.title; + } + + var dual = el.title.split('::'); + if (dual.length > 1) { + el.$tmp.myTitle = dual[0].trim(); + el.$tmp.myText = dual[1].trim(); + } else { + el.$tmp.myTitle = false; + el.$tmp.myText = el.title; + } + el.removeAttribute('title'); + } else { + el.$tmp.myText = false; + } + if (el.$tmp.myTitle && el.$tmp.myTitle.length > this.options.maxTitleChars) el.$tmp.myTitle = el.$tmp.myTitle.substr(0, this.options.maxTitleChars - 1) + "…"; + }, + + start: function(el){ // modded for X3 + this.wrapper.empty(); + + // check if we have an AJAX request - if so, show a loading animation and launch the request + if (el.$tmp.myText && el.$tmp.myText.test('^AJAX:', 'i')) { + //if (this.ajax) this.ajax.cancel(); + if(this.options.evalAlways) { + // save original text + el.$tmp.myEvalAlwaysText = el.$tmp.myText; + } + this.ajax = new Ajax (el.$tmp.myText.replace(/AJAX:/i,''), { + onComplete: function (responseText, responseXML) { + el.title = responseText; + this.build(el); + this.start(el); + }.bind(this), + onFailure: function () { + el.title = this.options.errTitle + '::' + this.options.errText; + this.build(el); + this.start(el); + }.bind(this), + method: 'get' + }).request(); + el.$tmp.myText = '
 
'; + } else if (el.$tmp.myText && el.$tmp.myText.test('^EVAL:', 'i')) { + var tmp; + + if(this.options.evalAlways) { + // save original text to reevaluate on the fly (AJAX or EVAL only) + el.$tmp.myEvalAlwaysText = el.$tmp.myText; + } + try { + eval('tmp = ' + el.$tmp.myText.replace(/EVAL:/i, '') + ';'); + var dual = tmp.split('::'); + if (dual.length > 1) { + el.$tmp.myTitle = dual[0].trim(); + el.$tmp.myText = dual[1].trim(); + } else { + el.$tmp.myTitle = false; + el.$tmp.myText = tmp; + } + } catch(err) { + el.$tmp.myTitle = this.options.errTitle; + el.$tmp.myText = this.options.errText + '
--------
' + err.description; + } + } + + if (el.$tmp.myTitle){ + this.title = new Element('span').inject( + new Element('div', {'class': this.options.className + '-title'}).inject(this.wrapper) + ).setHTML(el.$tmp.myTitle); + } + if (el.$tmp.myText){ + this.text = new Element('span').inject( + new Element('div', {'class': this.options.className + '-text'}).inject(this.wrapper) + ).setHTML(el.$tmp.myText); + + if((this.options.evalAlways) && (el.$tmp.myEvalAlwaysText)) { + // reset text so that it will evaluate again + el.$tmp.myText = el.$tmp.myEvalAlwaysText; + } + } + $clear(this.timer); + + // setting initial state of tip + this.toolTip.setProperty('state','mouseleave'); + + this.timer = this.show.delay(this.options.showDelay, this); + }, + + end: function(event){ + $clear(this.timer); + this.timer = this.hide.delay(this.options.hideDelay, this); + }, + + position: function(element){ + var pos = element.getPosition(); + this.toolTip.setStyles({ + 'left': pos.x + this.options.offsets.x, + 'top': pos.y + this.options.offsets.y + }); + }, + + locate: function(event){ + var win = {'x': window.getWidth(), 'y': window.getHeight()}; + var scroll = {'x': window.getScrollLeft(), 'y': window.getScrollTop()}; + var tip = {'x': this.toolTip.offsetWidth, 'y': this.toolTip.offsetHeight}; + var prop = {'x': 'left', 'y': 'top'}; + for (var z in prop){ + var pos = event.page[z] + this.options.offsets[z]; + if ((pos + tip[z] - scroll[z]) > win[z]) pos = event.page[z] - this.options.offsets[z] - tip[z]; + this.toolTip.setStyle(prop[z], pos); + }; + }, + + show: function(){ + if (this.options.timeout) this.timer = this.hide.delay(this.options.timeout, this); + this.fireEvent('onShow', [this.toolTip]); + }, + + hide: function(){ + // if "fixed", tooltip is only hidden when mouse leaves the tooltip (itself) + if ((this.toolTip.getProperty('state') == 'mouseleave') || (!this.options.fixed)) + this.fireEvent('onHide', [this.toolTip]); + } +}); + +MooTips.implement(new Events, new Options); \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/main.tpl.phtml b/manager/actions/category_mgr/skin/main.tpl.phtml new file mode 100644 index 0000000000..4f279d609f --- /dev/null +++ b/manager/actions/category_mgr/skin/main.tpl.phtml @@ -0,0 +1,104 @@ + + + + js_output ) ) :?> + + + +

get('name'); ?>

+ + +
+ + + renderView( 'chunks/db_setup' ); ?> + + + renderView('chunks/messages', $view->getMessages('global') ); ?> + +
+ + +
+

txt('Add a new category'); ?>

+ + renderView('chunks/messages', $view->getMessages('add') ); ?> + renderView('add'); ?> +
+ + + +
+

txt('Edit categories'); ?>

+ + renderView('chunks/messages', $view->getMessages('edit') ); ?> + renderView('edit', $data ); ?> +
+ +
+

txt('Sort categories'); ?>

+ + renderView('chunks/messages', $view->getMessages('sort') ); ?> + renderView('sort', $data ); ?> +
+ +
+

txt('Categorize elements'); ?>

+ + renderView('chunks/messages', $view->getMessages('categorize') ); ?> + renderView('categorize', $data ); ?> +
+ + + + new_translations[$view->get('manager_language')] && !empty( $view->new_translations[$view->get('manager_language')] ) ) : ?> + +
+

txt('Translations'); ?>

+ + renderView('chunks/messages', $view->getMessages('translate') ); ?> + renderView('translate', $view->new_translations[$view->get('manager_language')] ); ?> +
+ + + +
+ + + +
+ + + \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/sort.tpl.phtml b/manager/actions/category_mgr/skin/sort.tpl.phtml new file mode 100644 index 0000000000..331cb1d049 --- /dev/null +++ b/manager/actions/category_mgr/skin/sort.tpl.phtml @@ -0,0 +1,37 @@ +
+ +

Drag category up or down to change its rank. Can be very useful when used with CategorizedTabs plugin to change tabs order.

+ + + + + + + + + + + + + + + + + + + + + +
txt('Category') ?>txt('Position') ?>
+ + + + + + + + +
+ +
+
diff --git a/manager/actions/category_mgr/skin/translate.tpl.phtml b/manager/actions/category_mgr/skin/translate.tpl.phtml new file mode 100644 index 0000000000..0c61d04f03 --- /dev/null +++ b/manager/actions/category_mgr/skin/translate.tpl.phtml @@ -0,0 +1,32 @@ +
+
+ txt('Translate module-phrases'); ?> + + + + + + + + + $translation ) : ?> + + + + + + + + + + + +
txt('Native phrase'); ?>txt('Translation'); ?>
+ + + +
+ +
+
+
\ No newline at end of file From 4e58d2161d5697e5b8734a00dd8eb4599c6650c5 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 13:29:50 +0200 Subject: [PATCH 002/398] Added new permission "category_manager", added field "rank" to table "categories" --- install/setup.sql | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/install/setup.sql b/install/setup.sql index a3ae78398c..bbbef873d5 100755 --- a/install/setup.sql +++ b/install/setup.sql @@ -17,6 +17,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}active_users` ( CREATE TABLE IF NOT EXISTS `{PREFIX}categories` ( `id` integer NOT NULL AUTO_INCREMENT, `category` varchar(45) NOT NULL DEFAULT '', + `rank` INT(5) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY(`id`) ) ENGINE=MyISAM COMMENT='Categories to be used snippets,tv,chunks, etc'; @@ -416,6 +417,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}user_roles` ( `change_password` int(1) NOT NULL default '0', `error_dialog` int(1) NOT NULL default '0', `about` int(1) NOT NULL default '0', + `category_manager` int(1) NOT NULL default '0', `file_manager` int(1) NOT NULL default '0', `assets_files` int(1) NOT NULL default '0', `assets_images` int(1) NOT NULL default '0', @@ -608,6 +610,12 @@ ALTER TABLE `{PREFIX}user_roles` ALTER TABLE `{PREFIX}user_roles` ADD COLUMN `assets_files` INT(1) NOT NULL DEFAULT '1' AFTER `assets_images`; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `category_manager` INT(1) NOT NULL DEFAULT '0' AFTER `about`; + +ALTER TABLE `{PREFIX}categories` + ADD COLUMN `rank` INT(5) UNSIGNED NOT NULL DEFAULT '0' AFTER `category`; + ALTER TABLE `{PREFIX}web_user_attributes` ADD COLUMN `street` varchar(255) NOT NULL DEFAULT '' AFTER `country`; @@ -823,9 +831,9 @@ REPLACE INTO `{PREFIX}user_attributes` REPLACE INTO `{PREFIX}user_roles` -(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks,assets_images,assets_files,change_resourcetype) VALUES -(2,'Editor','Limited to managing content',1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1), -(3,'Publisher','Editor with expanded permissions including manage users\, update Elements and site settings',1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,1,1,1); +(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks,assets_images,assets_files,change_resourcetype,category_manager) VALUES +(2,'Editor','Limited to managing content',1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0), +(3,'Publisher','Editor with expanded permissions including manage users\, update Elements and site settings',1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,1,1,1,0); # ]]non-upgrade-able @@ -935,8 +943,8 @@ INSERT IGNORE INTO `{PREFIX}system_settings` ('clean_uploaded_filename', '1'); REPLACE INTO `{PREFIX}user_roles` -(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks,assets_images,assets_files,change_resourcetype) VALUES -(1, 'Administrator', 'Site administrators have full access to all functions',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); +(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks,assets_images,assets_files,change_resourcetype,category_manager) VALUES +(1, 'Administrator', 'Site administrators have full access to all functions',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); # 1 - "Parser Service Events", 2 - "Manager Access Events", 3 - "Web Access Service Events", 4 - "Cache Service Events", 5 - "Template Service Events", 6 - Custom Events From 9fcf20ad7218160066fda0ee07dfd172621912dd Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 13:32:18 +0200 Subject: [PATCH 003/398] Added "Manage Categories" --- manager/actions/mutate_role.dynamic.php | 6 ++++++ manager/frames/mainmenu.php | 3 +++ manager/includes/lang/english.inc.php | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/manager/actions/mutate_role.dynamic.php b/manager/actions/mutate_role.dynamic.php index 6c1e69c077..e21e699c3b 100644 --- a/manager/actions/mutate_role.dynamic.php +++ b/manager/actions/mutate_role.dynamic.php @@ -152,6 +152,12 @@ function deletedocument() { echo render_form('assets_images', $_lang['role_assets_images']); ?> +
+

+ +
diff --git a/manager/frames/mainmenu.php b/manager/frames/mainmenu.php index 214ff2d2ee..0f19fd9e8d 100644 --- a/manager/frames/mainmenu.php +++ b/manager/frames/mainmenu.php @@ -51,6 +51,9 @@ if ($modx->hasPermission('file_manager')) { $sitemenu['manage_files'] = array('manage_files', 'elements', $_lang['manage_files'], 'index.php?a=31', $_lang['manage_files'], 'this.blur();', 'file_manager', 'main', 0, 70, ''); } +if ($modx->hasPermission('category_manager')) { + $sitemenu['manage_categories'] = array('manage_categories', 'elements', $_lang['manage_categories'], 'index.php?a=120', $_lang['manage_categories'], 'this.blur();', 'category_manager', 'main', 0, 80, ''); +} // Modules Menu Items if ($modx->hasPermission('new_module')) { $sitemenu['new_module'] = array('new_module', 'modules', $_lang['module_management'], 'index.php?a=106', $_lang['module_management'], 'this.blur();', 'new_module,edit_module', 'main', 1, 0, ''); diff --git a/manager/includes/lang/english.inc.php b/manager/includes/lang/english.inc.php index ee8016fb03..3c29441b5a 100644 --- a/manager/includes/lang/english.inc.php +++ b/manager/includes/lang/english.inc.php @@ -85,6 +85,9 @@ $_lang["captcha_words_message"] = 'Enter a list of CAPTCHA words to use if CAPTCHA is enabled. Separate the words with commas. This input field is limited to 255 characters.'; $_lang["captcha_words_title"] = 'CAPTCHA Words'; $_lang["category_heading"] = 'Category'; +$_lang["category_manager"] = 'Category Manager'; +$_lang["category_management"] = 'Category management'; +$_lang["manage_categories"] = 'Manage Categories'; $_lang["category_msg"] = 'View and edit all Elements grouped by category.'; $_lang["cfg_base_path"] = 'MODX_BASE_PATH'; $_lang["cfg_base_url"] = 'MODX_BASE_URL'; @@ -779,6 +782,7 @@ $_lang["role_assets_files"] = 'Manage assets/files'; $_lang["role_bk_manager"] = 'Use the Backup Manager'; $_lang["role_cache_refresh"] = 'Empty the site\'s cache'; +$_lang["role_category_manager"] = 'Use the Category Manager'; $_lang["role_change_password"] = 'Change password'; $_lang["role_change_resourcetype"] = 'Change Resource-Type'; $_lang["role_chunk_management"] = 'Chunk management'; From 1ae7f648978d91b158f7658380b092cf19a21a9f Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 13:33:10 +0200 Subject: [PATCH 004/398] Added new action 120 & 121 for "Manage Categories" --- manager/actions/mutate_categories.dynamic.php | 44 +++++++++++++++++++ manager/index.php | 13 ++++++ 2 files changed, 57 insertions(+) create mode 100644 manager/actions/mutate_categories.dynamic.php diff --git a/manager/actions/mutate_categories.dynamic.php b/manager/actions/mutate_categories.dynamic.php new file mode 100644 index 0000000000..db36b37542 --- /dev/null +++ b/manager/actions/mutate_categories.dynamic.php @@ -0,0 +1,44 @@ +INCLUDE_ORDERING_ERROR

Please use the MODX Content Manager instead of accessing this file directly."); + +if(!$modx->hasPermission('category_manager')) { + $modx->webAlertAndQuit($_lang["error_no_privileges"]); +} + +$_module_params = array( + 'module_version' => '1.0.0', + 'module_params' => '', + 'module_id' => $_GET['id'], + 'package_name' => 'Module_Categories_Manager', + 'native_language' => 'de', + 'name' => 'Categories Manager', + 'dirname' => $site_manager_url, + 'url' => 'index.php?a=120&id=' . $_GET['id'], + 'path' => realpath( dirname(__FILE__) ) . DIRECTORY_SEPARATOR . 'category_mgr' . DIRECTORY_SEPARATOR, + 'inc_dir' => realpath( dirname(__FILE__) ) . DIRECTORY_SEPARATOR . 'category_mgr' . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR, + 'languages_dir' => realpath( dirname(__FILE__) ) . DIRECTORY_SEPARATOR . 'category_mgr' . DIRECTORY_SEPARATOR . 'lang' . DIRECTORY_SEPARATOR, + 'views_dir' => realpath( dirname(__FILE__) ) . DIRECTORY_SEPARATOR . 'category_mgr' . DIRECTORY_SEPARATOR . 'skin' . DIRECTORY_SEPARATOR, + 'request_key' => 'module_categories_manager', + 'messages' => array() +); + +require_once $_module_params['inc_dir'] . 'Module_Categories_Manager.php'; +$cm = new Module_Categories_Manager(); + +// assign module_params to internal params +foreach( $_module_params as $param => $value ) +{ + $cm->set( $param, $value ); +} + +// catch the request actions +include_once $cm->get('inc_dir') . 'request_trigger.inc.php'; + +if( !$categories = $cm->getCategories() ) +{ + setcookie('webfxtab_manage-categories-pane', 0 ); + $cm->addMessage( $cm->txt('Currently no categories available... JUST ADD A NEW ONE!'), 'global' ); +} + +$cm->renderView('main', $categories ); +return; \ No newline at end of file diff --git a/manager/index.php b/manager/index.php index 927e90af18..916ab2d0d7 100644 --- a/manager/index.php +++ b/manager/index.php @@ -445,6 +445,19 @@ function includeFileProcessor ($filepath,$manager_theme) { include_once(includeFileProcessor("processors/delete_role.processor.php",$manager_theme)); break; /********************************************************************/ +/* category management */ +/********************************************************************/ + case 120: + // get the edit category page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_categories.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 121: + // for ajax-requests + include_once(includeFileProcessor("actions/mutate_categories.dynamic.php",$manager_theme)); + break; +/********************************************************************/ /* template management */ /********************************************************************/ case 16: From fc320cb5fb43816f31f7e7e42c0a4a3a662bc1ef Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 15:56:43 +0200 Subject: [PATCH 005/398] Make $_lang and $_style available inside tpl.phtml --- manager/actions/category_mgr/inc/Module_Categories_Manager.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/manager/actions/category_mgr/inc/Module_Categories_Manager.php b/manager/actions/category_mgr/inc/Module_Categories_Manager.php index ae24bfd7ef..e90eb5aca0 100644 --- a/manager/actions/category_mgr/inc/Module_Categories_Manager.php +++ b/manager/actions/category_mgr/inc/Module_Categories_Manager.php @@ -75,6 +75,8 @@ function getMessages( $namespace = 'default' ) function renderView( $view_name, $data = array() ) { + global $_lang, $_style; + $filename = trim( $view_name ) . '.tpl.phtml'; $file = self::get('views_dir') . $filename; $view = & $this; From 1013edee43c55a3d210cecdee97c17dae49a3428 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 15:57:36 +0200 Subject: [PATCH 006/398] Improved custom-title of tooltips --- manager/media/style/MODxRE2/style.css | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index 3f0fe11a63..d8ff29a611 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -2254,11 +2254,12 @@ form#mutate select.tv_url_select { .custom-title { font-weight: bold; - font-size: 1em; - margin: 0; - color: #fff; - padding: 6px 6px 4px; - background: #758CA2 url(images/misc/tab.gif); + font-size: 1.1em; + color: #3697CD; + border-bottom:2px solid #3697CD; + padding-bottom:4px; + margin: 6px 6px 4px; + background: #fff; } .custom-text { From fda3bbaeb4fa8af308c55afc50e280ee32a5a521 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 15:58:33 +0200 Subject: [PATCH 007/398] Style adapted to MODxRE2 --- .../actions/category_mgr/skin/add.tpl.phtml | 25 +++++++++++-------- .../category_mgr/skin/categorize.tpl.phtml | 22 ++++++++++------ .../actions/category_mgr/skin/css/module.css | 8 +++--- .../actions/category_mgr/skin/edit.tpl.phtml | 23 +++++++++-------- .../category_mgr/skin/js/categories.js | 2 +- .../actions/category_mgr/skin/main.tpl.phtml | 14 +++++++---- .../actions/category_mgr/skin/sort.tpl.phtml | 25 +++++++++++-------- 7 files changed, 69 insertions(+), 50 deletions(-) diff --git a/manager/actions/category_mgr/skin/add.tpl.phtml b/manager/actions/category_mgr/skin/add.tpl.phtml index 9bbe2b2acb..eacee51bd3 100644 --- a/manager/actions/category_mgr/skin/add.tpl.phtml +++ b/manager/actions/category_mgr/skin/add.tpl.phtml @@ -1,7 +1,17 @@ -
- -

Add a new category to the Manager.

- + + + + + @@ -15,12 +25,5 @@ - - - - -
- -
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/categorize.tpl.phtml b/manager/actions/category_mgr/skin/categorize.tpl.phtml index ca51f86ea7..bfabb9bd5a 100644 --- a/manager/actions/category_mgr/skin/categorize.tpl.phtml +++ b/manager/actions/category_mgr/skin/categorize.tpl.phtml @@ -1,7 +1,17 @@
- -

Categorize elements easily by dragging them into categories.

- + + + +
renderView('chunks/categorize/elements_select'); ?>
@@ -10,7 +20,7 @@

- <?php echo $view->txt('Select elements to categorize'); ?>txt('Select elements to categorize'); ?> + <?php echo $view->txt('Select elements to categorize'); ?>txt('Select elements to categorize'); ?>

@@ -19,10 +29,6 @@
-
- -
-
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/css/module.css b/manager/actions/category_mgr/skin/css/module.css index cf9ad55bb8..7b2d57968b 100644 --- a/manager/actions/category_mgr/skin/css/module.css +++ b/manager/actions/category_mgr/skin/css/module.css @@ -152,21 +152,21 @@ div#section-body-categories table#category-edit td.delete a img { div#section-body-categories table#category-edit td.delete a { display: inline-block; - color: #3b454f; + color: #fff; font-weight: bold; font-size: 12px; - background: #fff; + background: #32AB9A; padding: 4px 6px; white-space: nowrap; text-decoration: none; - border: 1px solid #3697CD; + border: none; border-radius: 3px !important; outline: none; } div#section-body-categories table#category-edit td.delete a:hover { color: #fff; - background: #3697CD; + background: #35baa8; } diff --git a/manager/actions/category_mgr/skin/edit.tpl.phtml b/manager/actions/category_mgr/skin/edit.tpl.phtml index 527a64032a..cf41fd27a6 100644 --- a/manager/actions/category_mgr/skin/edit.tpl.phtml +++ b/manager/actions/category_mgr/skin/edit.tpl.phtml @@ -1,7 +1,17 @@
- -

Change category name or delete category from the Manager.

- + + + + @@ -32,12 +42,5 @@ - - - - -
- -
\ No newline at end of file diff --git a/manager/actions/category_mgr/skin/js/categories.js b/manager/actions/category_mgr/skin/js/categories.js index 17537b2c27..a3741b879f 100644 --- a/manager/actions/category_mgr/skin/js/categories.js +++ b/manager/actions/category_mgr/skin/js/categories.js @@ -104,7 +104,7 @@ var init_drag = function() { * * @TODO collect them within a object and send by jason-request. */ -$('categorize-form').getElement('input[type=submit]').addEvent('mouseenter',function() { +$('categorize-submit').addEvent('mouseenter',function() { this.setProperty('disabled','disabled'); this.setProperty('value','wait...'); diff --git a/manager/actions/category_mgr/skin/main.tpl.phtml b/manager/actions/category_mgr/skin/main.tpl.phtml index 4f279d609f..312cc9571a 100644 --- a/manager/actions/category_mgr/skin/main.tpl.phtml +++ b/manager/actions/category_mgr/skin/main.tpl.phtml @@ -7,7 +7,11 @@ -

get('name'); ?>

+

+ + get('name'); ?> +

+
  • <?php echo $view->txt('Close Categories Manager'); ?> txt('Close Categories Manager'); ?>
  • @@ -28,7 +32,7 @@
    -

    txt('Add a new category'); ?>

    +

    txt('Add a new category'); ?>

    renderView('chunks/messages', $view->getMessages('add') ); ?> renderView('add'); ?> @@ -37,21 +41,21 @@
    -

    txt('Edit categories'); ?>

    +

    txt('Edit categories'); ?>

    renderView('chunks/messages', $view->getMessages('edit') ); ?> renderView('edit', $data ); ?>
    -

    txt('Sort categories'); ?>

    +

    txt('Sort categories'); ?>

    renderView('chunks/messages', $view->getMessages('sort') ); ?> renderView('sort', $data ); ?>
    -

    txt('Categorize elements'); ?>

    +

    txt('Categorize elements'); ?>

    renderView('chunks/messages', $view->getMessages('categorize') ); ?> renderView('categorize', $data ); ?> diff --git a/manager/actions/category_mgr/skin/sort.tpl.phtml b/manager/actions/category_mgr/skin/sort.tpl.phtml index 331cb1d049..3e92f3cfbc 100644 --- a/manager/actions/category_mgr/skin/sort.tpl.phtml +++ b/manager/actions/category_mgr/skin/sort.tpl.phtml @@ -1,7 +1,17 @@
    - -

    Drag category up or down to change its rank. Can be very useful when used with CategorizedTabs plugin to change tabs order.

    - + + + + @@ -25,13 +35,6 @@ - - - - - - +
    - -
    From 25bf817f2303faca7849820d6c3f686e7c5e8955 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 16:17:15 +0200 Subject: [PATCH 008/398] "Categorize elements" more adapted to MODxRE2 --- .../actions/category_mgr/skin/css/module.css | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/manager/actions/category_mgr/skin/css/module.css b/manager/actions/category_mgr/skin/css/module.css index 7b2d57968b..ca77226ec2 100644 --- a/manager/actions/category_mgr/skin/css/module.css +++ b/manager/actions/category_mgr/skin/css/module.css @@ -212,7 +212,8 @@ div#section-body-categories div.drop { float: left; min-height: 50px; margin: .5%; - border: 1px solid #333; + border: 1px solid #C3C3C3; + background-color:#fff; position: relative; } @@ -223,13 +224,15 @@ div#section-body-categories div.uncategorized_elements { div#section-body-categories div.uncategorized_elements h2, div#section-body-categories div.drop h2 { padding: 5px 7px 6px 7px; - background: #555; - color: #fff; + color: #3697CD; + border-bottom:2px solid #3697CD; + margin:0 2px; font-size: 12px; font-weight: bold; - margin-bottom: 0; } - +div#section-body-categories div { + +} div#section-body-categories div.over { background-color: #E0E8EF } @@ -248,4 +251,6 @@ div#section-body-categories div.nok { } /* Avoid jumping when Tooltip is longer than viewport-bottom */ -html { overflow-y:scroll; } \ No newline at end of file +html { overflow-y:scroll; } +.grid { background-color: #f2f2f2; } +.gridItem { background-color: transparent; } \ No newline at end of file From e5fa23c2e0d9d6d6836fad361bfdc45730f21502 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 18:53:40 +0200 Subject: [PATCH 009/398] Improved styles, icons etc --- .../actions/category_mgr/skin/add.tpl.phtml | 2 +- .../skin/chunks/categorize/category.tpl.phtml | 2 +- .../actions/category_mgr/skin/css/module.css | 30 ++++++++++++++----- .../actions/category_mgr/skin/edit.tpl.phtml | 2 +- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/manager/actions/category_mgr/skin/add.tpl.phtml b/manager/actions/category_mgr/skin/add.tpl.phtml index eacee51bd3..4110876a19 100644 --- a/manager/actions/category_mgr/skin/add.tpl.phtml +++ b/manager/actions/category_mgr/skin/add.tpl.phtml @@ -21,7 +21,7 @@ - + diff --git a/manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml b/manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml index c9ba154073..236f8882d5 100644 --- a/manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml +++ b/manager/actions/category_mgr/skin/chunks/categorize/category.tpl.phtml @@ -1,6 +1,6 @@
    -

    +

    renderView('chunks/categorize/drag_element',$element); ?> diff --git a/manager/actions/category_mgr/skin/css/module.css b/manager/actions/category_mgr/skin/css/module.css index ca77226ec2..e3c35a0aff 100644 --- a/manager/actions/category_mgr/skin/css/module.css +++ b/manager/actions/category_mgr/skin/css/module.css @@ -138,7 +138,7 @@ div#section-body-categories div.assigned_elements p.no_assigned_elements { } div#section-body-categories tr.move td { - background-color: #88939E; + background-color: #3697CD; color: #fff; } @@ -178,7 +178,7 @@ div#section-body-categories div#categorize-workbench { div#section-body-categories div.drag { padding: 2px 5px; - border: solid 1px #88939E; + background-color:#3697CD; cursor: move; position: relative; float: left; @@ -188,6 +188,7 @@ div#section-body-categories div.drag { div#section-body-categories div.drag h4 { margin-bottom: 0; font-size: 1em; + color:#fff; } div#section-body-categories div.drag p { @@ -215,6 +216,7 @@ div#section-body-categories div.drop { border: 1px solid #C3C3C3; background-color:#fff; position: relative; + padding:4px; } div#section-body-categories div.uncategorized_elements { @@ -226,7 +228,7 @@ div#section-body-categories div.drop h2 { padding: 5px 7px 6px 7px; color: #3697CD; border-bottom:2px solid #3697CD; - margin:0 2px; + margin:0 0px 4px 0px; font-size: 12px; font-weight: bold; } @@ -234,7 +236,7 @@ div#section-body-categories div { } div#section-body-categories div.over { - background-color: #E0E8EF + background-color: rgba(54,151,204,.2); } div#section-body-categories .ajax_loading { @@ -242,8 +244,19 @@ div#section-body-categories .ajax_loading { } div#section-body-categories div.ok { - background: url(../img/ok.png) no-repeat 2px center; - padding-left: 20px; + background-color: #37bdf4; + +} +div#section-body-categories div.ok:before { + font-family: 'FontAwesome'; + font-style: normal; + display: inline; + text-decoration: inherit; + content: "\f00c"; + color:#fff; + font-weight:normal; + float:left; + margin-right:5px; } div#section-body-categories div.nok { @@ -253,4 +266,7 @@ div#section-body-categories div.nok { /* Avoid jumping when Tooltip is longer than viewport-bottom */ html { overflow-y:scroll; } .grid { background-color: #f2f2f2; } -.gridItem { background-color: transparent; } \ No newline at end of file +.gridItem { background-color: transparent; } +.drag h4 { float:left; } +.inputBox { width:100%; } +.grid tbody tr:hover td { color:#fff; background-color: #37bdf4; } \ No newline at end of file diff --git a/manager/actions/category_mgr/skin/edit.tpl.phtml b/manager/actions/category_mgr/skin/edit.tpl.phtml index cf41fd27a6..2c58440587 100644 --- a/manager/actions/category_mgr/skin/edit.tpl.phtml +++ b/manager/actions/category_mgr/skin/edit.tpl.phtml @@ -37,7 +37,7 @@ - txt('Delete'); ?> + txt('Delete'); ?> From b8032220c519fb0303282f865e5858089539c149 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 19:01:06 +0200 Subject: [PATCH 010/398] Replaced message-icon --- manager/actions/category_mgr/skin/css/module.css | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/manager/actions/category_mgr/skin/css/module.css b/manager/actions/category_mgr/skin/css/module.css index e3c35a0aff..03b3a5c795 100644 --- a/manager/actions/category_mgr/skin/css/module.css +++ b/manager/actions/category_mgr/skin/css/module.css @@ -39,10 +39,20 @@ div#section-body-categories div.messages ul { div#section-body-categories div.messages ul li { list-style-type: none; list-style-image: none; - background: url(../img/information.png) no-repeat left center; margin: 0; padding: 5px; - padding-left: 20px; +} + +div#section-body-categories div.messages ul li:before { + font-family: 'FontAwesome'; + font-style: normal; + display: inline; + text-decoration: inherit; + content: "\f00c"; + color:#3697CD; + font-weight:normal; + float:left; + margin-right:5px; } div#section-body-categories div.messages ul li span.highlight { From 8386ebc6d8b22f0ac3d236b150af4844b7620815 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 19:07:28 +0200 Subject: [PATCH 011/398] Small fix --- manager/actions/category_mgr/skin/css/module.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/actions/category_mgr/skin/css/module.css b/manager/actions/category_mgr/skin/css/module.css index 03b3a5c795..224b2fca6f 100644 --- a/manager/actions/category_mgr/skin/css/module.css +++ b/manager/actions/category_mgr/skin/css/module.css @@ -279,4 +279,4 @@ html { overflow-y:scroll; } .gridItem { background-color: transparent; } .drag h4 { float:left; } .inputBox { width:100%; } -.grid tbody tr:hover td { color:#fff; background-color: #37bdf4; } \ No newline at end of file +#categories-sort tr:hover td { color:#fff; background-color: #37bdf4; } \ No newline at end of file From fd00749624721437b4ed18b10ec6cd10c262216c Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 19:15:25 +0200 Subject: [PATCH 012/398] Small fix --- manager/actions/category_mgr/skin/css/module.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manager/actions/category_mgr/skin/css/module.css b/manager/actions/category_mgr/skin/css/module.css index 224b2fca6f..3a4ee1a6ad 100644 --- a/manager/actions/category_mgr/skin/css/module.css +++ b/manager/actions/category_mgr/skin/css/module.css @@ -192,7 +192,7 @@ div#section-body-categories div.drag { cursor: move; position: relative; float: left; - margin: 3px; + margin: 4px 0 4px 8px; } div#section-body-categories div.drag h4 { @@ -226,7 +226,7 @@ div#section-body-categories div.drop { border: 1px solid #C3C3C3; background-color:#fff; position: relative; - padding:4px; + padding-bottom:4px; } div#section-body-categories div.uncategorized_elements { @@ -238,7 +238,7 @@ div#section-body-categories div.drop h2 { padding: 5px 7px 6px 7px; color: #3697CD; border-bottom:2px solid #3697CD; - margin:0 0px 4px 0px; + margin:0 4px 4px 4px; font-size: 12px; font-weight: bold; } From 003d5c62305000e225c1a0ec0a18647781c80984 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 21 Oct 2016 19:34:00 +0200 Subject: [PATCH 013/398] Removed void(), added return false --- manager/actions/category_mgr/skin/add.tpl.phtml | 2 +- manager/actions/category_mgr/skin/categorize.tpl.phtml | 2 +- manager/actions/category_mgr/skin/edit.tpl.phtml | 2 +- manager/actions/category_mgr/skin/sort.tpl.phtml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/manager/actions/category_mgr/skin/add.tpl.phtml b/manager/actions/category_mgr/skin/add.tpl.phtml index 4110876a19..f81f62db82 100644 --- a/manager/actions/category_mgr/skin/add.tpl.phtml +++ b/manager/actions/category_mgr/skin/add.tpl.phtml @@ -1,7 +1,7 @@
'; -} - return $output; -} +// Prepare lang-strings / $unlockTranslations +$unlockTranslations = array('msg'=>$_lang["unlock_element_id_warning"], + 'type1'=>$_lang["lock_element_type_1"], 'type2'=>$_lang["lock_element_type_2"], 'type3'=>$_lang["lock_element_type_3"], 'type4'=>$_lang["lock_element_type_4"], + 'type5'=>$_lang["lock_element_type_5"], 'type6'=>$_lang["lock_element_type_6"], 'type7'=>$_lang["lock_element_type_7"], 'type8'=>$_lang["lock_element_type_8"]); +foreach ($unlockTranslations as $key=>$value) $unlockTranslations[$key] = iconv($modx->config["modx_charset"], "utf-8", $value); ?> + - +

@@ -235,291 +36,14 @@ function unlockElement(type, id, domEl) { tpResources = new WebFXTabPane( document.getElementById( "resourcesPane" ), true); - -hasPermission('new_template') || $modx->hasPermission('edit_template')) { ?> -
-

- - - -
    -
  • -
    - -
    -
  • -
  • -
  • -
- - - - -
- - - -hasPermission('new_template') || $modx->hasPermission('edit_template')) { ?> -
-

- - - - -
    -
  • -
    - -
    -
  • -
  • -
  • -
  • -
- - - - -
- - - -hasPermission('new_chunk') || $modx->hasPermission('edit_chunk')) { ?> -
-

- - - -
    -
  • -
    - -
    -
  • -
  • -
  • -
- - - - -
- - - -hasPermission('new_snippet') || $modx->hasPermission('edit_snippet')) { ?> -
-

- - - -
    -
  • -
    - -
    -
  • -
  • -
  • -
- - - - -
- - - -hasPermission('new_plugin') || $modx->hasPermission('edit_plugin')) { ?> -
-

- - - -
    -
  • -
    - -
    -
  • - hasPermission('new_plugin')) { ?>
  • - hasPermission('save_plugin')) { ?>
  • -hasPermission('delete_plugin') && $_SESSION['mgrRole'] == 1) { - $tbl_site_plugins = $modx->getFullTableName('site_plugins'); - if ($modx->db->getRecordCount($modx->db->query("SELECT id FROM {$tbl_site_plugins} t1 WHERE disabled = 1 AND name IN (SELECT name FROM {$tbl_site_plugins} t2 WHERE t1.name = t2.name AND t1.id != t2.id)"))) { ?> -
  • - -
  • -
- - - - -
- - - -
-

- - - -
    -
  • -
    - -
    -
  • -
  • -
- -
- hasPermission('edit_plugin') || $modx->hasPermission('new_plugin')) { - $displayInfo['plugin'] = array('table'=>'site_plugins','action'=>102,'name'=>$_lang['manage_plugins']); - $hasPermission = 1; - } - if($modx->hasPermission('edit_snippet') || $modx->hasPermission('new_snippet')) { - $displayInfo['snippet'] = array('table'=>'site_snippets','action'=>22,'name'=>$_lang['manage_snippets']); - $hasPermission = 1; - } - if($modx->hasPermission('edit_chunk') || $modx->hasPermission('new_chunk')) { - $displayInfo['htmlsnippet'] = array('table'=>'site_htmlsnippets','action'=>78,'name'=>$_lang['manage_htmlsnippets']); - $hasPermission = 1; - } - if($modx->hasPermission('edit_template') || $modx->hasPermission('new_template')) { - $displayInfo['templates'] = array('table'=>'site_templates','action'=>16,'name'=>$_lang['manage_templates']); - $displayInfo['tmplvars'] = array('table'=>'site_tmplvars','action'=>301,'name'=>$_lang['tmplvars']); - $hasPermission = 1; - } - if($modx->hasPermission('edit_module') || $modx->hasPermission('new_module')) { - $displayInfo['modules'] = array('table'=>'site_modules','action'=>108,'name'=>$_lang['modules']); - $hasPermission = 1; - } - - //Category Delete permission check - $delPerm = 0; - if($modx->hasPermission('save_plugin') || - $modx->hasPermission('save_snippet') || - $modx->hasPermission('save_chunk') || - $modx->hasPermission('save_template') || - $modx->hasPermission('save_module')) { - $delPerm = 1; - } - - if($hasPermission) { - $finalInfo = array(); - - foreach ($displayInfo as $n => $v) { - $nameField = ($v['table'] == 'site_templates')? 'templatename': 'name'; - $pluginsql = $v['table'] == 'site_plugins' ? $v['table'].'.disabled, ' : ''; - $rs = $modx->db->select( - "{$pluginsql} {$nameField} as name, {$v['table']}.id, description, locked, IF(isnull(categories.category), '{$_lang['no_category']}',categories.category) as category, categories.id as catid", - $modx->getFullTableName($v['table'])." AS {$v['table']} - LEFT JOIN ".$modx->getFullTableName('categories')." AS categories ON {$v['table']}.category = categories.id", - "", - "5,1" - ); - while ($row = $modx->db->getRow($rs)) { - $row['type'] = $v['name']; - $row['action'] = $v['action']; - if (empty($row['category'])) {$row['category'] = $_lang['no_category'];} - $finalInfo[] = $row; - } - } - - foreach($finalInfo as $n => $v) { - $category[$n] = $v['category']; - $name[$n] = $v['name']; - } - - $category_lowercase = array_map('strtolower', $category); - $name_lowercase = array_map('strtolower', $name); - array_multisort($category_lowercase, SORT_ASC, SORT_STRING, $name_lowercase, SORT_ASC, SORT_STRING, $finalInfo); - - echo '
    '; - $preCat = ''; - $insideUl = 0; - foreach($finalInfo as $n => $v) { - if ($preCat !== $v['category']) { - echo $insideUl? '
': ''; - if ($v['category'] == $_lang['no_category'] || !$delPerm) { - echo '
  • '.$v['category']. ($v['catid']!='' ? ' ('.$v['catid'].')' : '') .'
      '; - } else { - echo '
    • '.$v['category']. ($v['catid']!='' ? ' ('.$v['catid'].')' : '') .' - '.$_lang['delete'].'
        '; - } - $insideUl = 1; - } - $class = array_key_exists('disabled',$v) && $v['disabled'] ? ' class="disabledPlugin"' : ''; - if ($v['id']) { - ?> -
      • >('.$_lang['locked'].')' : "" ; ?>
      • - ': ''; - ?> - -
  • - -
    tpResources.setSelectedIndex( '.$_GET['tab'].' );'; } diff --git a/manager/actions/resources/functions.inc.php b/manager/actions/resources/functions.inc.php new file mode 100644 index 0000000000..7b46107b9e --- /dev/null +++ b/manager/actions/resources/functions.inc.php @@ -0,0 +1,17 @@ +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); + +function renderViewSwitchButtons($cssId) { + return ' +
    + + + + +
    + + + + +
    '; +} \ No newline at end of file diff --git a/manager/actions/resources/functions.js b/manager/actions/resources/functions.js new file mode 100644 index 0000000000..6f142e29a2 --- /dev/null +++ b/manager/actions/resources/functions.js @@ -0,0 +1,149 @@ +function initQuicksearch(inputId, listId) { + jQuery('#'+inputId).quicksearch('#'+listId+' ul li', { + selector: '.man_el_name', + 'show': function () { jQuery(this).removeClass('hide'); }, + 'hide': function () { jQuery(this).addClass('hide'); }, + 'bind':'keyup', + 'onAfter': function() { + jQuery('#'+listId).find('> li ul').each( function() { + var parentLI = jQuery(this).closest('li'); + var totalLI = jQuery(this).children('li').length; + var hiddenLI = jQuery(this).children('li.hide').length; + if (hiddenLI == totalLI) { parentLI.addClass('hide'); } + else { parentLI.removeClass('hide'); } + }); + } + }); + jQuery('.filterElements-form').keydown(function (e) { + if (e.keyCode == 13) { + e.preventDefault(); + } + }); +} + +function unlockElement(type, id, domEl) { + var msg = trans.msg.replace('[+id+]',id).replace('[+element_type+]',trans['type'+type]); + if(confirm(msg)==true) { + jQuery.get( 'index.php?a=67&type='+type+'&id='+id, function( data ) { + if(data == 1) { + jQuery(domEl).fadeOut(); + } + else alert( data ); + }); + } +} +function initViews(pre, helppre, target) { + jQuery( "#"+helppre+"-help" ).click(function() { + jQuery( '#'+helppre+'-info').toggle(); + }); +} + +function setColumnCount(targetEl, count) { + targetEl.find('li ul').css({ + '-moz-column-count': count, + '-webkit-column-count': count, + 'column-count': count, + }); +} + +// Add switch-view functionality +jQuery( document ).ready(function() { + jQuery(".switchForm").each(function() { + var target = jQuery(this).data('target'); + var targetEl = jQuery('#'+target); + var version = 1; + + jQuery(this).change(function() { + var viewOpts = {}; + // Options + if(jQuery(this).find("input:checkbox[name=cb_buttons]").is(':checked')) { + targetEl.find('.elements_buttonbar').show(); + viewOpts.cb_buttons = 1; + } else { + targetEl.find('.elements_buttonbar').hide(); + viewOpts.cb_buttons = 0; + } + if(jQuery(this).find("input:checkbox[name=cb_description]").is(':checked')) { + targetEl.find('span.elements_descr').show(); + viewOpts.cb_description = 1; + } else { + targetEl.find('span.elements_descr').hide(); + viewOpts.cb_description = 0; + } + if(jQuery(this).find("input:checkbox[name=cb_icons]").is(':checked')) { + targetEl.removeClass('noicons'); + viewOpts.cb_icons = 1; + } else { + targetEl.addClass('noicons'); + viewOpts.cb_icons = 0; + } + if(jQuery(this).find("input:checkbox[name=cb_small]").is(':checked')) { + targetEl.addClass('small'); + viewOpts.cb_small = 1; + } else { + targetEl.removeClass('small'); + viewOpts.cb_small = 0; + } + + // Views + var columns = jQuery(this).find("input[name=columns]").val(); + viewOpts.columns = columns; + switch(this.view.value) { + case 'inline': + targetEl.removeClass('flex list'); + targetEl.addClass('inline'); + viewOpts.view = 'inline'; + setColumnCount(targetEl, 1); + break; + case 'flex': + targetEl.removeClass('inline list'); + targetEl.addClass('flex'); + viewOpts.view = 'flex'; + setColumnCount(targetEl, columns); + break; + case 'list': + default: + targetEl.removeClass('flex inline'); + targetEl.addClass('list'); + viewOpts.view = 'list'; + setColumnCount(targetEl, 1); + break; + } + + // Save to localhost + viewOpts.version = version; + localStorage.setItem('MODX_mgrResources_'+target, JSON.stringify(viewOpts)); + + console.log('save', viewOpts); + }); + + // Get parameters from localStorage + var viewOpts = JSON.parse(localStorage.getItem('MODX_mgrResources_'+target)); + + // console.log('load', viewOpts.version, '==', version); + console.log(viewOpts); + + if(viewOpts && viewOpts.version == version) { + // Recover from localStorage + if(viewOpts.cb_buttons) jQuery(this).find("input:checkbox[name=cb_buttons]").attr('checked', true).prop("checked", true); + if(viewOpts.cb_description) jQuery(this).find("input:checkbox[name=cb_description]").attr('checked', true).prop("checked", true); + if(viewOpts.cb_icons) jQuery(this).find("input:checkbox[name=cb_icons]").attr('checked', true).prop("checked", true); + if(viewOpts.cb_small) jQuery(this).find("input:checkbox[name=cb_small]").attr('checked', true).prop("checked", true); + if(viewOpts.view) jQuery(this).find("input:radio[name=view][value="+viewOpts.view+"]").attr('checked', true).prop("checked", true); + if(viewOpts.columns) jQuery(this).find("input[name=columns]").val(viewOpts.columns); + } else { + // Set defaults + jQuery(this).find("input:checkbox[name=cb_buttons]").attr('checked', true).prop("checked", true); + jQuery(this).find("input:checkbox[name=cb_description]").attr('checked', true).prop("checked", true); + jQuery(this).find("input:checkbox[name=cb_icons]").attr('checked', true).prop("checked", true); + jQuery(this).find("input:checkbox[name=cb_small]").attr('checked', false).prop("checked", false); + jQuery(this).find("input:radio[name=view]:first").attr('checked', true).prop("checked", true); + jQuery(this).find("input[name=columns]").val(3); + } + jQuery(this).trigger('change'); + + jQuery(this).submit(function(e){ + e.preventDefault(); + }); + }); +}); \ No newline at end of file diff --git a/manager/actions/resources/mgrResources.class.php b/manager/actions/resources/mgrResources.class.php new file mode 100644 index 0000000000..0d5c28697f --- /dev/null +++ b/manager/actions/resources/mgrResources.class.php @@ -0,0 +1,208 @@ +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); + +class mgrResources { + var $types = array(); + var $items = array(); + + function __construct() { + $this->setTypes(); + $this->queryItemsFromDB(); + } + + function setTypes() { + global $_lang; + $this->types['site_templates'] = array( + 'title'=>$_lang["manage_templates"], + 'actions'=>array( 'edit'=>array(16,'edit_template'), 'duplicate'=>array(96,'new_template'), 'remove'=>array(21,'delete_template') ), + 'permissions'=>array('new_template','edit_template'), + 'name'=>'templatename' + ); + $this->types['site_tmplvars'] = array( + 'title'=>$_lang["tmplvars"], + 'actions'=>array('edit'=>array(301,'edit_template'), 'duplicate'=>array(304,'edit_template'), 'remove'=>array(303,'edit_template')), + 'permissions'=>array('new_template','edit_template'), + ); + $this->types['site_htmlsnippets'] = array( + 'title'=>$_lang["manage_htmlsnippets"], + 'actions'=>array('edit'=>array(78,'edit_chunk'), 'duplicate'=>array(97,'new_chunk'), 'remove'=>array(80,'delete_chunk')), + 'permissions'=>array('new_chunk','edit_chunk'), + ); + $this->types['site_snippets'] = array( + 'title'=>$_lang["manage_snippets"], + 'actions'=>array('edit'=>array(22,'edit_snippet'), 'duplicate'=>array(98,'new_snippet'), 'remove'=>array(25,'delete_snippet')), + 'permissions'=>array('new_snippet','edit_snippet'), + ); + $this->types['site_plugins'] = array( + 'title'=>$_lang["manage_plugins"], + 'actions'=>array('edit'=>array(102,'edit_plugin'), 'duplicate'=>array(105,'new_plugin'), 'remove'=>array(104,'delete_plugin')), + 'permissions'=>array('new_plugin','edit_plugin'), + ); + } + + function queryItemsFromDB() { + foreach($this->types as $resourceTable=>$type) { + if($this->hasAnyPermissions($type['permissions'])) { + $nameField = isset($type['name']) ? $type['name'] : 'name'; + $this->items[$resourceTable] = $this->queryResources($resourceTable, $nameField); + } + } + } + + function hasAnyPermissions($permissions) { + global $modx; + + foreach($permissions as $p) + if($modx->hasPermission($p)) return true; + + return false; + } + + function createResourceList($resourceTable) { + global $_lang; + + return !$this->items[$resourceTable] ? $_lang['no_results'] : self::render($resourceTable); + } + + function queryResources($resourceTable, $nameField = 'name') { + global $modx, $_lang; + + $pluginsql = $resourceTable == 'site_plugins' ? $resourceTable . '.disabled, ' : ''; + + $tvsql = ''; + $tvjoin = ''; + if ($resourceTable == 'site_tmplvars') { + $tvsql = 'site_tmplvars.caption, '; + $tvjoin = sprintf('LEFT JOIN %s AS stt ON site_tmplvars.id=stt.tmplvarid GROUP BY site_tmplvars.id,reltpl', $modx->getFullTableName('site_tmplvar_templates')); + $sttfield = 'IF(stt.templateid,1,0) AS reltpl,'; + } + else $sttfield = ''; + + //$orderby = $resourceTable == 'site_plugins' ? '6,2' : '5,1'; + + switch ($resourceTable) { + case 'site_plugins': + $orderby = '6,2'; + break; + case 'site_tmplvars': + $orderby = '7,3'; + break; + case 'site_templates': + $orderby = '6,1'; + break; + default: + $orderby = '5,1'; + } + + $selectableTemplates = $resourceTable == 'site_templates' ? "{$resourceTable}.selectable, " : ""; + + $rs = $modx->db->select( + "{$sttfield} {$pluginsql} {$tvsql} {$resourceTable}.{$nameField} as name, {$resourceTable}.id, {$resourceTable}.description, {$resourceTable}.locked, {$selectableTemplates}IF(isnull(categories.category),'{$_lang['no_category']}',categories.category) as category, categories.id as catid", + $modx->getFullTableName($resourceTable) . " AS {$resourceTable} + LEFT JOIN " . $modx->getFullTableName('categories') . " AS categories ON {$resourceTable}.category = categories.id {$tvjoin}", + "", + $orderby + ); + $limit = $modx->db->getRecordCount($rs); + + if($limit < 1) return false; + + $result = array(); + while ($row = $modx->db->getRow($rs)) { + $result[] = $row; + } + return $result; + } + + function render($resourceTable) { + global $modx,$_lang,$_style,$modx_textdir; + + $output = '
      '; + $preCat = ''; + $insideUl = 0; + foreach($this->items[$resourceTable] as $row) { + $row['category'] = stripslashes($row['category']); + if ($preCat !== $row['category']) { + $output .= $insideUl ? '
    ' : ''; + $output .= '
  • ' . $row['category'] . ($row['catid'] != '' ? ' (' . $row['catid'] . ')' : '') . '
      '; + $insideUl = 1; + } + + if ($resourceTable == 'site_templates') { + $class = $row['selectable'] ? '' : ' class="disabledPlugin"'; + $lockElementType = 1; + } + if ($resourceTable == 'site_tmplvars') { + $class = $row['reltpl'] ? '' : ' class="disabledPlugin"'; + $lockElementType = 2; + } + if ($resourceTable == 'site_htmlsnippets') { + $lockElementType = 3; + } + if ($resourceTable == 'site_snippets') { + $lockElementType = 4; + } + if ($resourceTable == 'site_plugins') { + $class = $row['disabled'] ? ' class="disabledPlugin"' : ''; + $lockElementType = 5; + } + + // Prepare displaying user-locks + $lockedByUser = ''; + $rowLock = $modx->elementIsLocked($lockElementType, $row['id'], true); + if ($rowLock && $modx->hasPermission('display_locks')) { + if ($rowLock['sid'] == $modx->sid) { + $title = $modx->parseText($_lang["lock_element_editing"], array('element_type' => $_lang["lock_element_type_" . $lockElementType], 'lasthit_df' => $rowLock['lasthit_df'])); + $lockedByUser = ' '; + } + else { + $title = $modx->parseText($_lang["lock_element_locked_by"], array('element_type' => $_lang["lock_element_type_" . $lockElementType], 'username' => $rowLock['username'], 'lasthit_df' => $rowLock['lasthit_df'])); + if ($modx->hasPermission('remove_locks')) { + $lockedByUser = ''; + } + else { + $lockedByUser = ''; + } + } + } + + $output .= '
    • ' . $lockedByUser . '' . $row['name'] . ' (' . $row['id'] . ')' . ($modx_textdir ? '‏' : '') . ' '; + + if ($resourceTable == 'site_tmplvars') { + $output .= !empty($row['description']) ? ' ' . $row['caption'] . '   (' . $row['description'] . ')' : ' - ' . $row['caption']; + } + else { + $output .= !empty($row['description']) ? ' ' . $row['description'] : ''; + } + + $tplInfo = array(); + if ($row['locked']) $tplInfo[] = $_lang['locked']; + if ($row['id'] == $modx->config['default_template'] && $resourceTable == 'site_templates') $tplInfo[] = $_lang['defaulttemplate_title']; + $output .= !empty($tplInfo) ? ' (' . join(', ', $tplInfo) . ')' : ''; + + /* row buttons */ + $output .= '
      '; + + if ($modx->hasPermission($this->types[$resourceTable]['actions']['edit'][1])) { + $output .= ' '; + } + if ($modx->hasPermission($this->types[$resourceTable]['actions']['duplicate'][1])) { + $output .= ' '; + } + if ($modx->hasPermission($this->types[$resourceTable]['actions']['remove'][1])) { + $output .= ' '; + } + + $output .= '
      '; + /* end row buttons */ + + $output .= '
    • '; + + $preCat = $row['category']; + } + $output .= $insideUl ? '
    ' : ''; + $output .= ''; + + return $output; + } +} \ No newline at end of file diff --git a/manager/actions/resources/tab1_templates.inc.php b/manager/actions/resources/tab1_templates.inc.php new file mode 100644 index 0000000000..e2813f5a38 --- /dev/null +++ b/manager/actions/resources/tab1_templates.inc.php @@ -0,0 +1,31 @@ + +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); + +if(isset($resources->items['site_templates'])) { ?> +
    +

    + + + +
      +
    • +
      + +
      +
    • +
    • +
    • + +
    + + createResourceList('site_templates'); ?> + + +
    + \ No newline at end of file diff --git a/manager/actions/resources/tab2_templatevars.inc.php b/manager/actions/resources/tab2_templatevars.inc.php new file mode 100644 index 0000000000..85eff7958e --- /dev/null +++ b/manager/actions/resources/tab2_templatevars.inc.php @@ -0,0 +1,36 @@ + +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); + +if(isset($resources->items['site_tmplvars'])) { ?> +
    +

    + + + + +
      +
    • +
      + +
      +
    • +
    • +
    • +
    • + +
    + + createResourceList('site_tmplvars'); ?> + + +
    + \ No newline at end of file diff --git a/manager/actions/resources/tab3_chunks.inc.php b/manager/actions/resources/tab3_chunks.inc.php new file mode 100644 index 0000000000..b79a59928e --- /dev/null +++ b/manager/actions/resources/tab3_chunks.inc.php @@ -0,0 +1,31 @@ + +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); + +if(isset($resources->items['site_htmlsnippets'])) { ?> +
    +

    + + + +
      +
    • +
      + +
      +
    • +
    • +
    • + +
    + + createResourceList('site_htmlsnippets'); ?> + + +
    + \ No newline at end of file diff --git a/manager/actions/resources/tab4_snippets.inc.php b/manager/actions/resources/tab4_snippets.inc.php new file mode 100644 index 0000000000..4b2a886d79 --- /dev/null +++ b/manager/actions/resources/tab4_snippets.inc.php @@ -0,0 +1,31 @@ + +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); + +if(isset($resources->items['site_snippets'])) { ?> +
    +

    + + + +
      +
    • +
      + +
      +
    • +
    • +
    • + +
    + + createResourceList('site_snippets'); ?> + + +
    + \ No newline at end of file diff --git a/manager/actions/resources/tab5_plugins.inc.php b/manager/actions/resources/tab5_plugins.inc.php new file mode 100644 index 0000000000..ea0c88a17c --- /dev/null +++ b/manager/actions/resources/tab5_plugins.inc.php @@ -0,0 +1,38 @@ + +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); + +if(isset($resources->items['site_plugins'])) { ?> +
    +

    + + + +
      +
    • +
      + +
      +
    • + hasPermission('new_plugin')) { ?>
    • + hasPermission('save_plugin')) { ?>
    • + hasPermission('delete_plugin') && $_SESSION['mgrRole'] == 1) { + $tbl_site_plugins = $modx->getFullTableName('site_plugins'); + if ($modx->db->getRecordCount($modx->db->query("SELECT id FROM {$tbl_site_plugins} t1 WHERE disabled = 1 AND name IN (SELECT name FROM {$tbl_site_plugins} t2 WHERE t1.name = t2.name AND t1.id != t2.id)"))) { ?> +
    • + +
    • + +
    + + createResourceList('site_plugins'); ?> + + +
    + \ No newline at end of file diff --git a/manager/actions/resources/tab6_categoryview.inc.php b/manager/actions/resources/tab6_categoryview.inc.php new file mode 100644 index 0000000000..ac80bf358b --- /dev/null +++ b/manager/actions/resources/tab6_categoryview.inc.php @@ -0,0 +1,124 @@ +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); ?> + + +
    +

    + + + +
      +
    • +
      + +
      +
    • +
    • +
    • + + +
      + + +
      +
    + +
    + hasPermission('edit_plugin') || $modx->hasPermission('new_plugin')) { + $displayInfo['plugin'] = array('table'=>'site_plugins','action'=>102,'name'=>$_lang['manage_plugins']); + $hasPermission = 1; + } + if($modx->hasPermission('edit_snippet') || $modx->hasPermission('new_snippet')) { + $displayInfo['snippet'] = array('table'=>'site_snippets','action'=>22,'name'=>$_lang['manage_snippets']); + $hasPermission = 1; + } + if($modx->hasPermission('edit_chunk') || $modx->hasPermission('new_chunk')) { + $displayInfo['htmlsnippet'] = array('table'=>'site_htmlsnippets','action'=>78,'name'=>$_lang['manage_htmlsnippets']); + $hasPermission = 1; + } + if($modx->hasPermission('edit_template') || $modx->hasPermission('new_template')) { + $displayInfo['templates'] = array('table'=>'site_templates','action'=>16,'name'=>$_lang['manage_templates']); + $displayInfo['tmplvars'] = array('table'=>'site_tmplvars','action'=>301,'name'=>$_lang['tmplvars']); + $hasPermission = 1; + } + if($modx->hasPermission('edit_module') || $modx->hasPermission('new_module')) { + $displayInfo['modules'] = array('table'=>'site_modules','action'=>108,'name'=>$_lang['modules']); + $hasPermission = 1; + } + + //Category Delete permission check + $delPerm = 0; + if($modx->hasPermission('save_plugin') || + $modx->hasPermission('save_snippet') || + $modx->hasPermission('save_chunk') || + $modx->hasPermission('save_template') || + $modx->hasPermission('save_module')) { + $delPerm = 1; + } + + if($hasPermission) { + $finalInfo = array(); + + foreach ($displayInfo as $n => $v) { + $nameField = ($v['table'] == 'site_templates')? 'templatename': 'name'; + $pluginsql = $v['table'] == 'site_plugins' ? $v['table'].'.disabled, ' : ''; + $rs = $modx->db->select( + "{$pluginsql} {$nameField} as name, {$v['table']}.id, description, locked, IF(isnull(categories.category), '{$_lang['no_category']}',categories.category) as category, categories.id as catid", + $modx->getFullTableName($v['table'])." AS {$v['table']} + LEFT JOIN ".$modx->getFullTableName('categories')." AS categories ON {$v['table']}.category = categories.id", + "", + "5,1" + ); + while ($row = $modx->db->getRow($rs)) { + $row['type'] = $v['name']; + $row['action'] = $v['action']; + if (empty($row['category'])) {$row['category'] = $_lang['no_category'];} + $finalInfo[] = $row; + } + } + + foreach($finalInfo as $n => $v) { + $category[$n] = $v['category']; + $name[$n] = $v['name']; + } + + $category_lowercase = array_map('strtolower', $category); + $name_lowercase = array_map('strtolower', $name); + array_multisort($category_lowercase, SORT_ASC, SORT_STRING, $name_lowercase, SORT_ASC, SORT_STRING, $finalInfo); + + echo '
      '; + $preCat = ''; + $insideUl = 0; + foreach($finalInfo as $n => $v) { + if ($preCat !== $v['category']) { + echo $insideUl? '
    ': ''; + if ($v['category'] == $_lang['no_category'] || !$delPerm) { + echo '
  • '.$v['category']. ($v['catid']!='' ? ' ('.$v['catid'].')' : '') .'
      '; + } else { + echo '
    • '.$v['category']. ($v['catid']!='' ? ' ('.$v['catid'].')' : '') .' - '.$_lang['delete'].'
        '; + } + $insideUl = 1; + } + $class = array_key_exists('disabled',$v) && $v['disabled'] ? ' class="disabledPlugin"' : ''; + if ($v['id']) { + ?> +
      • >- '.$v['description'] : '' ; ?>('.$_lang['locked'].')' : "" ; ?>
      • + ': ''; + ?> + +
  • + + \ No newline at end of file diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index ded17664dd..72cf45539e 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3097,6 +3097,52 @@ div#tabCategory.tab-page ul li ul li{ padding-top:7px; padding-bottom:7px; } +/* Checkbox "Icons" */ +.noicons.tab-page ul li ul li:before, +.noicons .elements_description:before { + display:none !important; +} + +ul.resourceTable a { display:inline-block; } +ul.resourceTable .category_name { + float:none; + display:block; + clear:both; + margin-top:20px; +} + +/* Manage elements views / options */ +/* List */ +.resourceTable.list li { } + +/* Inline */ +.resourceTable.inline ul li { + float:left; + margin-right:20px; +} + +/* Flex */ +.resourceTable.flex li ul { + -webkit-column-count: 3; -webkit-column-gap:20px; + -moz-column-count:3; -moz-column-gap:20px; + -o-column-count:3; -o-column-gap:20px; + column-count:3; column-gap:20px; +} +.resourceTable.flex .elements_descr { + display:block; + padding-left:17px; +} + +/* Option "small fonts" */ +.resourceTable.small { + font-size:10px; +} +.resourceTable.small .elements_buttonbar .btn, +.resourceTable.small .elements_buttonbar .fa { + font-size:10px !important; + padding:0 5px; +} + /* Manager Elements Buttons bar*/ /*Fake tables*/ .rTable { display: table; width:100%;} @@ -3105,11 +3151,11 @@ div#tabCategory.tab-page ul li ul li{ .rTableBody { display: table-row-group; } .rTableFoot { display: table-footer-group; } .rTableCell, .rTableHead { display: table-cell; } -.elements_buttonbar {min-width:100px; text-align:right;} -.elements_buttonbar .fa{font-size: 13px!important; padding-top:2px} +.elements_buttonbar {min-width:120px; text-align:right;} +.elements_buttonbar .fa{font-size: 13px!important; padding:1px 1px 0px} .tab-pane ul li ul li { - padding: 3px 6px 4px 0px; + padding: 1px 6px 1px 0px; margin-left: -50px; border-bottom: 1px dotted #dedede; border-left: 3px solid #FFF; From 7a9cf8e53ba6762849731a3cfb323455cf1f1946 Mon Sep 17 00:00:00 2001 From: Deesen Date: Tue, 31 Jan 2017 08:51:03 +0100 Subject: [PATCH 107/398] [R] Refactored and improved "Manage Elements" - added "View Options"-button to show/hide form - removed checkbox "small font" - instead added font-size option - added checkbox "all tabs" to change views of all tabs with same options - added button "reset" to reset to defaults, works with "all tabs"-checkbox --- manager/actions/resources/functions.inc.php | 12 +- manager/actions/resources/functions.js | 212 ++++++++++++-------- manager/includes/lang/english.inc.php | 1 + manager/media/style/MODxRE2/style.css | 15 +- 4 files changed, 147 insertions(+), 93 deletions(-) diff --git a/manager/actions/resources/functions.inc.php b/manager/actions/resources/functions.inc.php index 7b46107b9e..86cd73f688 100644 --- a/manager/actions/resources/functions.inc.php +++ b/manager/actions/resources/functions.inc.php @@ -2,16 +2,22 @@ if(IN_MANAGER_MODE!="true") die("INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); function renderViewSwitchButtons($cssId) { + global $_lang; return ' -
    +
  • '.$_lang['view_options'].'
  • + -
    - + +
    + +
    + + Reset
    '; } \ No newline at end of file diff --git a/manager/actions/resources/functions.js b/manager/actions/resources/functions.js index 6f142e29a2..eb2afc115f 100644 --- a/manager/actions/resources/functions.js +++ b/manager/actions/resources/functions.js @@ -32,6 +32,10 @@ function unlockElement(type, id, domEl) { }); } } + +// Switch Views +var version = 1; + function initViews(pre, helppre, target) { jQuery( "#"+helppre+"-help" ).click(function() { jQuery( '#'+helppre+'-info').toggle(); @@ -46,104 +50,152 @@ function setColumnCount(targetEl, count) { }); } +function getViewOpts(form) { + viewOpts = {}; + // Options + viewOpts.cb_buttons = form.find("input:checkbox[name=cb_buttons]").is(':checked'); + viewOpts.cb_description = form.find("input:checkbox[name=cb_description]").is(':checked'); + viewOpts.cb_icons = form.find("input:checkbox[name=cb_icons]").is(':checked'); + + // Views + viewOpts.view = form.find("input[name=view]:checked").val(); + viewOpts.columns = form.find("input[name=columns]").val(); + + viewOpts.fontsize = form.find("input[name=fontsize]").val(); + + return viewOpts; +} + +function setView(viewOpts, targetEl, target) { + // Options + if(viewOpts.cb_buttons) { + targetEl.find('.elements_buttonbar').show(); + } else { + targetEl.find('.elements_buttonbar').hide(); + } + if(viewOpts.cb_description) { + targetEl.find('span.elements_descr').show(); + } else { + targetEl.find('span.elements_descr').hide(); + } + if(viewOpts.cb_icons) { + targetEl.removeClass('noicons'); + } else { + targetEl.addClass('noicons'); + } + + // Views + switch(viewOpts.view) { + case 'inline': + targetEl.removeClass('flex list'); + targetEl.addClass('inline'); + setColumnCount(targetEl, 1); + break; + case 'flex': + targetEl.removeClass('inline list'); + targetEl.addClass('flex'); + setColumnCount(targetEl, viewOpts.columns); + break; + case 'list': + default: + targetEl.removeClass('flex inline'); + targetEl.addClass('list'); + setColumnCount(targetEl, 1); + break; + } + + // Set font-size + targetEl.css('font-size', viewOpts.fontsize/10 + 'em'); + + // Save view-options to localStorage + viewOpts.version = version; // Provides version of options-obj to allow easy resetting of localStorage on future updates + localStorage.setItem('MODX_mgrResources_'+target, JSON.stringify(viewOpts)); + + // console.log('save', viewOpts); +} + +function setAllViews(viewOpts) { + jQuery(".switchForm").each(function() { + var form = jQuery(this); + var target = form.data('target'); + var targetEl = jQuery('#'+target); + setView(viewOpts, targetEl, target); + setViewOptions(form, viewOpts); + }); +} + +function setViewOptions(form, viewOpts) { + form.find("input:checkbox[name=cb_buttons]") .attr('checked', viewOpts.cb_buttons).prop("checked", viewOpts.cb_buttons); + form.find("input:checkbox[name=cb_description]").attr('checked', viewOpts.cb_description).prop("checked", viewOpts.cb_description); + form.find("input:checkbox[name=cb_icons]") .attr('checked', viewOpts.cb_icons).prop("checked", viewOpts.cb_icons); + form.find("input:radio[name=view][value="+viewOpts.view+"]").attr('checked', true).prop("checked", true); + form.find("input[name=columns]").val(viewOpts.columns); + form.find("input[name=fontsize]").val(viewOpts.fontsize); +} + +function setViewDefaultOptions(form) { + var viewOpts = {}; + viewOpts.cb_buttons = 1; + viewOpts.cb_description = 1; + viewOpts.cb_icons = 1; + viewOpts.view = 'list'; + viewOpts.columns = 3; + viewOpts.fontsize = 10; + setViewOptions(form, viewOpts); +} + // Add switch-view functionality jQuery( document ).ready(function() { jQuery(".switchForm").each(function() { - var target = jQuery(this).data('target'); + var form = jQuery(this); + var target = form.data('target'); var targetEl = jQuery('#'+target); - var version = 1; - - jQuery(this).change(function() { - var viewOpts = {}; - // Options - if(jQuery(this).find("input:checkbox[name=cb_buttons]").is(':checked')) { - targetEl.find('.elements_buttonbar').show(); - viewOpts.cb_buttons = 1; - } else { - targetEl.find('.elements_buttonbar').hide(); - viewOpts.cb_buttons = 0; - } - if(jQuery(this).find("input:checkbox[name=cb_description]").is(':checked')) { - targetEl.find('span.elements_descr').show(); - viewOpts.cb_description = 1; - } else { - targetEl.find('span.elements_descr').hide(); - viewOpts.cb_description = 0; - } - if(jQuery(this).find("input:checkbox[name=cb_icons]").is(':checked')) { - targetEl.removeClass('noicons'); - viewOpts.cb_icons = 1; - } else { - targetEl.addClass('noicons'); - viewOpts.cb_icons = 0; - } - if(jQuery(this).find("input:checkbox[name=cb_small]").is(':checked')) { - targetEl.addClass('small'); - viewOpts.cb_small = 1; + + form.change(function() { + var viewOpts = getViewOpts(form); + if(form.find("input:checkbox[name=cb_all]").is(':checked')) { + // Set view in all tabs + setAllViews(viewOpts); } else { - targetEl.removeClass('small'); - viewOpts.cb_small = 0; + // Set view in single tab + setView(viewOpts, targetEl, target); } - - // Views - var columns = jQuery(this).find("input[name=columns]").val(); - viewOpts.columns = columns; - switch(this.view.value) { - case 'inline': - targetEl.removeClass('flex list'); - targetEl.addClass('inline'); - viewOpts.view = 'inline'; - setColumnCount(targetEl, 1); - break; - case 'flex': - targetEl.removeClass('inline list'); - targetEl.addClass('flex'); - viewOpts.view = 'flex'; - setColumnCount(targetEl, columns); - break; - case 'list': - default: - targetEl.removeClass('flex inline'); - targetEl.addClass('list'); - viewOpts.view = 'list'; - setColumnCount(targetEl, 1); - break; - } - - // Save to localhost - viewOpts.version = version; - localStorage.setItem('MODX_mgrResources_'+target, JSON.stringify(viewOpts)); - - console.log('save', viewOpts); }); // Get parameters from localStorage var viewOpts = JSON.parse(localStorage.getItem('MODX_mgrResources_'+target)); // console.log('load', viewOpts.version, '==', version); - console.log(viewOpts); + // console.log(viewOpts); + // Set views - if version is different, defaults will be set up if(viewOpts && viewOpts.version == version) { - // Recover from localStorage - if(viewOpts.cb_buttons) jQuery(this).find("input:checkbox[name=cb_buttons]").attr('checked', true).prop("checked", true); - if(viewOpts.cb_description) jQuery(this).find("input:checkbox[name=cb_description]").attr('checked', true).prop("checked", true); - if(viewOpts.cb_icons) jQuery(this).find("input:checkbox[name=cb_icons]").attr('checked', true).prop("checked", true); - if(viewOpts.cb_small) jQuery(this).find("input:checkbox[name=cb_small]").attr('checked', true).prop("checked", true); - if(viewOpts.view) jQuery(this).find("input:radio[name=view][value="+viewOpts.view+"]").attr('checked', true).prop("checked", true); - if(viewOpts.columns) jQuery(this).find("input[name=columns]").val(viewOpts.columns); + setViewOptions(form, viewOpts); } else { - // Set defaults - jQuery(this).find("input:checkbox[name=cb_buttons]").attr('checked', true).prop("checked", true); - jQuery(this).find("input:checkbox[name=cb_description]").attr('checked', true).prop("checked", true); - jQuery(this).find("input:checkbox[name=cb_icons]").attr('checked', true).prop("checked", true); - jQuery(this).find("input:checkbox[name=cb_small]").attr('checked', false).prop("checked", false); - jQuery(this).find("input:radio[name=view]:first").attr('checked', true).prop("checked", true); - jQuery(this).find("input[name=columns]").val(3); + setViewDefaultOptions(form); } - jQuery(this).trigger('change'); + + // Now restore settings + form.trigger('change'); - jQuery(this).submit(function(e){ + // Add reset-button + form.find(".btn_reset").click(function(e) { e.preventDefault(); + setViewDefaultOptions(form); + form.trigger('change'); + }); + + // Prevent sending form + form.submit(function(e){ + e.preventDefault(); + }); + }); + + // Add switchForm-toggle + jQuery('.switchform-btn').each(function() { + jQuery(this).click(function() { + var target = jQuery(this).data('target'); + jQuery('#'+target).toggle(); }); }); }); \ No newline at end of file diff --git a/manager/includes/lang/english.inc.php b/manager/includes/lang/english.inc.php index 7d9ae1da57..f5c11b31a8 100644 --- a/manager/includes/lang/english.inc.php +++ b/manager/includes/lang/english.inc.php @@ -1161,6 +1161,7 @@ $_lang["view_log"] = 'View log'; $_lang["view_logging"] = 'Manager Actions'; $_lang["view_sysinfo"] = 'System Info'; +$_lang["view_options"] = 'View Options'; $_lang["warning"] = 'Warning!'; $_lang["warning_not_saved"] = 'The changes you have made have not been saved yet. You can choose to stay on the current page in order to save the changes (\'Cancel\'), or you can leave this page, losing any changes you have made (\'OK\').'; $_lang["warning_visibility"] = 'Configuration Warnings visible to'; diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index 72cf45539e..828c0e8f64 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3112,6 +3112,11 @@ ul.resourceTable .category_name { } /* Manage elements views / options */ +.switchForm { float:left; padding:5px; background-color:#f5f5f5; border-radius:3px; } +.switchForm input.columns { width:3em; } +.switchForm .cb_all { float:left; } +.switchForm .btn_reset { float:right; } + /* List */ .resourceTable.list li { } @@ -3133,16 +3138,6 @@ ul.resourceTable .category_name { padding-left:17px; } -/* Option "small fonts" */ -.resourceTable.small { - font-size:10px; -} -.resourceTable.small .elements_buttonbar .btn, -.resourceTable.small .elements_buttonbar .fa { - font-size:10px !important; - padding:0 5px; -} - /* Manager Elements Buttons bar*/ /*Fake tables*/ .rTable { display: table; width:100%;} From 98adbe4cdb4889a012099244ee9f4e9cb00fc8f1 Mon Sep 17 00:00:00 2001 From: sunhaim Date: Wed, 1 Feb 2017 11:51:55 +0500 Subject: [PATCH 108/398] alias_visible fix --- manager/includes/document.parser.class.inc.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 01762e5475..89a9ae0093 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -1798,7 +1798,15 @@ function rewriteUrls($documentSource) { $res = $this->db->select("id,alias,isfolder,parent,alias_visible", $this->getFullTableName('site_content'), "id IN (".$ids.") AND isfolder = '0'"); while( $row = $this->db->getRow( $res ) ) { if ($this->config['use_alias_path'] == '1') { - $aliases[$row['id']] = $aliases[$row['parent']].'/'.$row['alias']; + $parent = $row['parent']; + $path = $aliases[$parent]; + + while ( isset( $this->aliasListing[$parent] ) && $this->aliasListing[$parent]['alias_visible'] == 0 ) { + $path = $this->aliasListing[$parent]['path']; + $parent = $this->aliasListing[$parent]['parent']; + } + + $aliases[$row['id']] = $path . '/' . $row['alias']; } else { $aliases[$row['id']] = $row['alias']; } @@ -3390,11 +3398,11 @@ function getAliasListing($id){ 'isfolder' => (int)$q['isfolder'], ); if($this->aliasListing[$id]['parent']>0){ - $tmp = $this->getAliasListing($this->aliasListing[$id]['parent']); //fix alias_path_usage if ($this->config['use_alias_path'] == '1') { //&& $tmp['path'] != '' - fix error slash with epty path - $this->aliasListing[$id]['path'] = $tmp['path'] . (($tmp['parent']>0 && $tmp['path'] != '') ? '/' : '') .$tmp['alias']; + $tmp = $this->getAliasListing($this->aliasListing[$id]['parent']); + $this->aliasListing[$id]['path'] = $tmp['path'] . ($this->aliasListing[$id]['alias_visible'] ? (($tmp['parent']>0 && $tmp['path'] != '') ? '/' : '') .$tmp['alias'] : ''); } else { $this->aliasListing[$id]['path'] = ''; } From 1a48e736a6512faf083d63d9a88ec0e723faa089 Mon Sep 17 00:00:00 2001 From: sunhaim Date: Wed, 1 Feb 2017 12:15:05 +0500 Subject: [PATCH 109/398] alias_visible fix2 --- manager/includes/document.parser.class.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 89a9ae0093..6a603b9c0d 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -3402,7 +3402,7 @@ function getAliasListing($id){ if ($this->config['use_alias_path'] == '1') { //&& $tmp['path'] != '' - fix error slash with epty path $tmp = $this->getAliasListing($this->aliasListing[$id]['parent']); - $this->aliasListing[$id]['path'] = $tmp['path'] . ($this->aliasListing[$id]['alias_visible'] ? (($tmp['parent']>0 && $tmp['path'] != '') ? '/' : '') .$tmp['alias'] : ''); + $this->aliasListing[$id]['path'] = $tmp['path'] . ($tmp['alias_visible'] ? (($tmp['parent']>0 && $tmp['path'] != '') ? '/' : '') .$tmp['alias'] : ''); } else { $this->aliasListing[$id]['path'] = ''; } From 875621086abb01ccb5dc62348bf2e8adba4c82dd Mon Sep 17 00:00:00 2001 From: Deesen Date: Wed, 1 Feb 2017 20:51:51 +0100 Subject: [PATCH 110/398] Moved jq-plugin "nuContextMenu" to external file "manager/media/script/jquery.nucontextmenu.js" --- .../elementsintree/assets/txt_content.tpl | 291 +----------------- manager/media/script/jquery.nucontextmenu.js | 218 +++++++++++++ 2 files changed, 219 insertions(+), 290 deletions(-) create mode 100644 manager/media/script/jquery.nucontextmenu.js diff --git a/assets/plugins/elementsintree/assets/txt_content.tpl b/assets/plugins/elementsintree/assets/txt_content.tpl index 1550a51a87..b508d60b4c 100644 --- a/assets/plugins/elementsintree/assets/txt_content.tpl +++ b/assets/plugins/elementsintree/assets/txt_content.tpl @@ -1,224 +1,3 @@ - - '; } @@ -516,6 +529,19 @@ function Run() { #qmEditor, #qmEditorClosed { left:0; top: -30px; width: 100%;} #qmEditor:hover, #qmEditorClosed:hover {top: 0px;} .butticon {display:none} + @media only screen and (max-width: 728px) { + .butttext {display:none} + .butticon {display:inline!important} + #qmEditor, #qmEditorClosed {height: 48px!important;} + } + @media only screen + and (min-device-width: 768px) + and (max-device-width: 1024px) + and (orientation: portrait) + and (-webkit-min-device-pixel-ratio: 1) { + .butttext {display:none} + .butticon {display:inline!important} + } '; } @@ -527,6 +553,19 @@ function Run() { #qmEditor, #qmEditorClosed {position: relative; left:0; top: 0px; width: 100%; height:39px; opacity:1; -ms-filter:"" !important; filter:none !important;} #qmEditor:hover, #qmEditorClosed:hover {top: 0px;} .butticon {display:none} + @media only screen and (max-width: 728px) { + .butttext {display:none} + .butticon {display:inline!important} + #qmEditor, #qmEditorClosed {height: 48px!important;} + } + @media only screen + and (min-device-width: 768px) + and (max-device-width: 1024px) + and (orientation: portrait) + and (-webkit-min-device-pixel-ratio: 1) { + .butttext {display:none} + .butticon {display:inline!important} + } '; } @@ -538,6 +577,19 @@ function Run() { #qmEditor, #qmEditorClosed { left:0; bottom: -28px; width: 100%;} #qmEditor:hover, #qmEditorClosed:hover {bottom: 0px;} .butticon {display:none} + @media only screen and (max-width: 728px) { + .butttext {display:none} + .butticon {display:inline!important} + #qmEditor, #qmEditorClosed {height: 48px!important;} + } + @media only screen + and (min-device-width: 768px) + and (max-device-width: 1024px) + and (orientation: portrait) + and (-webkit-min-device-pixel-ratio: 1) { + .butttext {display:none} + .butticon {display:inline!important} + } '; } @@ -548,7 +600,21 @@ function Run() { + .butticon {display:none} + @media only screen and (max-width: 728px) { + .butttext {display:none} + .butticon {display:inline!important} + #qmEditor, #qmEditorClosed {height: 48px!important;} + } + @media only screen + and (min-device-width: 768px) + and (max-device-width: 1024px) + and (orientation: portrait) + and (-webkit-min-device-pixel-ratio: 1) { + .butttext {display:none} + .butticon {display:inline!important} + } + '; } // Left toolbar Autohide true From f39f54b75743b86e16c048c766e693cad45bd376 Mon Sep 17 00:00:00 2001 From: Nicola Lambathakis Date: Mon, 6 Feb 2017 21:08:28 +0100 Subject: [PATCH 125/398] [F] QM fix modal buttons styles for tvs https://github.com/Nicola1971/QuickManager/issues/2 --- assets/plugins/qm/css/style.css | 59 ++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/assets/plugins/qm/css/style.css b/assets/plugins/qm/css/style.css index 5b0742709d..6d41bb2f1a 100755 --- a/assets/plugins/qm/css/style.css +++ b/assets/plugins/qm/css/style.css @@ -89,7 +89,50 @@ { margin-right: 20px; } - +.qm-save, .qm-cancel +{ + font-size: 13px; + font-weight: 500; + text-shadow: none; + background: #fff; + filter: none; + color: #555; + border-width: 1px; + border-style: solid; + border-color: #E4E4E4; + border-radius: 3px !important; + /*box-shadow: 0 0 0 1px #E4E4E4;*/ + box-shadow: none; + transition: none; +} +.qm-save:hover, .qm-cancel:hover +{ + background: none; + filter: none; + background-color: #3697cd; + box-shadow: none; + border-color: #3697cd; + color: #FFF !important; + transition: none; + text-decoration: none; +} +.qm-cancel a:hover, .qm-save a:hover +{ + color: #FFF !important; +} +.qm-save a +{ + color: #fff; + border-color: #32AB9A; + background-color: #32AB9A; + background-image: linear-gradient(#32AB9A, #00948E); +} +.qm-save a:hover +{ + background-color: #2b9385; + background-image: linear-gradient(#2b9385, #007571); + border-color: #2b9385; +} #qm-tv-actions { position: fixed; @@ -291,17 +334,3 @@ a:hover#qmLogoClose:after -@media only screen and (max-width: 728px) { -.butttext {display:none} -.butticon {display:inline!important} -#qmEditor, #qmEditorClosed {height: 48px!important;} -} -@media only screen - and (min-device-width: 768px) - and (max-device-width: 1024px) - and (orientation: portrait) - and (-webkit-min-device-pixel-ratio: 1) { -.butttext {display:none} -.butticon {display:inline!important} - -} \ No newline at end of file From a786013dbfb594b01eb615a4e7ba763cd449c835 Mon Sep 17 00:00:00 2001 From: Deesen Date: Tue, 7 Feb 2017 08:19:47 +0100 Subject: [PATCH 126/398] [F] Inline-View: Removed space between collapsed categories --- manager/media/style/MODxRE2/style.css | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index f802cc8e17..7c3ecadd1a 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3279,12 +3279,9 @@ ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0px} .resourceTable.list li { } /* Inline-view */ -.resourceTable.inline .panel-heading { - margin-top:10px !important; -} .resourceTable.inline ul.elements { margin:0 !important; - padding:0 !important; + padding:0 0 10px 0 !important; } .resourceTable.inline ul.elements > li { float:left; From d5c0584f54e2f24593c94a4db1942f8c1af4e500 Mon Sep 17 00:00:00 2001 From: Deesen Date: Tue, 7 Feb 2017 09:07:30 +0100 Subject: [PATCH 127/398] [F] Removed unnecessary spaces and corrected alignments --- manager/media/style/MODxRE2/style.css | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index 7c3ecadd1a..82a50561d3 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3134,7 +3134,6 @@ div.treeframebody { #site_htmlsnippets, #site_snippets, #site_plugins { -width:99.5%; padding-left: 0; } @@ -3145,7 +3144,6 @@ padding-left: 0; #site_snippets li, #site_plugins li, #categories_list li { - list-style-type: none; list-style: none; margin-left: -21px; } @@ -3216,7 +3214,7 @@ div#tabCategory.tab-page ul li ul li{ .lockCell, .mainCell, .btnCell, .rTableHead { display: table-cell; padding:0; } .lockCell { width:20px; padding-left:10px; } .mainCell { width:auto; } -.btnCell { width:6em; } +.btnCell { width:6em; text-align:right; } /* Manage elements general styles */ a.man_el_name { display:block; padding:.1em 0 .1em 12px; } @@ -3233,21 +3231,22 @@ a.man_el_name:hover { text-decoration:none; } border-bottom: 1px dotted #dedede; } .resourceTable .panel-title > a { padding:5px 0 5px 15px; } +.resourceTable ul.elements { + margin:0 -15px; padding:0; +} .resourceTable ul.elements > li { padding: 0 !important; border-bottom: 1px dotted #dedede; border-left: 3px solid #FFF; transition: all 0.1s ease; - margin:0 -15px 0 -36px !important; + margin:0 !important; } .resourceTable ul.elements > li:hover{ background: #f9f9f9; border-left: 3px solid #3697CD; } -#resourcesPane .panel-group ul { - margin:0 0 0 16px; -} +#resourcesPane .panel-group ul { } ul.resourceTable .category_name { float:none; @@ -3257,10 +3256,10 @@ ul.resourceTable .category_name { } /* Manager Elements Buttons bar*/ -ul.elements_buttonbar { list-style:none; padding:0; display: table; table-layout: fixed; } +ul.elements_buttonbar { list-style:none; margin:0; padding:0; display: table; table-layout: fixed; } ul.elements_buttonbar li { display: table-cell; padding:0 !important; width:2em; } -ul.elements_buttonbar li a { display: block; width:2em; padding:1px 2px; margin:1px 0; } -ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0px} +ul.elements_buttonbar li a { display: block; width:2em; padding:1px 2px; margin:1px; } +ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0; } /* Manage elements views-form */ .switchForm { float:left; margin:15px 0; padding:15px; background-color:#f5f5f5; border-radius:3px; box-shadow:1px 1px 2px #ddd; border:1px solid #ddd; } @@ -3289,13 +3288,12 @@ ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0px} padding:0 !important; border: 1px dotted #dedede; } -.resourceTable.inline ul.elements_buttonbar { margin:0 20px 0 0 !important; } +.resourceTable.inline ul.elements_buttonbar { margin:0 5px 0 0 !important; } .resourceTable.inline a.man_el_name { padding:5px 10px; - background-color:#fafafa; } -.resourceTable.inline a:hover.man_el_name { - background-color:#fff; +.resourceTable.inline ul.elements > li:hover { + border:1px solid #aaa } /* Flex-view */ @@ -3306,13 +3304,15 @@ ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0px} column-gap:10px; } .resourceTable.flex ul.elements { - margin-right:0px !important; + } .resourceTable.flex ul.elements > li { - margin:0 36px 0 -36px !important; + +} +.resourceTable.flex .elements_descr { + display:block; + margin-left:1.5em; } -.resourceTable.flex ul.elements_buttonbar { margin:0 20px 0 0 !important; } -.resourceTable.flex .elements_descr { display:block; } /* action buttons */ .actionButtons a { From 638e8f458009c7f4f597099553df7a924322e9a6 Mon Sep 17 00:00:00 2001 From: Deesen Date: Tue, 7 Feb 2017 09:15:49 +0100 Subject: [PATCH 128/398] [F] Added padding-bottom:10px for open panels --- manager/media/style/MODxRE2/style.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index 82a50561d3..ed1682fba2 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3232,7 +3232,7 @@ a.man_el_name:hover { text-decoration:none; } } .resourceTable .panel-title > a { padding:5px 0 5px 15px; } .resourceTable ul.elements { - margin:0 -15px; padding:0; + margin:0 -15px; padding:0 0 10px 0; } .resourceTable ul.elements > li { padding: 0 !important; @@ -3280,7 +3280,6 @@ ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0; } /* Inline-view */ .resourceTable.inline ul.elements { margin:0 !important; - padding:0 0 10px 0 !important; } .resourceTable.inline ul.elements > li { float:left; From 45a368b62aa985b5e1cfcef2d82ed502cdc60d24 Mon Sep 17 00:00:00 2001 From: Deesen Date: Tue, 7 Feb 2017 10:15:23 +0100 Subject: [PATCH 129/398] [F] Flex-View in Chrome: Fix breaking lines / spreading elements into next column --- manager/media/style/MODxRE2/style.css | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index ed1682fba2..9081734f51 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3306,7 +3306,14 @@ ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0; } } .resourceTable.flex ul.elements > li { - + overflow: hidden; /* fix for Firefox */ + break-inside: avoid-column; + -webkit-column-break-inside:avoid; + -moz-column-break-inside:avoid; + -o-column-break-inside:avoid; + -ms-column-break-inside:avoid; + column-break-inside:avoid; + page-break-inside:avoid } .resourceTable.flex .elements_descr { display:block; From bcf1aa6a1050161436ca6d4e9315195abd6fb047 Mon Sep 17 00:00:00 2001 From: Deesen Date: Tue, 7 Feb 2017 16:26:59 +0100 Subject: [PATCH 130/398] [F] Typo --- manager/actions/resources/functions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/actions/resources/functions.js b/manager/actions/resources/functions.js index a0ceaaaa66..33ace544a4 100644 --- a/manager/actions/resources/functions.js +++ b/manager/actions/resources/functions.js @@ -206,7 +206,7 @@ jQuery( document ).ready(function() { break; case "site_tmplvars" : actionsIds = { "create":300, "edit":301, "duplicate":304, "remove":303 }; - deleteMsg = mraTrans.confirm_delete_tempvars; + deleteMsg = mraTrans.confirm_delete_tmplvars; break; case "site_htmlsnippets" : actionsIds = { "create":77, "edit":78, "duplicate":97, "remove":80 }; From 2951ad121ad0bcb53bdea2eda084a0d825b1a2c5 Mon Sep 17 00:00:00 2001 From: Matthew Simpson Date: Tue, 14 Feb 2017 11:58:37 +0000 Subject: [PATCH 131/398] Function isn't a constructor, it's a static method This is breaking our sites. This is present in 1.2.1 and prevented pages from being rendered properly. Please also note that contructors can't be static --- assets/snippets/phpthumb/phpthumb.unsharp.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/snippets/phpthumb/phpthumb.unsharp.php b/assets/snippets/phpthumb/phpthumb.unsharp.php index 15531025ba..8e3505d5e0 100755 --- a/assets/snippets/phpthumb/phpthumb.unsharp.php +++ b/assets/snippets/phpthumb/phpthumb.unsharp.php @@ -43,7 +43,7 @@ class phpUnsharpMask { - static function __construct(&$img, $amount, $radius, $threshold) { + static function applyUnsharpMask(&$img, $amount, $radius, $threshold) { // $img is an image that is already created within php using // imgcreatetruecolor. No url! $img must be a truecolor image. @@ -147,4 +147,4 @@ static function __construct(&$img, $amount, $radius, $threshold) { return true; } } -?> \ No newline at end of file +?> From 71b1748ceb109bf275c6b1761b690ddce340c63a Mon Sep 17 00:00:00 2001 From: MrSwed Date: Thu, 16 Feb 2017 11:58:31 +0300 Subject: [PATCH 132/398] [F] fix site_manager_url for capcha --- assets/snippets/jot/templates/chunk.form.inc.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/snippets/jot/templates/chunk.form.inc.html b/assets/snippets/jot/templates/chunk.form.inc.html index ed03d95216..5bea45456d 100644 --- a/assets/snippets/jot/templates/chunk.form.inc.html +++ b/assets/snippets/jot/templates/chunk.form.inc.html @@ -68,7 +68,7 @@

    [+form.edit:is=`1`:then=`Edit comment`:else=`Write a comment`+]


    [+jot.captcha:is=`1`:then=` -
    If you have trouble reading the code, click on the code itself to generate a new random code.
    +
    If you have trouble reading the code, click on the code itself to generate a new random code.
      `:strip+] From 33b17cdc00ae9e5b6bba9ef9c4166bc6917aaefb Mon Sep 17 00:00:00 2001 From: MrSwed Date: Thu, 16 Feb 2017 12:00:39 +0300 Subject: [PATCH 133/398] [R] no BG colors and other --- assets/snippets/jot/templates/jot.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/assets/snippets/jot/templates/jot.css b/assets/snippets/jot/templates/jot.css index f5fc52a7b0..97958f5b5b 100644 --- a/assets/snippets/jot/templates/jot.css +++ b/assets/snippets/jot/templates/jot.css @@ -1,9 +1,9 @@ .jot-err {border: 1px solid red;font-weight: bold;color: red;padding: 5px;margin-bottom: 10px;} .jot-cfm {border: 1px solid green;font-weight: bold;color: green;padding: 5px;margin-bottom: 10px;} -.jot-row {border: 1px solid #CCCCCC;margin-bottom: 10px;background-color: #e9e9e9;} -.jot-row-alt {background-color: #f9f9f9;} -.jot-row-author {background-color: #FFFFE1;} -.jot-row-me {background-color: #FFDDDD;} +.jot-row {margin-bottom: 10px;} +.jot-row-alt {} +.jot-row-author {} +.jot-row-me {} .jot-row-up {border: 1px dotted red;} .jot-row-new {border: 1px dotted green;} .jot-comment {padding: 3px;} @@ -13,7 +13,7 @@ .jot-mod {float: right;width: 100px;text-align: right;color: #666666;font-weight: bold;} .jot-mod img {border: 0px;} .jot-mod a {float: right;padding: 1px;padding-left: 2px;padding-right: 2px;} -.jot-mod a:hover {background-color: #666666;color: #666666;} +.jot-mod a:hover {color: #666666;} .jot-subject {font-weight: bold;font-size: 1.1em;} .jot-message {padding: 2px;overflow: auto;} .jot-poster {padding: 0px;text-align: left;font-size: 10px;} From 0aa16f8fcee9b2e52b65e5bb4085622a3c6a844d Mon Sep 17 00:00:00 2001 From: Mr B Date: Wed, 22 Feb 2017 22:05:19 +0000 Subject: [PATCH 134/398] Update config.inc.tpl Some browsers can return 'deleted' as a session after logging out which in turn can result in sharing 'sess_deleted' session file. So check for 'deleted' as well as ''. see here for example: https://bugs.php.net/bug.php?id=38260 --- install/config.inc.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/config.inc.tpl b/install/config.inc.tpl index 6471955c27..854d0274e3 100644 --- a/install/config.inc.tpl +++ b/install/config.inc.tpl @@ -87,7 +87,7 @@ if(!function_exists('startCMSSession')) { $site_sessionname = 'evo' . $_; function removeInvalidCmsSessionFromStorage(&$storage, $session_name) { - if (isset($storage[$session_name]) && $storage[$session_name] === '') + if (isset($storage[$session_name]) && ($storage[$session_name] === '' || $storage[$session_name] === 'deleted')) { unset($storage[$session_name]); } From 14c01835b3cf4ed1703413548e770342eab634ec Mon Sep 17 00:00:00 2001 From: Nicola Lambathakis Date: Fri, 24 Feb 2017 14:11:40 +0100 Subject: [PATCH 135/398] [i] added toggle speed animation to resource view options added toggle speed animation to resource view options --- manager/actions/resources/functions.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manager/actions/resources/functions.js b/manager/actions/resources/functions.js index 33ace544a4..d6e647931c 100644 --- a/manager/actions/resources/functions.js +++ b/manager/actions/resources/functions.js @@ -15,7 +15,7 @@ var version = 1; function initViews(pre, helppre, target) { jQuery( "#"+helppre+"-help" ).click(function() { - jQuery( '#'+helppre+'-info').toggle(); + jQuery( '#'+helppre+'-info').toggle(400); }); } @@ -172,7 +172,7 @@ jQuery( document ).ready(function() { jQuery('.switchform-btn').each(function() { jQuery(this).click(function() { var target = jQuery(this).data('target'); - jQuery('#'+target).toggle(); + jQuery('#'+target).toggle(400); }); }); From 2326f1a11c363526ce5a9ad46f988d67ebfeff14 Mon Sep 17 00:00:00 2001 From: Nicola Lambathakis Date: Fri, 24 Feb 2017 14:12:17 +0100 Subject: [PATCH 136/398] [i] restyled resource view options toggle restyled resource view options toggle --- manager/actions/resources/tpl_viewForm.tpl | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/manager/actions/resources/tpl_viewForm.tpl b/manager/actions/resources/tpl_viewForm.tpl index 7f6b58d8e7..cbb9917d5f 100644 --- a/manager/actions/resources/tpl_viewForm.tpl +++ b/manager/actions/resources/tpl_viewForm.tpl @@ -1,18 +1,26 @@
  • [%btn_view_options%]
  • -
    \ No newline at end of file From 717bcaed0d14cc8c566cb92dd287c01ad6fddcbf Mon Sep 17 00:00:00 2001 From: Nicola Lambathakis Date: Fri, 24 Feb 2017 14:12:41 +0100 Subject: [PATCH 137/398] [i] styles for resource view options toggle styles for resource view options toggle --- manager/media/style/MODxRE2/style.css | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index 9081734f51..464dac6a92 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3258,14 +3258,25 @@ ul.resourceTable .category_name { /* Manager Elements Buttons bar*/ ul.elements_buttonbar { list-style:none; margin:0; padding:0; display: table; table-layout: fixed; } ul.elements_buttonbar li { display: table-cell; padding:0 !important; width:2em; } -ul.elements_buttonbar li a { display: block; width:2em; padding:1px 2px; margin:1px; } +ul.elements_buttonbar li a { display: block; width:2em; padding:3px 4px; margin:1px; } ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0; } /* Manage elements views-form */ -.switchForm { float:left; margin:15px 0; padding:15px; background-color:#f5f5f5; border-radius:3px; box-shadow:1px 1px 2px #ddd; border:1px solid #ddd; } -.switchForm input.columns { width:3em; } +.switchForm { display: block; width: 100%; float:left; clear: left; margin: 7px 0 7px -4px; padding:5px; background-color:#fff; border: 1px solid #E4E4E4;border-radius:3px;} +.switchForm h3.optionsTitle {color: #3697CD; padding-left:7px; font-size: 16px;} +.switchForm label {color: #3697CD;font-weight: 700;} +.switchForm input.columns { width:3em; color:#444; font-weight: normal;} +.switchForm input.fontsize {width:4em; color:#444; font-weight: normal;} .switchForm .cb_all { float:left; } .switchForm .btn_reset { float:right; } +.switchForm .optionsLeft { float:left;padding:4px 8px 4px 4px;} +.switchForm .optionsFull { display:block;clear: both; padding:4px 8px 4px 4px;} +.switchForm .optionsRadios {padding-top:6px;} +.switchForm .optionsChecks {padding-top:10px; } +.switchForm .optionsFontsSize {margin-left:9px;padding-left:8px;border-left:1px solid #ededed;} +.switchForm .optionsReset {margin-left:8px;border-left:1px solid #ededed;padding-left:8px;} +.switchForm .optionsAllTabs {clear:left;padding-top:10px;} +.switchForm .optionsClear {display:block;clear: both; padding-top:8px;margin-bottom:4px;border-bottom: 1px solid #ededed;}} /* Checkbox "Icons" */ .noicons.tab-page ul li ul li a:before, From 983bc4d1f374a3e35557a2fe3268117fb198420f Mon Sep 17 00:00:00 2001 From: Digitalime Date: Fri, 24 Feb 2017 15:02:40 +0100 Subject: [PATCH 138/398] Allow Webuser Signup Email to contain HTML Change to assets/snippets/weblogin/weblogin.common.inc.php --- webuser-html | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 webuser-html diff --git a/webuser-html b/webuser-html new file mode 100644 index 0000000000..525e1b7164 --- /dev/null +++ b/webuser-html @@ -0,0 +1,120 @@ +]?-->/i",$html,$matches)) { + for($i=0;$iwindow.setTimeout(\"alert('".addslashes($modx->db->escape($msg))."')\",10);"; + } + + // generate new password + function webLoginGeneratePassword($length = 10) { + $allowable_characters = "abcdefghjkmnpqrstuvxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789"; + $ps_len = strlen($allowable_characters); + mt_srand((double)microtime()*1000000); + $pass = ""; + for($i = 0; $i < $length; $i++) { + $pass .= $allowable_characters[mt_rand(0,$ps_len-1)]; + } + return $pass; + } + + // Send new password to the user + function webLoginSendNewPassword($email,$uid,$pwd,$ufn){ + global $modx, $site_url; + $mailto = $modx->config['mailto']; + $websignupemail_message = $modx->config['websignupemail_message']; + $emailsubject = $modx->config['emailsubject']; + $emailsender = $modx->config['emailsender']; + $site_name = $modx->config['site_name']; + $site_start = $modx->config['site_start']; + + //Escape quotes + $message = str_replace('"', '', $websignupemail_message); + + + // replace placeholders + $message = str_replace("[+uid+]",$uid,$message); + $message = str_replace("[+pwd+]",$pwd,$message); + $message = str_replace("[+ufn+]",$ufn,$message); + $message = str_replace("[+sname+]",$site_name,$message); + $message = str_replace("[+semail+]",$emailsender,$message); + $message = str_replace("[+surl+]",$site_url,$message); + + + //Set HTML Headers + $headers = "From: ".$emailsender."\r\n"; + $headers .= "X-Mailer: PHP/".phpversion(); + $headers .= "MIME-Version: 1.0\r\n"; + $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; + + + if (!ini_get('safe_mode')) + $sent = mail($email, + $emailsubject, + $message, + $headers, + + "-f {$emailsender}"); + + else $sent = mail( + $email, + $emailsubject, + $message, + "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); + + if (!$sent) webLoginAlert("Error while sending mail to $mailto",1); + + return true; + } + + function preserveUrl($docid = '', $alias = '', $array_values = array(), $suffix = false) { + global $modx; + $array_get = $_GET; + $urlstring = array(); + + unset($array_get["id"]); + unset($array_get["q"]); + unset($array_get["webloginmode"]); + + $array_url = array_merge($array_get, $array_values); + foreach ($array_url as $name => $value) { + if (!is_null($value)) { + $urlstring[] = urlencode($name) . '=' . urlencode($value); + } + } + + $url = implode('&',$urlstring); + if ($suffix) { + if (empty($url)) { + $url = "?"; + } else { + $url .= "&"; + } + } + return $modx->makeUrl($docid, $alias, $url); + } + +?> From 676606d3b1f3cf7e6ac6b529dbe34f2ee36ca21a Mon Sep 17 00:00:00 2001 From: Nicola Lambathakis Date: Fri, 24 Feb 2017 15:41:10 +0100 Subject: [PATCH 139/398] [F] fix css typo in manage elements a small css typo that cause issue with show hide icons checkbox in manage elements --- manager/media/style/MODxRE2/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index 464dac6a92..156bac434a 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -3276,7 +3276,7 @@ ul.elements_buttonbar .fa {font-size: 13px!important; padding:1px 1px 0; } .switchForm .optionsFontsSize {margin-left:9px;padding-left:8px;border-left:1px solid #ededed;} .switchForm .optionsReset {margin-left:8px;border-left:1px solid #ededed;padding-left:8px;} .switchForm .optionsAllTabs {clear:left;padding-top:10px;} -.switchForm .optionsClear {display:block;clear: both; padding-top:8px;margin-bottom:4px;border-bottom: 1px solid #ededed;}} +.switchForm .optionsClear {display:block;clear: both; padding-top:8px;margin-bottom:4px;border-bottom: 1px solid #ededed;} /* Checkbox "Icons" */ .noicons.tab-page ul li ul li a:before, From cc391c6db5fccc03870b5905e955b998dcd0b4e1 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 28 Feb 2017 15:05:47 +0200 Subject: [PATCH 140/398] Fix lang --- manager/includes/lang/russian-UTF8.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/includes/lang/russian-UTF8.inc.php b/manager/includes/lang/russian-UTF8.inc.php index 64445d3b07..06e41e1e19 100644 --- a/manager/includes/lang/russian-UTF8.inc.php +++ b/manager/includes/lang/russian-UTF8.inc.php @@ -1025,7 +1025,7 @@ $_lang["template_reset_specific"] = 'Сбросить только страницы с шаблоном \'%s\''; $_lang["template_selectable"] = 'Шаблон выбирается при создании или редактировании ресурсов.'; $_lang["template_title"] = 'Создать / редактировать шаблон'; -$_lang["template_tv_edit"] = 'Редактировать порядок сортировки параметров (TV) шаблона'; +$_lang["template_tv_edit"] = 'Редактировать порядок сортировки TV'; $_lang["template_tv_edit_message"] = 'Перетащите мышью для изменения порядка параметров (TV) для этого шаблона.'; $_lang["template_tv_edit_title"] = 'Порядок сортировки параметров (TV)'; $_lang["template_tv_msg"] = 'Ниже выводятся параметры (TV), назначенные этому шаблону.'; From 8ff87f09ef88f3d36d0a42707cc6881a13ee4910 Mon Sep 17 00:00:00 2001 From: Intersel Date: Tue, 28 Feb 2017 21:54:29 +0100 Subject: [PATCH 141/398] Update ditto.class.inc.php There is a bug when we use a date field ("pub_date","unpub_date","editedon","deletedon","publishedon") used to order the results' array in descending order like this example: [[ditto? &tpl=`xxx` &sortBy=`publishedon` &sortDir=`DESC` &display=`3` &dateSource=`publishedon` &dateFormat=`%b %d %Y` ]] The output is not what one would expect: the display limit is applied on the first possible results before any sort is done on the date field. So we don't get the more recent results on the set of possible results... ex: (resource id, date) in modx tree - 1 - 20150101 - 2 - 20160101 - 3 - 20170101 - 4 - 20180101 - 5 - 20190101 the call to the above ditto with display=3 will give back these ids in this order: 3 2 1 The proposed fix will give back: 5 4 3 --- .../ditto/classes/ditto.class.inc.php | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/assets/snippets/ditto/classes/ditto.class.inc.php b/assets/snippets/ditto/classes/ditto.class.inc.php index bacd37f50b..bdb7726e82 100644 --- a/assets/snippets/ditto/classes/ditto.class.inc.php +++ b/assets/snippets/ditto/classes/ditto.class.inc.php @@ -629,9 +629,27 @@ function determineIDs($IDs, $IDType, $TVs, $orderBy, $depth, $showPublishedOnly, $customReset = $this->customReset; if ($keywords) {$this->addField("haskeywords","*","db");$this->addField("hasmetatags","*","db");} if ($this->debug) {$this->addField("pagetitle","backend","db");} - if (count($customReset) > 0) {$this->addField("createdon","backend","db");} - $resource = $this->getDocuments($documentIDs,$this->fields["backend"]["db"],$TVs,$orderBy,$showPublishedOnly,0,$hidePrivate,$where,$limit,$keywords,$randomize,$dateSource); - if ($resource !== false) { +// intersel edit +// Bug when we use a date field ("pub_date","unpub_date","editedon","deletedon","publishedon") +// used to order the results' array in descending order: +// the result of getDocuments is not correct because the result is limited to $limit +// but the array of results was not sorted (see SQL Query in getDocuments) +// (see checkAdvSort function) +// my choice to fix this bug was to set limit to 0 in the getDocuments call when we order with a date field (see customReset), +// then to limit the size of the array after all sorting functions were done (see hereafter) +// I did not get side effects on my modx installs... + +/* + if (count($customReset) > 0) {$this->addField("createdon","backend","db");} + $resource = $this->getDocuments($documentIDs,$this->fields["backend"]["db"],$TVs,$orderBy,$showPublishedOnly,0,$hidePrivate,$where,$limit,$keywords,$randomize,$dateSource); +*/ + $limitSearch=$limit; + if (count($customReset) > 0) {$this->addField("createdon","backend","db"); $limitSearch=0;} + $resource = $this->getDocuments($documentIDs,$this->fields["backend"]["db"],$TVs,$orderBy,$showPublishedOnly,0,$hidePrivate,$where,$limitSearch,$keywords,$randomize,$dateSource); + +// EPO - End of change (then see line 692 - if ($limit) array_slice($resource, 0, $limit); ) + + if ($resource !== false) { $resource = array_values($resource); // remove #'s from keys $recordCount = count($resource); @@ -671,6 +689,9 @@ function determineIDs($IDs, $IDType, $TVs, $orderBy, $depth, $showPublishedOnly, $resource = $this->userSort($resource,$orderBy); } + //intersel - see above in order to limit the array to $limit. + if ($limit) $resource=array_slice($resource, 0, $limit); + $fields = (array_intersect($this->fields["backend"],$this->fields["display"])); $readyFields = array(); foreach ($fields as $field) { From a587691a4f23e654ec48df76677e353269b3c728 Mon Sep 17 00:00:00 2001 From: yamamoto Date: Wed, 1 Mar 2017 11:45:58 +0900 Subject: [PATCH 142/398] Fix and Refactor - $modx->getSettings() --- .../includes/document.parser.class.inc.php | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 29fbec7507..31ee298ab7 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -294,19 +294,19 @@ function sendUnauthorizedPage($noEvent = false) { */ function getSettings() { $tbl_system_settings = $this->getFullTableName('system_settings'); - if (!is_array($this->config) || empty ($this->config)) { - if ($included= file_exists(MODX_BASE_PATH . $this->getCacheFolder() . 'siteCache.idx.php')) { + if (!isset($this->config['site_name'])) { + if ($included= is_file(MODX_BASE_PATH . $this->getCacheFolder() . 'siteCache.idx.php')) { $included= include_once (MODX_BASE_PATH . $this->getCacheFolder() . 'siteCache.idx.php'); } - if (!$included || !is_array($this->config) || empty ($this->config)) { + if (!$included || !isset($this->config['site_name'])) { include_once(MODX_MANAGER_PATH . 'processors/cache_sync.class.processor.php'); $cache = new synccache(); $cache->setCachepath(MODX_BASE_PATH . $this->getCacheFolder()); $cache->setReport(false); $rebuilt = $cache->buildCache($this); $included = false; - if($rebuilt && $included= file_exists(MODX_BASE_PATH . $this->getCacheFolder() . 'siteCache.idx.php')) { - $included= include MODX_BASE_PATH . $this->getCacheFolder() . 'siteCache.idx.php'; + if($rebuilt && is_file(MODX_BASE_PATH . $this->getCacheFolder() . 'siteCache.idx.php')) { + $included= include(MODX_BASE_PATH . $this->getCacheFolder() . 'siteCache.idx.php'); } if(!$included) { $result= $this->db->select('setting_name, setting_value', $tbl_system_settings); @@ -315,28 +315,29 @@ function getSettings() { } } } + } - // added for backwards compatibility - garry FS#104 - $this->config['etomite_charset'] = & $this->config['modx_charset']; + // added for backwards compatibility - garry FS#104 + $this->config['etomite_charset'] = & $this->config['modx_charset']; - // setup default site id - new installation should generate a unique id for the site. - if(!isset($this->config['site_id'])) $this->config['site_id'] = "MzGeQ2faT4Dw06+U49x3"; + // setup default site id - new installation should generate a unique id for the site. + if(!isset($this->config['site_id'])) $this->config['site_id'] = "MzGeQ2faT4Dw06+U49x3"; - // store base_url and base_path inside config array - $this->config['base_url'] = MODX_BASE_URL; - $this->config['base_path'] = MODX_BASE_PATH; - $this->config['site_url'] = MODX_SITE_URL; - $this->config['valid_hostnames'] = MODX_SITE_HOSTNAMES; - $this->config['site_manager_url'] = MODX_MANAGER_URL; - $this->config['site_manager_path'] = MODX_MANAGER_PATH; - $this->error_reporting = $this->config['error_reporting']; - $this->config['filemanager_path'] = str_replace('[(base_path)]',MODX_BASE_PATH,$this->config['filemanager_path']); - $this->config['rb_base_dir'] = str_replace('[(base_path)]',MODX_BASE_PATH,$this->config['rb_base_dir']); - - $where = "plugincode LIKE '%phx.parser.class.inc.php%OnParseDocument();%' AND disabled != 1"; - $count = $this->db->getRecordCount($this->db->select('id', '[+prefix+]site_plugins', $where)); - if($count) $this->config['enable_filter'] = '0'; - } + // store base_url and base_path inside config array + $this->config['base_url'] = MODX_BASE_URL; + $this->config['base_path'] = MODX_BASE_PATH; + $this->config['site_url'] = MODX_SITE_URL; + $this->config['valid_hostnames'] = MODX_SITE_HOSTNAMES; + $this->config['site_manager_url'] = MODX_MANAGER_URL; + $this->config['site_manager_path'] = MODX_MANAGER_PATH; + $this->error_reporting = $this->config['error_reporting']; + $this->config['filemanager_path'] = str_replace('[(base_path)]',MODX_BASE_PATH,$this->config['filemanager_path']); + $this->config['rb_base_dir'] = str_replace('[(base_path)]',MODX_BASE_PATH,$this->config['rb_base_dir']); + + $where = "plugincode LIKE '%phx.parser.class.inc.php%OnParseDocument();%' AND disabled != 1"; + $count = $this->db->getRecordCount($this->db->select('id', '[+prefix+]site_plugins', $where)); + if($count) $this->config['enable_filter'] = '0'; + // now merge user settings into MODX-configuration $this->getUserSettings(); } From 74eb8c054318e2ab657df30e9477307fb075e016 Mon Sep 17 00:00:00 2001 From: Sasha Beep Date: Thu, 2 Mar 2017 16:22:18 +0400 Subject: [PATCH 143/398] Icon for first tab I propose to use sitemap icon instead of "Site Tree" words because this is only one text label by default. Or maybe move icon to plugin content and show by default if Tree Tab Title is empty --- install/assets/plugins/ElementsInTree.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/assets/plugins/ElementsInTree.tpl b/install/assets/plugins/ElementsInTree.tpl index 81dfcd123f..2b3509267d 100644 --- a/install/assets/plugins/ElementsInTree.tpl +++ b/install/assets/plugins/ElementsInTree.tpl @@ -7,7 +7,7 @@ * @category plugin * @version 1.5.7 * @license http://creativecommons.org/licenses/GPL/2.0/ GNU Public License (GPL v2) - * @internal @properties &tabTreeTitle=Tree Tab Title;text;Site Tree;;Custom title of Site Tree tab. &useIcons=Use icons in tabs;list;yes,no;yes;;Icons available in MODX version 1.2 or newer. &treeButtonsInTab=Tree Buttons in tab;list;yes,no;yes;;Move Tree Buttons into Site Tree tab. &unifyFrames=Unify Frames;list;yes,no;yes;;Unify Tree and Main frame style. Right now supports MODxRE2 theme only. + * @internal @properties &tabTreeTitle=Tree Tab Title;text;;;Custom title of Site Tree tab. &useIcons=Use icons in tabs;list;yes,no;yes;;Icons available in MODX version 1.2 or newer. &treeButtonsInTab=Tree Buttons in tab;list;yes,no;yes;;Move Tree Buttons into Site Tree tab. &unifyFrames=Unify Frames;list;yes,no;yes;;Unify Tree and Main frame style. Right now supports MODxRE2 theme only. * @internal @events OnManagerTreePrerender,OnManagerTreeRender,OnManagerMainFrameHeaderHTMLBlock,OnTempFormSave,OnTVFormSave,OnChunkFormSave,OnSnipFormSave,OnPluginFormSave,OnModFormSave,OnTempFormDelete,OnTVFormDelete,OnChunkFormDelete,OnSnipFormDelete,OnPluginFormDelete,OnModFormDelete * @internal @modx_category Manager and Admin * @internal @installset base From 0970d3f7b9328b8b0b08b90ee42b9806a872cb36 Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 3 Mar 2017 05:12:09 +0100 Subject: [PATCH 144/398] [I] Assigning category automatically when using contextmenu-button "create new" --- manager/actions/mutate_htmlsnippet.dynamic.php | 1 + manager/actions/mutate_plugin.dynamic.php | 1 + manager/actions/mutate_snippet.dynamic.php | 1 + manager/actions/mutate_templates.dynamic.php | 1 + manager/actions/mutate_tmplvars.dynamic.php | 1 + manager/actions/resources/functions.js | 6 +++--- manager/actions/resources/tpl_elementsRow.tpl | 2 +- 7 files changed, 9 insertions(+), 4 deletions(-) diff --git a/manager/actions/mutate_htmlsnippet.dynamic.php b/manager/actions/mutate_htmlsnippet.dynamic.php index 5c41e981d2..7e723858b7 100644 --- a/manager/actions/mutate_htmlsnippet.dynamic.php +++ b/manager/actions/mutate_htmlsnippet.dynamic.php @@ -43,6 +43,7 @@ } } else { $_SESSION['itemname'] = $_lang["new_htmlsnippet"]; + $content['category'] = intval($_REQUEST['catid']); } if ($modx->manager->hasFormValues()) { diff --git a/manager/actions/mutate_plugin.dynamic.php b/manager/actions/mutate_plugin.dynamic.php index bceb089ba5..a17b6836db 100644 --- a/manager/actions/mutate_plugin.dynamic.php +++ b/manager/actions/mutate_plugin.dynamic.php @@ -48,6 +48,7 @@ else { $_SESSION['itemname']=$_lang["new_plugin"]; + $content['category'] = intval($_REQUEST['catid']); } if ($modx->manager->hasFormValues()) { diff --git a/manager/actions/mutate_snippet.dynamic.php b/manager/actions/mutate_snippet.dynamic.php index bcc49f5874..d6b8fc8e8a 100644 --- a/manager/actions/mutate_snippet.dynamic.php +++ b/manager/actions/mutate_snippet.dynamic.php @@ -46,6 +46,7 @@ $content['properties'] = str_replace("&", "&", $content['properties']); } else { $_SESSION['itemname']=$_lang["new_snippet"]; + $content['category'] = intval($_REQUEST['catid']); } if ($modx->manager->hasFormValues()) { diff --git a/manager/actions/mutate_templates.dynamic.php b/manager/actions/mutate_templates.dynamic.php index 2ead173b8c..e745cfe580 100644 --- a/manager/actions/mutate_templates.dynamic.php +++ b/manager/actions/mutate_templates.dynamic.php @@ -43,6 +43,7 @@ } } else { $_SESSION['itemname']=$_lang["new_template"]; + $content['category'] = intval($_REQUEST['catid']); } if ($modx->manager->hasFormValues()) { diff --git a/manager/actions/mutate_tmplvars.dynamic.php b/manager/actions/mutate_tmplvars.dynamic.php index 2335fe7e0a..bdf5449477 100644 --- a/manager/actions/mutate_tmplvars.dynamic.php +++ b/manager/actions/mutate_tmplvars.dynamic.php @@ -44,6 +44,7 @@ else { $_SESSION['itemname']=$_lang["new_tmplvars"]; + $content['category'] = intval($_REQUEST['catid']); } if ($modx->manager->hasFormValues()) { diff --git a/manager/actions/resources/functions.js b/manager/actions/resources/functions.js index d6e647931c..55c260d857 100644 --- a/manager/actions/resources/functions.js +++ b/manager/actions/resources/functions.js @@ -184,7 +184,7 @@ jQuery( document ).ready(function() { var el = jQuery(element); var name = el.text().trim(); var cm = el.closest(".man_el_name"); - mgrResAction(name, action, cm.data("type"), cm.data("id")); + mgrResAction(name, action, cm.data("type"), cm.data("id"), cm.data("catid")); }, menu: [ { name: "create", title: mraTrans.create_new, icon: "plus", }, @@ -196,7 +196,7 @@ jQuery( document ).ready(function() { }); }); - function mgrResAction(name, action, type, id) { + function mgrResAction(name, action, type, id, catid) { var actionIds, deleteMsg; switch(type) { @@ -244,7 +244,7 @@ jQuery( document ).ready(function() { if (r != true) return; } - var target = "index.php?a="+actionsIds[action]+ (id ? "&id="+id : ""); + var target = "index.php?a="+actionsIds[action]+ (id ? "&id="+id : "")+ (catid ? "&catid="+catid : ""); if(top.main) top.main.document.location.href=target; else document.location.href=target; diff --git a/manager/actions/resources/tpl_elementsRow.tpl b/manager/actions/resources/tpl_elementsRow.tpl index f50a439607..c8447eb5fd 100644 --- a/manager/actions/resources/tpl_elementsRow.tpl +++ b/manager/actions/resources/tpl_elementsRow.tpl @@ -4,7 +4,7 @@ [+lockedByUser+]
    - + [+name+] ([+id+]) [+caption+] [+textdir+] From 00e806af0b8dd8488e4d2d3a2ddd8bed07faee2a Mon Sep 17 00:00:00 2001 From: Deesen Date: Fri, 3 Mar 2017 06:30:09 +0100 Subject: [PATCH 145/398] [I] #1248 Show ID in tooltip --- manager/frames/nodes.functions.inc.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/manager/frames/nodes.functions.inc.php b/manager/frames/nodes.functions.inc.php index 80b54466a6..ae754d5552 100644 --- a/manager/frames/nodes.functions.inc.php +++ b/manager/frames/nodes.functions.inc.php @@ -103,7 +103,8 @@ function makeHTML($indent,$parent,$expandAll,$theme) { $alt = ''; if(isDateNode($nodeNameSource)) $alt = $_lang['pagetitle'] .': '.$pagetitle.'[+lf+]'; - $alt.= $_lang['resource_opt_menu_title'] .': '.$menutitle; + $alt.= $_lang['id'] .': '.$id; + $alt.= '[+lf+]'.$_lang['resource_opt_menu_title'] .': '.$menutitle; $alt.= '[+lf+]'.$_lang['resource_opt_menu_index'] .': '.$menuindex; $alt.= '[+lf+]'.$_lang['alias'] .': '.(!empty($alias) ? $alias : '-'); $alt.= '[+lf+]'.$_lang['template'] .': '.$templatename; From 0a244df3976c6b3beca5df08a4f05631f6e9cf99 Mon Sep 17 00:00:00 2001 From: yamamoto Date: Mon, 6 Mar 2017 20:58:54 +0900 Subject: [PATCH 146/398] Refactor - $modx->invokeEvent() --- .../includes/document.parser.class.inc.php | 87 +++++++++---------- 1 file changed, 39 insertions(+), 48 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 31ee298ab7..971909676f 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -4503,56 +4503,47 @@ function removeAllEventListener() { * @return boolean|array */ function invokeEvent($evtName, $extParams= array ()) { - if (!$evtName) - return false; - if (!isset ($this->pluginEvent[$evtName])) - return false; + if (!$evtName) return false; + if (!isset ($this->pluginEvent[$evtName])) return false; + - $el= $this->pluginEvent[$evtName]; $results= array (); - $numEvents= count($el); - if ($numEvents > 0) - for ($i= 0; $i < $numEvents; $i++) { // start for loop - if ($this->dumpPlugins) $eventtime = $this->getMicroTime(); - $pluginName= $el[$i]; - $pluginName = $this->stripslashes($pluginName); - // reset event object - $e= & $this->Event; - $e->_resetEventObject(); - $e->name= $evtName; - $e->activePlugin= $pluginName; - - // get plugin code - $plugin = $this->getPluginCode($pluginName); - $pluginCode= $plugin['code']; - $pluginProperties= $plugin['props']; - - // load default params/properties - $parameter= $this->parseProperties($pluginProperties, $pluginName, 'plugin'); - if(!is_array($parameter)){ - $parameter = array(); - } - if (!empty ($extParams)) - $parameter= array_merge($parameter, $extParams); - - // eval plugin - $this->evalPlugin($pluginCode, $parameter); - - if(class_exists('PHxParser')) $this->config['enable_filter'] = 0; - - if ($this->dumpPlugins) { - $eventtime = $this->getMicroTime() - $eventtime; - $this->pluginsCode .= '
    ' . $evtName . ' / ' . $pluginName . ' ('.sprintf('%2.2f ms', $eventtime*1000).')'; - foreach ($parameter as $k=>$v) $this->pluginsCode .= $k . ' => ' . print_r($v, true) . '
    '; - $this->pluginsCode .= '

    '; - $this->pluginsTime["$evtName / $pluginName"] += $eventtime; - } - if ($e->_output != "") - $results[]= $e->_output; - if ($e->_propagate != true) - break; - } - $e->activePlugin= ""; + foreach($this->pluginEvent[$evtName] as $pluginName) { // start for loop + if ($this->dumpPlugins) $eventtime = $this->getMicroTime(); + $pluginName = $this->stripslashes($pluginName); + // reset event object + $e= & $this->event; + $e->_resetEventObject(); + $e->name = $evtName; + $e->activePlugin = $pluginName; + + // get plugin code + $plugin = $this->getPluginCode($pluginName); + $pluginCode= $plugin['code']; + $pluginProperties= $plugin['props']; + + // load default params/properties + $parameter= $this->parseProperties($pluginProperties, $pluginName, 'plugin'); + if(!is_array($parameter)) $parameter = array(); + if(!empty($extParams)) $parameter = array_merge($parameter, $extParams); + + // eval plugin + $this->evalPlugin($pluginCode, $parameter); + + if(class_exists('PHxParser')) $this->config['enable_filter'] = 0; + + if ($this->dumpPlugins) { + $eventtime = $this->getMicroTime() - $eventtime; + $this->pluginsCode .= '
    ' . $evtName . ' / ' . $pluginName . ' ('.sprintf('%2.2f ms', $eventtime*1000).')'; + foreach ($parameter as $k=>$v) $this->pluginsCode .= $k . ' => ' . print_r($v, true) . '
    '; + $this->pluginsCode .= '

    '; + $this->pluginsTime["$evtName / $pluginName"] += $eventtime; + } + if ($e->_output != '') $results[]= $e->_output; + if ($e->_propagate != true) break; + } + + $e->activePlugin= ''; return $results; } From 03c5eb9e98d705e1ed3af52840df8cfcee5de81c Mon Sep 17 00:00:00 2001 From: yamamoto Date: Mon, 6 Mar 2017 21:07:36 +0900 Subject: [PATCH 147/398] Code cleanup --- manager/includes/document.parser.class.inc.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 971909676f..cd6a8c1084 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -4506,7 +4506,6 @@ function invokeEvent($evtName, $extParams= array ()) { if (!$evtName) return false; if (!isset ($this->pluginEvent[$evtName])) return false; - $results= array (); foreach($this->pluginEvent[$evtName] as $pluginName) { // start for loop if ($this->dumpPlugins) $eventtime = $this->getMicroTime(); @@ -4518,9 +4517,9 @@ function invokeEvent($evtName, $extParams= array ()) { $e->activePlugin = $pluginName; // get plugin code - $plugin = $this->getPluginCode($pluginName); - $pluginCode= $plugin['code']; - $pluginProperties= $plugin['props']; + $_ = $this->getPluginCode($pluginName); + $pluginCode = $_['code']; + $pluginProperties = $_['props']; // load default params/properties $parameter= $this->parseProperties($pluginProperties, $pluginName, 'plugin'); @@ -4534,10 +4533,10 @@ function invokeEvent($evtName, $extParams= array ()) { if ($this->dumpPlugins) { $eventtime = $this->getMicroTime() - $eventtime; - $this->pluginsCode .= '
    ' . $evtName . ' / ' . $pluginName . ' ('.sprintf('%2.2f ms', $eventtime*1000).')'; - foreach ($parameter as $k=>$v) $this->pluginsCode .= $k . ' => ' . print_r($v, true) . '
    '; + $this->pluginsCode .= sprintf('
    %s / %s (%2.2f ms)', $evtName, $pluginName, $eventtime*1000); + foreach ($parameter as $k=>$v) $this->pluginsCode .= "{$k} => " . print_r($v, true) . '
    '; $this->pluginsCode .= '

    '; - $this->pluginsTime["$evtName / $pluginName"] += $eventtime; + $this->pluginsTime["{$evtName} / {$pluginName}"] += $eventtime; } if ($e->_output != '') $results[]= $e->_output; if ($e->_propagate != true) break; From 34ce1939c83c84c7509324f6417207034b5d6699 Mon Sep 17 00:00:00 2001 From: webber12 Date: Wed, 8 Mar 2017 19:53:41 +0200 Subject: [PATCH 148/398] !contains (not_contains) condition for [[if]] [[if? &is=`[+iteration+]:%:4:and:[+dl.class+]:!contains:last` &then=`
    `]] --- assets/snippets/if/snippet.if.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/assets/snippets/if/snippet.if.php b/assets/snippets/if/snippet.if.php index 65004f6c34..692d9bf60a 100644 --- a/assets/snippets/if/snippet.if.php +++ b/assets/snippets/if/snippet.if.php @@ -98,6 +98,11 @@ $output = (strpos($subject,$operand) !== false) ? true : false; $i++; break; + case '!contains': + case 'not_contains': + $output = (strpos($subject,$operand) !== false) ? false : true; + $i++; + break; case '==': case '=': case 'eq': From 829808440166971228b952e70d56dede945ed99e Mon Sep 17 00:00:00 2001 From: Deesen Date: Tue, 14 Mar 2017 07:43:43 +0100 Subject: [PATCH 149/398] [F] #1273 Permission-check for setting "Allow root" --- .../processors/user_documents_permissions.class.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/manager/processors/user_documents_permissions.class.php b/manager/processors/user_documents_permissions.class.php index affcc974eb..fa00de345f 100755 --- a/manager/processors/user_documents_permissions.class.php +++ b/manager/processors/user_documents_permissions.class.php @@ -23,19 +23,13 @@ function checkPermissions() { return true; // administrator - grant all document permissions } - if($document==0 && ($udperms_allowroot==1 || $modx->hasPermission('edit_document'))) { - return true; - } - - $permissionsok = false; // set permissions to false - if($modx->config['use_udperms']==0 || $modx->config['use_udperms']=="" || !isset($modx->config['use_udperms'])) { return true; // permissions aren't in use } $parent = $modx->db->getValue($modx->db->select('parent', $tblsc, "id='{$this->document}'")); - if ($this->duplicateDoc==true && $parent==0 && $udperms_allowroot==0) { - return false; // deny duplicate document at root if Allow Root is No + if (($this->duplicateDoc==true || $document==0) && $parent==0 && $udperms_allowroot==0) { + return false; // deny duplicate || create new document at root if Allow Root is No } // get document groups for current user @@ -51,6 +45,8 @@ function checkPermissions() { are private to the manager users will not be private to web users if the document group is not assigned to a web user group and visa versa. */ + $permissionsok = false; // set permissions to false + $rs = $modx->db->select( 'count(DISTINCT sc.id)', "{$tblsc} AS sc From 27c5602305a37f296129e7ee2e87797cf539a313 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Wed, 15 Mar 2017 12:30:55 +0200 Subject: [PATCH 150/398] [fix] - #1275. http://take.ms/wo4RF --- assets/plugins/tinymce4/bridge.tinymce4.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/plugins/tinymce4/bridge.tinymce4.inc.php b/assets/plugins/tinymce4/bridge.tinymce4.inc.php index c121ccb167..6b86112dfd 100755 --- a/assets/plugins/tinymce4/bridge.tinymce4.inc.php +++ b/assets/plugins/tinymce4/bridge.tinymce4.inc.php @@ -43,7 +43,7 @@ public function __construct($tvOptions=array()) 'blockFormats' => 'Paragraph=p;Header 1=h1;Header 2=h2;Header 3=h3', 'custom_plugins' => 'advlist autolink lists link image charmap print preview hr anchor pagebreak searchreplace wordcount visualblocks visualchars code fullscreen spellchecker insertdatetime media nonbreaking save table contextmenu directionality emoticons template paste textcolor codesample colorpicker textpattern imagetools paste modxlink youtube', 'custom_buttons1' => 'undo redo | cut copy paste | searchreplace | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent blockquote | styleselect', - 'custom_buttons2' => 'link unlink anchor image media codesample table | hr removeformat | subscript superscript charmap | nonbreaking | visualchars visualblocks print preview fullscreen code', + 'custom_buttons2' => 'link unlink anchor image media codesample table | hr removeformat | subscript superscript charmap | nonbreaking | visualchars visualblocks print preview fullscreen code formatselect', // Provide empty values for parseText() #989 'template_docs' => '', 'template_chunks' => '', From ba98bc6fa1b6a9f34b194d3611d1a26da05f330e Mon Sep 17 00:00:00 2001 From: Mr B Date: Thu, 16 Mar 2017 10:13:39 +0000 Subject: [PATCH 151/398] [I] Make sure site tree context menu is also within frame horizontally --- manager/frames/tree.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/manager/frames/tree.php b/manager/frames/tree.php index dceaa5028a..bd7b8c4263 100755 --- a/manager/frames/tree.php +++ b/manager/frames/tree.php @@ -135,7 +135,12 @@ function showPopup(id,title,pub,del,folder,e){ else jQuery('#item11').hide(); var bodyHeight = parseInt(document.body.offsetHeight); + var bodyWidth = parseInt(document.body.offsetWidth); x = e.clientX>0 ? e.clientX:e.pageX; + if (x+mnu.offsetWidth > bodyWidth) { + // make sure context menu is within frame + x = Math.max(x - ((x+mnu.offsetWidth)-bodyWidth+5),0); + } y = e.clientY>0 ? e.clientY:e.pageY; y = getScrollY()+(y/2); if (y+mnu.offsetHeight > bodyHeight) { From 94418b98b4eb5718d1e7226fa4a45b5a49e60ce5 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 21 Mar 2017 15:46:47 +0200 Subject: [PATCH 152/398] Update docLister add (makePaginateUrl param) --- .../DocLister/core/controller/site_content.php | 2 +- .../core/extender/paginate.extender.inc | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) mode change 100755 => 100644 assets/snippets/DocLister/core/controller/site_content.php mode change 100755 => 100644 assets/snippets/DocLister/core/extender/paginate.extender.inc diff --git a/assets/snippets/DocLister/core/controller/site_content.php b/assets/snippets/DocLister/core/controller/site_content.php old mode 100755 new mode 100644 index ac6a30cb07..1a12e169d9 --- a/assets/snippets/DocLister/core/controller/site_content.php +++ b/assets/snippets/DocLister/core/controller/site_content.php @@ -46,7 +46,7 @@ public function getDocs($tvlist = '') if ($tvlist == '') { $tvlist = $this->getCFGDef('tvList', ''); } - + $this->extTV->getAllTV_Name(); if ($this->extPaginate = $this->getExtender('paginate')) { diff --git a/assets/snippets/DocLister/core/extender/paginate.extender.inc b/assets/snippets/DocLister/core/extender/paginate.extender.inc old mode 100755 new mode 100644 index da4e18b1a4..568670e493 --- a/assets/snippets/DocLister/core/extender/paginate.extender.inc +++ b/assets/snippets/DocLister/core/extender/paginate.extender.inc @@ -184,13 +184,26 @@ class paginate_DL_Extender extends extDocLister switch ($this->DocLister->getCFGDef('paginate', '')) { case 'offset': $requestName = 'start'; + $url = $this->buildUrl($url, $requestName, $params); break; case 'pages': default: $requestName = 'page'; + $call = $this->DocLister->getCFGDef('makePaginateUrl', ''); + if((is_object($call) && ($call instanceof Closure)) || is_callable($call)){ + $url = call_user_func($call, compact('url', 'params'), $this->modx, $this->DocLister, $this); + }else{ + $url = $this->buildUrl($url, $requestName, $params); + } break; } } + + + return $url; + } + + public function buildUrl($url, $requestName, $params){ if ($requestName != '' && is_array($params)) { $q = http_build_query(array_merge($params, array($this->getRequestName($requestName) => null))); $url = explode("?", $url, 2); @@ -199,10 +212,9 @@ class paginate_DL_Extender extends extDocLister $url .= "?" . $q; } } - return $url; } - + /** * Имя REQUEST переменной в пагинаторе * From 1b635fb78b4701855b6d2d621f7975e0bd1f5ea1 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 21 Mar 2017 16:41:41 +0200 Subject: [PATCH 153/398] [F] fix OnLoadDocumentObject event dont work #1271 --- manager/includes/default_config.php | 2 +- manager/includes/document.parser.class.inc.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manager/includes/default_config.php b/manager/includes/default_config.php index 3bddc0650d..73109dff22 100644 --- a/manager/includes/default_config.php +++ b/manager/includes/default_config.php @@ -19,7 +19,7 @@ $c['friendly_url_prefix'] = ''; $c['friendly_url_suffix'] = '.html'; $c['friendly_alias_urls'] = '1'; -$c['use_alias_path'] = '1'; +$c['use_alias_path'] = '1'; $c['make_folders'] = '0'; $c['seostrict'] = '0'; $c['aliaslistingfolder'] = '0'; diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index cd6a8c1084..65c5b9d86e 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -1974,8 +1974,8 @@ function getDocumentObject($method, $identifier, $isPrepareResponse=false) { if($isPrepareResponse==='prepareResponse') $this->documentObject = & $documentObject; $out = $this->invokeEvent('OnLoadDocumentObject', compact('method', 'identifier', 'documentObject')); - if(is_array($out)){ - $documentObject = $out; + if(is_array($out) && is_array($out[0])){ + $documentObject = $out[0]; } if ($documentObject['template']) { // load TVs and merge with document - Orig by Apodigm - Docvars From 48f694e317d450af14c8e38b6e9d56205aa0e236 Mon Sep 17 00:00:00 2001 From: MadHatter Date: Tue, 21 Mar 2017 15:04:57 +0000 Subject: [PATCH 154/398] Get the q parameter from the request and store it in a property, as well as cleaning it up for future use. --- .../includes/document.parser.class.inc.php | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index cd6a8c1084..6a987f1873 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -73,6 +73,7 @@ class DocumentParser { var $messageQuitCount; var $time; var $sid; + private $q; /** * Document constructor @@ -102,6 +103,8 @@ function __construct() { $this->stopOnNotice = false; $this->snipLapCount = 0; $this->time = time(); // for having global timestamp + + $this->q = self::_getCleanQueryString(); } function __call($method_name,$arguments) { @@ -1851,7 +1854,7 @@ function($m) use($aliases, $isfolder, $isfriendly, $pref, $suff) { } function sendStrictURI(){ - $q = isset($_GET['q']) ? $_GET['q'] : ''; + $q = $this->q; // FIX URLs if (empty($this->documentIdentifier) || $this->config['seostrict']=='0' || $this->config['friendly_urls']=='0') return; @@ -2076,8 +2079,8 @@ function executeParser() { $this->getSettings(); } - //$_REQUEST['q'] = $_GET['q'] = $this->setRequestQ($_SERVER['REQUEST_URI']); - + //$this->q = $this->setRequestQ($_SERVER['REQUEST_URI']); + if (strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS') !== false) $this->_IIS_furl_fix(); // IIS friendly url fix @@ -2120,7 +2123,7 @@ function executeParser() { //@TODO: check new $alias; if ($this->config['aliaslistingfolder'] == 1) { $tbl_site_content = $this->getFullTableName('site_content'); - $alias = $this->db->escape($_GET['q']); + $alias = $this->db->escape($this->q); $parentAlias = dirname($alias); $parentId = $this->getIdFromAlias($parentAlias); @@ -2177,7 +2180,7 @@ function executeParser() { if (isset($this->documentListing[$this->documentIdentifier])) { $this->documentIdentifier = $this->documentListing[$this->documentIdentifier]; } else { - $alias = $this->db->escape($_GET['q']); + $alias = $this->db->escape($this->q); $docAlias = basename($alias, $this->config['friendly_url_suffix']); $rs = $this->db->select('id', $this->getFullTableName('site_content'), "deleted=0 and alias='{$docAlias}'"); $this->documentIdentifier = (int) $this->db->getValue($rs); @@ -2218,7 +2221,7 @@ function _IIS_furl_fix() } } $_SERVER['PHP_SELF']= $this->config['base_url'] . $qp['path']; - $_REQUEST['q']= $_GET['q']= $qp['path']; + $this->q = $qp['path']; return $qp['path']; } @@ -2229,8 +2232,8 @@ function setRequestQ($request_uri) { if(strpos($q,'?')!==false) $q = substr($q,0,strpos($q,'?')); if($q=='index.php') $q = ''; } - - $_REQUEST['q'] = $_GET['q'] = $q; + + $this->q = $q; return $q; } @@ -5478,6 +5481,31 @@ function applyFilter($value='', $modifiers=false, $key='') { // End of class. + + /** + * Get Clean Query String + * + * Fixes the issue where passing an array into the q get variable causes errors + * + */ + private static function _getCleanQueryString() { + $q = $_GET['q']; + + //Return null if the query doesn't exist + if(empty($q)) { + return null; + } + + //If we have a string, return it + if(is_string($q)) { + return $q; + } + + //If we have an array, return the first element + if(is_array($q)) { + return $q[0]; + } + } } /** From 899e630af58e2ef327f40da6b2db7d0784692eb1 Mon Sep 17 00:00:00 2001 From: Digitalime Date: Wed, 22 Mar 2017 09:56:39 +0100 Subject: [PATCH 155/398] Allow HTML email for Websignup Moved weblogin.common.inc.php to correct folder. Added basic html tags for the mail to english language file. --- .../weblogin/weblogin.common.inc.OLD.php | 86 +++++++------------ .../snippets/weblogin/weblogin.common.inc.php | 86 ++++++++++++------- manager/includes/lang/english.inc.php | 7 +- 3 files changed, 91 insertions(+), 88 deletions(-) rename webuser-html => assets/snippets/weblogin/weblogin.common.inc.OLD.php (60%) mode change 100644 => 100755 mode change 100755 => 100644 assets/snippets/weblogin/weblogin.common.inc.php diff --git a/webuser-html b/assets/snippets/weblogin/weblogin.common.inc.OLD.php old mode 100644 new mode 100755 similarity index 60% rename from webuser-html rename to assets/snippets/weblogin/weblogin.common.inc.OLD.php index 525e1b7164..1a38d69887 --- a/webuser-html +++ b/assets/snippets/weblogin/weblogin.common.inc.OLD.php @@ -25,7 +25,7 @@ function webLoginExtractDeclarations(&$html){ // show javascript alert function webLoginAlert($msg){ - global $modx; + global $modx; return ""; } @@ -50,11 +50,7 @@ function webLoginSendNewPassword($email,$uid,$pwd,$ufn){ $emailsender = $modx->config['emailsender']; $site_name = $modx->config['site_name']; $site_start = $modx->config['site_start']; - - //Escape quotes - $message = str_replace('"', '', $websignupemail_message); - - + $message = sprintf($websignupemail_message, $uid, $pwd); // use old method // replace placeholders $message = str_replace("[+uid+]",$uid,$message); $message = str_replace("[+pwd+]",$pwd,$message); @@ -62,59 +58,37 @@ function webLoginSendNewPassword($email,$uid,$pwd,$ufn){ $message = str_replace("[+sname+]",$site_name,$message); $message = str_replace("[+semail+]",$emailsender,$message); $message = str_replace("[+surl+]",$site_url,$message); - - - //Set HTML Headers - $headers = "From: ".$emailsender."\r\n"; - $headers .= "X-Mailer: PHP/".phpversion(); - $headers .= "MIME-Version: 1.0\r\n"; - $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; - - - if (!ini_get('safe_mode')) - $sent = mail($email, - $emailsubject, - $message, - $headers, - - "-f {$emailsender}"); - - else $sent = mail( - $email, - $emailsubject, - $message, - "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); - + if (!ini_get('safe_mode')) $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion(), "-f {$emailsender}"); + else $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); if (!$sent) webLoginAlert("Error while sending mail to $mailto",1); - return true; } function preserveUrl($docid = '', $alias = '', $array_values = array(), $suffix = false) { - global $modx; - $array_get = $_GET; - $urlstring = array(); - - unset($array_get["id"]); - unset($array_get["q"]); - unset($array_get["webloginmode"]); - - $array_url = array_merge($array_get, $array_values); - foreach ($array_url as $name => $value) { - if (!is_null($value)) { - $urlstring[] = urlencode($name) . '=' . urlencode($value); - } - } - - $url = implode('&',$urlstring); - if ($suffix) { - if (empty($url)) { - $url = "?"; - } else { - $url .= "&"; - } - } - return $modx->makeUrl($docid, $alias, $url); - } + global $modx; + $array_get = $_GET; + $urlstring = array(); + + unset($array_get["id"]); + unset($array_get["q"]); + unset($array_get["webloginmode"]); + + $array_url = array_merge($array_get, $array_values); + foreach ($array_url as $name => $value) { + if (!is_null($value)) { + $urlstring[] = urlencode($name) . '=' . urlencode($value); + } + } + + $url = implode('&',$urlstring); + if ($suffix) { + if (empty($url)) { + $url = "?"; + } else { + $url .= "&"; + } + } + return $modx->makeUrl($docid, $alias, $url); + } -?> +?> \ No newline at end of file diff --git a/assets/snippets/weblogin/weblogin.common.inc.php b/assets/snippets/weblogin/weblogin.common.inc.php old mode 100755 new mode 100644 index 1a38d69887..525e1b7164 --- a/assets/snippets/weblogin/weblogin.common.inc.php +++ b/assets/snippets/weblogin/weblogin.common.inc.php @@ -25,7 +25,7 @@ function webLoginExtractDeclarations(&$html){ // show javascript alert function webLoginAlert($msg){ - global $modx; + global $modx; return ""; } @@ -50,7 +50,11 @@ function webLoginSendNewPassword($email,$uid,$pwd,$ufn){ $emailsender = $modx->config['emailsender']; $site_name = $modx->config['site_name']; $site_start = $modx->config['site_start']; - $message = sprintf($websignupemail_message, $uid, $pwd); // use old method + + //Escape quotes + $message = str_replace('"', '', $websignupemail_message); + + // replace placeholders $message = str_replace("[+uid+]",$uid,$message); $message = str_replace("[+pwd+]",$pwd,$message); @@ -58,37 +62,59 @@ function webLoginSendNewPassword($email,$uid,$pwd,$ufn){ $message = str_replace("[+sname+]",$site_name,$message); $message = str_replace("[+semail+]",$emailsender,$message); $message = str_replace("[+surl+]",$site_url,$message); - if (!ini_get('safe_mode')) $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion(), "-f {$emailsender}"); - else $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); + + + //Set HTML Headers + $headers = "From: ".$emailsender."\r\n"; + $headers .= "X-Mailer: PHP/".phpversion(); + $headers .= "MIME-Version: 1.0\r\n"; + $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; + + + if (!ini_get('safe_mode')) + $sent = mail($email, + $emailsubject, + $message, + $headers, + + "-f {$emailsender}"); + + else $sent = mail( + $email, + $emailsubject, + $message, + "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); + if (!$sent) webLoginAlert("Error while sending mail to $mailto",1); + return true; } function preserveUrl($docid = '', $alias = '', $array_values = array(), $suffix = false) { - global $modx; - $array_get = $_GET; - $urlstring = array(); - - unset($array_get["id"]); - unset($array_get["q"]); - unset($array_get["webloginmode"]); - - $array_url = array_merge($array_get, $array_values); - foreach ($array_url as $name => $value) { - if (!is_null($value)) { - $urlstring[] = urlencode($name) . '=' . urlencode($value); - } - } - - $url = implode('&',$urlstring); - if ($suffix) { - if (empty($url)) { - $url = "?"; - } else { - $url .= "&"; - } - } - return $modx->makeUrl($docid, $alias, $url); - } + global $modx; + $array_get = $_GET; + $urlstring = array(); + + unset($array_get["id"]); + unset($array_get["q"]); + unset($array_get["webloginmode"]); + + $array_url = array_merge($array_get, $array_values); + foreach ($array_url as $name => $value) { + if (!is_null($value)) { + $urlstring[] = urlencode($name) . '=' . urlencode($value); + } + } + + $url = implode('&',$urlstring); + if ($suffix) { + if (empty($url)) { + $url = "?"; + } else { + $url .= "&"; + } + } + return $modx->makeUrl($docid, $alias, $url); + } -?> \ No newline at end of file +?> diff --git a/manager/includes/lang/english.inc.php b/manager/includes/lang/english.inc.php index 00327e47fd..15da1cbfa8 100644 --- a/manager/includes/lang/english.inc.php +++ b/manager/includes/lang/english.inc.php @@ -986,7 +986,9 @@ $_lang["sys_alert"] = 'System Alert'; $_lang["sysinfo_activity_message"] = 'This list show which Resources have been recently edited by your users.'; $_lang["sysinfo_userid"] = 'User'; -$_lang["system_email_signup"] = 'Hello [+uid+] +$_lang["system_email_signup"] = ' + +Hello [+uid+] Here are your login details for [+sname+] Content Manager: @@ -996,7 +998,8 @@ Once you log into the Content Manager ([+surl+]), you can change your password. Regards, -Site Administrator'; +Site Administrator +'; $_lang["system_email_webreminder"] = 'Hello [+uid+] To activate your new password click the following link: From 90f69323aa07f42e1fccf6a8a09878e94a33b04f Mon Sep 17 00:00:00 2001 From: Digitalime Date: Wed, 22 Mar 2017 10:00:16 +0100 Subject: [PATCH 156/398] Remove old version --- .../weblogin/weblogin.common.inc.OLD.php | 94 ------------------- 1 file changed, 94 deletions(-) delete mode 100755 assets/snippets/weblogin/weblogin.common.inc.OLD.php diff --git a/assets/snippets/weblogin/weblogin.common.inc.OLD.php b/assets/snippets/weblogin/weblogin.common.inc.OLD.php deleted file mode 100755 index 1a38d69887..0000000000 --- a/assets/snippets/weblogin/weblogin.common.inc.OLD.php +++ /dev/null @@ -1,94 +0,0 @@ -]?-->/i",$html,$matches)) { - for($i=0;$iwindow.setTimeout(\"alert('".addslashes($modx->db->escape($msg))."')\",10);"; - } - - // generate new password - function webLoginGeneratePassword($length = 10) { - $allowable_characters = "abcdefghjkmnpqrstuvxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789"; - $ps_len = strlen($allowable_characters); - mt_srand((double)microtime()*1000000); - $pass = ""; - for($i = 0; $i < $length; $i++) { - $pass .= $allowable_characters[mt_rand(0,$ps_len-1)]; - } - return $pass; - } - - // Send new password to the user - function webLoginSendNewPassword($email,$uid,$pwd,$ufn){ - global $modx, $site_url; - $mailto = $modx->config['mailto']; - $websignupemail_message = $modx->config['websignupemail_message']; - $emailsubject = $modx->config['emailsubject']; - $emailsender = $modx->config['emailsender']; - $site_name = $modx->config['site_name']; - $site_start = $modx->config['site_start']; - $message = sprintf($websignupemail_message, $uid, $pwd); // use old method - // replace placeholders - $message = str_replace("[+uid+]",$uid,$message); - $message = str_replace("[+pwd+]",$pwd,$message); - $message = str_replace("[+ufn+]",$ufn,$message); - $message = str_replace("[+sname+]",$site_name,$message); - $message = str_replace("[+semail+]",$emailsender,$message); - $message = str_replace("[+surl+]",$site_url,$message); - if (!ini_get('safe_mode')) $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion(), "-f {$emailsender}"); - else $sent = mail($email, $emailsubject, $message, "From: ".$emailsender."\r\n"."X-Mailer: Content Manager - PHP/".phpversion()); - if (!$sent) webLoginAlert("Error while sending mail to $mailto",1); - return true; - } - - function preserveUrl($docid = '', $alias = '', $array_values = array(), $suffix = false) { - global $modx; - $array_get = $_GET; - $urlstring = array(); - - unset($array_get["id"]); - unset($array_get["q"]); - unset($array_get["webloginmode"]); - - $array_url = array_merge($array_get, $array_values); - foreach ($array_url as $name => $value) { - if (!is_null($value)) { - $urlstring[] = urlencode($name) . '=' . urlencode($value); - } - } - - $url = implode('&',$urlstring); - if ($suffix) { - if (empty($url)) { - $url = "?"; - } else { - $url .= "&"; - } - } - return $modx->makeUrl($docid, $alias, $url); - } - -?> \ No newline at end of file From 11d6288c5fe6fe7a62f8a2e7718850aea8f8171e Mon Sep 17 00:00:00 2001 From: Deesen Date: Sun, 26 Mar 2017 11:32:23 +0200 Subject: [PATCH 157/398] [F] #1279 If container has no siblings, get default-template from parent --- manager/actions/mutate_content.dynamic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/actions/mutate_content.dynamic.php b/manager/actions/mutate_content.dynamic.php index 58b85e7a6e..698bee5d2b 100644 --- a/manager/actions/mutate_content.dynamic.php +++ b/manager/actions/mutate_content.dynamic.php @@ -1344,7 +1344,7 @@ function getDefaultTemplate() if(isset($sibl[0]['template']) && $sibl[0]['template']!=='') $default_template = $sibl[0]['template']; } } - break; + if(isset($default_template)) break; // If $default_template could not be determined, fall back / through to "parent"-mode case 'parent': if (isset($_REQUEST['pid']) && !empty($_REQUEST['pid'])) { From e3e0da8e87125d27978d2ddf063cc2fd5336f366 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Mon, 27 Mar 2017 11:42:42 +0300 Subject: [PATCH 158/398] FIX DLBuildMenu lot of queries --- assets/snippets/DocLister/lib/DLFixedPrepare.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/snippets/DocLister/lib/DLFixedPrepare.class.php b/assets/snippets/DocLister/lib/DLFixedPrepare.class.php index 1263dd5698..a2b15f3840 100755 --- a/assets/snippets/DocLister/lib/DLFixedPrepare.class.php +++ b/assets/snippets/DocLister/lib/DLFixedPrepare.class.php @@ -21,7 +21,7 @@ public static function buildMenu(array $data = array(), DocumentParser $modx, $_ $params['parents'] = $data['id']; $params['idType'] = 'parents'; $params['documents'] = ''; - $data['dl.submenu'] = $modx->runSnippet('DLBuildMenu', $params); + $data['dl.submenu'] = ($data['isfolder']) ? $modx->runSnippet('DLBuildMenu', $params) : ''; } else { $data['dl.submenu'] = ''; } From cdd7d8b85ad7d178e8e775c062a2c7aa39fa8136 Mon Sep 17 00:00:00 2001 From: MrSwed Date: Mon, 27 Mar 2017 15:11:16 +0300 Subject: [PATCH 159/398] [revert] 12c67aad38636705234439fbb3cda7512f4fb475 to fix #1276 --- manager/includes/document.parser.class.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 65c5b9d86e..16c92ea1fd 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -993,9 +993,9 @@ function mergeDocumentContent($content,$ph=false) { list($key,$modifiers) = $this->splitKeyAndFilter($key); list($key,$context) = explode('@',$key,2); - // if(!isset($ph[$key]) && !$context) continue; // #1218 TVs/PHs will not be rendered if custom_meta_title is not assigned to template like [*custom_meta_title:ne:then=`[*custom_meta_title*]`:else=`[*pagetitle*]`*] - if($context) $value = $this->_contextValue("{$key}@{$context}"); - else $value = $ph[$key]; + if(!isset($ph[$key]) && !$context) continue; + elseif($context) $value = $this->_contextValue("{$key}@{$context}"); + else $value = $ph[$key]; if (is_array($value)) { include_once(MODX_MANAGER_PATH . 'includes/tmplvars.format.inc.php'); From 36e0a1d49a47f341939996a72b8fd25b40ba995e Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Thu, 13 Apr 2017 13:01:21 +0300 Subject: [PATCH 160/398] Fix for dropdown menu in new theme --- manager/includes/menu.class.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/includes/menu.class.inc.php b/manager/includes/menu.class.inc.php index d59655f3aa..ff9dedff41 100644 --- a/manager/includes/menu.class.inc.php +++ b/manager/includes/menu.class.inc.php @@ -14,7 +14,7 @@ function Build($menu,$setting=array()){ $this->defaults['parentLinkIn'] = ''; $this->defaults['innerClass'] = 'subnav'; - $this->defaults = $this->defaults + $setting; + $this->defaults = $setting + $this->defaults; $this->Structurise($menu); $this->output = $this->DrawSub('main',0); echo $this->output; From 7f463481f30e43f17c7d1683c310b9867aa78671 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:31:43 +0300 Subject: [PATCH 161/398] Update apiHelpers.class --- assets/lib/APIHelpers.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 assets/lib/APIHelpers.class.php diff --git a/assets/lib/APIHelpers.class.php b/assets/lib/APIHelpers.class.php old mode 100755 new mode 100644 index f12af3c92e..030318aae7 --- a/assets/lib/APIHelpers.class.php +++ b/assets/lib/APIHelpers.class.php @@ -158,7 +158,7 @@ public static function genPass($len, $data = '') * @param $data * @return bool|false|string */ - private function _getEnv($data) + private static function _getEnv($data) { switch (true) { case (isset($_SERVER[$data])): From 367fbdd4f8c5523b13c7b03b22b921ad824bd468 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:32:14 +0300 Subject: [PATCH 162/398] update lib --- assets/lib/Helpers/FS.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) mode change 100755 => 100644 assets/lib/Helpers/FS.php diff --git a/assets/lib/Helpers/FS.php b/assets/lib/Helpers/FS.php old mode 100755 new mode 100644 index cf3bf638b1..b7423eb2e4 --- a/assets/lib/Helpers/FS.php +++ b/assets/lib/Helpers/FS.php @@ -107,11 +107,16 @@ public function takeFileName($file) /** * @param $file + * @param bool $lower * @return string */ - public function takeFileExt($file) + public function takeFileExt($file, $lower = true) { - return strtolower($this->_pathinfo($file, 'extension')); + $str = $this->_pathinfo($file, 'extension'); + if($lower){ + $str = strtolower($str); + } + return $str; } /** From da2c948d8d7629a8e249ee657b6a90d6b9331521 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:32:45 +0300 Subject: [PATCH 163/398] Update api mode --- assets/lib/MODxAPI/MODx.php | 1 + 1 file changed, 1 insertion(+) mode change 100755 => 100644 assets/lib/MODxAPI/MODx.php diff --git a/assets/lib/MODxAPI/MODx.php b/assets/lib/MODxAPI/MODx.php old mode 100755 new mode 100644 index a3385fa0e8..a20b9913c7 --- a/assets/lib/MODxAPI/MODx.php +++ b/assets/lib/MODxAPI/MODx.php @@ -755,6 +755,7 @@ public function copy($id) { $this->edit($id)->id = 0; $this->newDoc = true; + $this->store = array(); return $this; } From aff734e195ffc61b9d19d5e8fc42f5eb31197f47 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:33:47 +0300 Subject: [PATCH 164/398] [FIX] hardcoded fix ElementsInTree --- .../elementsintree/includes/on_manager_tree_prerender.inc.php | 2 +- install/assets/plugins/ElementsInTree.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/plugins/elementsintree/includes/on_manager_tree_prerender.inc.php b/assets/plugins/elementsintree/includes/on_manager_tree_prerender.inc.php index 762912e9c7..b3b2e0d192 100644 --- a/assets/plugins/elementsintree/includes/on_manager_tree_prerender.inc.php +++ b/assets/plugins/elementsintree/includes/on_manager_tree_prerender.inc.php @@ -11,7 +11,7 @@ // tree buttons in tab $ph['treeButtonsInTab_js'] = ($treeButtonsInTab == 'yes') ? file_get_contents($eit_base_path.'assets/js_treeButtonsInTab.tpl') : ''; $ph['treeButtonsInTab_css'] = ($treeButtonsInTab == 'yes') ? file_get_contents($eit_base_path.'assets/css_treeButtonsInTab.tpl') : ''; -$ph['tabTreeTitle'] = $tabTreeTitle; +$ph['tabTreeTitle'] = ''; // Prepare lang-strings $unlockTranslations = array(); diff --git a/install/assets/plugins/ElementsInTree.tpl b/install/assets/plugins/ElementsInTree.tpl index 2b3509267d..28fb1b30c0 100644 --- a/install/assets/plugins/ElementsInTree.tpl +++ b/install/assets/plugins/ElementsInTree.tpl @@ -7,7 +7,7 @@ * @category plugin * @version 1.5.7 * @license http://creativecommons.org/licenses/GPL/2.0/ GNU Public License (GPL v2) - * @internal @properties &tabTreeTitle=Tree Tab Title;text;;;Custom title of Site Tree tab. &useIcons=Use icons in tabs;list;yes,no;yes;;Icons available in MODX version 1.2 or newer. &treeButtonsInTab=Tree Buttons in tab;list;yes,no;yes;;Move Tree Buttons into Site Tree tab. &unifyFrames=Unify Frames;list;yes,no;yes;;Unify Tree and Main frame style. Right now supports MODxRE2 theme only. + * @internal @properties &tabTreeTitle=Tree Tab Title;text;Docs;;Custom title of Site Tree tab. &useIcons=Use icons in tabs;list;yes,no;yes;;Icons available in MODX version 1.2 or newer. &treeButtonsInTab=Tree Buttons in tab;list;yes,no;yes;;Move Tree Buttons into Site Tree tab. &unifyFrames=Unify Frames;list;yes,no;yes;;Unify Tree and Main frame style. Right now supports MODxRE2 theme only. * @internal @events OnManagerTreePrerender,OnManagerTreeRender,OnManagerMainFrameHeaderHTMLBlock,OnTempFormSave,OnTVFormSave,OnChunkFormSave,OnSnipFormSave,OnPluginFormSave,OnModFormSave,OnTempFormDelete,OnTVFormDelete,OnChunkFormDelete,OnSnipFormDelete,OnPluginFormDelete,OnModFormDelete * @internal @modx_category Manager and Admin * @internal @installset base From 0afb9bcf1ffe2e43b1f6f05e0b068d1d3f8420f9 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:34:32 +0300 Subject: [PATCH 165/398] Update DocLister --- assets/snippets/DocLister/core/DocLister.abstract.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) mode change 100755 => 100644 assets/snippets/DocLister/core/DocLister.abstract.php diff --git a/assets/snippets/DocLister/core/DocLister.abstract.php b/assets/snippets/DocLister/core/DocLister.abstract.php old mode 100755 new mode 100644 index aa6ada6cbd..43a95601c9 --- a/assets/snippets/DocLister/core/DocLister.abstract.php +++ b/assets/snippets/DocLister/core/DocLister.abstract.php @@ -1009,7 +1009,7 @@ protected function uniformPrepare(&$data, $i = 0) { $class = array(); - $iterationName = ($i % 2 == 0) ? 'Odd' : 'Even'; + $iterationName = ($i % 2 == 1) ? 'Odd' : 'Even'; $tmp = strtolower($iterationName); $class[] = $this->getCFGDef($tmp . 'Class', $tmp); @@ -1091,6 +1091,11 @@ public function getJSON($data, $fields, $array = array()) $return['rows'][] = APIHelpers::getkey($item, $key, $item); } $return['total'] = $this->getChildrenCount(); + }elseif ('simple' == $this->getCFGDef('JSONformat', 'old')) { + $return = array(); + foreach ($out as $key => $item) { + $return[] = APIHelpers::getkey($item, $key, $item); + } } else { $return = $out; } From 9f6a01a6ee65f69d2145ec94856ebcb461b57e38 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:34:57 +0300 Subject: [PATCH 166/398] update langs --- manager/includes/lang/english.inc.php | 1 + manager/includes/lang/russian-UTF8.inc.php | 1 + 2 files changed, 2 insertions(+) diff --git a/manager/includes/lang/english.inc.php b/manager/includes/lang/english.inc.php index 15da1cbfa8..0fc3a3d203 100644 --- a/manager/includes/lang/english.inc.php +++ b/manager/includes/lang/english.inc.php @@ -495,6 +495,7 @@ $_lang["manage_plugins"] = 'Plugins'; $_lang["manage_snippets"] = 'Snippets'; $_lang["manage_templates"] = 'Templates'; +$_lang["manage_documents"] = 'Documents'; $_lang["manager"] = 'Manager'; $_lang["manager_lockout_message"] = 'You are currently logged into the Content Manager. If you would like to close your login session please click the "Logout" button.

    To go to your startup or home page click the "Home" button.'; $_lang["manager_permissions"] = 'Manager Permissions'; diff --git a/manager/includes/lang/russian-UTF8.inc.php b/manager/includes/lang/russian-UTF8.inc.php index 06e41e1e19..ea5b392520 100644 --- a/manager/includes/lang/russian-UTF8.inc.php +++ b/manager/includes/lang/russian-UTF8.inc.php @@ -489,6 +489,7 @@ $_lang["manage_plugins"] = 'Плагины'; $_lang["manage_snippets"] = 'Сниппеты'; $_lang["manage_templates"] = 'Шаблоны'; +$_lang["manage_documents"] = 'Документы'; $_lang["manager"] = 'Менеджер'; $_lang["manager_lockout_message"] = 'В данный момент вы находитесь в режиме управления сайтом. Чтобы закончить сеанс администрирования, нажмите кнопку \'Выйти\'.

    Чтобы перейти на главную или стартовую страницу, нажмите кнопку \'Домой\'.'; $_lang["manager_permissions"] = 'Права менеджеров'; From 4e309dc844c3110b8e83f7383a0887fc52730429 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:35:41 +0300 Subject: [PATCH 167/398] Update staticSearch for ajaxSearch --- manager/actions/search.static.php | 490 +++++++++++++++++++----------- 1 file changed, 309 insertions(+), 181 deletions(-) diff --git a/manager/actions/search.static.php b/manager/actions/search.static.php index fc3499df25..b711bee0c1 100644 --- a/manager/actions/search.static.php +++ b/manager/actions/search.static.php @@ -1,242 +1,370 @@ -

    - - - - - - + +

    - - -
    - - + - - - db->select('*',$modx->getFullTableName('site_templates')); - $option[] = ''; - $templateid = (isset($_REQUEST['templateid']) && $_REQUEST['templateid'] !== '') ? intval($_REQUEST['templateid']) : ''; - $selected = $templateid === 0 ? ' selected="selected"' : ''; - $option[] = ''; - while($row=$modx->db->getRow($rs)) - { - $templatename = htmlspecialchars($row['templatename'], ENT_QUOTES, $modx->config['modx_charset']); - $selected = $row['id'] == $templateid ? ' selected="selected"' : ''; - $option[] = sprintf('', $row['id'], $selected, $templatename, $row['id']); - } - $tpls = sprintf('', join("\n",$option)); - ?> - - - - - - - - - - - - - - - - - - -
      + +
     
    URL 
     
    - -
    - - -
    -
    + +   + db->select('*', $modx->getFullTableName('site_templates')); + $option[] = ''; + $templateid = (isset($_REQUEST['templateid']) && $_REQUEST['templateid'] !== '') ? intval($_REQUEST['templateid']) : ''; + $selected = $templateid === 0 ? ' selected="selected"' : ''; + $option[] = ''; + while($row = $modx->db->getRow($rs)) { + $templatename = htmlspecialchars($row['templatename'], ENT_QUOTES, $modx->config['modx_charset']); + $selected = $row['id'] == $templateid ? ' selected="selected"' : ''; + $option[] = sprintf('', $row['id'], $selected, $templatename, $row['id']); + } + $tpls = sprintf('', join("\n", $option)); + ?> + + + + + URL +   + + + + + + + +   + + + + + + + + + + + + + +
    - getFullTableName('site_content'); + $tbl_site_content = $modx->getFullTableName('site_content'); -$searchfields = htmlentities($_POST['searchfields'], ENT_QUOTES, $modx_manager_charset); -$searchlongtitle = $modx->db->escape($_REQUEST['searchfields']); -$search_alias = $modx->db->escape($_REQUEST['searchfields']); -$templateid = isset($_REQUEST['templateid']) && $_REQUEST['templateid'] !== '' ? intval($_REQUEST['templateid']) : ''; -$searchcontent = $modx->db->escape($_REQUEST['content']); + $searchfields = htmlentities($_POST['searchfields'], ENT_QUOTES, $modx_manager_charset); + $searchlongtitle = $modx->db->escape($_REQUEST['searchfields']); + $search_alias = $modx->db->escape($_REQUEST['searchfields']); + $templateid = isset($_REQUEST['templateid']) && $_REQUEST['templateid'] !== '' ? intval($_REQUEST['templateid']) : ''; + $searchcontent = $modx->db->escape($_REQUEST['content']); -$sqladd = ""; + $sqladd = ""; -// Handle Input "Search by exact URL" -$idFromAlias = false; -if (isset($_REQUEST['url']) && $_REQUEST['url'] !== '') { - $url = $modx->db->escape($_REQUEST['url']); + // Handle Input "Search by exact URL" + $idFromAlias = false; + if(isset($_REQUEST['url']) && $_REQUEST['url'] !== '') { + $url = $modx->db->escape($_REQUEST['url']); $friendly_url_suffix = $modx->config['friendly_url_suffix']; - $base_url = $modx->config['base_url']; - $site_url = $modx->config['site_url']; - $url = preg_replace('@' . $friendly_url_suffix . '$@', '', $url); - if ($url[0] === '/') $url = preg_replace('@^' . $base_url . '@', '', $url); - if (substr($url, 0, 4) === 'http') $url = preg_replace('@^' . $site_url . '@', '', $url); + $base_url = $modx->config['base_url']; + $site_url = $modx->config['site_url']; + $url = preg_replace('@' . $friendly_url_suffix . '$@', '', $url); + if($url[0] === '/') { + $url = preg_replace('@^' . $base_url . '@', '', $url); + } + if(substr($url, 0, 4) === 'http') { + $url = preg_replace('@^' . $site_url . '@', '', $url); + } $idFromAlias = $modx->getIdFromAlias($url); -} + } -// Handle Input "Search in main fields" -if($searchfields != '') { - if (ctype_digit($searchfields)) { - $sqladd .= "id='{$searchfields}'"; + // Handle Input "Search in main fields" + if($searchfields != '') { + if(ctype_digit($searchfields)) { + $sqladd .= "id='{$searchfields}'"; } if($idFromAlias) { - $sqladd .= $sqladd != '' ? ' OR ' : ''; - $sqladd .= "id='{$idFromAlias}'"; + $sqladd .= $sqladd != '' ? ' OR ' : ''; + $sqladd .= "id='{$idFromAlias}'"; } - + $sqladd = $sqladd ? "({$sqladd})" : $sqladd; - + if(!ctype_digit($searchfields)) { - $sqladd .= $sqladd != '' ? ' AND' : ''; - $sqladd .= " pagetitle LIKE '%{$searchfields}%'"; - $sqladd .= " OR longtitle LIKE '%{$searchlongtitle}%'"; - $sqladd .= " OR alias LIKE '%{$search_alias}%'"; + $sqladd .= $sqladd != '' ? ' AND' : ''; + $sqladd .= " pagetitle LIKE '%{$searchfields}%'"; + $sqladd .= " OR longtitle LIKE '%{$searchlongtitle}%'"; + $sqladd .= " OR alias LIKE '%{$search_alias}%'"; } -} else if($idFromAlias) { + } else if($idFromAlias) { $sqladd .= " id='{$idFromAlias}'"; -} + } -// Handle Input "Search by template ID" -if($templateid !== '') { + // Handle Input "Search by template ID" + if($templateid !== '') { $sqladd .= $sqladd != '' ? ' AND' : ''; $sqladd .= " template='{$templateid}'"; -} + } -// Handle Input "Search by content" -if ($searchcontent !== '') { + // Handle Input "Search by content" + if($searchcontent !== '') { $sqladd .= $sqladd != '' ? ' AND' : ''; $sqladd .= $searchcontent != '' ? " content LIKE '%{$searchcontent}%'" : ''; -} + } -$fields = 'id, contenttype, pagetitle, description, deleted, published, isfolder, type'; -$where = $sqladd; + $fields = 'id, contenttype, pagetitle, description, deleted, published, isfolder, type'; + $where = $sqladd; -if($where) { - $rs = $modx->db->select($fields, $tbl_site_content, $where, 'id'); + if($where) { + $rs = $modx->db->select($fields, $tbl_site_content, $where, 'id'); $limit = $modx->db->getRecordCount($rs); -} else { + } else { $limit = 0; -} + } -?> -
    -
    - '.$_lang['search_results_returned_msg'].'

    ', $limit); - ?> - - - - - - - - - - - - - $_style["tree_page_rss"], - 'application/pdf' => $_style["tree_page_pdf"], - 'application/vnd.ms-word' => $_style["tree_page_word"], - 'application/vnd.ms-excel' => $_style["tree_page_excel"], - 'text/css' => $_style["tree_page_css"], - 'text/html' => $_style["tree_page_html"], - 'text/plain' => $_style["tree_page"], - 'text/xml' => $_style["tree_page_xml"], - 'text/javascript' => $_style["tree_page_js"], - 'image/gif' => $_style["tree_page_gif"], - 'image/jpg' => $_style["tree_page_jpg"], - 'image/png' => $_style["tree_page_png"] - ); - - while ($row = $modx->db->getRow($rs)) { - // figure out the icon for the document... - $icon = ""; - if ($row['type']=='reference') { - $icon .= $_style["tree_linkgo"]; - } elseif ($row['isfolder'] == 0) { - $icon .= isset($icons[$row['contenttype']]) ? $icons[$row['contenttype']] : $_style["tree_page_html"]; + ?> +
    +
    +
    + ' . $_lang['search_results_returned_msg'] . '

    ', $limit); + ?> + +
    + + + + + + + + + + + $_style["tree_page_rss"], + 'application/pdf' => $_style["tree_page_pdf"], + 'application/vnd.ms-word' => $_style["tree_page_word"], + 'application/vnd.ms-excel' => $_style["tree_page_excel"], + 'text/css' => $_style["tree_page_css"], + 'text/html' => $_style["tree_page_html"], + 'text/plain' => $_style["tree_page"], + 'text/xml' => $_style["tree_page_xml"], + 'text/javascript' => $_style["tree_page_js"], + 'image/gif' => $_style["tree_page_gif"], + 'image/jpg' => $_style["tree_page_jpg"], + 'image/png' => $_style["tree_page_png"] + ); + + while($row = $modx->db->getRow($rs)) { + // figure out the icon for the document... + $icon = ""; + if($row['type'] == 'reference') { + $icon .= $_style["tree_linkgo"]; + } elseif($row['isfolder'] == 0) { + $icon .= isset($icons[$row['contenttype']]) ? $icons[$row['contenttype']] : $_style["tree_page_html"]; + } else { + $icon .= $_style['tree_folder']; + } + + $tdClass = ""; + if($row['published'] == 0) { + $tdClass .= ' class="unpublishedNode"'; + } + if($row['deleted'] == 1) { + $tdClass .= ' class="deletedNode"'; + } + ?> + + + + + > + 70 ? mb_substr($row['pagetitle'], 0, 70, $modx_manager_charset) . "..." : $row['pagetitle']; ?> + + > 70 ? mb_substr($row['description'], 0, 70, $modx_manager_charset) . "..." : $row['description']; ?> + + > 20 ? substr($row['pagetitle'], 0, 20) . '...' : $row['pagetitle']; ?> + > 35 ? substr($row['description'], 0, 35) . '...' : $row['description']; ?> + + + + + +
    + +
    + db->getRecordCount($rs); + if($docscounts > 0) { + $output .= '
  • ' . $_lang["manage_documents"] . ' (' . $docscounts . ')
  • '; + while($row = $modx->db->getRow($rs)) { + $output .= '
  • ' . highlightingCoincidence($row['pagetitle'] . ' (' . $row['id'] . ')', $_REQUEST['searchfields']) . '
  • '; + } } - if($row['deleted'] == 1) { - $tdClass .= ' class="deletedNode"'; + + //templates + $rs = $modx->db->select("id,templatename", $modx->getFullTableName('site_templates'), "`id` like '%" . $searchfields . "%' + OR `templatename` like '%" . $searchfields . "%' + OR `description` like '%" . $searchfields . "%' + OR `content` like '%" . $searchfields . "%'"); + $templatecounts = $modx->db->getRecordCount($rs); + if($templatecounts > 0) { + $output .= '
  • ' . $_lang["manage_templates"] . ' (' . $templatecounts . ')
  • '; + while($row = $modx->db->getRow($rs)) { + $output .= '
  • ' . highlightingCoincidence($row['templatename'], $_REQUEST['searchfields']) . '
  • '; + } } - ?> - - - - - >70 ? mb_substr($row['pagetitle'], 0, 70, $modx_manager_charset)."..." : $row['pagetitle'] ; ?> - >70 ? mb_substr($row['description'], 0, 70, $modx_manager_charset)."..." : $row['description'] ; ?> - - >20 ? substr($row['pagetitle'], 0, 20).'...' : $row['pagetitle'] ; ?> - >35 ? substr($row['description'], 0, 35).'...' : $row['description'] ; ?> - db->select("id,name", $modx->getFullTableName('site_tmplvars'), "`id` like '%" . $searchfields . "%' + OR `name` like '%" . $searchfields . "%' + OR `description` like '%" . $searchfields . "%' + OR `type` like '%" . $searchfields . "%' + OR `elements` like '%" . $searchfields . "%' + OR `display` like '%" . $searchfields . "%' + OR `display_params` like '%" . $searchfields . "%' + OR `default_text` like '%" . $searchfields . "%'"); + $tvscounts = $modx->db->getRecordCount($rs); + if($tvscounts > 0) { + $output .= '
  • ' . $_lang["settings_templvars"] . ' (' . $tvscounts . ')
  • '; + while($row = $modx->db->getRow($rs)) { + $output .= '
  • ' . highlightingCoincidence($row['name'], $_REQUEST['searchfields']) . '
  • '; } - ?> - - - db->select("id,name", $modx->getFullTableName('site_htmlsnippets'), "`id` like '%" . $searchfields . "%' + OR `name` like '%" . $searchfields . "%' + OR `description` like '%" . $searchfields . "%' + OR `snippet` like '%" . $searchfields . "%'"); + $chunkscounts = $modx->db->getRecordCount($rs); + if($chunkscounts > 0) { + $output .= '
  • ' . $_lang["manage_htmlsnippets"] . ' (' . $chunkscounts . ')
  • '; + while($row = $modx->db->getRow($rs)) { + $output .= '
  • ' . highlightingCoincidence($row['name'], $_REQUEST['searchfields']) . '
  • '; + } + } + + //Snippets + $rs = $modx->db->select("id,name", $modx->getFullTableName('site_snippets'), "`id` like '%" . $searchfields . "%' + OR `name` like '%" . $searchfields . "%' + OR `description` like '%" . $searchfields . "%' + OR `snippet` like '%" . $searchfields . "%' + OR `properties` like '%" . $searchfields . "%' + OR `moduleguid` like '%" . $searchfields . "%'"); + $snippetscounts = $modx->db->getRecordCount($rs); + if($snippetscounts > 0) { + $output .= '
  • ' . $_lang["manage_snippets"] . ' (' . $snippetscounts . ')
  • '; + while($row = $modx->db->getRow($rs)) { + $output .= '
  • ' . highlightingCoincidence($row['name'], $_REQUEST['searchfields']) . '
  • '; + } + } + //plugins + $rs = $modx->db->select("id,name", $modx->getFullTableName('site_plugins'), "`id` like '%" . $searchfields . "%' + OR `name` like '%" . $searchfields . "%' + OR `description` like '%" . $searchfields . "%' + OR `plugincode` like '%" . $searchfields . "%' + OR `properties` like '%" . $searchfields . "%' + OR `moduleguid` like '%" . $searchfields . "%'"); + $pluginscounts = $modx->db->getRecordCount($rs); + if($pluginscounts > 0) { + $output .= '
  • ' . $_lang["manage_plugins"] . ' (' . $pluginscounts . ')
  • '; + while($row = $modx->db->getRow($rs)) { + $output .= '
  • ' . highlightingCoincidence($row['name'], $_REQUEST['searchfields']) . '
  • '; + } + } + //modules + $rs = $modx->db->select("id,name", $modx->getFullTableName('site_modules'), "`id` like '%" . $searchfields . "%' + OR `name` like '%" . $searchfields . "%' + OR `description` like '%" . $searchfields . "%' + OR `modulecode` like '%" . $searchfields . "%' + OR `properties` like '%" . $searchfields . "%' + OR `guid` like '%" . $searchfields . "%' + OR `resourcefile` like '%" . $searchfields . "%'"); + $modulescounts = $modx->db->getRecordCount($rs); + if($modulescounts > 0) { + $output .= '
  • ' . $_lang["modules"] . ' (' . $modulescounts . ')
  • '; + while($row = $modx->db->getRow($rs)) { + $output .= '
  • ' . highlightingCoincidence($row['name'], $_REQUEST['searchfields']) . '
  • '; + } + } + + echo $output ? '
      ' . $output . '
    ' : '1'; } + ?> - - +
    +
    - - -$1' , $text); } -?> \ No newline at end of file + +?> From bc4517afcd4adad6d404c4c11984b9193fe8fb06 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:36:25 +0300 Subject: [PATCH 168/398] fix for aliaslistingfolder no need check for docAlias for search id --- manager/includes/document.parser.class.inc.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 16c92ea1fd..2d56a7f45a 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -2131,8 +2131,7 @@ function executeParser() { $rs = $this->db->select('id', $tbl_site_content, "deleted=0 and parent='{$parentId}' and alias='{$docAlias}'"); if($this->db->getRecordCount($rs)==0) { - if (!is_numeric($docAlias)) {$this->sendErrorPage();} - $rs = $this->db->select('id', $tbl_site_content, "deleted=0 and parent='{$parentId}' and id='{$docAlias}'"); + $this->sendErrorPage(); } $docId = $this->db->getValue($rs); From 10317fa75163977fef28b061aa40d5da8c859c10 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:36:59 +0300 Subject: [PATCH 169/398] Fix params from modules to plugins --- manager/includes/document.parser.class.inc.php | 1 + 1 file changed, 1 insertion(+) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 2d56a7f45a..820b1de23e 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -4584,6 +4584,7 @@ public function getPluginCode($pluginName) */ function parseProperties($propertyString, $elementName = null, $elementType = null) { $propertyString = trim($propertyString); + $propertyString = str_replace('{}', '', $propertyString ); $propertyString = str_replace('} {', ',', $propertyString ); if(empty($propertyString)) return array(); if($propertyString=='{}') return array(); From 7e9766084267f73c8f7e9d6c1f65dd9ba1c0c6bd Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:37:34 +0300 Subject: [PATCH 170/398] add .json exclude to alias --- manager/includes/document.parser.class.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 820b1de23e..9701332eb5 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -1737,7 +1737,7 @@ private function _getSnippetObject($snip_name) function toAlias($text) { $suff= $this->config['friendly_url_suffix']; - return str_replace(array('.xml'.$suff,'.rss'.$suff,'.js'.$suff,'.css'.$suff,'.txt'.$suff),array('.xml','.rss','.js','.css','.txt'),$text); + return str_replace(array('.xml'.$suff,'.rss'.$suff,'.js'.$suff,'.css'.$suff,'.txt'.$suff,'.json'.$suff),array('.xml','.rss','.js','.css','.txt','.json'),$text); } /** From 66f7eef7748da850996b32051760e7128608c758 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:38:20 +0300 Subject: [PATCH 171/398] #1218 TVs/PHs will not be rendered if custom_meta_title is not assigned to template like [*custom_meta_title:ne:then=`[*custom_meta_title*]`:else=`[*pagetitle*]`*] --- manager/includes/document.parser.class.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manager/includes/document.parser.class.inc.php b/manager/includes/document.parser.class.inc.php index 9701332eb5..39a0536868 100644 --- a/manager/includes/document.parser.class.inc.php +++ b/manager/includes/document.parser.class.inc.php @@ -993,9 +993,9 @@ function mergeDocumentContent($content,$ph=false) { list($key,$modifiers) = $this->splitKeyAndFilter($key); list($key,$context) = explode('@',$key,2); - if(!isset($ph[$key]) && !$context) continue; - elseif($context) $value = $this->_contextValue("{$key}@{$context}"); - else $value = $ph[$key]; + // if(!isset($ph[$key]) && !$context) continue; // #1218 TVs/PHs will not be rendered if custom_meta_title is not assigned to template like [*custom_meta_title:ne:then=`[*custom_meta_title*]`:else=`[*pagetitle*]`*] + if($context) $value = $this->_contextValue("{$key}@{$context}"); + else $value = $ph[$key]; if (is_array($value)) { include_once(MODX_MANAGER_PATH . 'includes/tmplvars.format.inc.php'); From 38eb4f6af3956f41e5cfcd4053642cf5443fdb65 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:39:00 +0300 Subject: [PATCH 172/398] [fix]. Https in site_url --- install/config.inc.tpl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/config.inc.tpl b/install/config.inc.tpl index 854d0274e3..a2549ec2de 100644 --- a/install/config.inc.tpl +++ b/install/config.inc.tpl @@ -64,7 +64,8 @@ if (!empty($site_hostnames[0]) && !in_array($site_hostname, $site_hostnames)) { } // assign site_url -$site_url= ((isset ($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port) ? 'https://' : 'http://'; +$secured = (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'); +$site_url= ((isset ($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port || $secured ) ? 'https://' : 'http://'; $site_url .= $site_hostname; if ($_SERVER['SERVER_PORT'] != 80) $site_url= str_replace(':' . $_SERVER['SERVER_PORT'], '', $site_url); // remove port from HTTP_HOST   From ae3a90da542e780a34184a75979926dac917d703 Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 12:41:09 +0300 Subject: [PATCH 173/398] [fix] typo in setup.sql --- install/setup.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/setup.sql b/install/setup.sql index a96ffab398..05795d2a47 100755 --- a/install/setup.sql +++ b/install/setup.sql @@ -855,7 +855,7 @@ REPLACE INTO `{PREFIX}manager_users` REPLACE INTO `{PREFIX}user_attributes` (id, internalKey, fullname, role, email, phone, mobilephone, blocked, blockeduntil, blockedafter, logincount, lastlogin, thislogin, failedlogincount, sessionid, dob, gender, country, street, city, state, zip, fax, photo, comment) VALUES -(1, 1, 'Default admin account', 1, '{ADMINEMAIL}', '', '', 0, 0, 0, 0, 0, 0, 0, '', 0, 0, '', '', '','', '', '', '', ''); +(1, 1, 'Default admin account', 1, '{ADMINEMAIL}', '', '', 0, 0, 0, 0, 0, 0, 0, '', 0, 0, '', '', '', '', '', '', '', ''); REPLACE INTO `{PREFIX}user_roles` From e849197eabc0cd6ef43a6aedb0621d458fd04d3b Mon Sep 17 00:00:00 2001 From: dmi3yy Date: Tue, 18 Apr 2017 13:39:10 +0300 Subject: [PATCH 174/398] MODxRE2_DropdownMenu -new theme --- .../style/MODxRE2_DropdownMenu/README.md | 13 + .../dashboard/css/dashboard.css | 240 ++++++ .../dashboard/js/evodashboard.js | 152 ++++ .../style/MODxRE2_DropdownMenu/frames/1.php | 202 +++++ .../MODxRE2_DropdownMenu/frames/mainmenu.php | 159 ++++ .../MODxRE2_DropdownMenu/frames/menu.php | 546 ++++++++++++ .../MODxRE2_DropdownMenu/images/_session.gif | Bin 0 -> 43 bytes .../MODxRE2_DropdownMenu/images/body.jpg | Bin 0 -> 23708 bytes .../images/credits/dtree.gif | Bin 0 -> 2637 bytes .../images/credits/mysql.gif | Bin 0 -> 1872 bytes .../images/credits/penguin.gif | Bin 0 -> 1323 bytes .../images/credits/php.gif | Bin 0 -> 1968 bytes .../MODxRE2_DropdownMenu/images/icons/add.png | Bin 0 -> 295 bytes .../images/icons/application_get.png | Bin 0 -> 226 bytes .../icons/application_side_contract.png | Bin 0 -> 218 bytes .../images/icons/application_side_expand.png | Bin 0 -> 581 bytes .../images/icons/arrow-down.png | Bin 0 -> 222 bytes .../images/icons/arrow-right.png | Bin 0 -> 228 bytes .../images/icons/arrow-up.png | Bin 0 -> 233 bytes .../images/icons/arrow_down.png | Bin 0 -> 316 bytes .../images/icons/arrow_up.png | Bin 0 -> 372 bytes .../MODxRE2_DropdownMenu/images/icons/b02.gif | Bin 0 -> 546 bytes .../images/icons/b02_trans.gif | Bin 0 -> 345 bytes .../MODxRE2_DropdownMenu/images/icons/b06.gif | Bin 0 -> 318 bytes .../images/icons/b092.gif | Bin 0 -> 595 bytes .../images/icons/backup.gif | Bin 0 -> 1598 bytes .../images/icons/bkmanager.gif | Bin 0 -> 594 bytes .../images/icons/brick.png | Bin 0 -> 452 bytes .../MODxRE2_DropdownMenu/images/icons/cal.gif | Bin 0 -> 646 bytes .../images/icons/cal_nodate.gif | Bin 0 -> 910 bytes .../images/icons/calendar-empty.png | Bin 0 -> 203 bytes .../images/icons/calendar.png | Bin 0 -> 225 bytes .../images/icons/camera.png | Bin 0 -> 3393 bytes .../images/icons/cancel.png | Bin 0 -> 295 bytes .../images/icons/circlerightarrow.gif | Bin 0 -> 798 bytes .../images/icons/clock_play.png | Bin 0 -> 943 bytes .../images/icons/clock_stop.png | Bin 0 -> 922 bytes .../images/icons/clone.png | Bin 0 -> 121 bytes .../images/icons/comment.gif | Bin 0 -> 169 bytes .../images/icons/context_view.gif | Bin 0 -> 961 bytes .../images/icons/copy.gif | Bin 0 -> 618 bytes .../images/icons/date.gif | Bin 0 -> 625 bytes .../images/icons/datefocus.gif | Bin 0 -> 1611 bytes .../images/icons/datenofocus.gif | Bin 0 -> 1611 bytes .../images/icons/delete.gif | Bin 0 -> 933 bytes .../images/icons/delete.png | Bin 0 -> 309 bytes .../images/icons/down.gif | Bin 0 -> 583 bytes .../images/icons/download-alt.png | Bin 0 -> 261 bytes .../images/icons/ed_save.gif | Bin 0 -> 143 bytes .../images/icons/email.png | Bin 0 -> 259 bytes .../images/icons/error.png | Bin 0 -> 666 bytes .../images/icons/event1.png | Bin 0 -> 304 bytes .../images/icons/event2.png | Bin 0 -> 265 bytes .../images/icons/event3.png | Bin 0 -> 322 bytes .../images/icons/exclamation.png | Bin 0 -> 701 bytes .../MODxRE2_DropdownMenu/images/icons/eye.png | Bin 0 -> 353 bytes .../images/icons/files.png | Bin 0 -> 3301 bytes .../images/icons/folder-open.png | Bin 0 -> 261 bytes .../images/icons/folder.gif | Bin 0 -> 596 bytes .../images/icons/folder.png | Bin 0 -> 195 bytes .../images/icons/folder_add.png | Bin 0 -> 668 bytes .../images/icons/folder_page_add.png | Bin 0 -> 747 bytes .../images/icons/forward.gif | Bin 0 -> 598 bytes .../images/icons/forward.png | Bin 0 -> 238 bytes .../images/icons/globe.gif | Bin 0 -> 668 bytes .../images/icons/help.png | Bin 0 -> 2166 bytes .../images/icons/home.gif | Bin 0 -> 625 bytes .../images/icons/home.png | Bin 0 -> 284 bytes .../images/icons/info-sign.png | Bin 0 -> 299 bytes .../images/icons/information.png | Bin 0 -> 299 bytes .../images/icons/layout_go.png | Bin 0 -> 668 bytes .../images/icons/link.png | Bin 0 -> 343 bytes .../images/icons/link_add.png | Bin 0 -> 570 bytes .../images/icons/lock.png | Bin 0 -> 248 bytes .../images/icons/logging.gif | Bin 0 -> 257 bytes .../images/icons/mail_generic.gif | Bin 0 -> 1025 bytes .../images/icons/module.gif | Bin 0 -> 794 bytes .../images/icons/modules.gif | Bin 0 -> 794 bytes .../images/icons/modules.png | Bin 0 -> 627 bytes .../images/icons/move.png | Bin 0 -> 257 bytes .../images/icons/new1-09.gif | Bin 0 -> 201 bytes .../images/icons/newdoc.gif | Bin 0 -> 653 bytes .../images/icons/next.gif | Bin 0 -> 673 bytes .../images/icons/page_white_add.png | Bin 0 -> 512 bytes .../images/icons/page_white_copy.png | Bin 0 -> 309 bytes .../images/icons/page_white_go.png | Bin 0 -> 612 bytes .../images/icons/page_white_magnify.png | Bin 0 -> 554 bytes .../images/icons/play.png | Bin 0 -> 223 bytes .../images/icons/prev.gif | Bin 0 -> 1087 bytes .../images/icons/preview.png | Bin 0 -> 615 bytes .../images/icons/question-sign-trans.png | Bin 0 -> 354 bytes .../images/icons/question-sign.png | Bin 0 -> 344 bytes .../images/icons/refresh.gif | Bin 0 -> 618 bytes .../images/icons/refresh.png | Bin 0 -> 321 bytes .../images/icons/reply.gif | Bin 0 -> 592 bytes .../images/icons/reply.png | Bin 0 -> 255 bytes .../images/icons/resources.gif | Bin 0 -> 1398 bytes .../MODxRE2_DropdownMenu/images/icons/run.png | Bin 0 -> 866 bytes .../images/icons/save.png | Bin 0 -> 321 bytes .../images/icons/secured.gif | Bin 0 -> 363 bytes .../images/icons/security.gif | Bin 0 -> 1029 bytes .../images/icons/sort.png | Bin 0 -> 683 bytes .../images/icons/sort_index.png | Bin 0 -> 312 bytes .../images/icons/stop.png | Bin 0 -> 132 bytes .../images/icons/table.gif | Bin 0 -> 609 bytes .../images/icons/table.png | Bin 0 -> 206 bytes .../images/icons/table_refresh.png | Bin 0 -> 795 bytes .../images/icons/trash.png | Bin 0 -> 280 bytes .../images/icons/trash_full.png | Bin 0 -> 476 bytes .../images/icons/undelete.png | Bin 0 -> 282 bytes .../images/icons/unzip.gif | Bin 0 -> 351 bytes .../images/icons/user.gif | Bin 0 -> 1652 bytes .../images/icons/user.png | Bin 0 -> 278 bytes .../images/icons/web_users.gif | Bin 0 -> 1036 bytes .../images/icons/world_link.png | Bin 0 -> 957 bytes .../MODxRE2_DropdownMenu/images/input-bg.gif | Bin 0 -> 67 bytes .../MODxRE2_DropdownMenu/images/misc/_tx_.gif | Bin 0 -> 85 bytes .../images/misc/ajax-loader.gif | Bin 0 -> 9427 bytes .../images/misc/button-gradient.png | Bin 0 -> 249 bytes .../images/misc/ed_save.gif | Bin 0 -> 918 bytes .../images/misc/enter.png | Bin 0 -> 299 bytes .../MODxRE2_DropdownMenu/images/misc/fade.gif | Bin 0 -> 670 bytes .../images/misc/headers.jpg | Bin 0 -> 9136 bytes .../images/misc/input-bg.gif | Bin 0 -> 67 bytes .../MODxRE2_DropdownMenu/images/misc/li.gif | Bin 0 -> 189 bytes .../MODxRE2_DropdownMenu/images/misc/li.png | Bin 0 -> 15297 bytes .../MODxRE2_DropdownMenu/images/misc/line.gif | Bin 0 -> 50 bytes .../MODxRE2_DropdownMenu/images/misc/lock.gif | Bin 0 -> 104 bytes .../images/misc/locked.gif | Bin 0 -> 107 bytes .../images/misc/login-logo.png | Bin 0 -> 12243 bytes .../images/misc/logo-dashboard.png | Bin 0 -> 2066 bytes .../MODxRE2_DropdownMenu/images/misc/logo.png | Bin 0 -> 3279 bytes .../images/misc/longbarbg.png | Bin 0 -> 198 bytes .../images/misc/mainbg.gif | Bin 0 -> 618 bytes .../images/misc/menubg.png | Bin 0 -> 211 bytes .../images/misc/minus.gif | Bin 0 -> 201 bytes .../images/misc/modx-logo-4.png | Bin 0 -> 5378 bytes .../MODxRE2_DropdownMenu/images/misc/plus.gif | Bin 0 -> 200 bytes .../images/misc/submit.png | Bin 0 -> 295 bytes .../MODxRE2_DropdownMenu/images/misc/tab.gif | Bin 0 -> 1247 bytes .../images/misc/tabareabg.gif | Bin 0 -> 228 bytes .../MODxRE2_DropdownMenu/images/subnav.jpg | Bin 0 -> 4325 bytes .../images/tree/angle-down.png | Bin 0 -> 167 bytes .../images/tree/angle-left.png | Bin 0 -> 183 bytes .../images/tree/angle-right.png | Bin 0 -> 158 bytes .../images/tree/angle-up.png | Bin 0 -> 188 bytes .../images/tree/deletedfolder.gif | Bin 0 -> 904 bytes .../images/tree/deletedfolder.png | Bin 0 -> 199 bytes .../images/tree/expand.png | Bin 0 -> 270 bytes .../images/tree/file-alt-deleted.png | Bin 0 -> 190 bytes .../images/tree/file-alt-secure.png | Bin 0 -> 410 bytes .../images/tree/file-alt.png | Bin 0 -> 198 bytes .../images/tree/file-code-secure.png | Bin 0 -> 454 bytes .../images/tree/file-code.png | Bin 0 -> 310 bytes .../images/tree/file-deleted.png | Bin 0 -> 193 bytes .../images/tree/file-excel-secure.png | Bin 0 -> 432 bytes .../images/tree/file-excel.png | Bin 0 -> 301 bytes .../images/tree/file-pdf-secure.png | Bin 0 -> 430 bytes .../images/tree/file-pdf.png | Bin 0 -> 286 bytes .../images/tree/file-rss-secure.png | Bin 0 -> 429 bytes .../images/tree/file-rss.png | Bin 0 -> 277 bytes .../images/tree/file-secure.png | Bin 0 -> 410 bytes .../images/tree/file-text-alt.png | Bin 0 -> 235 bytes .../images/tree/file-text.png | Bin 0 -> 221 bytes .../images/tree/file-word-secure.png | Bin 0 -> 465 bytes .../images/tree/file-word.png | Bin 0 -> 313 bytes .../MODxRE2_DropdownMenu/images/tree/file.png | Bin 0 -> 190 bytes .../images/tree/folder-close-alt-secure.png | Bin 0 -> 412 bytes .../images/tree/folder-close-alt.png | Bin 0 -> 195 bytes .../images/tree/folder-close-secure.png | Bin 0 -> 342 bytes .../images/tree/folder-close.png | Bin 0 -> 197 bytes .../images/tree/folder-open-alt-secure.png | Bin 0 -> 480 bytes .../images/tree/folder-open-alt.png | Bin 0 -> 261 bytes .../images/tree/folder-open-secure.png | Bin 0 -> 438 bytes .../images/tree/folder-open.png | Bin 0 -> 278 bytes .../images/tree/folder.gif | Bin 0 -> 889 bytes .../images/tree/globe.png | Bin 0 -> 366 bytes .../MODxRE2_DropdownMenu/images/tree/home.png | Bin 0 -> 284 bytes .../MODxRE2_DropdownMenu/images/tree/info.png | Bin 0 -> 189 bytes .../MODxRE2_DropdownMenu/images/tree/link.png | Bin 0 -> 343 bytes .../images/tree/page-html.gif | Bin 0 -> 920 bytes .../images/tree/sitemap.png | Bin 0 -> 257 bytes .../MODxRE2_DropdownMenu/images/tree/time.png | Bin 0 -> 270 bytes .../images/tree/warning-sign.png | Bin 0 -> 262 bytes .../style/MODxRE2_DropdownMenu/index.html | 2 + .../style/MODxRE2_DropdownMenu/login.tpl | 252 ++++++ .../MODxRE2_DropdownMenu/manager.lockout.tpl | 89 ++ .../style/MODxRE2_DropdownMenu/style.css | 783 ++++++++++++++++++ .../style/MODxRE2_DropdownMenu/style.php | 186 +++++ .../style/MODxRE2_DropdownMenu/welcome.php | 21 + .../style/MODxRE2_DropdownMenu/welcome.tpl | 243 ++++++ 191 files changed, 2888 insertions(+) create mode 100644 manager/media/style/MODxRE2_DropdownMenu/README.md create mode 100644 manager/media/style/MODxRE2_DropdownMenu/dashboard/css/dashboard.css create mode 100644 manager/media/style/MODxRE2_DropdownMenu/dashboard/js/evodashboard.js create mode 100644 manager/media/style/MODxRE2_DropdownMenu/frames/1.php create mode 100644 manager/media/style/MODxRE2_DropdownMenu/frames/mainmenu.php create mode 100644 manager/media/style/MODxRE2_DropdownMenu/frames/menu.php create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/_session.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/body.jpg create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/credits/dtree.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/credits/mysql.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/credits/penguin.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/credits/php.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/add.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/application_get.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/application_side_contract.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/application_side_expand.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow-down.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow-right.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow-up.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow_down.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow_up.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/b02.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/b02_trans.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/b06.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/b092.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/backup.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/bkmanager.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/brick.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/cal.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/cal_nodate.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/calendar-empty.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/calendar.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/camera.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/cancel.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/circlerightarrow.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/clock_play.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/clock_stop.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/clone.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/comment.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/context_view.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/copy.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/date.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/datefocus.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/datenofocus.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/delete.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/delete.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/down.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/download-alt.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/ed_save.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/email.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/error.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/event1.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/event2.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/event3.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/exclamation.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/eye.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/files.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/folder-open.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/folder.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/folder.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/folder_add.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/folder_page_add.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/forward.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/forward.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/globe.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/help.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/home.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/home.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/info-sign.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/information.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/layout_go.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/link.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/link_add.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/lock.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/logging.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/mail_generic.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/module.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/modules.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/modules.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/move.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/new1-09.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/newdoc.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/next.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/page_white_add.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/page_white_copy.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/page_white_go.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/page_white_magnify.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/play.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/prev.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/preview.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/question-sign-trans.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/question-sign.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/refresh.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/refresh.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/reply.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/reply.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/resources.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/run.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/save.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/secured.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/security.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/sort.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/sort_index.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/stop.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/table.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/table.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/table_refresh.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/trash.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/trash_full.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/undelete.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/unzip.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/user.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/user.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/web_users.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/icons/world_link.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/input-bg.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/_tx_.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/ajax-loader.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/button-gradient.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/ed_save.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/enter.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/fade.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/headers.jpg create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/input-bg.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/li.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/li.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/line.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/lock.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/locked.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/login-logo.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/logo-dashboard.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/logo.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/longbarbg.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/mainbg.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/menubg.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/minus.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/modx-logo-4.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/plus.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/submit.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/tab.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/misc/tabareabg.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/subnav.jpg create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/angle-down.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/angle-left.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/angle-right.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/angle-up.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/deletedfolder.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/deletedfolder.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/expand.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt-deleted.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-code-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-code.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-deleted.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-excel-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-excel.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-pdf-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-pdf.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-rss-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-rss.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-text-alt.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-text.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-word-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file-word.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/file.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-alt-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-alt.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open-alt-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open-alt.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open-secure.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/folder.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/globe.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/home.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/info.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/link.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/page-html.gif create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/sitemap.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/time.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/images/tree/warning-sign.png create mode 100644 manager/media/style/MODxRE2_DropdownMenu/index.html create mode 100644 manager/media/style/MODxRE2_DropdownMenu/login.tpl create mode 100644 manager/media/style/MODxRE2_DropdownMenu/manager.lockout.tpl create mode 100755 manager/media/style/MODxRE2_DropdownMenu/style.css create mode 100644 manager/media/style/MODxRE2_DropdownMenu/style.php create mode 100644 manager/media/style/MODxRE2_DropdownMenu/welcome.php create mode 100644 manager/media/style/MODxRE2_DropdownMenu/welcome.tpl diff --git a/manager/media/style/MODxRE2_DropdownMenu/README.md b/manager/media/style/MODxRE2_DropdownMenu/README.md new file mode 100644 index 0000000000..663a8bf0c3 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/README.md @@ -0,0 +1,13 @@ +# MODxRE2_ver_2 + +Кастомизация шаблона MODxRE2 ver2 для версий MODX выше 1.1.1 + +
    +
    + +Для корректной работы, требуется внести изменения в файл \manager\includes\menu.class.inc.php + +Примерно на 18 строке поменять местами переменные, чтобы получилось так + +```PHP +$this->defaults = $setting + $this->defaults; diff --git a/manager/media/style/MODxRE2_DropdownMenu/dashboard/css/dashboard.css b/manager/media/style/MODxRE2_DropdownMenu/dashboard/css/dashboard.css new file mode 100644 index 0000000000..9a428f4083 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/dashboard/css/dashboard.css @@ -0,0 +1,240 @@ +body {-moz-osx-font-smoothing: grayscale;} +.dashboard { + padding-top: 5px; +} +.dashboard * { + font-size: 13px; +} +.dashboard h1 { + font-size : 24px; +} +.dashboard li, div#idShowHideSocialBox.sectionBody > div.btn-group.ope > ul.dropdown-menu > li { + list-style : none; +} +.dashrow { + clear : both; +} +.dashboard_header {margin:0; padding-right:0;} +.dashboard_search {padding-right: -16px%;} + +.overflowscroll { + max-height : 270px; + overflow-y : auto!important; +} +div.widget-stage.sectionBody { + margin: 0; +} +div.widget-stage.sectionBody em { + font-style : italic; +} +div.widget-stage.sectionBody strong { + font-weight : bold; +} +.widget-stage .sectionBody ul li a { + display : inline; + font-size : 14px; + font-weight : 700; + padding-left : 0; + text-decoration : none; +} +div.widget-stage.sectionBody li, div.widget-stage.sectionBody li, div.widget-stage.sectionBody ul li { + border-bottom : 1px dotted #dcdcdc; + display : block; + list-style-type : none; + padding : 5px 0 5px 5px; +} +div.widget-stage.sectionBody li span a { + font-size : 13px; + font-weight : bold; + text-decoration: none; +} +.disabled { + background:#c8c8c8; + border-color: #c8c8c8; +} + + a.deleted { + color:#ca2626; + text-decoration: line-through; +} + a.unpublished { + color:#999999; + font-style: italic; +} +[data-toggle="collapse"] {cursor: pointer;} +.hiddenRow { + padding: 0 !important; + border-top:0 !important; +} +.hiddenRow:hover { + background:#FFF; +} +.resource-overview-accordian {padding-bottom:3px;border: 1px solid #ededed; } +.panel-custom > .panel-body {margin-bottom:0; padding-bottom:0;} +#modxrecent_widget > div > div > ul > li:before{ + content:'\f0c8'; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + font-size:10px; + color: #dbdbdb; + padding: 0 5px 0 5px; +} +#modxrecent_widget > div > div > ul > li:hover{ + background: #fbfbfb; +} + +div.widget-stage.sectionBody ul li a { + margin : 3px 8px 8px 0px; + padding-left : 0px; +} +div.widget-stage.sectionBody ul li i { + margin : 3px 3px 3px 0px; + padding-left : 7px; +} +div.wm_button { + border-radius : 3px; + float : left; + moz-border-radius : 3px; + text-align : center; + webkit-border-radius : 3px; +} +div.wm_buttons > a.hometblink{ + border-radius : 3px; + display : inline-block; + line-height : 64px; + moz-border-radius : 3px; + padding : 10px; + position : relative; + webkit-border-radius : 3px; + +} +div.wm_buttons a { + font-weight : bold; + text-align : center; + +} +div.wm_buttons > a > i { + margin-bottom : 8px; + text-align : center; + color: #666; +} +div.wm_logo { + float : left; +} +.dashSeparator { + border-bottom : 2px solid #f1f1f1; + clear : both; + color : #d7d7d7; + display : block; + float : left; + height : 24px; + margin : 3px 0 8px 0; + padding : -6px 25px; + text-align : center; + width : 100%; +} +.dashSeparator h3 { + font-size : 18px; + margin-bottom : 5px; +} + +.dashboard_header { + margin: 0; +} + +.dashboard_search { + margin-top: 25px; +} + +.panel-heading { + background-color : transparent; +} +.sectionHeader { + cursor : move; + margin : 0; + min-height : 34px; +} +.widget-wrapper { + background : #fff; + border : 1px solid #e2e2e2; + border-radius : 4px; + box-shadow : 1px 1px 2px #ddd; + moz-box-shadow : 1px 1px 2px #ddd; + webkit-box-shadow : 1px 1px 2px #ddd; +} +.widget-wrapper .widget-title { + border-bottom : 1px solid #d7d7d7; + font-size : 14px; + font-weight : 300; + padding : 7px 5px 4px 10px; +} +.widget-wrapper .widget-stage { + overflow : hidden; + padding : 15px; + position : relative; +} +.widget-wrapper .widget-notes { + background : #fbfbfb; + border-top : 1px solid #e2e2e2; + color : #808080; + font-size : 12px; + padding : 8px 10px 5px; +} +i.icon-color-verylight { + color : #dedede; + float : left; + margin-right : 5px; +} +.btn-group a:link { + text-decoration : none; + text-weight : normal; +} +.btn-group .panel-hide { + margin-top : -7px; + padding-top: 3px; +} + +.btn-action { + padding: 1px 1px !important; + width:28px; +} +.btn-expand i{ + color : #afafaf; +} +.btn-expand:hover{ + color : #4d4d4d; + background : #fbfbfb; +} + +table > tbody > tr > td a.btn { + color: #fff;} +.gridster ul, .gridster ol { + list-style : none; +} +.gridster { + display : none; +} +.gridster .panel-headingx { + min-height : 32px; + overflow : hidden; +} +.gridster .panel-body.widget-stage.sectionBody { + height : inherit; + overflow-x : hidden; + overflow-y : auto; +} +.gridster .panel { + height : 100%; + padding-bottom : 60px; +} +.gridster .panel-headingx { + cursor : move; +} +.gridster .preview-holder { + background : rgba(33,255,181,0.08); + border : 1px dashed #000; + border-color : #000; + opacity : 0.3; + position : absolute; +} diff --git a/manager/media/style/MODxRE2_DropdownMenu/dashboard/js/evodashboard.js b/manager/media/style/MODxRE2_DropdownMenu/dashboard/js/evodashboard.js new file mode 100644 index 0000000000..0440ad58cb --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/dashboard/js/evodashboard.js @@ -0,0 +1,152 @@ +function fnCreateGridster(page, states){ + /* load saved position and sizes */ + if(localdata_position){ + $.each(localdata_position, function(i,value){ + $('#'+value.id).attr({"data-col":value.col, "data-row":value.row, "data-sizex":value.size_x, "data-sizey":value.size_y}); + }); + } + + + /* force 1 column on mobile screen sizes */ + if ($( window ).width() <= 480){ + var cols=1; + var offset=60; + } else { + var cols=4; + var offset=19; + } + + + /* get the default size for the ratio */ + var base_size=($( window ).width()/cols)-offset; + + + /* start gridster */ + var gridster= $(".gridster > ul").gridster({ + extra_cols: 1, + autogrow_cols: true, + min_cols:4, + max_cols:cols, + widget_margins: [5, 5], + widget_base_dimensions: [base_size, 50], + resize: { + enabled: true, + stop: function(event, ui, widget) { + var positions = JSON.stringify(this.serialize()); + localStorage.setItem(page, positions); + } + }, + serialize_params: function($w, wgd) + { + return { id: $($w).attr('id'),col: wgd.col, row: wgd.row,size_x: wgd.size_x,size_y: wgd.size_y }; + }, + draggable: + { + handle: '.panel-headingx, .panel-handel', + stop: function(event, ui) { + var _positions=this.serialize(); + $.each(_positions, function(i,value){ + _state=$('#'+ value.id).attr('data-state'); + if(_state=='min'){ + value.size_y=$('#'+ value.id).attr('data-sizey-old'); + _positions[i]=value; + } + + }); + var positions = JSON.stringify(_positions); + localStorage.setItem(page, positions); + } + } + }).data('gridster'); + + + /* load states */ + if(localdata_states){ + $.each(localdata_states, function(i,value){ + if(value){ + console.log(value); + if(value.state == 'closed'){ + $(".gridster > ul").data('gridster').remove_widget($('#'+value.panel)); + }else if(value.state == false) _state_minimize(value.panel); + } + }); + } + + /* register the minimize button */ + $(document).on("click", ".panel-hide", function(e) { + e.preventDefault(); + var panel = $(this).attr("data-id"); + if($(this).hasClass('fa-minus')){ + _state_minimize(panel); + var _state=false; + + } else { + _state_maxamize(panel); + var _state=true; + } + _state_update(panel, _state); + + }); + + /* helpers */ + + function _state_update(panel, _state){ + var _states = { + panel: panel, + state: _state + }; + + if(localdata_states){ + $.each(localdata_states, function(i,value){ + if(value){ + if(value.panel == panel) localdata_states.splice(i, 1); + } + }); + } else localdata_states=[]; + + localdata_states.push(_states); + localStorage.setItem(states, JSON.stringify(localdata_states)); + } + + function _state_maxamize(panel){ + $('#'+panel +'').attr('data-state', 'max'); + var _oldsize=parseInt($('#'+panel).attr('data-sizey-old')); + $('#'+panel +'').attr('data-sizey', _oldsize); + $(".gridster > ul").data('gridster').resize_widget($('#'+panel),$('#'+panel).attr('data-sizex'),_oldsize); + $('#'+panel +' .panel').css('padding-bottom', '60px'); + $('#'+panel +' .panel-body').slideDown(); + $('#'+panel +' .panel-hide').removeClass('fa-plus').addClass('fa-minus'); + $('#'+panel +' .gs-resize-handle').show(); + $('#'+panel +' .panel-max, #'+panel +' .panel-close').show(); + } + + function _state_minimize(panel){ + $('#'+panel +'').attr('data-state', 'min'); + $('#'+panel).attr('data-sizey-old', $('#'+panel).attr('data-sizey')); + $(".gridster > ul").data('gridster').resize_widget($('#'+panel),$('#'+panel).attr('data-sizex'),1); + $('#'+panel).attr('data-sizey', '1'); + $('#'+panel +' .gs-resize-handle').hide(); + $('#'+panel +' .panel-body').slideUp(); + $('#'+panel +' .panel-hide').removeClass('fa-minus').addClass('fa-plus'); + $('#'+panel +' .panel').css('padding-bottom', '0px'); + $('#'+panel +' .panel-max, #'+panel +' .panel-close').hide(); + } + + function _resize_gridster(){ + gridster.resize_widget_dimensions({ + widget_base_dimensions: [(((base_size*($( window ).width()/base_size))/cols)-offset + 4), 50], + widget_margins: [5, 5], + }); + } + + + /* we're ready for the show */ + $(window).on('resize load',_resize_gridster); + + /* start welcome with fade in fx*/ + setTimeout(function(){ + $('.gridster').fadeIn('fast'); + _resize_gridster(); + }, 400); + +} \ No newline at end of file diff --git a/manager/media/style/MODxRE2_DropdownMenu/frames/1.php b/manager/media/style/MODxRE2_DropdownMenu/frames/1.php new file mode 100644 index 0000000000..0feb1cec85 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/frames/1.php @@ -0,0 +1,202 @@ +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); +} +header("X-XSS-Protection: 0"); +$_SESSION['browser'] = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 1') !== false) ? 'legacy_IE' : 'modern'; + +$mxla = $modx_lang_attribute ? $modx_lang_attribute : 'en'; + +if(!isset($modx->config['manager_menu_height'])) { + $modx->config['manager_menu_height'] = '48'; +} +if(!isset($modx->config['manager_tree_width'])) { + $modx->config['manager_tree_width'] = '320'; +} +$modx->invokeEvent('OnManagerPreFrameLoader', array('action' => $action)); + +if(isset($_SESSION['onLoginForwardToAction']) && is_int($_SESSION['onLoginForwardToAction'])) { + $initMainframeAction = $_SESSION['onLoginForwardToAction']; + unset($_SESSION['onLoginForwardToAction']); +} else { + $initMainframeAction = 2; // welcome.static +} + +$bodyClass = ''; + +if(isset($_COOKIE['MODX_positionSideBar'])) { + $MODX_positionSideBar = $_COOKIE['MODX_positionSideBar']; +} else { + $MODX_positionSideBar = $modx->config['manager_tree_width']; +} + +if(!$MODX_positionSideBar) { + $bodyClass .= 'sidebar-closed'; +} + +?> + +> + + <?php echo $site_name ?>- (MODX CMS Manager) + + + + + + +
    +
    + + + +
    + +
    + +
    +
    + +
    + +
    + + invokeEvent('OnManagerFrameLoader', array('action' => $action)); + ?> +
    + + diff --git a/manager/media/style/MODxRE2_DropdownMenu/frames/mainmenu.php b/manager/media/style/MODxRE2_DropdownMenu/frames/mainmenu.php new file mode 100644 index 0000000000..fcf6717e1c --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/frames/mainmenu.php @@ -0,0 +1,159 @@ +Build('id','parent','name','link','alt','onclick','permission','target','divider 1/0','menuindex', 'class') +*/ + +//mainMenu +$sitemenu['site'] = array('site', 'main', '' . $_lang['home'], 'index.php?a=2', $_lang['home'], 'new NavToggle(this);', '', 'main', 0, 10, 'active'); + +if ($modx->hasPermission('edit_template') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('edit_chunk') || $modx->hasPermission('edit_plugin') || $modx->hasPermission('file_manager')) { + $sitemenu['elements'] = array('elements', 'main', '' . $_lang['elements'], '#elements', $_lang['elements'], 'new NavToggle(this); return false;', '', '', 0, 20, ''); +} + +if ($modx->hasPermission('exec_module')) { + $sitemenu['modules'] = array('modules', 'main', '' . $_lang['modules'], '#modules', $_lang['modules'], 'new NavToggle(this); return false;', '', '', 0, 30, ''); +} + +if ($modx->hasPermission('edit_user') || $modx->hasPermission('edit_web_user') || $modx->hasPermission('edit_role') || $modx->hasPermission('access_permissions') || $modx->hasPermission('web_access_permissions')) { + $sitemenu['users'] = array('users', 'main', '' . $_lang['users'], '#users', $_lang['users'], 'new NavToggle(this); return false;', 'edit_user', '', 0, 40, ''); +} + +if ($modx->hasPermission('bk_manager') || $modx->hasPermission('remove_locks') || $modx->hasPermission('import_static') || $modx->hasPermission('export_static') || $modx->hasPermission('settings')) { + $sitemenu['tools'] = array('tools', 'main', '' . $_lang['tools'], '#tools', $_lang['tools'], 'new NavToggle(this); return false;', '', '', 0, 50, ''); +} + +//if ($modx->hasPermission('view_eventlog') || $modx->hasPermission('logs')) { +// $sitemenu['reports'] = array('reports', 'main', $_lang['reports'], '#reports', $_lang['reports'], 'new NavToggle(this); return false;', '', '', 0, 60, ''); +//} + +// Site Menu +//$sitemenu['home'] = array('home', 'site', '' . $_lang['home'], 'index.php?a=2', $_lang['home'], 'this.blur();', '', 'main', 0, 10, ''); +//$sitemenu['preview'] = array('preview', 'site', $_lang['preview'], '../', $_lang['preview'], 'this.blur();', '', '_blank', 0, 20, ''); +//if ($modx->hasPermission('edit_document')) { +// $sitemenu['add_resource'] = array('add_resource', 'site', '' . $_lang['add_resource'], 'index.php?a=4', $_lang['add_resource'], 'this.blur();', 'new_document', 'main', 0, 50, ''); +// $sitemenu['add_weblink'] = array('add_weblink', 'site', '' . $_lang['add_weblink'], 'index.php?a=72', $_lang['add_weblink'], 'this.blur();', 'new_document', 'main', 0, 60, ''); +//} + +// Elements Menu +//if ($modx->hasPermission('edit_template') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('edit_chunk') || $modx->hasPermission('edit_plugin')) { +// $sitemenu['element_management'] = array('element_templates', 'elements', '' . $_lang['element_management'], 'index.php?a=76', $_lang['element_management'], 'this.blur();', 'new_template,edit_template,new_snippet,edit_snippet,new_chunk,edit_chunk,new_plugin,edit_plugin', 'main', 0, 10, ''); +//} + +if ($modx->hasPermission('edit_template')) { +$sitemenu['element_templates'] = array('element_templates','elements','' . $_lang['manage_templates'],'index.php?a=76&tab=0',$_lang['manage_templates'],'this.blur();','new_template,edit_template','main',0,10,''); +} +if ($modx->hasPermission('edit_template') && $modx->hasPermission('edit_snippet') && $modx->hasPermission('edit_chunk') && $modx->hasPermission('edit_plugin')) { +$sitemenu['element_tplvars'] = array('element_tplvars','elements',''.$_lang['tmplvars'],'index.php?a=76&tab=1',$_lang['tmplvars'],'this.blur();','new_template,edit_template','main',0,20,''); +} +if ($modx->hasPermission('edit_chunk')) { +$sitemenu['element_htmlsnippets'] = array('element_htmlsnippets','elements',''.$_lang['manage_htmlsnippets'],'index.php?a=76&tab=2',$_lang['manage_htmlsnippets'],'this.blur();','new_chunk,edit_chunk','main',0,30,''); +} +if ($modx->hasPermission('edit_snippet')) { +$sitemenu['element_snippets'] = array('element_snippets','elements',''.$_lang['manage_snippets'],'index.php?a=76&tab=3',$_lang['manage_snippets'],'this.blur();','new_snippet,edit_snippet','main',0,40,''); +} +if ($modx->hasPermission('edit_plugin')) { +$sitemenu['element_plugins'] = array('element_plugins','elements',''.$_lang['manage_plugins'],'index.php?a=76&tab=4',$_lang['manage_plugins'],'this.blur();','new_plugin,edit_plugin','main',0,50,''); +} +//$sitemenu['element_categories'] = array('element_categories','elements',$_lang['element_categories'],'index.php?a=76&tab=5',$_lang['element_categories'],'this.blur();','new_template,edit_template,new_snippet,edit_snippet,new_chunk,edit_chunk,new_plugin,edit_plugin','main',1,60,''); + +if ($modx->hasPermission('file_manager')) { + $sitemenu['manage_files'] = array('manage_files', 'elements', '' . $_lang['manage_files'], 'index.php?a=31', $_lang['manage_files'], 'this.blur();', 'file_manager', 'main', 0, 70, ''); +} +if ($modx->hasPermission('category_manager')) { + $sitemenu['manage_categories'] = array('manage_categories', 'elements', '' . $_lang['manage_categories'], 'index.php?a=120', $_lang['manage_categories'], 'this.blur();', 'category_manager', 'main', 0, 80, ''); +} +// Modules Menu Items +if ($modx->hasPermission('new_module')) { + $sitemenu['new_module'] = array('new_module', 'modules', '' . $_lang['module_management'], 'index.php?a=106', $_lang['module_management'], 'this.blur();', 'new_module,edit_module', 'main', 1, 0, ''); +} + +if ($modx->hasPermission('exec_module')) { + if ($_SESSION['mgrRole'] != 1) { + $rs = $modx->db->query('SELECT DISTINCT sm.id, sm.name, mg.member + FROM ' . $modx->getFullTableName('site_modules') . ' AS sm + LEFT JOIN ' . $modx->getFullTableName('site_module_access') . ' AS sma ON sma.module = sm.id + LEFT JOIN ' . $modx->getFullTableName('member_groups') . ' AS mg ON sma.usergroup = mg.user_group + WHERE (mg.member IS NULL OR mg.member = ' . $modx->getLoginUserID() . ') AND sm.disabled != 1 AND sm.locked != 1 + ORDER BY sm.name'); + } else { + $rs = $modx->db->select('*', $modx->getFullTableName('site_modules'), 'disabled != 1', 'name'); + } + $i = 10; + while ($content = $modx->db->getRow($rs)) { + $sitemenu['module' . $content['id']] = array('module' . $content['id'], 'modules', ($content['name'] == 'Extras' ? '' : '') . $content['name'], 'index.php?a=112&id=' . $content['id'], $content['name'], 'this.blur();', '', 'main', 0, $i + 10, ''); + $i = $i + 10; + } +} + +// security menu items (users) + +if ($modx->hasPermission('edit_user')) { + $sitemenu['user_management_title'] = array('user_management_title', 'users', '' . $_lang['user_management_title'], 'index.php?a=75', $_lang['user_management_title'], 'this.blur();', 'edit_user', 'main', 0, 10, ''); +} + +if ($modx->hasPermission('edit_web_user')) { + $sitemenu['web_user_management_title'] = array('web_user_management_title', 'users', '' . $_lang['web_user_management_title'], 'index.php?a=99', $_lang['web_user_management_title'], 'this.blur();', 'edit_web_user', 'main', 0, 20, ''); +} + +if ($modx->hasPermission('edit_role')) { + $sitemenu['role_management_title'] = array('role_management_title', 'users', '' . $_lang['role_management_title'], 'index.php?a=86', $_lang['role_management_title'], 'this.blur();', 'new_role,edit_role,delete_role', 'main', 0, 30, ''); +} + +if ($modx->hasPermission('access_permissions')) { + $sitemenu['manager_permissions'] = array('manager_permissions', 'users', '' . $_lang['manager_permissions'], 'index.php?a=40', $_lang['manager_permissions'], 'this.blur();', 'access_permissions', 'main', 0, 40, ''); +} + +if ($modx->hasPermission('web_access_permissions')) { + $sitemenu['web_permissions'] = array('web_permissions', 'users', '' . $_lang['web_permissions'], 'index.php?a=91', $_lang['web_permissions'], 'this.blur();', 'web_access_permissions', 'main', 0, 50, ''); +} + + +// Tools Menu + +$sitemenu['refresh_site'] = array('refresh_site', 'tools', '' . $_lang['refresh_site'], 'index.php?a=26', $_lang['refresh_site'], 'this.blur();', '', 'main', 0, 5, ''); + +$sitemenu['search'] = array('search', 'tools', '' . $_lang['search'], 'index.php?a=71', $_lang['search'], 'this.blur();', '', 'main', 1, 9, ''); + +if ($modx->hasPermission('bk_manager')) { + $sitemenu['bk_manager'] = array('bk_manager', 'tools', '' . $_lang['bk_manager'], 'index.php?a=93', $_lang['bk_manager'], 'this.blur();', 'bk_manager', 'main', 0, 10, ''); +} + +if ($modx->hasPermission('remove_locks')) { + $sitemenu['remove_locks'] = array('remove_locks', 'tools', '' . $_lang['remove_locks'], 'javascript:document.mainMenu.removeLocks();', $_lang['remove_locks'], 'this.blur();', 'remove_locks', '', 0, 20, ''); +} + +if ($modx->hasPermission('import_static')) { + $sitemenu['import_site'] = array('import_site', 'tools', '' . $_lang['import_site'], 'index.php?a=95', $_lang['import_site'], 'this.blur();', 'import_static', 'main', 0, 30, ''); +} + +if ($modx->hasPermission('export_static')) { + $sitemenu['export_site'] = array('export_site', 'tools', '' . $_lang['export_site'], 'index.php?a=83', $_lang['export_site'], 'this.blur();', 'export_static', 'main', 1, 40, ''); +} + +//if ($modx->hasPermission('settings')) { +// $sitemenu['edit_settings'] = array('edit_settings', 'tools', $_lang['edit_settings'], 'index.php?a=17', $_lang['edit_settings'], 'this.blur();', 'settings', 'main', 0, 50, ''); +//} + +// Reports Menu + +//if ($modx->hasPermission('view_eventlog')) { +// $sitemenu['site_schedule'] = array('site_schedule', 'reports', $_lang['site_schedule'], 'index.php?a=70', $_lang['site_schedule'], 'this.blur();', '', 'main', 0, 10, ''); +//} +// +//if ($modx->hasPermission('view_eventlog')) { +// $sitemenu['eventlog_viewer'] = array('eventlog_viewer', 'reports', $_lang['eventlog_viewer'], 'index.php?a=114', $_lang['eventlog_viewer'], 'this.blur();', 'view_eventlog', 'main', 0, 20, ''); +//} +// +//if ($modx->hasPermission('logs')) { +// $sitemenu['view_logging'] = array('view_logging', 'reports', $_lang['view_logging'], 'index.php?a=13', $_lang['view_logging'], 'this.blur();', 'logs', 'main', 0, 30, ''); +// $sitemenu['view_sysinfo'] = array('view_sysinfo', 'reports', $_lang['view_sysinfo'], 'index.php?a=53', $_lang['view_sysinfo'], 'this.blur();', 'logs', 'main', 0, 40, ''); +//} + +$menu = $modx->invokeEvent("OnManagerMenuPrerender", array('menu' => $sitemenu)); +$menu = unserialize($menu[0]); +if (is_array($menu)) $sitemenu = $menu; +include_once(MODX_MANAGER_PATH . 'includes/menu.class.inc.php'); +$menu = new EVOmenu(); +$menu->Build($sitemenu, array( + 'innerClass' => 'dropdown-menu' +)); diff --git a/manager/media/style/MODxRE2_DropdownMenu/frames/menu.php b/manager/media/style/MODxRE2_DropdownMenu/frames/menu.php new file mode 100644 index 0000000000..e815197009 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/frames/menu.php @@ -0,0 +1,546 @@ +INCLUDE_ORDERING_ERROR

    Please use the MODX Content Manager instead of accessing this file directly."); +} +if(!array_key_exists('mail_check_timeperiod', $modx->config) || !is_numeric($modx->config['mail_check_timeperiod'])) { + $modx->config['mail_check_timeperiod'] = 5; +} +$modx_textdir = isset($modx_textdir) ? $modx_textdir : null; +$mxla = $modx_lang_attribute ? $modx_lang_attribute : 'en'; + +if(!isset($modx->config['manager_tree_width'])) { + $modx->config['manager_tree_width'] = '320'; +} + +$useEVOModal = ''; +?> + +> + + + nav + + + + + + + + + +invokeEvent('OnManagerTopPrerender', $_REQUEST); +if(is_array($evtOut)) { + echo implode("\n", $evtOut); +} +?> + + +
    +
      + +
    • + + + + +
    • +
    • + +
    • +
    +
    +
    +
    + + +
    +
    + + + + \ No newline at end of file diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/_session.gif b/manager/media/style/MODxRE2_DropdownMenu/images/_session.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc2560981ee1caca400e225e48d282106f907f2d GIT binary patch literal 43 ucmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Df>utpmhBaYhCPCMFj~25SJyItL8^ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/body.jpg b/manager/media/style/MODxRE2_DropdownMenu/images/body.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8828183abbb9d9428b02c3e35aa94ea312001b7 GIT binary patch literal 23708 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 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/credits/dtree.gif b/manager/media/style/MODxRE2_DropdownMenu/images/credits/dtree.gif new file mode 100644 index 0000000000000000000000000000000000000000..c921b195d9e1d8263e73f989854792ba9a1e5de4 GIT binary patch literal 2637 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 ab(pr~$3WcTh^Ik&)xWiN~^Fu&T}4_3`VCj*$4^ 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 CE|swW literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/add.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..bcab54020b2f13b7f6920b00582d1ee09518eda1 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Yk*IPE0AuOHitqKeQSyY&>*pr zAirRSXXj6HzWws(&W=Ua2U^#Z#zpz6$O_H)XMPr_qT18NF+}2WZm*|MivbVw)LKQx zG{^t-uWlqd6)w=<7Ba2J{m;Ir@cYx_gxJ4*zCNerp^RJD^V$p2re<8MC#<#}pQskT z;HkqYmjyG=t7s`3`99X!n4&Ga!u61LL!JIz#+t=Cycgb|bgl>tzZ%o<(1q{JO4F;k eJbBh1j_^<7;h3NFpfC;S3YU3;k@(X6T!=mcZyJdYKbXLFrOI}#XAMrnzM!yjS$@!NeFNp5HyTkm?RpyuK%q>=#nO`L` zH==;V1|c9pf>tvp`m*qu(YM#h+5@Fh#;&%E$O|J1=7!iLIYm)$u;VZno}ZxjRuP@|>+C(Q4%^EH7|#@HX#1eW147;PK_BBq1TB ztSj<@D99YKNph?(W`E3bY~OK?cAwzMa0QZtGz8KlA(A^$=I%s7L~>CS1&w->X#C+#Snv+#Q#Y8#3W?Shv&pgYxkM5>5!j*M^V=GM TxI=}Z00000NkvXXu0mjfz>*Jk literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow-down.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow-down.png new file mode 100644 index 0000000000000000000000000000000000000000..8cb82b44fdf120b7df3e63d0f9828065f7627909 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0=E<`9qGNVS3V@|Ohp z1v992qaYP9L-PvyT9Q%=cdrS zc6MXp|MH3d<%9pL8?5;s|MP#i&4hzr2wneSVYIwuK YzG@!{0p00i_>zopr0RL@KQ2+n{ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow-right.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..d811b98fea15f9344be1034ebeea2a533e0ff55a GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Wq?nJE0AuOHirzf=!+!}P_s}; zkY6wZf99tX1(sVT)v!N2wkILRNMX){x3xf74^J1z5Q)pRr``DuCP^Vx? zkY6x^N=CQGZ}U%&H^;qg%MSMAGmPCR2$T%;ba4!kxZK+j$=9I3!x|sB;=!%o@z<7{ z8U9sBoTO*`VnZgE-OR`?IWAj~U-5T78^=k#-&Ab+RO^7_^qKobww`GSVa<0~scvU8 g;iJOMYuwFuK1HzdZ+v6aWAK literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow_down.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..05f17f700987fb6a996b183c0757db3842dcaf19 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}U4T!BE08uW({t^y)yY*?PgAyQ zwopq|GA`9sO;Oa$RMp5(@tWl1J;izD^#!xePbxl^?%nIQ_{yyLm!?fR-Q97lspW8O z?Sb;V{Yja-;!-w8MJ(|To8=!k#}lY!>Y2X2lkGjnTN@5m6&y; z8Vnei1MWn31t0$UPdw$Zsq^Ni`*jL+G*9O`D5S7RcpPOsw#tsN!k6`c<4Puh;Khs~ z#`hVjGUYdmZ+aWI`1!qiYp2iu`=D*p`^X1UvuAANxWBaX?RWMKtStXL=baY<+Qs1M L>gTe~DWM4f`uTof literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow_up.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..1ebb193243780b8eb1919a51ef27c2a0d36ccec2 GIT binary patch literal 372 zcmV-)0gL{LP)6w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000dR06ww%2G`_JD8Z~qm{IQ04ZukSzq zbgnvk{l(v$sRtgt`?vDot=AvFpS$yF^2UqZYtG$%_4nDwf6qSr`|$1Gc}m)X^XuByMwWVnZ>>XPD>bAtmRZpr0irIZFHMwGR);uV42S$-6zC2iFuA8 av-$K6B_?Kly)H>Bb=huPEz8bE25SHt&CON- literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/b02_trans.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/b02_trans.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f68a447c3ffa5b46092d5ac17fe11c2fb7b423b GIT binary patch literal 345 zcmV-f0jB;(Nk%w1VGsZi0M!5hkgw41^Z5P#{=LuQ@b~`d^8VuP{kF^CoVV5Y`TWJz z=CQ}!-skbK#@*-f{pRrf`TP9f?ET;D{p9fd>hu1dy4Ldc`OMqt?DYQZ^Zuc{*Q~_c z`~3a7&f@j?{^;`l?e+eVu+iu4_2=>ZroY+E-0I=({qFVtk+IR|^8M@c{+zhg?)Ltk zxz_ys{gbiL{Qds$^!Uiv=jihO^!NI~(&f|N?C|#fr@`9h?DXUB{f@5B|NsC0|Nkf` zC@3f>A^8LW002DzEC2ui01yBW000Jdz@BhOEEk3S4b@Z11K^|H61S{OED`pNkITR3e(Pa literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/b06.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/b06.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ee7084dbf920807f47fd40fe95f7e168ef9d325 GIT binary patch literal 318 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 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/cal_nodate.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/cal_nodate.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c4fddce23c58ad077a01a593e019707da74d60d GIT binary patch literal 910 zcmbVL-)qis6n>QC!fGxhic3FoaZ+AdiN(CJJEh)MD5oTo?aq~7(c+H0JFMPXD9Wf^ z&@Nm_y&MwLax;y!;>~#Xs-@mJp7Z?^oV(LG=Q+>woX=aQVHT!g5{B$m54BJYl~ClUc!-5)h=hPh0S{O}0}^0DY(f)@!|X=x z$uM_y7kA`ZW@c{cCT>U;EULMxtGFUbu~*DRUBm_C$Wezm)FBRTC2N9_G+B}sYg|lh zLKBO_NI{u1)J)8f`nZ;vs;QVF<&p)9q9$SjswXM-8q^>L%A+5o$!Xd_{Ukw!WKA%V zCQG)G2Nx5Y(8NMImu2P*QAHX_eO${-L;^4g(&DFou&cg#daD^wX~9ckS3>T z2RTtN6_PcdXMh)@k<`bv%mn#3(%0hNSu9SNHWydP-oof~ zz3?ta3p?@%g~CKCNasxo9tm7P^EvQJG>@9N>h{&+o6HIJvZjMZTsN#_2Kckx7M}#@2X9cYkNlE^gc2>g(U$v9|3_U`UBcVPJH7WtgR?W^Rxp!qUvluzi}={*6mkhXajc N@O1TaS?83{1OSR~Oqu`y literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/calendar.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..c760be3063e20dc5b37501964f2a305c6262b6d3 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0=E<`9qGNVS3V@|Ohp z1v98@$+=SSbzkR8Uqv%^w!e!%tOQC0db&78!NG zC;LTk4MjYEx%b_ey<7yg|7Z^_9;u) ep~1n%&(O5Sa@wz5&#nRuXYh3Ob6Mw<&;$T}XkVxR literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/camera.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..4d44a4760cdaf7023e07e9e533de18e7f76c1ea6 GIT binary patch literal 3393 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 ec^`|+_b^tmvQ6u&{5`x-OuIR1H z>KU5q6pi9^!}BV7&CKTbRm1t+?)(vb*75lL6~6yDTdY;Q_A-3TkG$q^<^LJF|4W$U z5ry3(p6d&e=UvtR7MbcQi`eS(`y7$XYU%$=wesZd`4YnaYQ**> zlj9no?)m%v4T0KEspc%5>Gb;j{Qmz^h076`>Kl#T`TYJkU9S|B=Fi^p6{qtdjor!P z_7iQ)7M}1De%SH#`_=CJ)$IEmulXm5*%FcE6o%gP_xu{D^U3J@sMYg9a>Xf_=3k7_ zEP(b`*%ztw8K?6>mD*Us_*l&Uq0R6=bih4($P<+1b(YN)kmDtf z-6&qQQ>ElOW354N!y0$cTz$eEhuz@t`(N4rZPWirko0E9`2YX^A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh>41ejDso!jgf;jPePKBUl|ukmyADAD4U&%KYJ^hkfVoX zdlVF?s)k&x8mAYjv4VFW8ojT#j5II9#4j{|B6w?KMMYy_UBHDnI|>*9Vn!j`+#yC) zX%IYUN=j!Wd=9vR6H5auDSm1Y^!4=?7CIk(P&>)2X5H=DjTxbIXhy@TG z+VB&Q-2;LNWEe1@qvOVpAVVJUz`}tDc0L9ahyex(2QLT^1VJDnh=iLpgXo-z00sv# za8Obyu)zp`qezniz{yks055rRs6ff40G%s6vTD^T=LU?JV0+$>Qvu5$0uPu>*%Bjx z+qZ9fwQS&kq^?U2H=I;BK!`xKYc<@I7)-cCnGE3cNY&!T;=j^f;gxRLSB zG&}X{iKV^(TLqKq((nH^HB^n^chQay$`D@KFoIjnHWarF`VjOrt_N+()gGrw;^Es) zekWfGF_*F4W6rycY4)M|Xov1W$d9~teRyOXfP(u9xvB$sk2`Shbq^GVew4gr@kzaP zX59LCdg%EwGkF7;F9pnouEP1|#-f#;Y_{cdNG`6*NqK5QVM8yJbeph7olboIHi!w*0{lB+uni}?Wrdw+^I36lWz9>_zB+Q!R?Y#*eJ+7IfA?SK}c<`81b)DS%WfNkkdw7agekd(LJt;LA} zdbHK;#S3jCdh9L?O#>;7i74;R$JJH|5^G}+nRTnh9}srxzBoes97%U|kSfg>rh$!m z0rw0++Cc#)*?5$g^H5Ak8dDIh+>J>2=C!_n&;)r9(Xr)x6+{IbvXosg^g6)PJa~^6 zM$(5Xqmkbs!zIIM{D^?Dr7 zWwB4O8@cTnIMbzn`GdXciH?#bSZFs>;4sc(r;{{_Ow*WTd* Ro>>3@002ovPDHLkV1hPn!1DkA literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/clock_stop.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/clock_stop.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe8a6f9511560e8e11a06e4458185034fabb2ad GIT binary patch literal 922 zcmV;L17-Y)P)P0~zDYoo2U zQY*UdG_Gr#>AG!R)-|`>)Lq@#-Pv(WNA2x=lUX$I42N&d^B(3f!vWwrpK?P89pNB8 z5X0E{ztGvlf#)_N_Rl#NGI2wRGo2M1zN-N7DxThVe$>T8uJ!~yvCMXQ8}eMg|H zHcg~{8!<@>@ZaT*NVZKaJ-(;tDBlwLXq+dfTLQRJ;m3{YHVsyv7n)FQoTY@FdPT0@ z-%eg7F_iP(xhX`-)mOUQbAUhk#yX54eM!XSJ_mZ=7p?$_YvnQ8bO=DLu97aP+8-7sDkbeT#N*a;HyK&4Y zU}wJdq_zWg+mKz!A9&!zwdXF>(qyIgCuBvz)x3Q8DJat2jfXGZLTCu%l<^Z-FLMS1 z)?^A|ilGXp?>OM^QW5O#M-M$XtkdJR=?M-V*W;zt24`5szAPJ9FLMS1R-Ae+Zp*bn zmv2Y2tWronyx|B=WSrAv!Tt#yy}-wSianX-V7<&43`joqfM0vT41HlG-nqkQrI+?b zR6OI$&?HLm^#L9Qc=S1hecA89dYLmAkaXadZmI4u_FlIl-RMFGEi9-4k$!^e5Cur< z)Qq!%g+4?V)>j8{mxEFkrw1t}Lwu{+bOO=O}tb0*s3 z;?SOygu2nA{{~pC)+DFXi8p4UFL75cX74s&?p~7ytGzT$T(k&nQ>LJ0@?^9oCZZ}j z`nOzCQW8VRZnqmn#l_-`^=bOJwMTeD9Dr{aGX}l|3pCN2kbrOT@hFRm`W;YEP!L7b w6FtPV|9@qMbJVChHnC#lNKLd5{D=|3Up1H0p?}@qghNfTgJbW@dAOA}*&DgM*NsWzBjqPW>!&Zi4JK6n=ujhUR PDrWF>^>bP0l+XkKB^@7= literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/comment.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/comment.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d3a770a6a149df77a99f77286ec2b0028f513e4 GIT binary patch literal 169 zcmV;a09OA;Nk%w1VGsZi0J9GOrI-Q#)BykY0RR6`|N6fF=K%lzFaQ5=Ohy9#|C0az z{{R0H|G)sken9Zw&;S4bA^8LW000jFEC2ui01yBW000D5@X1N5Y&h$DiTYspHBX~3 zC=;wf;TEI`AoN_%LVT*LEBu0m4go0A1U7_0*Yo`r2E#ySB-*5dgU%U*4hD$?)o9Fy X2|BNt!2UQ$rHveJsoU>(djtSG^=nS< literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/context_view.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/context_view.gif new file mode 100644 index 0000000000000000000000000000000000000000..d5217bda864564f7bade27eb3e2cdbcef744a5aa GIT binary patch literal 961 zcmW+#TTIV!6hACeEUWPrGc%h9^Kv$e#>Pgx=z(GTPt(isq8W1?i;0GHk_OpBv93KN-s&P>h3jLpbb z&Y4qlVvfy`Z>lp@Q!!;z^0VSh)I?0!g#0QyV>K3IHYOk$IU_X^BQ`<-Y(N7G%a|t5 z)7L{wOXyj`e3lSP@83GN{Zvr3}GO0b7KAQRh&1O6cb z4xt)g5Dk?Wg$@t{8_>WapPX-_#$yrkLBbzsQ85b>a)n)}KvRf?kRy^t0MLbT1P!-{ z5_v!-wh;$3!7v;`HNYSmn~((^AO<#|$)Ctiqm3Gma4`f4f1pLhSRuSBoY}I8qUfqId!#g zVq!AhreyJzfly=9*|`hnL{rj#qq+9g literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/copy.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..abb13f67ac66c0f59438700f6ac484f69a75795d GIT binary patch literal 618 zcmV-w0+szoNk%w1VGsZi0Oo%H=<)mK@cM3(($(kwqrT$J;{2As=KufyPJ7Do_y6qm z{p9cZ%HjIN-uc4Z`jNWiS%=J5gUph<i^5)|K9BX>hk;X_y28|(!AOC zaih}R>Gg1x)6wMo?)3dsgUVBb%xss^=<@Ha#paX2?6lMMm$c&T_5N#?(sY~D==1*Y z_y2^Z+E#(i>+<_nh0F5z|MU3&+UowD!|HCC(r=j3Re{QCmC@<*{a%O9a-q@q`uy(o z{O9rS(&hZ2$?nwV{fN8j*6023_Wa1-`o-S-*y#L5cF0(R%go~Y>htkqn9b|-{LJS2 z?DPEZ_Wtzv|MmL*>+}2P^8Ij{)OMZL^Z5Jf^ZoGl{;$#V@%R3Ssoj^v?UuCMyVv&X z^ZLu<`_AP2$Kd0+?^ZEYT>i<%N%IEU>(B%C0`TWu4{p$4lZkf|>nA2&J z)xO#GR)WiFmDA|*{Cu9)T!zh4g3pt?F>ZH|m_Q3YcRb5l=21e$*u31u|~ z5)vFdO$0rT8fHia2Rd1H3u{ANnT#V+GkLfD9Lz+z7$0Y0dx$>67g9|{vJ zWQft|j({B^d^CI*u}B0{d46n!Xo18FQ*@vJ2mk;B1{ffenDP)I34)t9ao{ngV0w)}qq8 zeZ8b|>Gu5FA@z^ZM=Rh*iSR($U}V-tF-+!n_4U@{@zJ<~m7brWfLd*k$KBJnn0H5njE$>|Pra*^g{RlVvzy=b|H9Aadz;Db z?BuPvzS6{~)5@vX%%Xsr#N+Vtr-xqG;O*Mw=h@-zmvvL1epz{df#&!B>G1IF=;5We z&3dERufg8$>Ep}4uyU2j&)@Hms?nCM)!*61fuGOg*~sbS-v9sqA^8LW004ggEC2ui z01yBW000NhfPaF6goTAUNK*;`03mUPe;NvX2oMkxV>~Q{8c8o}0eU7wI(q|3gLN<$ zUjYp`I1L|k4`?2OArEN*Ck1LHB^WA23tNH&6CYASQB-h1Vjvu3ErJVS91IR9ZZ0Gn zHFqghf&&+P9Smn#Br;G(RyJ*dOILXyZyiiDK3+{=MluNMLO{TX9}X~J*zse|h6)D+ zc|cP}&ImjrM9knqgaR8sgM!3Z@uY_Y31*xaz!IU5oi-IHBuHRDi-nek{2a(&!9s=u LHy{Zu6bJx2p-XBJ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/datefocus.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/datefocus.gif new file mode 100644 index 0000000000000000000000000000000000000000..13f734ca71c7d6b950029fe352bc8298323e1d41 GIT binary patch literal 1611 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 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/delete.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b2236111b91ab7863413a3306d69f438d1fff77 GIT binary patch literal 933 zcmW+#Nl2Dq5S~D+C`gFt5=0$@mfJvR8quZf7#JOls6zum(dN0u2utapEjFblq!^l% ziK&4QroT#KX&IIkS&Gr(Zoi7l^t|7D8)oL&=KJ>T-E$}X%%afBm84g*poI@~1E5r89Td=9u0!hdy{EUK zwY|P2R#D$nP+oPpsN~X};+fgGUw=m@r~i#lPJJ61u6x^B+{? zm6jLRJbT~&<@TeRTa}Ninwnq4I=esizwP^^)lceM+G5@B>_gw^#Kd$wKEJSlPk+-~ z!ZH}8?a+WfB8g~44*ALr8BdSy$sUPqY0d2#NIlg*P;sSkv}EVCp~U3Oj@rSL(+RK6 z^6Z+!4LO@fzHTcT+t_>|`M|lU_>HW_i$9*Xtxl~Q?kY}Oo>zWiZRMMr>DQOix7Hom xl|8joJGefxETizCcjo8TR3ADy9$(k{v*2Oc`Na9-S+958-(7fSRbm3A{Rbr<>sJ5( literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/delete.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc0d4a2dcc9120a2ab7130cd2d6aa88f7b7ba5a GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}RDe&2E0AuOHis5y{T_pVK+|PQ zg8YIRc6@z(@$@>bk53;QJtv%VCn0ou$^6#FQss(U_1l38b3I)gLnJQe_PFyM zP!Kr6p}Y6H(f|KxW)2O^b`8h0XD*eD-Wxx8et(nW`Z9l3nX8}P)-*5w>C)cO=px(Q z+|qC&H-|Cnmxb0d29>>&qGmcW&T{GQ=sR-eu%7Q){-iBy=k5Oe;rjDnF{iuQ-XEE4 XEO=`L>w7(c7BhId`njxgN@xNA((Q$C literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/down.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/down.gif new file mode 100644 index 0000000000000000000000000000000000000000..559229e1755a1381d2af6868c76265365c1d2a8b GIT binary patch literal 583 zcmZ?wbhEHb6k-r!c*ej`Q&S@)CH3#$KPM+A4GoRz>gqXj=CrrBKYRA<-o1P5?CkaR z_4@kyK#{7ds&(tuDJm+8h={y+@#5*zrwbP@ynFZV|NsBHy1JU1n}KSYnwqX%yA}`- z@Z`ypnKNfjojTRf&~X0z`3n{-XlZGA^ytx~Nt1T%+I9Kz<)urPK7anayuAFug9kvn zfO>cA*wNP3=HuftZ{EB+ckV1&wCKi-8$c_7dV%6V>rR|FF@5^<&dyF37nj$sU;p{@ z=hv@aA3uKl@#DwWuV2l~%ov6sQ2fcl$iU#jpaXI{C{7sImo&IEH8DE3wX-yLH3@2o zE14-8TJv>ww=js>J32X7NI6fRVK;lOt^C48j0{WWIM}kSoW6SPvW<&ewk%!0y_u_> zdCl$(GVNSE+^WW=B3sw<%US7i^C+;Yi7_#qv*qBF)?gKIF<=$Cb?2TQ>ogZ;3C-Jw zIV@S3yP0`)?x-t&pKc@NbHnv9D}RhjMaqiU FYXI*wyOsa| literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/download-alt.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/download-alt.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5f9882fcd4f3ef34d3ea200490b5b691ece3fc GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Yk*IPE0AuOHitqKeQSyY&>*pr zAirP+4R@wdoUl91RNnczl2=B0XIkLnJOQJ>x0VpuppDQNx(y zT))c6v)^BTD_F(w%Kw696oaCbCg*a;rt<6ck0+%rT>Yo#5}$8M v0PEGa!dlKPX;02sbg=Hcl5ntP>2zj2Cl2*bP0l+XkKjpu6M literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/ed_save.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/ed_save.gif new file mode 100644 index 0000000000000000000000000000000000000000..df3aaabdb69f154ed2790320d73123091c65a6e3 GIT binary patch literal 143 zcmZ?wbhEHb6k-r!Sj5V3=gyr55McQK|33o*lms#qf3h$#Ft9S{0NFs5LJSPdArZUo z{0o@qsh#UG;oxrtRzZWC&k92rbe?u*X|3KVzsGBH^syajsb(`1JaoG97Cy`udgIF^ nd?!$2l~<*wyvUR}TH8*GY+~S;aX#a71Y^eT`)@mJ7#XYq{7^Mu literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/email.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/email.png new file mode 100644 index 0000000000000000000000000000000000000000..3c645a86e108f5ac3cf87b6275ba86ec34cfe94f GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Yk*IPE0AuOHitqKeQSyY&>*pr zAirRSp5OO3&9&$K`s~_{P(QhI$0sBu+KS#k|qM>qc@B4N}~TU54C-v5MSZr81Y t^08e`N1m+caN4mxKsX~s?DGayd0Q#oyMEod;Xo@GJYD@<);T3K0RTTcY777X literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/error.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/error.png new file mode 100644 index 0000000000000000000000000000000000000000..628cf2dae3d419ae220c8928ac71393b480745a3 GIT binary patch literal 666 zcmV;L0%iS)P)eOSYYtbpBV}~vsBnU!_?2tr-P=|^T zED%wc9ezHgW@NMb!^uT_|SvCpFLJylbx zY%bpaTGI8IYXMN$9w<3j9VkA~NYOKEQXsj?6a9_hcwfU$acAhJhB)zb_w@MVUEy@S zX&I>K-R!bhu3?(6bHWIg$HEl7{9g>>&l_qdd+UYb(1~BCo9LptNq&8>!yoJ3Ui(i5 zRJ|XnYBklL!{@$-7=3mJ>P@1c=7Oc79e-V7yf+%lD2!I;Y&nXBZ>=B!5?CB>LvEx6 znI%n)qqi$#X#wKB(U7XP2P=+4{b@j#r%9-K(8UqtSDk>0UKzf*HM9yqMZ1D!$2MdZ zR=`U>0zhOH1XqN?nY@AQqB7)Fp4{v&dKXvb43hZKvnN8;Po;+jY*}~*Z|W9Q0W%{D z^T}Cc<|r(Su=1K=P5>Z4 zg`et&Va}tdzBS-G-ZcO)zCWpJvGQwrHZ`@wpM420ac@bI5~KkTFfGEM3sPWO8co4^fI6lPnA)Y{ef%@{+SnoUk0+dW+*{8WvF8}}l07*qoM6N<$g7cXs A&j0`b literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/event1.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/event1.png new file mode 100644 index 0000000000000000000000000000000000000000..f55680b0e653dc4c3917f3cd1523459681f21732 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V1Q4EE0AuOHiwFc_08upprKMF zL4Lsuzo)!j{PoG59cyF6*;yXUZgw|$ceu&h)>7rE-C}v5suE8Z#}J9jxjmjjhYSRm zZ+nYv;Pt%m{6D{H64Oz|+KFzaLc7l-8|*$J?$`aS#9d(5`3tjKB_Cw&KM=&asfovP z)g{ko40BDC9y{Kc;+VE%R>%EbgB35OyXzHRN*~BAy&m-CJA)zX?+Nd6bS&3u2S4n; cl`!92xS8wm#{#{xK>HayUHx3vIVCg!09FoxiU0rr literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/event2.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/event2.png new file mode 100644 index 0000000000000000000000000000000000000000..8d434cc7537d8a16d038b42ba75a631f935cf74f GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!O@L2`E0AuOHitY^JEKSfs9(4w z$S;^d z?`H|ldGyJQiDiPq3>8(rstHcd*JrKxlM~l`|3{SR;WbnF%~v{Hd~(Bf2}fX6Q|2Tl z7Ej*I5sB52A2;P&c|??*nDF)(pV2)_{a{D+pT9I7`0c1>zW<#=EAKIfA<$9=Pgg&e IbxsLQ01W1A2LJ#7 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/event3.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/event3.png new file mode 100644 index 0000000000000000000000000000000000000000..042ca49002f9b0a97f5bbdc3b2c2ad54e240f929 GIT binary patch literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}cz{ocE0AuOHizn{aEHb`pwTiV zL4LsuKcC;dHceNFrM@^qO7!Hx9rH3g?D)9PES=Tq_tf&wdZ4;GPZ!4!iOZ#DJjI#~ zc$fpMixqs9Uhw>GpDrp@_B21|=TFanH}^KleV^8Sxc^??9JM)Le!OH9Hj0U92+UyH z;}NdH#9uQ>SysCku0X-52~B3UmpBr>mdKI;Vst04leM*8l(j literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/exclamation.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/exclamation.png new file mode 100644 index 0000000000000000000000000000000000000000..c37bd062e60c3b38fc82e4d1f236a8ac2fae9d8c GIT binary patch literal 701 zcmV;u0z&N#0$9Ug7g~-`rQ^qx~m@y2OU8A z#zh~=7n#Z$Z*fx-GOtDf07cgx0suCz_W(2~Y(0tf@FX@P6EPuM_dgn$vj9LucO)%W zw%HgMW>=#oL>nZ>M&NEf08>)#)k<{$fCT_r>rPi=BV=hFh6WS^qqze>C6Ek}o{M5% za|@JGowu0t{&hgNzySHZxy@LTNh);YzZ2zSp_ zl$^T&Dnc|NLb&RD_!4>pt@VHdP)ZGER%5ZmWEe$lryR&y;2u^3cOkO4#6c%-(EY6a{600000NkvXXu0mjfxS2AI literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/eye.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b1ab6b7648c29d9f0e26d863989b168cffe277 GIT binary patch literal 353 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 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/folder-open.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/folder-open.png new file mode 100644 index 0000000000000000000000000000000000000000..079e37ee4e3c9e5a6e6fa3ba51a8fbe9c4f62444 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Q-Dv1E0AuOHir^aSbuRV&=k>< zAirP+75+f=Z=czo-8iyt(ZsCNMX}bVlDj9F=K~eQdb&7*vgV(-v;^xdfb{P*?Vl=0AP^3;FeyjbS4cJI`b@zQei+n({yY5xBG z^3XZkojms5cJ|+P_TYT;+Lqh3JmA1q_v4H9>B-xtJKLx`_u+x@&M@cCefHjR^V3J% zv_by*@B8n$_1a_V%WV1Sq4eC7{`~gx<+}g={q^9V{{H;`{rdj>^z_(V`}gVo{P6eV zh4|)_+pawP`0eP>gznCW@6(0(=$!J^f%@^@?aFG~kv{3Uh1-=s{PfrO>ca5LCiB>i z@y#yVtvUVr@$=M4^3!?y^2+=2%-xws{PM{7<&pE(hWzu;+^#^`i!|cHVd=qh_1kFn z+-&{&^8Nes?$31g;jH`j>iOxU;KEt;-jUq0KKSI0|NZv#*H-h>MB0xz{Px)8$Zr4s z{`&2+|NZ#&+hza!_43g>^wv-H*3(~UImU0BS8R@0Ao0UA{zm6HUVaF1EDHHHG(Y>YiT!S z0y+eI0tY!2f?QG(Ge$@;L<$dNWISquQF<3cUnK|x2tBa@K!PU$bZmA6a6djDU^`4E zf(bNOFMCBKAYplUZd(h29b$85eLfy_ZButCRtwXL795~BsbWCTl_L-` igm|Kb0u>AsG&ETvh=GM9enN^2+2xHAMJQ7S0suR~EoZ9$ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/folder.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..d096d08f68eebe14a53902883134069b8da0a411 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=0=E<`6_Hcg`yZD&;8& z@(X5A@#Ftk^d#;1v&Zgsi#H1b#qB*^978y+CpR#sIVN%}es*RigTdj>#*={pDpeC2 zE6>d|PUmXi5lAR%Fp}V(a4bWVh4CT_+g4+Rf-GicHU@@9Ux|{6ogvvkqZmA0{an^L HB{Ts59k@dc literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/folder_add.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/folder_add.png new file mode 100644 index 0000000000000000000000000000000000000000..529fe8fe04c5b750ce3b4d48118465d73c74c970 GIT binary patch literal 668 zcmV;N0%QG&P)g@#5J*h%>dq^uaFBvVQ$3&c*y#>&P@VnG_z zkezqQ&je1b~~$O}L9 zo^;|X_f#3CS5n-cFHBf|3c+u^PpWoka6G0Rsr|AOXUJ zbHD{5nUGu>5YB96PUmjGgM{$-j5TbT8bBGbz2R zHjvpHkWu0*cCs9&;{|Ugi`d3|T+)Vj%kXX`qqQ>4W)|B!_mMlW`2x#YyU0W#8Pyvn z-<;pE4zUG8k-yYxmFW4%eIAbtF|hR_$8YW;YMMc&ZY1$9z5S(QZA)e!-q6)Y`+^>Z zzdYprlOaC7jZYg%{Ey!L(s5u9Pz1(+vk%UU4EzNDb1nO~@as(g0000~dxSpfxDPc*tc&vSzykZV;gmt{JgzDE1INPHtek2>Hujw}=k(zb1BS(b*B zN+mfoG^8PHgAx?rEeS#hDC@c|QmNFck6{=GIQ}ytkq9{F+Q#E?N@HYLb;J#pKj&JoxYq8QVg1*2bym zxH>Bc80^Hn1UXQ zKTo|>n$t>DGt?y+%o>TW*?B}+5+~Zu>a;H$zKPvU9qO_gIXo#DRHJgFETq4nErdha zFKQUPET%JK7<|^R0fVFc_+m|{>6{@wVF#sb!e5G+5GI$B>J}!|zL@|n`FI#Ol*I7F z7%iq>mw+(iMqJO2MM^i-BoaLH$oR8Ltb8l z!cklV6d7X|5jO+bxEw@E3NB`u<+zdSMg~`Lb)5VYp7rlZdb9sgsxCy>^vV(Pf!p{pvw#@Y^og4IHIU1fIuJQ7*R9E3?{jc zw2!$8FfPlkDA^3UGG{YAba!{Z^1g69i9SV?l;hjpp34l(*vRZ4jNRUrr5aPdrXB|- zIy(bY(Ch8HU9C;a1Q0l8TDribLUaI4Ob?yjhkf{hdPJei0k||S#e`7iJU-I)w&DsM zDuJWz>GGBkBQ1RW?&BU8()NtW1d#mq$^Q*ngw)CDN%Q0
    4&Mzhs!pDYw&u}7^i1_(u^GLe zzjA(dYJIJEdwQXH?fTtAAK%ynLV$o3~ctbCpOUapK6S z)bH7QbB!lkKfaMvqFi|N_|Im!`C=;jedq*Uww6-PGjHQpHIg|Ru2>tNAo{u(dzwo} G$?8AX-}3hW literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/forward.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/forward.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc7b94b6880049727dc9566dc31eb6570a474e4 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7E0AuOHiuMnvvW}>P^Vx? zkY6x^3g`Z4@vqnHzFc*9HmA-?`P!}5VnE3-PZ!4!iOZ!YJcSwzc$ghKOkx(DgDHF+55N?%6D0x36>~J hLC|#R*xB=UGj86%7Ry(;ZW_=A22WQ%mvv4FO#mf{TzLQh literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/globe.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/globe.gif new file mode 100644 index 0000000000000000000000000000000000000000..f22d3613734a9aaa5b23e0c341df9db74d02791c GIT binary patch literal 668 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 LX(S096bJx25jZS} literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/home.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..c97fbda9cea50f276e44c2fc0d0066971ec005bf GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V1Q4EE0AuOHiwFc_08upprKMF zL4Lsu-=AOH+>&A^^Z4|XtoR5wm3MD$?q6OR7{DVTKl3F}Rf4CBV~E7%-V^RZ4F){U zfwxzFxmWVPS?G|;n;CzmepzAi{KWQezu9iEE8O)yEOAA0Ptxkr)0}fc+L=P^lWXdZ zf7Rsh-0$PeaL>xE=WP_L1gGUEk**6Sg7@zIWS``)Vuduq3yqUd3Zol35E%R2IEg>E5YPwzwoUrPkI?{>e9cb=?%M V6-=L}w*jqY@O1TaS?83{1OR-+dAk4r literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/information.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/information.png new file mode 100644 index 0000000000000000000000000000000000000000..63c42303995782ca556c2b35f4f9ffacaa3b5501 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V1Q4EE0AuOHiwFc_08upprKMF zL4Lsuw}shu&iMLF{q4fJRfU1Z-_IRiH=(N`##PMI#El84D&Nz^F+}2WZhtsmg8`58 z?ggpupZ=B?ac5x^daqqqs&w_w!|6;%@@Cy-V0pZ9lQ&CWvX?^d6EXgsmzj3Um8-ro zYUy(36AJMW`KFuJ<q3yqUd3Zol35E%R2IEg>E5YPwzwoUrPkI?{>e9cb=?%M V6-=L}w*jqY@O1TaS?83{1OR-+dAk4r literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/layout_go.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/layout_go.png new file mode 100644 index 0000000000000000000000000000000000000000..b84b9394f83c8e4970ad59626554fb2582786a3c GIT binary patch literal 668 zcmV;N0%QG&P)Ll1)fdQ51l`H@z9tFe?Tv8te}M(o*n{f;x zjLz!9<$UKmKk%R70raLu&jAfU7tju>C?2B3VjeLML>5&KA z)_;t_`|lON&zl?oxHFPjRnxy{pY7Vlhv^?-5g=Mq_-v^ziF)(?ocwVn1Rxuj#412l z%L-K|X2W$2Po49M08zi7w%!mYtOa-gJp)e&L=c6CSB@~5UI3sZ9%Jb7F_yzc`j0-N zX?q1K4pk)<0V3L5*3glxA(OSMmCDN!lx<89I73Tq2N#DsqZX|D%>aOl6YCsKh3^Z~RF>~xbb5qW6L0Y1_&$IWnF5;L-aJmh=){fl+e3v-ny&?d!_ zAirP+i*FzPEQ!5)eYK>6AP3XSlSj61tSC>9^fBgnG_z7qRq>{-V?R)Fy{C&~h{R>z zv+jJ%iUKYdmH2KPc=96R`~D@mHx2$g&0fjf@Rq%C)yyS(7NxBG78-sjgHb1^pU2Df z!3Ujup5t3QkB7HC$Y^=ivAx57r^z2R+e+bj!@DV-&tHG-3`x9LbpAr&Y~e7z=hti* u{l7W%A_P)O?!~#Vdl*A~_RMaJeHZc^62(la$ zXNk(f!J;Kx`k;bWQJvnEklKv4E*yUMoqNvtUEX^F0D`|j@Q(r{5=p1oY+msBe7DJD z5^lHq%4)R^@aW?E8gVou4QYP_h{fV|l}fb|4u?^%*HNq0P$(4O@pvv=E?2Qytv(Z1 zDwRMQ(vqhcAQFj2>~{NorBb;y7z}$#rSi>WG9eO)!0B{?dg5r7N~NwyOP=o=ta!a% zE*g!p8jYqyDwRIw^LdoZWfY4=WHK2LM>EopmORY>hGAw|mc5I|PN#3O*(?%?1Z*}N91cgL4{iEji;aEEtZ88I z%HD_Pm~b;dC=|BwEA}fCic6!>_++tII36#0y?%nn(Cp&Gi)U*JyQeW6UFQ%wFhd_= zFktBpwDhgV{lnb$$vU>rBA^N!nh-iRQgVr8yH8%}^ zZn9za?@#`2175f^8t6qZXKdU|Cq1|P4!%N`c|6eCU*|IMpHVxOJgs;lasU7T07*qo IM6N<$g1< zAirRSJ06GBA<-?O*TQ*GZ<}u}*>J3y7;OXKRB5`?buRGTP10I&eCv5k= z`M+O^J7=Q90rB&W28Wy4;+Gv!+%-M_#F{W?Ch79T>jx%O9*AY0ct`k~w35$9<^^Y% l;?)9<)g26<|1^I#yYGK?HjW2%7C^HZJYD@<);T3K0RS|$V~_v< literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/logging.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/logging.gif new file mode 100644 index 0000000000000000000000000000000000000000..12df115357e1d3bc4a953f74c7624b302413218e GIT binary patch literal 257 zcmV+c0sj6+Nk%w1VGsZi0K^{v`1$&BoY%k!G&9bty;^ybx-rwEb z-o3rO&(F}v$jQUQ#OmzqzP`TU;p5fS*7WrD^78b?#>d0N#QFL9@bK{5+}+#T+{((! z#Kp$=`T67H<>KPwxVX9N>+JIK^YHNU@$vHZ_V@1Y@Avok@9*&H>g(z1>+0(4xw*OY z^!4ZG=)}au!NI}U*x29S;OOb<>+9|3=;`U{>(J2A`}_OZ+1l#s?C$RH=;-R$*xBgl z>A=9i=jZAA`uptd?)LWf+1c5_!NT9);qC43>FMh3@9@CD!TbCC#KgqM$H?&U^5*8} z;o{@Y&d=1;)wsC0@9**R^!3=;+1}pZ?CkFR{QmOt^2^K2-{9e`uCKbfy4l*>+S=RK z*xJO##`^jCzret`xw`T4^WWd%ySu#g_4U8Mztz>)<>u)1_V?i6;mOR+&(YGy$jRyH z?aI?f3Wh_4W4i^Ys7!|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh>41ejE#mDdy$fpl$DZ0ID{x@Wh|bbEFhwzq@`0V7K8vO zeyy&ru(7X2gfUtG4|aUJyuH4?b^$UVghVGM4GJw)ea+6#&@C+z23fR&M0-If25(p* zdEw&Y;vzf^Qhk07#X~33YYsAcA@%n6Av9o3GG-!vN(fomMWTs=1q&R!Song81qTov zFe$P?i2x>enlvClU`hfjX{y|@AmW0Z6D3lnq*UU>NtJwpxLVMog@_O@6u3$GtEaCM zeH0-1Q8Nz`JWF!i(8C9sQ)q2`3@DHVMvp!_Tp-=^VM7EG}25FzBr z3mkp__~>CUAjF-!c=O&#l41aW9er9Xfnh5|01H7#kPtxvOamh!R7jqzA_W#1QDl&C zviJgF5-E%bxPYQ`9uWcJ46sqdg=-f)Yz$!FV}}XTCkQ+75aC4!6TpE}NpXXN5jFt= z08wB-ijKR%QSgBQ;PeSRC-i97e#b@_F#;q&figgVg$yZZY}a$AkCGS#D5P+(XN7$o zA-EWTLnlHM16$lsfDbuH@I(sstv~|_KMYZU7i4sS!wfUnzykmqC=fvnI?&((5IU@o zf)E}IaK#Kr%%DONKM+Cy4nWj!#tm~I00et?9dSfnN!+194+Ye~!x1eGazGFPd~riw z1ajO##RyPFDP)Yk*&fDbn`1`WO z)O(Vtj*gCNdyTBV&GYp2va`0j%h>bw_;QGy(cR|k?d^<}p}ND(qp`rPu(!L()}ySp z+S}dW=f)-01G=@b#s-%gWc{=I7|F zz|i~r{qFYnWpIA@`~2hNA^8LW002J#EC2ui03ZM$000L6z@KnPEEEB%efAF6H_uQZdZ0Bho;R zv6|tq8i+g+-QbY$IljhPGf{}yU4_J}u!9Rv5)T1-DIFav255l^T69na0S7uBA}9wU zF9%dF5)vL<9yw4BItGRZC@&o~3nK$DE++{hF$EnZPZ$T1C><{T->7bCqL5~On+9I(Lp}>F|KFHQ_Awd#_8vzvD5U@gofCL}B z6xlFg!UzF6@}wAm0EGbrEd&Tq&?3SK7YS5|=uneLfeJ2aP#B@2G6f0Z*nTnOkffVvF`1Z<~Rux`X59UAoX1OYQ_z`_t16p)et6$l~6Jq-Fm zgbn$$P{39^h@b#*;Ydg~L8>;s2~6d1o-125fyaDiU2o&V8e<=RN!9#CM?jx Y1kKP`L^~P$U;_;g_-N#jNCW`@JLtYws{jB1 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/modules.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/modules.gif new file mode 100644 index 0000000000000000000000000000000000000000..18628751763f99a5be73626233f8d890112338f0 GIT binary patch literal 794 zcmV+#1LgcjNk%w1VITk?0M$PL)Yk*&fDbn`1`WO z)O(Vtj*gCNdyTBV&GYp2va`0j%h>bw_;QGy(cR|k?d^<}p}ND(qp`rPu(!L()}ySp z+S}dW=f)-01G=@b#s-%gWc{=I7|F zz|i~r{qFYnWpIA@`~2hNA^8LW002J#EC2ui03ZM$000L6z@KnPEEEB%efAF6H_uQZdZ0Bho;R zv6|tq8i+g+-QbY$IljhPGf{}yU4_J}u!9Rv5)T1-DIFav255l^T69na0S7uBA}9wU zF9%dF5)vL<9yw4BItGRZC@&o~3nK$DE++{hF$EnZPZ$T1C><{T->7bCqL5~On+9I(Lp}>F|KFHQ_Awd#_8vzvD5U@gofCL}B z6xlFg!UzF6@}wAm0EGbrEd&Tq&?3SK7YS5|=uneLfeJ2aP#B@2G6f0Z*nTnOkffVvF`1Z<~Rux`X59UAoX1OYQ_z`_t16p)et6$l~6Jq-Fm zgbn$$P{39^h@b#*;Ydg~L8>;s2~6d1o-125fyaDiU2o&V8e<=RN!9#CM?jx Y1kKP`L^~P$U;_;g_-N#jNCW`@JLtYws{jB1 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/modules.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/modules.png new file mode 100644 index 0000000000000000000000000000000000000000..6a11d3bfc3c8bf10baa8ba5e1ea918b685868f98 GIT binary patch literal 627 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEdf3uu0XnB+MIz!9I`9DfbP&P z3GxeO_;ibVU1Q9*rw&GJzc#H%)e$?fcVTgkpZuFcTf6ShnI7t8r6zdgLUqLi7k1YW z4h9CsVow*x5R21WCtWXUHV|+XzqorPV>9m#>)-$XPuF(Tn3t%gZ^@rAd&%n97yCQr zyL3jredhg4yL66R27B|(&KWVz^%oa}mR25ZN`IKYnV&TIgxt^Uif?46up9KZ!&+la9 z<=dy$e);IXX2-evFUPm?o_qQ1|H1vA*j%xhS6#-J11X z{0WcYxBY_0y5}UVd7-dFZhd}rQP_WHXXE8NrFFHe79B}^E2z(U|JmjX>Y?ntyq6ya zESFtX=)n7S;=--^riWzN5?_aW*ty6yhC5%o_7}5#V7~dQUp+H;fw9Km>FVdQ&MBb@ E00xvLCIA2c literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/move.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/move.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b05ad278bd13b667c4568f8fd9d95b6dde3b70 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7E0AuOHiuMnvvW}>P^Vx? zkY6x^a_;?ATOv7M-#D^tLIZzN;)SM7RzS&2PZ!4!iOZpVkwS+Rc#h^ID^#!k9lvc} zn@XRZ#Jpp(dG0(t%9VXi`rxz{%N?Fhj_)sg5xVv7=?%?e*AujsI@ky&rp29E#A<#! z(Y(0JYsP!i$HJB`&flt=e^FtZeMr-+BO4DCc`Uka^{c+5faO{u(-%LWr3{{~elF{r G5}E+q18ZOa literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/new1-09.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/new1-09.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a5d10c640a6e45434b207aba3525e16491d75a1 GIT binary patch literal 201 zcmV;)05<|5 zRPn(K+ObXd=#~G?KmW%l`|Wt`&r966SLMu>{?{u1!4mn_Q~vgd+`fzU&O+C>eE#B8 z(x4XY#%s-`LI3~%A^8LW=mQ@BEC2ui015yK000F>;3on>0Ep-(41`O z6i9F|iblinXh0$o!DK+GST2%@>x0QqE*1?+aM*A#5W_Uk;Y=onj`pMBi4Y#dCj$J`QGaGyVmuGx?t_|_|fG2`uqKjx@5=T`s?!e)#v^3_4zkz8M4xq-0Jo{ za3GPcfsedr(B%8<^7q*2{>Q-|Y7`YGl{u@=SX%O?<_3m|%pc)r7X< z)#d(=yK1r1kg?X1wA7WB*8j-h`S0}lM|^zA;`__u`-{3_s=(sO<@#v9{om>IZo>U< zpwWD)*XZ&1?ezMAt6@lh!?x6%#NGMD-}y#>#?RyY`1}3i?e}86{IuBio4BT)*Z-fq ztyPc7)aU)|^7!WP_hE`k!Q1#|j!)3$y4B|WLVUy4=l%cx|NsC0A^8LW004ggEC2ui z01yBW000N-fPX?_5fp}o5Mf6oe~o`(7#JQRlyxym788t(5fUalSqy1-KS6Jqn-D1p ztXft9AZ!R-Pfm@hYcMbgJ7@x5F%masw?+#@bR!82uml7~KDSpJeJDf=GaUf}0$0(0 z5FRoz8XE;8GbU&OWZw!p8XA4o1uz^P9T^UdJ}1=kd(O#elIISVMi0h7DZua?oHA7O zM5*E8j~Y7{G8!;Ygol(Veulhg@rO?vFg@ZNI8bHD89y*rsQ5DghZg`ja=K}-C4`?4 nBmXctfdt0~7A$lCp;2N*2^tl-L>N$^s?{V7R5Y;hClCNT)tqr& literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/next.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/next.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbf1e6a749789ee2bc1540d66f9846c5e7bc3545 GIT binary patch literal 673 zcmZ?wbhEHb6krfwc$Uww;NF7pBjEx21H5*5x$Sgw+3sS$#olqNqs>Mes|{9G8?8*% znCL9kS@vMrnfGUU@AQ^mF3&lalYS;W=~Pm}iG--5Q6Yyy0uBWD?DetUWNo|BHu_j} z-|fE2tCe}@^U_YI#T}1}JQ5jtDAa$SztUTR-3H!SLna^{^HoHV|H8Z#CydZwmR5vvoAPW z@aM-L$8CXf4)?-XCqY&dhM7p-6{_%3Kw_<$8vz40V_33bhEita1_U z76rP2fkdGAlZEjGb3TI(NFOLp7}){h%$cL@UzYiCbaTW&imE-!a?<*11f zhf+L*)z79qX;5@Hz@hNum2G3Avtyqm_ksx(60WDFDB7$DFMi-OfnJOKz)abZR(rNk86bieWLE@2os7k(3ol eO3qBPvaW5Yyxew{Q#ZqZh3&&-Z*Mp-SOWlz&-2Cr literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/page_white_add.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/page_white_add.png new file mode 100644 index 0000000000000000000000000000000000000000..aa23dde3746373b393489bd56b486d59b0c0d124 GIT binary patch literal 512 zcmV+b0{{JqP)!DxxEH~}L2zn|52%xalaq@DTdhh{EVwv0IaQ=!?daer zTKp4I`l8SDt;d{8Q`5Ko;BXUi&oAG1l4}59P-{|^S(Rmord5s6qsh<&m@Ab^wqCD) zHyRD}lKLDzpYN&@q5&*47mGzGiqcXpmqR9#K|CH8kXS4RNs`(iEF%HjP%f8ItyaZK z6$%Apvsok(2>~dTO5jTZfq;N?0ch4l01f$k9?4{~Youl-#x{UDMr#AFIkz@SDwPtQ z$gQ^$2|*(Ps9LQiav_8o8Ne<=Zx1*M*syo80sEO1tB%>5 zfdHB`1z+!R@?ghPRKmL)hWEvZE$=*54ose*0JiUNTM_)cMDXhxEKg(?-pD=y<)L4J zT0dSyD0&NhJ$^_8Ko9uom%-ZM4BTM{Tw$9qyPj=-9W;N(Wi@3*-Q4pq`Gcp}^vvNr zyd&PsmG>fpCSZz?K}UIEd;HGgG%0MG>ymxKPwy{>wy(m*Atq7)0000#DY{xaiib^#X=YT4@yE_&2#eBulEdzjE`u&@G%2(&u{J-<}d(^uY4W_kMfEX z@!X)AR9F&FL?RJyJRUzvBoeqN{5kY`z3wcM0+du73~_0|*lac! z42Dw(Eg1o{Ash}P8jXrqN+1w`*XxDD;ShmPCZC7#4;wWbHoMvBl$=zF-`?*9j*Nbjd=v@OWt_BgKxP-3wd zy37?ATx&$b+&zRM!K;BD%Okw`Sb@&Pak8$KRX19jWZmC0&n*Ggv%j8nvSPDFw zEkV65AGOoBQ8kf`R|}Px*&INNS%osq9b{Fq2I(x6@xM>tg=vRLF?I`0rWzVb2f>2}Fa82O3m(Ob=t*sniin`NpInLyMJgI`saru@YOPfh zy4g0#G*cV!#N%;Gq9_VH9?v%kjS3Rb1j8^;C={$Gp=lbj z*(?%?geA!5^Pok%UauwjA)v4g2`HedDw4_Mk4hhBQt?e7YJ5(hcj|3dNu^TOPGnjB zTTsqd3GIZ=Bb`n=7no)dflv&K(lsWw?lH6T1Yht0F9qgIuzh}ym0%n<3d3EBWB*pg z+G!I0lbAEXyd>k|QNuwr4=KX1D+tLPv)j@C1=N4sA4NF9A>HcO3G47*Y6!+SrUH-7 z1hb;^#S=r|`aMh>J#dWruAEf}gcR(DRUC`ZUev&$Sbh0SgLiTXeeHEU<$_YV;9281 zym`igIE%Sm8DpDw7@71Tv^EB5xSdUR*0$Mqp+Wq8OoaZtOg52&)zZ;;M=7#C1Yd6x svjx>8ad4e2x|*xHHwRjcjs6zA0XLDUqKT6dS^xk507*qoM6N<$fP^Vx? zkY6x^7{})ikIrtIRT}Fssn%OdHP5){1W?l5)5S4F;&N)AC*J`Do+Do7yO=)zKkvlH zVfjPMyKvK)jQ!zUFDn#!KDQbqH5%-D;Ick@gKC#{g6cE5ujNnev)9V+kLE6zv$Aq3 W>zj|~_E-XqWbkzLb6Mw<&;$T`fLAI2 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/prev.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/prev.gif new file mode 100644 index 0000000000000000000000000000000000000000..84bae5a294db4fb2ba4e657186cac22570dc8021 GIT binary patch literal 1087 zcmZ?wbhEHb6krfw_`aIKd$YIx3VrkS=GGgnZ8q9CZgq6t=Ipk^&2yKh|6c#_!{JkJ zO*LO??z_d;Zi}7AE)TzbenAI=!VZT;9*K-T7M*Y+A^B8t=9$c*3q@@=+qS*fHtY5* z$qAB%D-G>7+qrIc_1x|0x7RP|Kv49N=%nLGi6;`%Pp21LC}_Ig)N!*T=4gz}6d9vc zMwS~a9kw_)Y;$ng;nIJtf5EK<$;XnTjz*=NN-4ZhSa!KA_&~7i6j}3i=H_e7E!J6> ztuwRSXxVzc_2svhH$U9WI*}D{ARy*gOxo$Rj58U&dwtE;ni;J&YB|^P^y||nU!K&R ztMl386R2B7MEVE5!ZoAyPc6o&y46)yAFEd%jcB5_Gsk%p>9_1X%vD#$ixyRFc zkGKCmf9Xlm1}hEhx7v4I>U#F|S?#%6=bg^pd%Zn(dP?+5=q=Z?SZ`so$;M^7OV6dA z7vEky|MtB3VzciaU+>-CUc0@VwmFISit8-ZFuW!D;nR+8Sh5$+Hc>k$*{6%+3lmzW?S(kWuS*!utf{|qA-DE?$&e8Ie$K?f8D zpgh6A@t+}_kwYPYp^=G|N5-N-p|Oc|wS-B*2L>k=PGOCZ4F!zOY`oGIB_BR8x^M^z zx=qkXe8kcvq7}9w!|_0Kx41#li5ZTI+j^xfiZ)!>*zC?PZ{NToXw>2%sO;YI$zf7T z`y^GLSr(Ox7`$591DE(LY+BMaRXbu+M&pK5rs>RlDfW-=*c9dw`E?mNdS vQ)+{|mzw{4hgg|Q!U_&6KE2@Yl-hbqcxBKszlF2rFRz;yvMP*~g~1vCPx)`6 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/preview.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3d97f75e9cde9c143980d89272fe61fc2d64ee GIT binary patch literal 615 zcmV-t0+{`YP)gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3XKCTT%M9T$jU+Fn>68Yw5w# zgm}jEqi=*79RwTH_FX*1*PzU|By>{I3LTSbV~g#539GLk@llNo%$~B2C^WxKgHb0#qzp$P6)j#d-b3hj{c)I$ztaD0e0su}7 Bvd{nk literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/question-sign.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/question-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..05bf84f2411cc6317cc2bcef4f856f7b4c1d3619 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}a)3{WE0AuOHixE2){D~#XpKTi zkY6x^(2oaCeYigySQMmtz547oge}PZ!4!iOadY zo%X=!Q_xiA+Q5~%*H0)eWP30_Z@u>sH^cl#j3x(n#yvd$ zX0oki;nE%l_d@m(j}Jji50)@|^xWiXwD8T<=%QrHKVn-`QrUzHWA8+@)%lz;SSKVA yc%n1@PRCc9$cz(DRjq@=9dGZOVjt1>lZii;=lsH|BLP77FnGH9xvXr_t>dfPcCHwB)|HNYRsYU;_ zLjCsc`>#L$yj1_aQvbP0|F=f_u|@vy-S^|o>7GXJoi+850sg>S|GQH8syp-tvvj) zLjS#1;)NLg+^X=wiT%!q@}W2P)vNf{tN*x1@0ca;nkwg&HTIYi`}FSOmq+HCNBp!! z{Io{tk0s)K1M{|L_q%8Kyl4HoQ0|cv{kv27utoggyYr3#`m#sp zkR|!ptLvv%S0x002=HA%Zy*9B_S09U4y$5DXP8RaOB`5n69t zEmRIi3P%DN5hZ9%0v2By2?-1k3Oz9t26sGCgdub=J|KutvY^(V7X!eA*{~1WKbXg EJF2iffB*mh literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/refresh.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..79cb1c052db47a06765bc9debc141b6facab091c GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}cz{ocE0AuOHizn{aEHb`pwTiV zL4Lsuzg4+=gxJ4cI(1-ST70ma!xDJA{#}?Q_k(d_8AnoU>c(9_hcI}$`njxgN@xNA_|b?? literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/reply.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/reply.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c9ce14b4203f82700c4a677919a535cdf757667 GIT binary patch literal 592 zcmc(c%WIQS5XEnjrXfa4TH6v^s;Li*wZ1TDN_|ApCQ;E~QYS-O&I9wi9X zD>M+$#Wi*jDB?&_T#gkAT?n(x@>)T@Cw)kc&AWpLsZ(!@r|CbA36X#1=bf?=h}SgZ43T)XmoQvf`Ru6*0sHq77vTdmTn)7jB&Y_+z~OEn%!Gm|0IUDSEcufS!< zgG@=Nc#mk)_fD`*-0_C^Pn!Na;1i-KX7}>P08(7A!nXBKK=Vt6i6HB ziuh||>0^oU!pQkp=HcMaYVbjD{6b;(Qs}_d$c^d4;iI!7yMQs2CI6~6r>`K$8%he|w}dA#i4%gpPEPjY`Q@mr_G{6F<<^@acd literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/reply.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/reply.png new file mode 100644 index 0000000000000000000000000000000000000000..eea4c7ce6a96c85e6377659574010504ca354349 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Q-Dv1E0AuOHir^aSbuRV&=k>< zAirRSt?cjDd7Nvx67L{*ZO_EM07HFc`PSqTexQPIPZ!4!iOaElo`r_c-G%c0B`DIYEx#?KUs|mzd343Ous1J` rb1~diD@=4{o-O#$AZcRYG)XykX10u^S;}jHRxo(F`njxgN@xNA!jxi! literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/resources.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/resources.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca3ec26296e7f666b11e1fd2d9ffbc831aa7736c GIT binary patch literal 1398 zcmeH``8V4K0KmU-Z!|Jg6X(~_&{wUv-fPP`B9uKcLEBl)9K9URP<1b~nKa{BT3 z`1n+IdT{(fCX*c;Nlv5(QmOQK_e63qytA{ty|ufwwY4Vg+t}Dx*%e4664~0(()QT; z`nqWM<>KbBXmdii)9`M)L%g=Nva<5mf^2PZe}D3De5G5sAlx52n4O*DuO+XKZ1GlN zrzR%_Q}ev#Clh01+kH~D_(6{-kUdu@7#iwYyw~y0cZkn#TL^6vdM>_R=pPtvm=4?M z*c<5Yf7{Pv&7xUzHyh_1CGESc*)RLJ+}auI+8Nur@$af8+-jyRtEVj3Jw42Ev-h>z zqPq9YA$!>0GX=-j_v6jjzb*(rsS^3qOOpJ zx_U8HBBn@+*(S9$HAOupFRCi5pI0#}S}Pa~A!$9U$ta~ED6obF*0&*hVfSgmFo15E73_iipxXQ7*#6#VPwIK#PE6s+-XR(O- zdag3m(MX`PE>|&U*$sD_OtkTSsb9ciT2?xLRS zACqB9z0TsCPbq?MKgXiH1UjQebTm;%$%_neAbgvyc^MetIO$*+X!ZQZaf9vvOoRcS z#_n>U_TVxkIX{&^Cl&`*IKwcBR=sL>{V@ZkCAJ8;tTa}YQp#m!5g?4&1BP>Tz&k_#@me=Q>uf%X-3*UXFnMKP>zxo&W#< literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/run.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/run.png new file mode 100644 index 0000000000000000000000000000000000000000..5119f14313af961de4d8cc5f99055d411f92e0a0 GIT binary patch literal 866 zcmV-o1D*VdP)i z>)6HG1no@es&c?FluWwU3S~pY@;U=b-yZ3ie)c?j3UKs?^?Z`B^WC;OxhrQP-@{>W z6?6%qh*7Dvv9K0k!;3F7mYlfoVXnFjaOA>jA7je3fnH;9s9?diG$@J!g*~Z~mPn*T z%a3sDp@+q4dmfMnFCHzdbO5HlU%Aqshkx^8k%EciZ@T#JT6iq*-5)jhBw?!+qTC35_TCqBUXR5s)8x>Jfu^h2+h^nW-tPYa z+}jX1H&aEE+-QewRO-IZ_Mf|1&TyW090NOS4vj!YQ-Ih1Ww04a{J7M@Z_7SeDd43H znjvbjtQZ5TOW5A+j7F+{wQ=tB?3sn4=vcM3h_JuKg0@!MVSX{0`2szOS z(&*WlE7@*m?B)JmI3$CcDpZnUa|IgNng%KDdPoV_2#L4<4*uSo#_*C zbghtc2Y0`chwGX!44qt|R8kbBOd#44^}2`o+pBo6x-qY-+QC0h?pxU&rjav0=P9n| z-HbK4YoHhX#Voo=l191ksOtUY8tyKvW3%pE)->hB-0A(*=ce)Ldi9f^CW!JB&BTE& shi8y5G`*lfdao-AEB*EHyU&gDKRC&PB0DRReE3NZ5Q)pZz21C> z6?j8tpi=CNX6?^tOHU z-lDu>*7;|Le(LTQ*nGL<#^Fbs?Kf@TaL?24=J$f&iFJ4X9h`MtW1G#I%a-~<<%gGq lI&eAg?U3bZv!2{;OXk;vd$@?2>@-yi_ic7 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/secured.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/secured.gif new file mode 100644 index 0000000000000000000000000000000000000000..95f0e0670e33c78ea646f5dc6f925a7701d8c783 GIT binary patch literal 363 zcmV-x0hInnNk%w1VGsZi0M$PLlas0by%x}M3I5d`*rrOqxVg*A(zs|2<>u?$+u{5B z{Nlbz{-h1U!_fcrEvcHA|BD0v$`|6|=d-oKy}iu;l?JJ*z5c8Z^Yiul@#EyeKjOVV z>A*#*s=NQP54c?l{+kQ1n~tZYwdm;Vua<)Uod>S1yZ`GX%BDA^ZXK#~AGmN2-Qei& z@9>&R4Y_|9jK+5nkIu8#tMFa~P8yt!o8yW;fC_6b0l$8!J zMKUJ?oSg$60!20h0i~rLAQhoRDFGK33=AMW5D=?FDiI#AB^9)`MK>=iD+k6O$SzOI J%*{VR06P&zuEYQU literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/security.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/security.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f59ecf076dfc56d240fd8487039287a828a2167 GIT binary patch literal 1029 zcmV+g1p50&Nk%w1VITk?0Oo%H@$vEH-pk(J-p;B~(~t$u&d&ea3jgK`;^N};nF6Jj zcnuB|Fenbv($d-4*}}uh)5V$9)z$j?`rg{d$;;Jwd3pW){mRP9aa<3zkPZLoSL*8O zfq{WkR92apndau^p`xq)#so@9NWHzi#i|SJ?Cjav<0~vNsi~^Dxw`$l1+A^Fv3Lr! zw6vCP4)*r;oSdAIk&^w@HIU6=^z>3g4#UI4rl+UAv55cB z2mScf>%s{Cxd@qr3e(fnsjRcY!^Qu_38SQ@k&utq+1)=j68`@FAtEB?&!()bto{H0 z*4Edrvbq))8Xp}LyS1O<;JW?vbH~Zi>FV&>+S>QuK>yERnwzD+zrapJCwONr)zYr! zvjqR40B&bc#=)(@!N7@&klos~o|IRHR14axC&$Oh_4fA9(bt=sn)CGc{Qdu{tE-@& zpYZPA|NPFBl$E!ufrp5SjEsx_?+D=H>gm`G|H=o!x2FI9|NsC0A^8LW004ggEC2ui z03ZM$000O7fPaF6gntMrPIVl2JY52XkdcFIaVc2>5d{|w5e*{^DWL*85jVxg zSvLYPFQPLW94*rhJP0VWBLX%~(`=Z`q7DrgUDE&!1#rxYaN)ule+AYQnKfhw4t%q6 ztSQq^RD>2?9L%zSz`+F^I7$F`B|*ZHQ>Q*eKyb@Xs1G-e#9}2fhXi3LQLeH9N|FN+ zS#p%vBme=g7dUg)sdM9kHW3K?6fRGILgzyvx!eh5gyfrEkxp(YTJVFk?sDH!q`*rP-W6A}ju zWRSApgo`bq3NVnNL5q?F3xo(KF=YV*AU^nDSioe;fKWpge9<5yO!p}y3>*-`Tn8T` zDi}zSLL)l)0WyTJoOj?EFdlG51VI1;3-l*R1LTRIh6*9LfSr9IsBoPWECeA23;c!B z0(mERkw6V9=ztvtDi}e)djuqqKpHnha+3{6;1Pov3fR#@4>8o?1_VU*!2<|=D4;-M z6G*&}g9U_fdBwIB9GxV literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/sort.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/sort.png new file mode 100644 index 0000000000000000000000000000000000000000..258c16c63a20f7474764507475af7961ecf4263a GIT binary patch literal 683 zcmV;c0#yBpP)A3WJ2dfsV78ToP)wU4~UJxT^#Yl8pW;T)B2y+W_BqqmW z&#t|w0SE!KR$a#7aL!?!V{G>0(f7&GF0n$i_yAiovkXpE$M|c8KDe}2*w(W8jK3Y2*x)V03j=u2XF48q6F<0_UD&z zFmi~T?K=p$491faq~>RsPR$VB89_xzOpK2V+=|x$1lD3~x!;g2Mz5ELE831k>xd528II@{FM*4t5cwMI2$KMmfFm;RN43xW+e;$tzEyd|PV<@i4gUfKh|U-I$hymfQ} zt?kWDj37pE;wZ>1WHG%+SvbnRqEaTN#u*-slSm{u7_C6WGBh|el4$>24G=QE;Y9f< z)G2BOvC3T5Jn;{4ig%R|E{ITA5W$|ds8uW$Z^f(HeLnnp>dACn(D>^wEGjH6Et2~F zjpx1H%%|rOCx{iqDPk27MT{DNK*OCgPK;oDLHt!jVx&(zZS&Lq>Ld9Y&Ck!LvbvJw zmn1{|Z(}o^vo(KE_?LWN0K=9E}GU>6zk?}DjONkrUX=2;OXKRB5}F(v?pJ) zfq=`!LvJ~aSx(qo`MZ8*o}i`}_YdyrzdYNnUA)z987in5jj z`2{oVnD;EpBUw`jC?MnM;uyklJ-LBd&C#GBA%T~bnX$@Xh9VE^4sC{lJn41r7YZ%{ P)iHRw`njxgN@xNA5_%=W literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/table.gif b/manager/media/style/MODxRE2_DropdownMenu/images/icons/table.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b2980c7eac0d5a4a3efee1a67d41c1d558a3d8a GIT binary patch literal 609 zcmZ?wbhEHb6krfwcoxU-;oF}dzyAIF{qOU)Kb4DaELyba{ntO6Hf@Tk+4SlApPq%s zwjI9x?bpB3c~{C7T-~~LYg+e#rAwFo{`2qE$6qf#{CfB0PhjE7z@n8IeTTn%|MTYa z?}CX3i)Nkw{r6w;w$Gb4Z*G`(JZa1O_~xAn8(vo}xxHb-h8;V0R4uy`R<;%hf{Ry9 zojP^>`t|eX&C8#5I%m>}l`B_9RBcFT-Br2xX7SuhUw-^eY~8(U*RHB1w<4-HhLo<( zn{sOP>eZ<`zb#+BykO?Jl#YG7ckd3bT-UbtZb<2xNn7r%Sg~T=x^){jZj7nh`s>fX zuRs3gPe1eR$KUPSx6ha{BWKFVx1ayS)NP4t+@9RN7YK^yTnsK=HF4s^*|TSV|MhRu z&KK3o@B9Y?2HFF~pDc_F3~>xPAge%e!oa?-A+D*pr8SP*HAdZng^$-n#$GQ#fjiDQ zdgiRzv!vr<7A#z}NFYuncE!q7D?{RpV{KzY9sQ#C13gqVV~yfiVi}`&d^w{S*rbF- zVuR!OV&!7Z)!3tS7!2$LV?E<|W4)Ld8F`{4Igg9Ra>RwjD#r55+eEo}v+7318pip= z$_lY?TyP5T?qy`&CGc_6;?o^^?0qg5f*ejy7LC{y^YK&CRQC|^JsJlX7&~|cg9M%k UG&!|%adYvUoa0#>puk`a0Crmj?*IS* literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/table.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/table.png new file mode 100644 index 0000000000000000000000000000000000000000..7099f0ea236a09dbca528f861c0d4c2f904e37a8 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=0=E=HN%Od=mwM>bOgS z{DK)YR6JSzm?!9N*`(7Fa|tNy=jq}Y!f`#hp;^UIK)@?u#$IV2F@ra44ZJ+kl1pUw zuu2H>v|LG3%~s4*e#*-;TVjjk4$&EA205ZVd2jec?lvs4Wn99&aEFvq=z#`ChO%JY V6p?ic1Arzoc)I$ztaD0e0syJ$LO1{b literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/table_refresh.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/table_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..ab92010c2c970d77e0412120172b4c04278fab5b GIT binary patch literal 795 zcmV+$1LXXPP)pL8W^+72efa&*(*OEc&2j); z!-o+QLL07Cg!0AT$Kd7{8Gf8Hp+ zj(3rXQmk%lW6j()UR}_};#?C=4b9B1n`Z4-uMGjjP7U*(ID*b|qeM~2>ERx#siwXv zPydZRhR3epDvmzgT)$l+Z1++h(Cl2B7yO-#{(Z{jNKT??rIrPSN z9C@>oa%mbXMC#($jpie0=Rjn!qCWFM2!?VK6qs( zTZa1hc}GtfAar7Q?@2`P`to{a#Q_WQDe7yI z;s_Q#m1cHrnuFcDnX=nN3FV!yUt-f2FH&NH4eje#v1}QxA}41u@SY{}GK}0T^GrjE z;`K>(9eaz~Yz?i8T2ND#ENVu*VqO_64)e>Io?aC_8f-mu>8vhZ1w$JZ~3tUqR&JfiL{(i^x9vs^Z79NEq0KDX7&W8Yknf)h70Zq)LJ zc{8TewNCM3XqVZSfB2-LT&`Bq>gT=lXS2J-35c;KUwL)y9?%{JPgg&ebxsLQ0CN9t AHvj+t literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/trash_full.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/trash_full.png new file mode 100644 index 0000000000000000000000000000000000000000..ebad933c8b3729a9b27dc34c5a111600b8d46fdb GIT binary patch literal 476 zcmV<20VDp2P)!P6q=I0_iwCeRuEs-nY*ui2wlBo{da&-rimXk_dpOx8l9Y2eXq^TiLre{gv0N zh@vQpp3E(_zQv8WAB*@mevb>S`MD?sAf3NIKIx==eZ#Jr9#7|~0H2e>)YKJ;10yn{ zb~SBXr^1(^@_cc&7(P~SnNU?q95~@CRVtL1isxZE)U%{&!=XelB6GnODxd1btErjO zj_6poZCs)d1RVpU;qKVX8HX|rHyyQURHCLW%8}-eFWR-IYhR*iQ-E&#nFI_$K^_5DwQb0QR_*>mIH#Cqd99N2l)Z|DPKCCbQ(9lp- zvu47Wa~kew3p-R8Jp8%booy=RR$@JQDF}+Z*eRMM5iCB+Uxaqp3-6bf0D%9X?O z>;L-f=!0(jy!ld&4?0f&h&uc2QE{A)VDvGar_(M?T&j?#C&Ys&yt(oIBv{l_`5$c;1a{~WQM={qB^}9=0-Dg`7q>v zlJE3km=nd&^u}RQFvE)bZ5y%~CI?+kx$6y|@DU7o@a`iP<7 zjpNGuZD9`?=0-70d72XXkYVGUX@9R5E_hVA<@Ve;(Ljr$y1W_wzH2j^%s?Sf{K>+| zz@W{b12PBXCkD0}hbaXe4jKVGEJ8~w1pFo+_T*9x2o_4uI{kK;U&LjNsU9^x8NtdI z4=nL%Tbt;*{_>RR{MSb@mt1y@2m(RHP3Zjp8QcO z{&wDbSxBEVw+^B>BMqB|Gm2 z&-?r1%$)f8<2x2iI8~utHT}}t9d+mHv@`bqdv|vE=TBck7yl2K|Nro{&&65wR~~&? z*BCy*TOeWk|Mz>EBbWYLed3RE@BbasYZ?yzpK~&O#Q0u|JRk6EP3)j^W^{adoKU}^VchG$-lq9_ndrK zbmf1xtI~|MS3Vw{exh7=euPl;n*XtD{=M2RwL~E)H9a%WR_Xoj{Yna%DYi=C zroINg16w1-Ypui3%0DIeEoa6}C!=DfvmM zRzNmLSYJs2tfVB{R>=`0p#ZYeIlm}X!Bo#!H`&0@P{GVh&(Orw%*;?n!N|bSNZ$a6 z%ybP+tW3?UjLa3FKnZADQA(Oskc%7CE+EfVDWjyMz)D}gyu4hm+*mKaC|%#s($W%S zhLMpjP=#)BWnM{Qg>GK4GRy>*)Z*l#%z~24{5%DaiHS-1r6smXK$k+ikXryZHm_I@ z>>a)2{9OHt!~%UoJp+)JUEg{v+u2}(t{7puX=A(aKG`a!A1`K3k4sX*n* zAgcnUy@&(kzb(T9Bihb5uTZsl3!k|30CjxYvq|&T#}fV zoa*Ufs{}MbFEca6%FMvYz|qpe(Zs?K2wcsa99^88O`VNhEL@Ep4V+A2dR_99OLJ56 zN?>|Z5PF?(>IEf*+ybD@E~!PCWvMA{Mftf3U@u!`;&zJ#PV=C8Q*gV*5~p5$pkwqw z5sMVjFd<;-0Wsmp7RZ4o{M0;PYA*sNYsUZo{sK#tpFh5T`}*bcr;i`rzkB=U^{baJ zoVgsyL#pFrHdENpF4Zz^r@34jvqUEV zojbN~+qz}*ri~lcuUorj^{SOCmM>enWbvYf3+B(8J7@N+nKPzOn>uCkq=^&y`+9r2 zyE;4C+ge+in;IMH>uPJNt12tX%Sua%iwXi?qaq{1 z!$L!Xg8~Em{d|4Ay*xeK-CSLqog5wP?QCtVtt>6f%}h;lT#wKO%<)l^lK zl@t}^N66#czBqk6=sw>yNTx1#0pFF1!c!8i;8%v zNA*=z@>f*zo7(g-i)rc#2zZAmvb8d2v0JmAXSHOHJK3zwA{QDHrd8@v#F7=!6wT=9 zns1U`#w{D{#~9vZoZ@R&E0ye^Q|zQ>l)%#Y;V@&@4AzoIcMb%qo#vNl@|dBixUjLg in^#KV;>RZ^7I5SyX)sPuU~J&g%W*kyb zAirP+<f|9hJrRFZqaZ5qt^^420I1OA{l3hSQnlwEOZp1aAY`Htyw6Q)zHv5yR#W(xfI ztrHUwA{{?Zp~A&c;un*>xbGT)Xd5`ztN&S9*4*m+*r$ed zVXKd0`rBo2LCFQtpBlvG|aSh{>zG$)Bjd4riNDu+P8{h zHL$+J)Y;kCcgg>QT*=SW!*X#}R8wDreV{>O#iwZZ@F8usk$(vAw3o413_|J29S)Y8bb7V4B6_@Be9^(f{+>p3Cm^_50qyli|mp?%lsxzyI~n)%eGS|KhfdVEZwtelV5h6Vu(G$etDL{Lt^fc3A^8LW004ggEC2ui z03ZM$000O7fPaF6goTEOh>41ejD;^6kPsk^j1U-Fc}^D@9h8Y68!Mt1AsHDjo`)JX zCUFfbq!|l~9#wc%9+QL{K`d+=uW=?05s4>8Ml{M*7K5M|31vpA7g-v(eE9H2L$g94nDlXyBSV6dM|;@N0xQp^1#8r(G0^8K zArO84wB*R)y)Z@SocphuJz6Q_>2Npr;opBktJMc6PmM;ECddISlA1r7@gE3||F zQe?!98wjpksjvrQ1O;=uyy1f7K?4Uc_uX-@f-{BBH>iNV!eh{jIst;i6z~Pg0s%+; zu~6Wm^AZ`KD^wsLru(1r`C z{P9Bx9JHY(n=ptFr<^;~xdWbhPJzRrQ}~G|8Fjt@z@v~x3TZo@gjwdLn3h@Rrkr*f G2mm|BzV-e9 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/icons/world_link.png b/manager/media/style/MODxRE2_DropdownMenu/images/icons/world_link.png new file mode 100644 index 0000000000000000000000000000000000000000..b8edc1265db4bf69814875d1c10b8761f7009e23 GIT binary patch literal 957 zcmV;u148_XP)(^b;|pVbz=yzjpaJj$ zhrpuriKefui_0DvN;1Ymq&%nwWg*IrK!Xz^eJWuq3u2H~0ra?EC@ge%+`A>6mV z9{TYo{=G6 zt@5m|4G+Q2zKv;Ch@O;`PfWArmB5n3gvMsxV&Iu>97{a!2kL74wd@!f_AP^O%_&ND zm}1c*+F;TcH^{p$P_|akvD5o7vmT>HCkP;z;;&+8tDBI;koi9eX`W!oH4`pYaHlFZwV;$>vvfQTw zM-`m&R_SPIBa^FUasC0GCCh%{h`$~db`z&-lFX#%(f>H6JD6Z(sIW`RKE+xOL+?+uQ%q z){?+F%=6pqEH{6=NzusC-*<`PZYiLCGyKD}Z8^V8ul-K=AV@SE1t4~D2*b1(9UUc= zN-;Dv#Ngl{rd7e$ZUPXC##BFmV>$26ZQi?6Po#@{4gllsPbku3Vq${Y+FAf~T}OJb zGWEz9{(zcvI&CUaN&p7GcqMG4&7ULx##68M4k(F4l7Q+Xm&>uSv4N&(w6?a=)YOC{ zoYLN-J?7@-9xGBx007$C+kK7w_2Z$(k&l}jo2#`dO;J#Ipsbc$pS#^Dy3Q&nSeE5x fGMT)t>sS8=`naU3reLNz00000NkvXXu0mjf)bGN+ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/input-bg.gif b/manager/media/style/MODxRE2_DropdownMenu/images/input-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbbbd18ba62673ec1b56cecdf4b3c497350d4cee GIT binary patch literal 67 zcmZ?wbhEHbWMmLxSj52a|NsBLfB*jZ^XJ#EUq65T{Qmv>*RNmSym_PelZ8cu;Xi{8 W0}z1JGB9&gq`7=jI5m@j!5RR~E+6;+ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/_tx_.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/_tx_.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b2a9a8a387970cf8792462c203270d76e5d13f3 GIT binary patch literal 85 ucmZ?wbhEHbWMp7u*vtR||A_`b#fm>!7#SG&8FWB8L1r+pFnw@kum%9m87~F^ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/ajax-loader.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf9e7ccfdd36e128ed295b1966f58009fbfff1a0 GIT binary patch literal 9427 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 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/button-gradient.png b/manager/media/style/MODxRE2_DropdownMenu/images/misc/button-gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..1d681bf6fe6c367804bece595131873b038b86c0 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^>_Du;!3-qlJr5EAQXT<5A+DleaOlvXA3uJ~nKS4A z|NjpkJ}f9G2o4T5H#dhfzJC4s{rmSnfByXZ`4h$<`blf|rA56m;#`Chc>y=arua1fMwsQyE8pVPNVjQiT(Kd{$0 jv_GIB|6#Vu`X7w1MLGX)ePLP(G?T&8)z4*}Q$iB}YxQY2 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/ed_save.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/ed_save.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c67e22e08f571660850a818ae2db111e2ad2bd GIT binary patch literal 918 zcmW+#U1*MR6hGpET6&us7b{%JSJ5erm2xvAxg#lM>?AkRRw(7;!kCo8a-tW}wlX$t zSd6t9vm8xoqSwc^*GIhLwXJBI?f9MNe|I|P{JzfftlLmpylQ8PQuLR|eR%dZ$X9ALwIjNI4u@eel0~%OZ#xw;_ zJT((DHlv_LrD`gsY)YX5O;HmuVG{~bm}NBTve#Hx`Ri4hxt6{-OS(NGCl=z$p6 zfCd(pDGWu8C#tMU;SaQ^L{wOX!Y)*x$)e241oseyStU_oCD=nAkcn-?0sjyIhfobL zh=xjxLI;R}4QOCdBo}Secq~E@B>aIE6|*oQSJ;ILG=*3QIU;EU09_bI&~S?=kq2aA z8*xAr48tK*0}P_E30cqqVqgQB;zTixHflV=#SkR?fff~0d>oN$a_?v+CybbrtHf*) zbflhS7pqAeafHNSASI&XCW(#!PN4BQ;7SM&otjd_FUfotXId zdt~&}=dW$uFRnMYHa+V2ko}S$8O6Zyi|Ok0jhgyfdb26r*wXOeap%idk9(}sdY|^b zK9#eMy&ufJ>mL9MxF#nj@#!xZn=uVWX(=?| zk4O>CtRSCNw7%);+9TtCj`5zeMfa*c%`F`Ilgg|-HGR>Vwv)qGN>3Nw?VD3~dvNvs zY=P|BdZ)bj#FFi06;&%Tt=0L0z1e5yF0~(i+kYt6vnkVlaM||@%?I}F*jVYi%Ssk* bUVN{9%e=uSZ)Sh&tK3#zn|r=|K9&3jy_e(5 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/enter.png b/manager/media/style/MODxRE2_DropdownMenu/images/misc/enter.png new file mode 100644 index 0000000000000000000000000000000000000000..b61f65c46e918c35f201c015dcd1a2c619b32d3a GIT binary patch literal 299 zcmV+`0o4A9P)?Qxo%gcGMU&d<1abS#5 z`-ieC*OaWGri=<4^nP-5<)HVCgWfNWDh_(zIq2PUbm5@)o1>1S2M4|ThH_D8C_$;E xB+XsR=w^8mW3ue2QhC+n^L9)@WrY-N{{aabVC;Gne(V4M002ovPDHLkV1gP5iR%CW literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/fade.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/fade.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbdc7ccf5841aee17acd58c3153073c7cedadc7d GIT binary patch literal 670 zcmZ?wbhEHbDG(kn!>3MRfUr8z{~b89Z(=1vk07Zw&1TPfzk$Y{-|6{@wKQQbmR-Djt0uxK&| zhmum5(jg9aU0nmiSVIF#OFrf+SFSQMD+fx-Dofs#jZBr1Nqzq0xkrXd#=E!g7(O{` zIDKN!VEVrr2n8c~C>TuzL26IafJC|Go z&q@bINoKYxi2x?HrQG5YN-hTk+|q= z1QihU2A}tRe)q%ua{oJ-?9Q2UX3xx-J+o)_&+?y50PMD^hAIFE1OR}z1Mp`Rpaj4J zUE?~(!vPEdUjqt(;6n(ZL_~y8LP8=EauOn9GGanPQaC9YISdAe5s^?(Qoty2=df!b zz-vxCFcilKBPJxqmHt2Rrw;&!0_5-!ctAJ+1P9{5fqw=7bN~Pz@cM551rUS>02AU! z^tkfB_?H9%0P(>1kUuK`5jNGF(&zwZ*rtTB#R?Ux)bdWe^A5lJ<-Db*?)FY1pu_~9X$leLnnWG8Gg@N}yphb)07 z)+3Wg(^7R`LcknY)D-Lf%4Omv1(%L48#`uvWidUaRO^;y*{gfRf$Z&k7DgQ%>{SLw zIn^eRaXp5^hSyM?eq{AGi3J2)NDJPNLYa;r0W zW$C*wWqmjJc|pI)D{-lLrNvK+)xL|bl=PR6+;U0jdFKPfEb4Q0-c>vf5!ck>({^0G za2tE4$=7+%XsL{`uS`1)A{Cjiq#Xk{fz$DfK8-HEY9v%mGFYJRsI=I*QGo$dZ@W{z zVmB+DaJQ@Q=6%}2IrNT>F(lQWLgIVrOuLhS7{zT=N`s}n`?ATJwq}{hY=;-IW{I(M z&gWJN-ky?Pl*u#23V%{Uv$W#rN=uQ)cd4qWiHrp;ol~-ZvHMNl$?H|zChOLTu`5p_(;EigvCyffygg!LS9GVR7L9DE&lyZ) zgK1}=6MH<{sheEQV_s>RIc*$T%yXMWF4y8ioy0vB%BkJUB15RE^h*m>)LfEGUaDq; z{ECe3+WHmEFR002Xktv}G~WecvYotQNA#TwE%{2zkn~s#?T|F}o(G{s>I63B?E&^~o!P@ECP#p!c<>wO{wGp2e+3V>>a< zF%2M+Ocb(!6j8sN`c|1ag>nPLOV5`KBe^Ej z{nLsWle7#39gF+&_9jYrlxT-k^FqasTe$X`NylpCT9ADHwStfGs}iF+o}Mo}QtI;C z7c2`QEScuaiM*Y;m}_bvVAPCX;o@%B;heZL8(+jz2%Jvn>!gg>XR3g zDXldrDy7-Z zd|eB&b;b*`@7LOTgc`o^NS(@mzOSnvc+0q*bU&fyG)Mh{bbda!s=d~@c|-syZq#n- ztP+^ZS9%}(Ge^-)BcWR)Y_GHQeE6RBx14Pbj@MIV`Ls_)b@NVd?{-PDL0?aioN{8_ zpJNZqbp6c=cr)xZ-HJ=X&2nx_O}HcRNhQ1|D?>2aq(ZFPG*Mm!^P?UZrlr~WPqN0u zme1spFhzCkvh-47>tySDvoWUug|ovhC!ZWEz8$R{^e%ONxpUC?5>H?soU*p5xBU`v z?jOh0K*Y%S`gHHZT-IrX!45WL_=S!4efvc7MXSsy6<(FRyOVLb-hPu!y9ZoI%v4F= z0kT~(VE@BGt=tvfD}o0RE1kb&4;H0k4vQQ)-Ih?flMASV$%cUvy6sO@dS+Rk~&Byr+R zR)i_YJ)O^B%@R0W9A8}Ws=&nR$CjhIGtRLw!EkQvuiN{t+Pe(#aUuFT~%hF`pRk#%yyWOq&Yi+hjcg$c5*Pl3DtlmGzX zP!0-paJt4#-Lv9zj&vQIEOmR~zalv(G@{>fq$@h5WpLnH;8euXoH%eLxc|Q?BVBjj zl?!)4n3kn+lh)~9LUy{k7ANI(tu$P99S!-rzYH`uoyOBC{$aKMPfa?)zmoo5s^i$X zI9?=N-5Z~3aM2nc?dltZ5_n zI5I9dc7Ab8zD}nk#C71AQwC1+yce$6us2&iLINLJR=wW5z>O*m3^%6N4g3px-|)2m z3@4sEXgpGu|GFM041imR0r3GK+`{LdxBI;e5f0k&gyc5PAyQWfT~sG@41jqFB85DiGW5 zT++*|r=;$mghgR>%x$gYO1o+tBlk>Wh#n{Mr6%-7G~))n}=V2c)`TKlb#_GBg4{{rpJe zbeoroCHe^@5^;qS}a%p2RevJgQRpYTLI8aUUS&^QClg%q9ee`sykOXzk;$_QJe28!Y?VJ%5B-0cL(~x=oCkTZlbAUnu0}sDQ4XI>|?DkQ7)?JH=**29S$1ZY9UsxlVlS_?6YLc@4U>#58J*+B@`wyCx|14d%YV! znY)@dTs6rG7h*utG_T1NIk9&y#|GV7By#}y~DCpb!MLdQT z)^GLBd}TQn{@3tfr);#sivA%6g8h`n+C>RX)@=!O`4YKCEd&ToQrZj1PdF-}$!1TS z0&sbo;w@f4eEZcvN`2%!rbLc~f%l#SLk}-r-w@v}(D)~$H>!4EKk8A-$+;gONzMqu zk0yCJ43nmnV5WgQ@db(mQtEFC;?Mf$LXE6TZW7!Zk%{lPOX+V}pVHbgo7Q1Iqf@l5 zJX%RC%rr zcgehik4fRc@>v3YLb#NBoF1im97|569$-nLTD#KA^fL-DR?wl7VP31ocErS?e>gysH_6y*k;`Z2DmKN%it44_kMyTGuufVL9P(#Yz)REiPbg+78b}Pq z`Y10S|0Hs^y!a?ZvPSU2;+ejK7i>`GmqN8Hn;I0XbXj?-$T@?G=l}R+U%P0L;t!y3 zmy=9+zYDRDctYVr;*@o(9wloTg@F_>Bhi>O1q+EDcm^~m(a z0o9w$u!qTBfX&E=7+|hm_mA(O6LjHrY$T_eBA}uek(CycS5-r z5Irg>io*VGiX)h1${e1d9bQw!AW=^!n_6S`%wo&c6-bnqx9A5nJC~!C=Peer((%F( z2aJAHVkU=Na%{*Gs^!6fC~Za;!B3sao|+A-O}0`W0iLL%fP_d|V*=W$8i~l?L>}Qv zXelEG3l?fgU(g_9%C8=XpsBEzo#;K`tnC-&WlG($EIL^v_a|=D4j47l@^x;)!`M_L z2~ydR%uSazUxgM_=lBh5*t{dYi@p)YE1=&fRd?lIaw`z?%fx>2-6jQ;=`$k*!z9Kx zGF&^^H0rw`64_PiN>U8?ic&w5BrYplourQJmq*^{tejA-2x7N8w%s}yy`b5F@{NLA z9^x?)BJpMD2U~a%6tFnMW#ziAqUZU%oH^5>`B-O@UxQM*%?rc5D&}p;PjA=PViG=! z^!CRe1<0+UfuF~9j~vo5{1QoaBCtPz9<0ZU4Ou!#Ik1vSC;6`vsb6ZZrx>*FZ8#=Q z+Oh0zkRcGzU|M$BO~^-yHEsa%JJn|}vDP=eO9jvmeZLjw6+q{KKC12h1WB)77J)1u zOip~tjptz>AYkzljZWQ2bDHMN!;4XZbxPP~O^C`{URLx%T1j;9CLBOB#LYSkmb9OM zs$YWn#KTO-K}=z2OFu=B)ZJ9Ov>a+*=Su#wJf^$iD?{%oIcx7LdnwJk>!m(0hHhru zQ$n)KLDFgoyZpvZ1N*la47Mc#=9gPOd)8`RlNdb|`#tf5uyPQEINim^4t_G-HVJ}97 zPU?V*XLZt7ik?1czv+J8Ppq{AGIbCKaxzQ<_GA0eGw;QsH;D2 z(Q<2mRb(ZI^Gu@T0eVfr6Y(I^Ejs5XcU z3BC`c92togT*?`@6JvRsRK&d(Z0~e;)y=w2sO$(B`Y<@kt*Zb$au6Ib6>vghDU0yc z1Cl&yTX&>7A?YZR1+S>FCU@=1b~|jDjp$|1{D@v8P&?0wOz^P=qXT~?CK!QLbfm`I z%XS$@1sz(@cYl*Vu;0GOhk252L0*2@hDgTEw%tz?j$r0xf6kjzlbuoXcK3jK`W`e8~P}!2Xi4nX!Nw9>H_99HtlzD5N@?}xQX{m=mBjh9qq5wS1_^l69yKmV3NG-ZI}-oiAiHA zgH87HT@N-d3al!<(7kc@;tyqSzEP~3x@B7vUn*5YAPP&JbLhu0=h?kqC3h+3ro&z~ zJ0PuOFeJGR_%3&->Lau$V!NkvjiROYzo{KE=YD2l`|*)5RAur^=om(rhvq7=g;HzNEtj{!I;y{EBl=Hr`E+oI?nScPk;T!{tB7znp`gtryUuv`{?`S z_oRH^lF1c5i0oqG%PPDwc+d)v-v3ZpC{NX|DtPhEG+V`M3u-1UtE5}s0jtuESp6F_ zHweyQqUl$+L0B7u zI*EM0M>K!!^lul`xL~Y@nJjIhoz8f5kLeUv*7WvyqF8v}1~uD^i*VfdUG=Zf%by}b z@0wV8q7%Wt?b)nfYvSg1B$qEQdaW=)mn=4A?7G5F*X|GB%uHI-;@tpV{S*O?9%0SQdN&9r4x02V)awktvB;@2Br%UD zD9hg~iWElR`Q|zlINcAA?J3g--L3cmqnl>Rh)Tvebz50oL@?--NlHW7z z7FnL^8hF)``^-yLutjv7o+=rBo)XT%SpQ;PavT;E8ITjDwGvi4Amvl}8r@AsVHRE2 zv;tqbaTc@1PbsAnK#qkEOZ-Y`M{eqMJ3LkFyX-B7h&c>!IYrot_|lsBhn8zOQK%{= zym(mdFOP{lqzE?jB(OmTGx!WVJmvT^<72gSv= z{QSMsZ`KxN)U@_JzDeQ6W(*BAG2}*+G!0ptz3)? zxpTh8sSl5xH(O8*WGss&zBC4tGF$+fdSk;9>etDT#YB64%a>HgFOU&I_bZACzbBh* zj&+UFDSsb>FX9yx@ymtRHHNV#1mOLi9!jjod}|z1PFkSz%K?ss6i=R!xfONoDkj%E zolG4PvuN9U=W6EcR>?ZErJ}yzKgvA|U;CiM3pv)?GP(uqNg9ou|H6a5V>TBbn3AeM zCSad>2TLg-7Gy^qsIng@V zRX^-TD%ZV4gJKuXo+2bZ0>ZyGR)q%;dI4C~_~<_ak?Kz6Fc$v1Sr3n4eS=@`E|TaU1t)1dOdehP1K9LC_~zGI zCU`0xn2c6cKk++RJrWqYgQd=Q5$SFyka;0^M<%=Q!8Cjv?ed$2Jq%0Xkv7pI_WV|P zWCwv4OER{p>I*3KNl8$YGEzG~DMBj$V$f`yx=U!+sY$90#wHqz;HwX|Ef|K2d_IYL_LvwTDakp&5`WaawUy@wP2O=r+Np|<)@C7< z528=+N<;@vm6`8>MF_Z(QZ4ajGXX9U;wDTNXvwV@^!IS3!;$4Lyu<8|)@X;@vYj3j z)YXRdLg**RSfkWc(Pg{D#Oip8T?2HpqO2c-p4S1X^{Z_xRud|ltm@u@TsStWluKZ&dCZ;$9bZx?aJu3AbPGX_BZlp6bf>@_r{AYIbZ{}n&5#NkW(^K z5%T&qXfD$h{0BfAoRvD*2hniKSwSk~9nXq9g&t<=_ZWJ`T_ipiSA>7_i5lqN%i8Kv zk`7F$2@+m#ayiE034C8+Vyt0ha?^DgXQkE=-#}7wvvWi)&i{<&yB96~B1QIq#gFXV2ZixhT zfn-|Ig~FqE#(N$(wgv13(mR-O^2UuB23UWRMOu*YZ~@ZN2nS$hO%mG1bniQlDqM}lKd%%* z?`!S)+lMLchEq4#zr(E_sZSzEK3Cr;K%RYO`UBuPG|_uxL~Zj1HXRX{kkZ2oV%cJH zYnt<}qf-@a{oEsa1mMK71<>sR^H|zyrorBCBfLFW0WYR*E@<7cQ{s^O1JDP=SiJmB zdz)dASmgZ*%W*Mr6W&kMstkksk=Xh^`QE$Uxjzm46o7P3*)$HAMGxNVg`qlKQ z1Nvz7q`qXb`9TG4MQ=QRP*fV2n(p-n5KW^hlq>wi^rQ(Ree#`{9?v-^I{2H&jGgTJ z`Kd>o9KeAk?iyAg9~hXnMZ7ID0P2aW_$IHnt~50tbb6(|*WH1IH84M#=duocQ0Phh zgitZa>fqv0VBIrEeV>#<;o}%It1F|DT}Xw3?81v+GY3!LE22w9pBqQp{om{zA}S<; zlk-AG0xT5wXOnXVFz7!3y)@sUdvVeD#jXp}vey9*W;iY!cpc;WZWS=Mh$sxh>D8f4!9`%rdW1Do}nnuZJRPRdO@kP=*9}BZEh)IDJd2Hfr$0na_e8gU{1t z8Puv*H^WxTB}jsiqwY=@32nOi!<(8|f|3M)h{HhoU=p<;wbx z%F@H!(t|nwRj}vsrehcxEjwiD@o(O9;3kh~Y<~~|6 zTa})k#0*ln%saPoh+GIl!bqleR@K8~@HJiIPP&p&`fX>9SZ0!(4=wArj8>(MtrynU ze+2%pUfvk`uH@Hc*-=?lXU6Zj4nl#cSD7H>N-MUr!sO+&1Qk!BuKOrbLPGdku$-mW zT!3+4V7qk6(b1RI*4D-1g( zn!Rrr+74legubuyF?9@OE?D!1u9U-6dm<$mNGoF(bb-O|MZZ>#R+kxTx29IK99CB5 z8w)GoM?%T72QmhHGvXXHoNy8R=cuhb2@Qb-&EMPYhF5)L)&($ z3r5hDe9{O{8oQL(o=9kKPmemp>0CG5Uo5 zm5U3@{cj@$04YE?%f)R*{AVu$M+5=BIyrH0PRy0*8C*Z z;gy+L@s*X$58zK&qu0k)zm)@@F}7s|1DJY%Xh0DktcV3Vuc8cOjE`0ZJ3{+Jq9JWP z=xZpzCF4oMrmsg7_ED)eosAah0)as7xr+#6lg*5#p2a2Z|mbFRLrN!(mId-p3j=us(lD!6_}W-4}a i3G-4)s!>#`v3}Pj?9*_!^8XFhtSF@d-#>sq@BRlSW%DHf literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/input-bg.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/input-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbbbd18ba62673ec1b56cecdf4b3c497350d4cee GIT binary patch literal 67 zcmZ?wbhEHbWMmLxSj52a|NsBLfB*jZ^XJ#EUq65T{Qmv>*RNmSym_PelZ8cu;Xi{8 W0}z1JGB9&gq`7=jI5m@j!5RR~E+6;+ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/li.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/li.gif new file mode 100644 index 0000000000000000000000000000000000000000..f76f19d39ffacb9cae186b507abee0d12d273849 GIT binary patch literal 189 zcmZ?wbhEHbt$9+13p<;uEs>wt{o$BzTaGiS~K$w!YK z0ZBO6xpU{ig9m{mTm-@ZDtrI_J%oMe&>||iIdZ6ByVp$fq zswyLtQ~U#uCYwU55sT)8=s66EtpO<(Jq?PX9SW_TB1bl6N(fDw;=FlA03Z7`udAGl G4AuZSX>pf`x)FRY5^~kP7wAOnzohvX_-seYt@o zbI!TvoO{1}?wNU+muC(ini!uPXBcK;da68&|L?-zyYIXM|DIhqvprBaQwtu}-5Y$z zm^V*vV;J=lvpVn3R~}P!yOq!kyM_{-mV-w#Ony(t(ez`;XKScoS_SUc4=!@7X%x7l z>55o!N@&TPT659d+Tp6cc1+J1+@9iizN6v*E#zx#r`5DPwNv22xGKI5)B?wbL;Pa} zZeNg)ov+NWCEG=8I-&5osASkoE+M5enN;RcRu-kSASQ*R$jeDJC8{Zz?S8o8IKIle zMqQmPAMB>XQh{6YeMc39cDtQuClj{Y5Tsl#Cy25j%RC;zd#jeOb$H9$83pOZDI-sJ zO~*HFiw)vxHGA1Fa9oh6|LLx)<@6I-UY8xFD0DPOkP@OW%E{3CKF+e+45w!30&1cb zvV0HwNhAH7CEK^XC3};UeeHeBo3kNOVA*u;sAF#87FZ&;uoR*l%Hy@FB^PPF?N)8OS&XV|riYL% zmBOlGcONw^!)|*I=LP68*zZ9!RMvb{#Pz7~5-vumDoU!9#r61zD666v3lfb4F)FrU z)>mN+NmiwtD(2!bVk2P;e0~hg*R~WTJ~kG|(AB!_wlu$JwzLKk9IKHR2FlpTepRU@ zyJ@?4TBw-J3!~IAudve8Y0L99OGne?B32|!(@?WnS&=fj#EYq9ny=?lH6CkZUe@)j zV(5w?r*k31N+s?-6uNBd%fV^Ep`*rP*g6hBn3kR~MA<+xpUY%2yd)uougMDHYho6+ zl$uf#m259jEZ9(@$6XWmJ*^oV6RgF+$x=#6LrN{jONMChayFIbb4IGp*Nu##ASEl; zYw2E!5n+Z>O_?69*40=Q<5~_o+Z=jsqqb*gnqh}>G}lAH`73a}1K4kA{f-s*gy&e* z^q{vD_276QBQI>w4yM)j?7Er5+qpFaQT&+u<~iC+$RZuDC{#FV^B|sG_uHC__BC*Y zY~|!fQ8&85@OdG)7c|X(VuEE*Vmo%$^jH1vxmOaJRb}p*Yjs2q6gNFM{KDgzo zxHsW*qJ=#{$_qofLFQ=ue9&W>%i;KpEaHzK1;1U_xEZ=GkX_?u=sNIx(lY&`+|35m zF|XjcAi8PI;YV0hRMP1r?#ECKJ!Z@fYR;EUe0TAJE{ShPp$pWH^jjGCNf_n8F=psG zMmrUI)(jg#6xX65fmEr<^!x07XU&QDK0V} zV5PVK5VA;dk@)~C#RY(nMT(2e2UsaC0E8@3Tx34LN^t=oWRc<`^8r?h3jiUD6c?Ef zuu@zA2w9}K$b5j6;sQX(BE?1K1FRGm074ciE;1irrMLhPvPf}}`2Z`$1%Qx6ii^w# zSSc<5ge+2AWIn)3aRDG?k>Vor0al6&03nM+T;qfHQjvvUMs4G_PM`kjovZkbRaT#x ztuV~mLk#oc35NOe2L8XsFv}vt{IrN)c0I)~_uK2we0C6zU7IfNt9HJB_3H~0C&hbS zy87KOpH9Ai`^3x>SD4+`PO;Yd*tv^i^C!&xCvN-k(BcHgQ(3U#@ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/line.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/line.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b0f5be7904ffb35b148523b3a2bb1f70066e895 GIT binary patch literal 50 zcmZ?wbhEHb25SHk CUJ7gg literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/lock.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/lock.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6f19e000dd0fd229f32f4e1d1d3bf79ea585322 GIT binary patch literal 104 zcmZ?wbhEHb6kyg(~uo%ao3RVp%CdLCy;nz1da|JiX)Sp@Rd4|sfrWh3l25SIR{U8Pa literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/locked.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/locked.gif new file mode 100644 index 0000000000000000000000000000000000000000..3a2fe3211a01c1c8c45435c6cc3f008e5fb3d25f GIT binary patch literal 107 zcmZ?wbhEHb6ky` literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/login-logo.png b/manager/media/style/MODxRE2_DropdownMenu/images/misc/login-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8d39ab790385e210b748c6b024c7104c4f35f8 GIT binary patch literal 12243 zcmZWvWmFtpupHdo3GU9~uEB##fZ!g2TW}2o3GPmCcXti$5H`5GyTjY>y`S&ToZWL~ z?wRSXu3NXd!&Q}K(U6Ie0RTXgmy=Ql04PkzZ%IUW$TdeO+yDS50C_11O^?h|U++v3 zt*rBV_sLQ#F-xzjbee>r4LMkRS#j7Ol0(1awBiFnmuxwh)2|iY+PLK21|9H)YQ~EO z+S8rKYn|>|h%DNiVU!0<(3Y4NfpUc813j_9=EFjVo_DU`?aXIcEjMjrxfBtZSiS<-dx)$M=H80oxSKw9LRpn{3;H&r2xt`)NOh!MBuS&1lkUUl=s*i_l-C zI01>Dz3jK967ZiFjl|lHkbz+}<-I2J5cS_++h8>A>7HYJ4LZ!6M3(3_irz`{pj)4( z+N66w%dyeul{&*1#4>L)K7Uq(C2<(EjyDh*PVh&pjW)lL+XC$5JFBjO9K&vl-66g* z`?dO_p{ZTx6Rk8Jg_)6+dE90kG6xv6mpHQ{;xO0(=tO93AOdd6DrjO}=`^~sb8S24 z)S#6mWo%@)qW5MzT|8MXYdor`Md>=5XIdPFa$sKCR}PT@Pzb^e^sY*rO&Dz$fHRaA zY4ZC77F+J>@O-VCKnUm=Nzcy|Rvv;Chl*IsezqJuc_yHZUoy|_@w2Dv88tt93cJpAtx8^b9 zem1J6Y`^kvBFFy?HEB#qoJK%;I8Jc?I%a(X`9hv>%`&`U%JLx{ys z&u@qniA89(kr{~9L)g0sdxmgINDra{$v6@PdMZ;)A!c%rqZblAt^+l1G^ z4cwS`))dIGssN%?0CY=rB2%>IEa;JnYQ=MIJH-vB|B2`P#pP9vQBaVHt|JO{ zzG$gK_Ph`zk^WMtoPlzHdZ{W5lpGW?GB)laMS+}C@y>Ik_;<;UDb@#q)vE!E=81-m z<@c*f47^0>)nF1h%c#6;o*fuq?x9k@KG=DPbTAwykQ_HoED;OW%HqAm95&)EQbGY9 z1kC~M(P9NV>_}chA3*+MNuuthPhFz2-eha?ZsY3k;p+wlnTC7b6I3_@tYxIs2_ZuU zpL!rO+-H(&;Vn7jPb)s=`rc1X#cX=guy_Kx^{pBFK&IbnC;5+kg9;y6Z2BlbSt=7t z>n@W2SCaN$EPm=gy1!HBSBDa@l~F;J!F%n6p$>lFAb($0`)?2k)*2JjDN11?vt0NG zV5V}y1{F+yC>#9}e&I{|%dCo%)#<0}Zqagfi!Drw;n^I4NCVEnpU0fXy{$No#F1hE=ymwo(QKXH=2Ew~%Q~7WG$EKPtaw9+FZEIdZG22* z){_5~)(xmK6Rpsc7@>?Oz78I{JONpe>0-9!{8^n*q_i?Y|K;R7=je&KP&_oc$T{6& z%4GEZrIvCpiVQ9e+Kh!J5Lq{|ITlq?k|9CP=htv>NLP%rfCN!8TF}#M<=DQ+GDQqL zv4>k~8`2L>MsW$P%u)*@xlC2f5FJ2{p$ZoydgP_JU61z3=X7D{ec9y{9Jx9& z8>|F==w>ttd?Lo+HcgP~7$Q%^75+j}c%dYr=7Ra?sZW1XtB~kIG1oaSz`yOu?JQ3G zbwkUT*kpy_DX7N`8BTRWJZZBwLh%E#9IO<{F|$kapZbuMJ3l%uw~J*;`gL8ALl(xAYpJ+^P` z_A4b1=|Asg#9^wDHSPl+@X%-|g8yYpnud>R3J6u4d|)JJ1_env=|2X^e_zOX`MI=g zD6!teb$KN&go_%>(n}-=tO=v^DGW43P7n2_QK{p8B~^qIQpY`!5N2RLN19cnfqdH? zJD<_~9k~J{)wft#2(x`50S6zV-K!C5mlA6fV*4VIlsJjWEBP)qNMKf8(#&{_hzp8D z{+jeh9$R}e8~-}mf6Ky9x)DthEGCMb%Eht=6PQ=m1cg~^JS8b>^V<~@k-~JGPcfl= zJKtO1xf=lZOuks({f7zIR6ksJ zO$J}HJQ2IS4^eN<{cuQzpg#yePx_=D5^0HIMkuCCcZ3URj45j(&wV6>No>0$U;EqT zpRewt^zr%Y@4$p0YXP<6-GD@%c&}EFNW))%9 zTJD>Te1=xmdGpvHOJ8wJw1O@Xx;fL>7*Kpj<18f#f?An1(|oiib)tM|O;Y(NvW`GC zRB)w;wBP`{=#9)d|429&!@(v}2kEz1NiTTHnM6b?;Z4ny;b2Ot^#n--}S90p&}s{9xv&1`xg8qaA(VMovW z@v_k>$2}ET^(;Xw%(1Rm5Uj`Iv%7cFLB5-4+6wOp0ijLMp^%yuZIprZ(52ibTXGc_ zc3JChJKNS5TCFs-J_#ja;=L)sdF9ke{6Q{jHw=@h?N}8pXjR3`gRUxkXq(Y7cb`<& zkb#y%nzc#@Hhv?|jlwWK^GR~ShbhLSSIiFweo2n0{Gh)5wa}w`w@p=aRtGbk*F=a4 zX$VX~xD&L_yqGnC*uksnU6TP&Q`_F2>-%5uB1=P^@E94HT}%SL)zjLq zX^zJS;EvXnNeW()V8JFw#jD2SViC$gMOsHHCUEV_KhWxG(!PhCPrF3U&*{%j(aikv zcQTxs{2FN_cEeX1+Fkp#Hv&VX#Y#yfrkgecZ*k2~jKmNkRUG3v+;Dy-BDx5gFVd8v zwM$A!e}Od(H!X?iDvAA?7_2T;fZLO1tjI@b7Ptm=_~7{I&83Ule}YJaKKSV|H|vF< zl}ALGyCACjRQc_>zMLKZ_jT{$;lK9d(|Z2~hqblG;y0JWs5^osZ*K%BV>7;obTaOS zICx_Ik<>Q$t#UQ#fUSa$Oe%~ZX=4j)38f$+rdCR9+}$X~!k(V6I122b--je`Ef`am z_slA1lzIF7`9q0Q*|%18DK1u;h-M#++@JY!bXQ9`1ZANJ1Ze+C{7(CYvZ+1er6w?O}02K1EHK96Q;Q(qyVqy!Dc3J8B}_0D@a%B+9{f(L)=laH#!bCGNW=WuMKNF51) z3ypj||NQXYqJL{P(!ZmxGIb#6fs4GLqhhJW`Qn26sHWcQ?js&Mgr4NMWMyQ^741QT zBe^8FKTV_`)m541^IAbJTrXlPgNAJlA=e+JmA}-G+KeB6Fz+KyJ>x=wiI64|x5@Z> zG4}Hqlrhr>DWqSPuOoyLAkr&MuqzKK#82fOE<@&NcmRgA-7ZrGjY7PQLG0vu?)NtEnmO{@p)LX9J z@1QUt$h69YH3z~QvKDPhg&ax5#E|IRAFj^3c&d;G@T9Ex%cn43B2B7_k32I{-}#I% zi(F=n`FnuYUe3w7Pq@!7$0lj>T*BwmB07}qBP^-l*$5NqH-$uHLJipUw|?|7vQfmw z0&?(WFpL3=a7JbuvZUr`tG^m(7@`7ULq5Q8%U})|6amWpY}ftc%la*^U@5u;YfgSK zAwf|=VV{3anMUtc(TDeF%S}_?l#9iT2^SE7M1}3r-p$QtV+`1zawfF#7)j~p9PGBfF&yycnRq*4rNHs-$J)(#i{8)@NDh*+nMostu zq2jjf7t2q_CyNOq4*&cwHvSGBQzwjY6Q%R=t94qZ8~tnazKWC2vvGA{((qd;c zJFIuP)bS3rx*JQWoQgPZkODOxn|&D(f426EsZcbB%^W=*x*AS-V0zyALz~BK>^ji^ zDs0_<3wM_vWusS|I*#YK?HoNk9?*bjGL`RbIt|9Xq3C3yFSiFRj7dv1?;E`~P?6c< z?x^Bi0Rm}?mJXshUGbOn$IE$tCv2#yv)m z+~gHm|0ps^be&sq;~exC&IAPp?@)@pOc&mT{UMuy(_;b-eg>Sw@5z}A+Rb8M^qL};r!ztHq;DpdEA_kcMhuTWehfKNV*dr-ulJE;-AzU68USwY z?wVLq`QE*z?qhB3mA5Z8JsRu1jW>)01qHuD5gwhNpI3rq_4G1$Kp^AB#>OZNRMbe7 z%X!w@Dl`u~*sJBacBBJ|K2z`qM!Qn3Ed}Tef#`|~7CGTjML0~$umL$LnwUE4po3=Q zuBghAGG(luf}lDgOHo(M@GcXYbVWoNRgNo$3|6XnQKon;EG)!CMMd#I1!y}r4IC40PL?kEi{V&Tp2s<$?8Qiyzsp1B5fPyj>&|E9{yQ}5@yQ@st`Eav&}dJ z`4L~q--gILZ}e#|)3#C(;27`;kt-D85xeq#ea*rc7!JZsmGs0m)H3kMZsC=L1sU~n z37n8_r?y&)1y9D!dw#9Mq@bz~kz}R03ISni%rzQg);?^7prq7374=s{M@OGX*^0$a z8SzO7DbB+qjwf&S=7!oVGZmuCANpH@$J)Qi9}m)gN^Xcj#aOo|-YZLQv%zQ8xsW=A zA$vy6kirf%7Z%sN+_l@KW=}dw)#G0SY5aX`&nXMpO+jMG3rv41oNZ4S*=bZWFmb(^s$V=wc=UNQOE2=( zo#WOChXs0o4Z+E42ui>UZ&7GtQk-cu5E49h{r-KDoQ&j)!_oo^0OGcD@%Mkn*q=;q zbWE(x$miwK`y!*_xxDP>dvmclrmxgaw*Y1W$`L)tdbEAkjm(!UTS?7Mz5zmk8|Rip zgQT=z16>!JDuWv1Ua^?y=qj=2lllo??|VNTsAAcq^dgD5hATIymZtoCvy$%acgo`CR47R@*+K5#z<^y^$$%W9YGWqP9!S0u*CPsW@HPuWI_B zlFp#S0CU(D?8@~eglzXXMZ^PPIZ?)hpNQl5iSjg``3&HZBnC(+`H$>oosI<6xzZF9 zrf+TNzCq9%mv!JXakv-rEj<-4g^%_6v3E0VrxY){r>CbTuk7dWmWrz5oEWj;G{vHDsEjR6#S06Z#}xR` z(DMxNlGpOa@bJ*61vNGK|NXnT@Ey|6p;IWb?*UC5^Y5?kX8LQ(--cNbx&v}QP00ev z6T)E?R|9gb%lof_ObG8Y+MqP}VwDSdT{FFo?ynwS(ok=9Yfj|BZtZ}+o$i9+M?U48 znc1s9yJIOSO4LeUsUb^qD`5nzfx-7w-~pqrl0w+gb{CZnzU4FBHei=}tH};FK_kmS z)P?0`=J0DFjqrh#d}jl&*lwG>b|1GGH1G?bb*aedO-qCCH_~a?aob06<2vp_b#hu$ zX2{z`glwTz9kcy1w`v-1X=-eA`)d{>lB|-tC!3z0ZWu9X@^#4)vYHkPu0z;peA8>L zEwA2Qlr@f=y9ysnfUeRX6=Xeqed2o`q(9pC(`{6 ze#U`X$o9kBWam&7*G*q$1kp)9%e=p(8)YeeWX46-Lx5z`2BJQvyGne0pY!f+)if>h zKvk9p7lkY3NVOkvOhYZwmJ1TwA<`*NK;3z{$?gN!MyYiEs6?^t4DI#x6~i9#%#ZVDqghl^*p7au%xfs)&At#SVi=&I zvC#?0|L>k9BySKC0(4IJ^lemn?nf?H?&3KzU=a*%{##Q)Zu1j;nG@=FGo+S!jciw+ z_yOU&e`W~joN46NKcl5MbEmR|2mp}TU?d+0P+ zR$zIM%H^$mf3-Wt)%~yS)`@mkBR#jjW<14mJpFdFtE+3-y{qFIzn}BJ7yW77G;n_0 zpqM)B`uOYI;Cq?oo7HMOIg44u@Qf~pfR0E#9FuFXy60wY3$<3rNG>jy4PlU=iWTS{ zpW|NWnG#9vkmTniGqFtSdteI^HS`t*I>U%aO&U#r03c-K+VcqaAe2eJX zV8YvV&}E%hYE5OE$s}Y~(8?RkJy3W*Dvgy5?%nKtPf}oipee}2N-CUvqK8^hSLwQ2 zq9fKLY1;rZGkR@X^#ADhNB(^V^Kz9fa*RKoL5^XSvj$122>8LFfL&Y0?4scPC0pAt z4OH+USCzpw>)T{#)$w+EQSbb%!?&N8Dy5ob+?<@I<5_&wH|0thWhCLW;7St2$8Tkm$U-QR8kY7yDWb4uTIYIWAcgG2 zjY#c68pTlY5{PRNd)(XEz1@_2iJUDPQ1U%!;epo_3l~p7$;Rh{0vwI{C+WmYgF zoHXh+FKIwyGa@_fbU`?UE{g&&4qgsI*$a8E119h~P!IMzq5M=B-y9hkSrrrQ%Ls;H zz>%}E+Sf(Zq(dp(v5cw}xKu5q-dzO9szp=;lfIlKmihX6fA8kB=5NA>NW-taFOTn& zAuVj5h4Z7$PE&0%nEYzpj<+2|uP0>r&365dTm{`2=_pElM8)Q7J)9O2%J`UU?CslH zKS%d~l|xyIgZ7Gw8up(tBU`111nR8kimq^)O#eh!L~l264R+oCGm9Y|Hs|c7E6m6xA zvDCOzt90WF$;1?D?yaoshAv6dMh&VVT}+RDxJ9naKyTl=t)R9SOGU7V##iVWUQyn= zF#CfKd1n37R+-)lx&+c!MJ7H}Y}HP07IU1d9=aM#JZ3?2S=cFaXs;tUp1)C*yeZaV zreSBBI%~3RD_1mo5mo*y>mqsYnP2^HsVm_aRf!li$d{=6A+4o{IXyk~R04;(8OTy4 zsn2}i4?2Ga>p)aXLzW-Te+u5q_=MceAavs;J~uaa%*~*gWz4IzwDd5rW&*4CAG!g! zmtQQz=P2^&lg@&ktAXrnUGDLdG9X8T9SVqp-TpP5u0il_7U#p6#p@~pGU2sb;zk6v zx3^E*sy>3-%Pl{=}9cE(Mh2x(JO%cw*ER^o$e?ZNW1L^d=wiBcQl?7HW;Ef!v}brMbz zTx~8zor|fVCVB_uTk>}w@;~Z_(FGQjzea@zMPWBCtE#H@K0e=9e=M<+%Ztkqy&m7* z?>w~=a;02zQrvg@t(_+7JVcYHaYj#kUmjO3EtvJzc<$*m_4Xkeymx4o{djymCFYM; z9d}#cQ&(Mmeiy!!g}C;5=H4CW@@56>IZtl3pS3b;S5-KBF&DCJWKws184rR(AtNOt zgAdRxGFgR(2W^BS^dWRKH-p^anhKGk;gDo`-oV_x^^JT_0L{T}91*&_L+noLw7%%7_bU$KFQs`r_LkfDH+rA8a0 zuKjFpFQqvW=S)?hq$>?=eLrb>;Gg_+Ale7s6L`$Hu?i_Fr$0%ntDg4h>_u*`o3*vI zF>=NeM}N!RohSWw1tyu0G6`I1&(}MwHPT944MKYx>zZJIOpo+q5_qt(L96rb-wZy7 zE|gTJK#F3Z2jR6cZF*^i18fG1#iy5uELYIMq&w~^(Q+mDm%}Cq(}4vAFGfG1K z?T5tYZm-C#?$1`e37Q)1*aRjOfcn0t_N}Xty&bM?v+bOnpjEQlF*q0k!Gd$KLhGgd zv(rN&{d!9!0<2df2E5f06xeN6YHI4K+q=87FP&bu@V$>pfNk(Prg4u(z-_U`Gwe{V5jopVjn&toQY zL%u}rKl4F*V4CQBo@+qeCP~L+z22XSv8KG*|7qVv-cyRtcMc2Ufj(UOH{o3}^j;sj z=FjNVR>pk<4I53Y6tsmty|lxQHzz|y&umI8UlAjxr>4+b%m1Y*D)%&w`a%gEB)K#l z6{Xm@PiN7`Bxx9hkjZcfM_gN5`+8Wl5$^J$AHx9(5Q=-CgBkrI{Wcs|PH6Tn zVh>*+*$8g37M-`kthcxlf?%C++2g*feN&7a>Z)n24>eG-$sQkkc=ao3OXHXN!)CeEsg|aUm75PEAk9z8q5aP0TM zfcXLy5cWO@nn(e9oHExmncO-Pov|1NhqbI-=IvM8+`ybQ=QQf!T<{18O6soDmzko= zP2}Mjngfq1+__>@!T+|I-{myzKMd}tPUmc9rVkDdj>-Q_>h>euaTZ7(+cgKfx1}p> zzDgaua39L$Aa*E{m86nrA(==SUv8W2l$No~%H;8G6r=|G9G?m;o>cbl6v4UnPA7Bz zK8BuVOl_*>5H~a4d`WTU)TQOpIuf*EEBzt$(swf<_OHrWK&E!YKf&Zr1m2k3DEXf; zzl&k&-RHYC_wM#S#YobiL<>`f$e8u3ZTg%JD1gmtUr5X{ZBIL2uylUP|KT8iADn&O z=iaexxm>p}G&U|pg|j%M@#hbLkxvT67XtQ-lAJOd;5VT+Sd(n$zDmal@+{~VOl>89g}bcPd1kB0tnTNPSjCq(;&yhMqZnLSjdw}Vi6*R}1? zRGlY_fxcxpM7ACirMGEZ@kQ@ux#4tuKGzFvbnDDM_w}cGWNvR?=M)x9E*GrMwenf_m+|!bQxJD$ z52TQ}1J&%q7lDeFoJ84E`$KB`z1gT7SK%vR70u1=eF#3Bb?FrlyV3aNto=NDa(c8x z))Hr_ZBhU8j&p1|Z|8ZI`lg`O$`5iy>C%XX`Cq>ix#YLwQcJ4r8|c2XP>yV&n!SB; zdE4&sO&=MV7uY9$v^HQEa1q&>yAwcBB7mJqafDH;DH(>)DCD@89*oK0knYD|=&*EW zpml2@aJj0K!Fw99W4oH%$a#A)fTJSJ!2PPKKgm750@)ZG(vDJz9KBCl!w!DojDSa% z+I&~|Gz8OLOzni`n$FAUm;e6#E3D44W<+bVn6uJgJx8(svQ_4tck#x|*1d(J(YXLd z={p%GDpWtj&D=Qo&)Whrp*OgJPkpD{K)p&$wKO0YAbuT2D*KGzQTDJS6@^#A2R=5q zB2OU%-U5k8)cdrNHIs^>%`|3?L*2AObW}raF@tS=;dWtmyphrKkJq11?%qFx9uX8& z*~e>9?TIqO5{CFSwA50rPL^Z&O;H-ur5L2#*l#^9eBUQ7{T-FI*$0mKAT|EW>H9th zM#Yv<*{KZ^EcWQ?7v|$nE8xF>8y`Hj4IqrYPgHADHu>>Hb%!Ts!$*TyJ9w&4OOUde-Xn!E z@`|zIk6`r@Qg-bu_;>m?tI=c_5pov(1+FxB{=M;1v~+z?^tM@QNDhX@Rtj&k{gCx> z?$+kpa!XftlVL`q4cJly{5ou2cQ5AnPC9T<+M+0zTD>SpS`9@5457@5TTyuQyF(7g zy0y*z+~-BK!r3uL|9-=&0s#;|AP)3yMIL~)+_WG1>Kc5y7urn_qQNMrI>R)*uwY3+ zK@~hCtM}!LU&@HN0wSWhHgARqakO<_t+d_^EGu%ev$&9083dz(wA&7C| z$b=>hxQEvo06m1AL-!qpw-%mf+1}>@gZ|DI?)Q4BCfwi;1mf;8z6h_|w(HmHVd7b$ z@agt1k69niD$;kfTm9Xh@K35{W@h%Oa>gM_uRbVTL%;au)~oLJZ0ZJWNq)Qp%S)Yi6reHLHlBPAx|EST)s9- zuP(dG$)r^E)BoZ-ZI~| zsMjTmmv!wj>$5WPeZ+)c*&5iHu=n}L8XhI0L75{HB^u@as$sd$lM5; zX~d>+J1?8e2x>lK;%cwm%LuxL_g$O7o+RaJA+a(`EfzbX7X}LfMoo^a7qI@4aH!1P zdL;FfZmXG_{$A>Kys#>v;M;fqT8`RZBD6o?wmK0Rj&R<(f40q5#=`C7b6d*Ul>-Fq zw}s-(Xh_{u`oAx9w$t0Vbl60zEO_zU@81S1()B}}n6R~nN1rwEi-o&B%mcYx)l`e+ z?`5hC9YOMl1(lT(k^UetGXcCy^KcmPcnoM}bV z&Ca-iVrEc5aJA1+6jvhR@X&u)wsxz6>yd)Z6K~CMPV7IwKW5}xOVyCl z@ZXeLlG`yS{qkPb9QZ(B_pw8kvnOs82Ier+MRrt-0or=Q4TUt2TGN~}O&#K4=?Fu8 z0^f2$_-)FvzWs>CvR08U0lKUK2_bNb^2z@%S6XD!)P8s#Dc(ejJ!y7U^lde2rp`*!2gFO@iuhXD-4llLb`49qJ&qCK7Q~4bVc3#ObhwESgIjb)t ze;{M#WvaJ9qx;wL2H-isaKy5{AE)8bm*Pu2J-SVNZ6OroIFf}kG4}W)2>R**a`Dq3!}@@{w6au{q;b&y09KK+ A761SM literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/logo-dashboard.png b/manager/media/style/MODxRE2_DropdownMenu/images/misc/logo-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..e2a78b04c64712aa9bc5c7010920394fdd47bd20 GIT binary patch literal 2066 zcmV+t2<`WYP)*rq5Avzfa&qEvM2^a=%Z0!%|eNQGUQxkHbz)tWToI zSChz2%`hq4ibHwA;z68D_K`m4Swe)vQP@#4lF3nOy-@auNPM+T_IX5dyi#boPVh}Q zUARu0&008r#`ldx=}|X_$LH>8J~MTqyCo!k&PSrtW$7X(^nOEw#ZvK6HZpatU$#$n zzvuXeP3&|*fx}XV&+Ut#L4wls?ubNZxks1FQ**yhhQZ@FgT5QvP^-(P=v!#dA?9`yiZuOOozl#d%sX)w@qNSO?rT868zFMI;asHGU!~PkoY6>)!#I1fV7gC{%1%_bPNdOI zPnyz6mC!+q$dSrZhsjfY#8Ga-QFp*lYP(QRwNCMNL+VI0)-)^SFe^BS$}w@SiM(T@ z&{TlLQE0zWS-DV|%}q(POq;Gtp@u)aEhgh1CC?oqdco^%wdg>O%{_?3IfcYSfv;PY zn@oz6Z>V;Kwso4i~jvk z5dQv)BMknltB;LAHX!|~R0{q4{PykH($2%Yv#qPEmxwhiB^DO^`tBO>geF!+SAg|%EraMxwp2hs-TpSi-LfEd2?i9 zUR+yMPd_kKlZUVX00d4+L_t(Y$L-Z+R8wIX2k<*$zgda13Xm zsB8`iB_;}N1L+h{r0nkQILGI`cV}|g-G_Pn=<{{wcmDtPx$k?1{hxn7!-v;!9Z|44 zPY2ff8}?k)r;fYpEQQ5O?LVqa(+Z^Hz}O5PHMy+^W}7{=(bPiIp+kp3gW9)m@9F6| zu^g+C!e^*>N=@HRMAL2yb8>FqPDqH4KNlDsbmqdTqZb1LZno)Go?TeoGCrFn=82?Sfx7wTWlfsI-U$y+2#!Z#picSvR%=5eVR9xP)ud{;LbW;f!PTp= zF$oYxC{(f6KFpEDHI*@;CQm8la)n-I^TP+=;_U~6id!&JCijM|5H*Ef+5+vvd$BQP z4hCCvWOc7M=E#VxNHq|r)|v})@863F41(?B6(?fkOd*#s*({ZqszGrFwLS%gNB3i* zPvg6@}%Ufk2p)*nB|8ogVdT)SuAEIRl4k!pBoR zPfhL9qHU*fAUwu)Y}I?(s`2D`liD>qtRuFPc5QCUA*1TK)9Q~KHn>&qyu2?zOS0XD zP9b#_Dz?6nZjmVFx2v+N3ys!gY^RkA=z2I>gU5xxO5BW@i#wAC(nhv!Hxfc>c#Q5i zp!xJfGc1yBFz5}hO0tbdGEX$boK1K4dL!1f=$WL3Ey8ER-Q%LtY_}ulPxw1ylo12_ zCMW0T!xE=@0n{Q$FD!oJW;}Az|By4bBb7&`ibU|>03ru4G4WMtHmDPa{Hl_xF8x(v zF;A%!Nu}rw2!#lKD>A)-iYNX3j*~OW5C)5(67%4FOYMPA3X4nKjOQWD85=W$5BCZ| zB~=7@C@?AMr6~(l^gnbwij=vxWHR|Ugg{$S!IL7>Tc`-iFDi_TQP#)FW!`ZA*(?@1 zBEFjB?>$Ue=wMJWER>8@Zpz`{&fZic(mZ`>dToR-P*I^7B&>T&g@QvsroHL2AEsgy zh7J~%5n0KxVqFW|eg*D`rVyAitH;~d#!Oqq$cXZcf>myI03Mq}qWBZYVm#YAetA~r zNn6E;5Qntxt#!JZHfIk^TS3Db4V{N?5yBi9r8+!O9XxJSQ~?gHCT$M>U*37GA6_vs zK%000000002$bzon&Q2+n{000000000000000000000000000000Q?E(@004Hn z;##vzORh`tf=EoSOFoImQLsxlgTwQKNb-b8O0G(8x=&QHOl7!EShGy(U^|k=TzQgsvyH886OLx9dZMsf+z)zRU zQJTwAMy*Tpgh-9XQIyG2VYW@B&RFkqLCZZYMy*PFzvEi8Ojoi@?`}b?f<1b^!BBL)PjWVcOVwoPKUOQpyl zs@dm9Gwo$PR37GOEly*E#xpOQk&6&$y4%uM#3E-e#P!pozgaUte?|X zbj4EeazbszQ((GJSG`eBx=>5AO?t&rdcfyPin&04uP$(^tJqkR&Q*!aRAa(Y_=ZXM zen-qOC}q4)_I5s6!ON0!z*jL}=2%8k!ep3YI?DJWpA;y{SNj=pMcyidy} zC2Ff1yQ4cd~Ck#adU@$ivi`}+6w@V%pu zQ9BtD{O-NBkA{PO=i}AVwxy$fersi1MI`?6?&Rdx)zr|;z_y*8jecBBN;duU?%mYQ z$jHOIy11yIn|^UrGOn=z00{?4L_t(&-n`h?Pg7wS2Jq7h`Ue!Fa6!~I6-Qlw22@-q z8b@4l&$x|7OMk3$Dh68`QP|EkUsbZA~;d7z%=Mueev@b4Jgh)^X7< zyf<(IzdX~yO|kEWtK~(5Vzg0|MxBm)2++|oR#fyCAQr!5jCU- zGrid9$xeS}2GNrouDdPMPQ&T01niec%(2O{?_=)Kljy!^{1Dr^@p znoiGE`R8!^1-Hlj=;%(JI-Nd!`qZftC!Cjxi;wQzTU2!D(8)c!c1gTzlEZh?wq-Jb zb2TmlyI*KI8Ur`LUMfCHyXU~}*(H&9r-XmLX>jcvZ1BqzB795nI-Z5=bn+}4w|o(S zz1p4@2%N4_C7Aq)a*En|{rctT(3ZKl-Wfx{hUa#5-tNUbQ3{rz+o520$ZGL{br!cfe$2up zaw+|5R|Hu%sA;>Bg%b?^dY?}>ZhWe|8-w z6X(tRd2!=PGBVuB*RH_@ECg<@@OV73#FRKx3sastab5`yxMWqMW7wpjkclLowjQ#u zTDL1J2X-GZS{_5MP>eiv{Fr!<829wrM#sgcYnKy(so2S5s|uo`qVlv?uH4?yeS%_I zEPI?w#*cAh%<=KKNba|{8Xb;<2R>a`Jd^}15+hc}4pmiG^9L-LFjX4M9%s_H)ke45 zV#O`O!+~k|TFi>U%H>5I|~0?3BZu~$dD1)|L%EN zEyL1rNx5jb_rPX*1}_U`o4ClIxwv3U4hlm?NiAPl8&!bGh0U5A{kL>?Yc7%;f zv-_X)gG(f?q8UGhAlpMCGnvruH3UCf3IfXL9rY!eF-8XZ}Soa=X_6>6XDGzcQWyi1qmfwNZ zY*PkT9fo^>rz4b|!v^&W&U+H z;c#?~vNh~0OD@YB@cZt>`X^19@6xj~JUT-Ll^y%_8eYVg!g~idkJglHQuqCSWP zdm%Y<)_9ehTQ0YGJUBY-mT=0#Z8KdlW#6+%QKSHu7@}ZwT~9Sb_$mYCNPMaL(7?I@ zbXiLkow71R37QE(Rz+P5FtcZd0W8O*%zJ(hw534hvG}qo>XJL6i2X{c?Eu65)0ZjS zufte};W8>ml7Y?$U4miH{ISl-h+W#R7{g`lSA^kmDg*mZ^4(mu~t5MpQh)G>BFpZO5BYS-b55!;u6OPbWQ{<%rH30_9l0>n!aKRB+PX zB&<5RW*&{2bx9tdTWfu2Y|~+_fPNif8S9snqYyReUwNTyHAB=ec}V@y1Xt#W_--e= zkEoC-geJY8c-f=m~-B9?tR%q*@Xy_%~`MVM+ z(9sMxgU>CyI$i%3{oVmJpY{5%ZQ001$ES;Mc;fovRU^9~DI{pI1uxDuJ~3&f+IGie zwE*UL^Rhp4SY@2qfyYWma}GXe{j8cv6&oG}0T{dwXNo>BHGbgLX5yL_9o-HK(mOu# zW>EPe?%^l1?qQ3XxUD&1atfr~^gD3TZGn?R+si`}lHDT3XaE%QX};_-V>Vk@{^}R+ zEim1W2)%C9{^k`|rL1tlW3@-T(-DfrS;C!wI4jF}edgrjvf|=Ty!^Zu8um9c!jhKt zy05y++>Nj#IJUfyhHCA63)Vm|bI@)mOVtxho7!R{VQfmS ztzNA|4bmQa?<1#aDsyNnpoNQ83+%Gn>Zy1wiXy@Q&iLW|d&;Ucn=#nm*z%9O<0J1; zdIAA4*2j^CutuFf^9F-N*ICRF7`l&?&MLlN5`YLXISP^#!Rh}4e*o?&tqpts*VO<3 N002ovPDHLkV1f&3VIcqj literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/longbarbg.png b/manager/media/style/MODxRE2_DropdownMenu/images/misc/longbarbg.png new file mode 100644 index 0000000000000000000000000000000000000000..44197d8aeee3fec9bf20a3a03010cb7e228997fb GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^DL|~u!3-or6XQ1lDdPa25ZCOgp48Izm7De~Ub|!F z;tiAMt!|&PsIhNuP3O$AmMQDEADp*h%iQIg`(`fhnX$B}VPbw=zhdZKkaj;$7sn8f z<8RMz=WSpRU^#fW`f~l&BOXVD7tCi1lU~I5X{q0a$MgQu&X%Q~loCIDG(P;~$R literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/mainbg.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/mainbg.gif new file mode 100644 index 0000000000000000000000000000000000000000..3251a4e72c2e222e5d400508b85256f6ec74e274 GIT binary patch literal 618 zcmchUyKWOf7=M#Gn1~>eA_by> z1`1vPi4KVd5s;85)8L)k&g|~2cXoHSfdO{$a%!@%>rZntX~KOM(mjCH#%A($~URLbHEVdw{b5CkTr)TFKut}EQG zi!qi`LIfkF5Jrw;V+4JjARq)qDw3Xu39@Zl&vVX&5TOc%;|N#yx(Fd>O!E;mv;;zi zWij8Egc6JpXQtFk+D&@Gu{DrTY`~6`o@LvVVs3GQG3>Rt>uMd>vMt6aYHP%%i>A`w2*XS>M-s(rRyPwx4c3-`cv++}>_A zZ!}kq$H&IznkVDe$KwM7^VPTG)pEXkb22|Mu{?QgF&0~>e~9H1ABTp9hd(6>+1bM9 zZ1(EusiixoriyE;#UcQ;OSRoAyP0#DO6K;lTV%R4JyU9ojGQlBPN#FZ(a|V(HkCSj zTs~Duxa=eumMj&R$Aw9gvmw5E27)sh;YFk z$5jqTWVb{d{+Q0D^v!aOtHL8j3q6M;k{uR|g6;~B-h0b&&y@3j!ESXLXa|F*tDnm{ Hr-UW|I(0v1 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/minus.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbdcbfc58a44ac1def793af43815202d89b21e34 GIT binary patch literal 201 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 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/plus.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..957b4a771098fb6554c36fc96c6e002fe12ac8e5 GIT binary patch literal 200 zcmV;(05|_fNk%w1VG95Y0K@ z`{Lr_;Nal%^Yhi!)$s7})YR1I=;-O`>GARLfw0001jNkl)SbDPXZ){1mLQ4wD9Vu%W tI?k}jNt|TasS=|~wrs~7biI(H?LUKqas-zV^WOjf002ovPDHLkV1fblhGYN$ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/misc/tab.gif b/manager/media/style/MODxRE2_DropdownMenu/images/misc/tab.gif new file mode 100644 index 0000000000000000000000000000000000000000..787666d1e55716b6712be49ace6ba52a77fd70a2 GIT binary patch literal 1247 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 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/deletedfolder.gif b/manager/media/style/MODxRE2_DropdownMenu/images/tree/deletedfolder.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8e7e5add1a9dc77b19ff555329a525fc40ad36b GIT binary patch literal 904 zcmb7D&u`3e5PcgCL`d)Sz@d$39E?cm#YO3fYtu^w(~Dx$#EArna43;TFw&LPMtj9! z#lf|Sm?lkBTTyF~xcIRZN$vJB-hBT9bDPY}oA=&)K1T=odk>!MKnMN;k>L>*p%D^+ z%-q8*T*D? zvXwlznAn6S7Sg#aGiQh@(n#v#T4o|Dps$om7Az`6K_BTf4InSJ(`c%tmGpx&IZZpr ziGrz+tO-WaoFpys;9_DE8hN7ZW|=tyycmt7KCWdZ$j6bs7Wd9#al*8@xJvdGMyKnA zcR5E&dUpQpQoV6|a^}|K>GA55xy9v`FJIp`K7VgE*IJxjZ?)Te%7pr_*xBA# z0-ET_sr(bzbOxU`?>P3fdide9ODBeVM>o8_{9*RlslKcA+Sb$E zdnX6Zf1H1{Ww2a5aAD7p+NBqBLvH&=pHB?_={jE7H?+30d*R#5a_8Ny&XHf0Lu1`j P{XO@$&AhWx34Q+nVeGJq literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/deletedfolder.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/deletedfolder.png new file mode 100644 index 0000000000000000000000000000000000000000..99d891f9e2ba3a6e1051e325989292c00bdf3cc6 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF3h)VW1=5!;UL*!hke8PRs^%>T z@(X5A@#FvfvFJ(K^JkCU?L(N)043}_T^vI=t|vDzr#U8aEPncKDvN<~N26wdfJ)WG z#>%&McZW+g@CYPuH5f_gPdGM1je{wPmFHEt1l)78&q Iol`;+06#ZRga7~l literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/expand.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/expand.png new file mode 100644 index 0000000000000000000000000000000000000000..1267a4a036a62a8ca9bb7da57e0d295573b13257 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=E0F$A4e-38Vgt}D@sc3F zUtZ5&ObTZ{p9WMC=jq}YB5^sl-T z^MB@{PP|R~T*dPzrM2yw!^i)vW0C8zSi#(le)$ z=#Nvxef1wsolw$+g$-AxRKiequqMy6mfOG!S*Izw=HZgd*`njxgN@xNAVi${N literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt-deleted.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt-deleted.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b40ec9df2477f3c02e3952e84c1accf11c6fda GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=0=E=HN%Od=mwM>Uc_m z{DK)8g!s8Kk}TOuip&JmPUHZ^Z9QEaLpZJ{J2Z4QH6`&WvZ*zc%p4wRIwCAgf(naoN^nRC^f55V@USn~x`hkmAO=rYKbLh*2~7av C*f)6q literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt-secure.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt-secure.png new file mode 100644 index 0000000000000000000000000000000000000000..4084e04fbb8b5bbcad0b3967aef8be1882499e41 GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfv;dzFS0LRmZ4MCaThHv_#0cab z+yqj?#KgeN%<%6U>)*fZK-vFaS-(7Fb9G>{G+{K-V`O4t3ie@yXap(-0wCMi#ty;; zl4tj_oZHI`6buh!4s2p= zzgcAhRIO1Gy=KuZmPqSQ=mI(b!{7vcK^c1SK(CX=T)za7A>*znQ7W!-c~&GZ*X7H6Jc zbos#K^LFQj*B#ur=j^r3GQ8{F9^aV1o2}=tL0$YLt{G9Bi#4|JdE9MSbxCw;*yWY> Xs}s3x^O}xL0eRfh)z4*}Q$iB}hee*7 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-alt.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c0a5cdeba03ca358d17e43a2fa468cbf8cda57 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=0=E<`6_Hcg`yZD&;8& z@(X5AQD71I@$}-6LcW|2O;N!>aVJj~#}JO|$qo&3jMM!r8YI{yCH$v3NV0FUc95LI zo51FMW~OoiTl3-vjt0ye9cdEG2OT%WItVbO=maq}v2wUGFjQ*GE;M07i7TE)lYbvLoLK(QUs);o0Uw7Dzfzj~f2JJkmkeiqiYN4T_$d_4+qJJ~in5bO zUE`_KlU6TWxMg#|{p$}G${q5_d~iyB``gJ5RFx+9)Kza9Nc7z2-H%nJ^4ye<8ArXc@R$2o6-4rTCk^>bP0 Hl+XkKq$s`t literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-code.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-code.png new file mode 100644 index 0000000000000000000000000000000000000000..19c603f8fd180f73124816ddf0687ec2772701be GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}Y=BRQE0AuOHV1;<1pNat;3QVY zh0G^#akxex<95P(pg2V8R^nTTISbj3<^nB{EeY}qW>8UJ=@6coZ>;p=?wKRyp`L<# z@18%tbfG5AMM|{bb;(bl!fa0$#}J9jxhLHDnge)P4?Iu!@6`S!>Hhy2o&w7}&J-0q zSTxzqW(vcEW4qrle^mSJkYlE}^xvNA59W1Dc~-#|k#OK~qO;ZFXR102c~4BU{iSt% y{lZrd96Nb)+fBRp#p{b>u1+;NT2Z9TSHsAuzTGz7H@aP=qLtD3kIOF|KC}De`5J?pXK5~=EnF?4k>xVkdL z{PE>W7tZb4IIpiN$3<6NijQY~ea=6i>ZzVCjv*44bI-W*9aa!~@K zB+Fqt2pb{=A%P-5B(~Rw?T`b64IxGMdIK3~D%bY%UjiB}T@vIM%%GwWmoD41ProX&w&So=lR<+I_2ZUbdqW!=}KVcijw+SNM4_ zRyOf$i%sNeQ&0PRxUuS@)O2+R_l?)y?^u0Y9NOkO4R9 zz(!_IH->-zSd!xylM)#$Eg1fPXZih!<->iJiwBt}cQOU~GF~{x(AB{Z6U`7E#SoKI z7#N>y?dlO3E(0{}GXsO$p}QbYD3%2I1v4lMhv&!rxOk*4O_1~FyXQ|IKe~JI^qP5H zwN>seM!HgbH+Xjy02NR1ba4!kxSV_DI^Q7!9*02nOmFe({7F-mRU7>Oe}02Tr^6$= z9}jOB{mDFWe`g4@x&_DfsxRUW-HaRV=r7N+&zopr08L11zyJUM literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-rss-secure.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-rss-secure.png new file mode 100644 index 0000000000000000000000000000000000000000..23ae05a43674a9e2fa55e85ef73f67b5dbc94853 GIT binary patch literal 429 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf(g2?jS0LRmZ4Lx|D&zz*68)Kg zWV{aZyL?WdEKm@LfDA2RCWwOYKsFW@mL^+Ph^|>4Y(Vi+a~5M8yTj4!5H%1Is30i; zWWv9HEC)9+@88Jm?amk-#b9Z{@c%o@?@ufr?z3Dx$UM1|DK&vH(3kPTIfkwd23J>x zn4H4E_+)EWkH~PDd=r*QsV9#BT_9f)cV5e)IatqlXU7 z4EMHGk`m+-RH|$TDxKl!;us=vIrnrpU$cRL>&1=CEwk>;&OIfgvj@d~({DBZH@_pUXO@geCxsX{IIs literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-rss.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-rss.png new file mode 100644 index 0000000000000000000000000000000000000000..352f39195e4413d6682388dd5d108dde488f92e4 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!M}SX=E0AuOHs@0zCxiqt;B24> zvLIXvE)HQp)D$=KO$C}IRubeF%%E&6@^014{IsVRcXzlbojH0)U67CK@=D0f0$+deg78gIGxIb a3H)3;S)*fZK-vFaS-(7Fb9G>{G+{K-V`O4t3ie@yXap(-0wCMi#ty;; zl4tj_oZHI`6buh!4s2p= zzgcAhRIO1Gy=KuZmPqSQ=mI(b!{7vcK^c1SK(CX=T)za7A>*znQ7W!-c~&GZ*X7H6Jc zbos#K^LFQj*B#ur=j^r3GQ8{F9^aV1o2}=tL0$YLt{G9Bi#4|JdE9MSbxCw;*yWY> Xs}s3x^O}xL0eRfh)z4*}Q$iB}hee*7 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-text-alt.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-text-alt.png new file mode 100644 index 0000000000000000000000000000000000000000..65b7e20e5b60fd6c98ed1c10c2843d38e7913c73 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7E0AuOHiuMnvvW}>P^Vx? zkY6x^iX6+2Dn zRoVRO{($efMhk+UY!?x^F*Vt@ou4LS)2&*16m=d#Wzp$P!Mido(O literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-text.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/file-text.png new file mode 100644 index 0000000000000000000000000000000000000000..501d02c23f74b08a59c68a57850de9c5e98acc35 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!aez;VE0AuOHisl+AIkFtWL8O# zUoeA+hRWR;&g^*sre7`|jF;W?(YYKb=jrL<7$R}G_KY{*0R;}%z=a`EzbF1(e=WgD z!OixtbVa7qm6=bannn3P9S`Vuk;*UM9@xIRV6m2>441jSWJqk>gcQ;s1A*-=A1M+-JFXka_<`=6xHOCwDR> z#WDu^GF~{x(AB{Z6U`7E#o+475R+3F7@utI>fs!t8yPM$^YGM7K+9B1g8YIRRD|Th zzdgQqWLIZlrt!PyPaoVpcjn~o)vFfHt*fo7%!zXn7vxcP*31QJnCI!@7$R{w_nbRl zvw;XpK(Mp#`@Mjc!A3)oqvyNGff`&vx)T{sz31P)#1ph{{O5636~fz zOx1s|bea2t4-$Q0>7SQK%G5UMo-|tY&2>qm*s9xwyVgzU)YFYQS-XA4#FI5=Zkhd1 zJ?+0{k!rJ2N%H|-?i7QDzPZb`F@Ill!%^n?g)oHW;6W$f1agr4P&R>mxT`&_RCz&QP{!1^#5nsgr6T}7p&Jm(E8>hC-crH*9;as z;N1M{hZ=9fhgC_7{es)BWnY~#p>a#kEBy&uO0Cj3uJm3Jl&m?b^`n7vEvMWqhU8$5 VXcvhu5|+76U4@^o82FG?Y wa46rr!FHyihH;Sui`>Ms8<-7O3HC8CFt*rhX%_QL1nOq+boFyt=akR{0HD%Dr2qf` literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-alt-secure.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-alt-secure.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a768ac218318dad67c96baab9de3a2049ad3bd GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfEFMmbKz8+n zX+SO$6BCdPB!FxKbBq7qS@x}G{{Np9$OSTh#utTQRC1ocTvQz0CfGd7zj3h0>U7SsXJZ zo+)2d$?H4P!xsK?E|V-b>xEM$tDo}=h!*3RHIA5+k&h~zbPM6VI zbBkSmGS=(XGFE#&dZ;~VE877{{m*+I@K2X4XRz+rq{EdHk^QMzBmdfe?&GoCKO{rv Qae_j^)78&qol`;+0EO0<;Q#;t literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-alt.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-alt.png new file mode 100644 index 0000000000000000000000000000000000000000..d096d08f68eebe14a53902883134069b8da0a411 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv5AX?b1=0=E<`6_Hcg`yZD&;8& z@(X5A@#Ftk^d#;1v&Zgsi#H1b#qB*^978y+CpR#sIVN%}es*RigTdj>#*={pDpeC2 zE6>d|PUmXi5lAR%Fp}V(a4bWVh4CT_+g4+Rf-GicHU@@9Ux|{6ogvvkqZmA0{an^L HB{Ts59k@dc literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-secure.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close-secure.png new file mode 100644 index 0000000000000000000000000000000000000000..d57efda2472d3410a2dc219fb6775bb78259cd6a GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V}MVHE0Er|p85Y*mamUkjPw}Y zoftix8JU=X!VC@5=A65BbKRbUnKccLKK{{>GJpTFAK1idWNrQX&z}<)uQtz|Upr|= zRsYnOoWj8PWNTLs19J;yO>H@46&Xb(acP;ZW^r#10S8-wle>8LtmF9mmF?x5cjvF) zJaGEly!BhAE??{I?{{6j>m<-J&XOR%V1|$Ho<6vFeQAl-Q}cg7!D>$z#}J9jsVBmP zS`-8rE*e^M>&z%FYrgltAuFEG-8a;^4G9wJ#0A6~3yJRj$Nzn?{PC-b`rBDv8j z;t8fpO?Nv?RZN@Ow&kSe+1VkC()X&Fg9H3NTbv7CsUWcD{Z5W^{fuD;cl$ZXFjll> mMlO5UcxHR-@xt8re{8l_xXSx<#18c literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-close.png new file mode 100644 index 0000000000000000000000000000000000000000..53c4f6672a4d012dd95d88b2dd49c27d9534fc11 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1=0=E<`9qGNVS3V@|Ohp z1vA|7cs%9&{v8v`v*L^tc?*U9ZvaY}db&7pE@0~KG zq>+c?217E-0STrhhHn&mSlChx{(fX&W@BKe*YsPO%k(D?XaIw!tDnm{r-UW|CACTJ literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open-alt-secure.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open-alt-secure.png new file mode 100644 index 0000000000000000000000000000000000000000..bb2d2f74638e40a526518238b3a59f59d93eed4b GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMft^l79S0LRmZ4MlT_%cD*CI*bm zEG$e+3|ExeM5aTP$xxLJ8j?7;lvA8=idO9;g3;~i508|EK*xT@B zRMm@!O8~iHshOT(kr0!CBoh-;d_f5>KQCNFNka?B2I>Nm+&sJx281-Svg&FUKd_1Q z|9_UM{;7^W0ggWYa>^<#GiNmcRhX6p`2{nm1gihO!u$2{v88{0|M>Rln$8nD3A#W6(Ua_ZSozQYCr zt``gEw9VXj#)nVj+y1pyeL}9UCO&(7cYdQi)3FE%ws``FKKb1@>Jj6KG`U!RqpU)kJ^wHd{?o>cp|gZs$Dv-S1r&FJIi)-lkNF!A}^K%J^0-?rR+Dm Y{~P|T7L~7G0^Q2s>FVdQ&MBb@016SrBme*a literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open-alt.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder-open-alt.png new file mode 100644 index 0000000000000000000000000000000000000000..079e37ee4e3c9e5a6e6fa3ba51a8fbe9c4f62444 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Q-Dv1E0AuOHir^aSbuRV&=k>< zAirP+75+f=Z=czo-8iyt(ZsCNMX}bVlDj9F=K~eQdb&7Fg`glT*kpx;FQrhJD^k4OM?7@8Fna7a=)?c%g1+5A6!{m zBEk3f_m?-Xo;*BzYWLdt{oM`a<)vB4iH=(zIXnPr>GgDR43W5;dNy3F$w0*QBKySv z*6R1Y7p$lK5E5`% zy?N)v%54n?9o4!wetE~SZ>RL#cN56% y>aD)C<bP0l+XkKM89y8 literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder.gif b/manager/media/style/MODxRE2_DropdownMenu/images/tree/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..21f367852c1d2e3e8dfd9b56fbf08993c3bca04f GIT binary patch literal 889 zcmb7@&uhqW7{?!Sm^dgWzYg+a4xFAEa>ouF9Nb-=97L?#l)3qp7LBJ&#*#Q#X{gm= zw3Qx1N-~?-YDFR(wAFgNp6`F)xjjA4^M2m%_w)JeY2UqL=b;s{LjHa|GoG)vPosZotoPqkD{6_8RQ#ZxRrQ%JxD8Z3tCmfBO{ z5f-5lQftZF!!2CHrC3lj53?{0lOjd0dZ>kJsKAlY5D&2s4Ph&+0fRIwp+$|wU;_;n z!%~7OC(K>lrS!3u%*;*Qq~yYaqMEC^3hE(6uZy{;3-a&-noMH{`XPZrSOW%WSkej) z7K05mSW?banVe8FDI?LxS~68r!B^zMf})9<;3H0B0K90&Xw+gQen69H?0^%3Q3z|m zAk8GS;K5?BftET^byFrMgo|M$`dCY*Qjep2ZSGyg=7eQ)bCv3Cj4sz3?`pKMqmIxh zETo2X-K61BzzsCdfh%Dinpida?fcJPzu$ZqzjW(vSKqzc51-uZ9~c-OdHj6z(eTL2 zckjo)%zT`hK6C9x=hdFm-Pf<(d+=iH?Zw_Zm+##FG(9snKfkcBz*7e5zheE|l0_mv zWou2zC%+DzTGl$&^Q?1Xto=&MkKU&zR&F}FX0&U=;E~08E)MS> zAMD!lx_6f!*torWTkFsTKfZb2*|uY|eRBsUUUf`PcKun^v99g>-pi|(x5%!4B+sZi literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/globe.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/globe.png new file mode 100644 index 0000000000000000000000000000000000000000..18820a4107a715f4b0bfbfd1bfbf3215e644db9d GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}W`IwKE0AuOHir&q+M|glfR-th z1o;Is{JQe3_v6_$C7iDw&q_CIExD?Oa|F+-!ETxO_uR{%@6*s zhJMpJKRqhm{V`j^;*e{@VFjVpDGuiEbY>~vVklT+n)d&5g^0q%4{D6I%&b?UFUT&5 zG!639rZe;aaXU|e(xXd8B@7)y{9cU Q0lJRC)78&qol`;+0N5X-kN^Mx literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/home.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/home.png new file mode 100644 index 0000000000000000000000000000000000000000..c97fbda9cea50f276e44c2fc0d0066971ec005bf GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}V1Q4EE0AuOHiwFc_08upprKMF zL4Lsu-=AOH+>&A^^Z4|XtoR5wm3MD$?q6OR7{DVTKl3F}Rf4CBV~E7%-V^RZ4F){U zfwxzFxmWVPS?G|;n;CzmepzAi{KWQezu9iEE8O)yEOAA0Ptxkr)0}fc+L=P^lWXdZ zf7Rsh-0$PeaL>xE=WP_L1gGUEk**6Sg7@zIWS``)Vudu-zAT%uc=DqUH&`&7f`~~)5S4_<9f0KTi>OCwl}I8i@&Kc^Bt)9F4l6e zN_^Ffv)_bvl|}BjGL<>tXu0%)TkowBjKvtXhVYANS^SRy8o=P`>gTe~DWM4f7~e?* literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/link.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/link.png new file mode 100644 index 0000000000000000000000000000000000000000..34b8bac39fd99d00a1d54d3aaaeca91bcf87bad4 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}T7XZ8E0AuOHiy>e3v-ny&?d!_ zAirP+i*FzPEQ!5)eYK>6AP3XSlSj61tSC>9^fBgnG_z7qRq>{-V?R)Fy{C&~h{R>z zv+jJ%iUKYdmH2KPc=96R`~D@mHx2$g&0fjf@Rq%C)yyS(7NxBG78-sjgHb1^pU2Df z!3Ujup5t3QkB7HC$Y^=ivAx57r^z2R+e+bj!@DV-&tHG-3`x9LbpAr&Y~e7z=hti* u{l7WBEiQs0qP{t@q+89_#1S#4zy*`lX%)f7T!_1sH=gjw&pF4Bxctwg*lqd2Cb60n9 zXLpLs%uU_Ijom1UYOd-kuIx(DE9Rmu;=(QzqioLVEY9pqKyorCbrL6bLIP|+0}I3G zrq~mqW@5%>6l;;Gnu;l#Qm{Z#)I?0!gn|@$S&hY*jR_nvYNSSD#75W()&K)(ummmC zuo&2Y1{Q`X1VxSzRaT|YhqcH=R9J;VE?A(*qRh$!^&o{_B~fA}$b%oCiD}pY{U8B_ zU=1*k21~Sp2NnYx(7>W_F3QLeEJ9%<^kFSBW?_P_kP8+l3b7D;gwrqpywDD#p%zxc z575Lk>;NYShC;9g7)WChw7>(4femPi6Gb=5$Pt8#!AR)CT4YS|IKtQD-cd|W7&a$Y ziQdHMa6R!ZMiV>Y2#LZ#N=U~|5*`7ZK;t>!N-z(auxe#>Z8^WPw4BfVU0TR3KItDC z9vz$dJ~N+NoLl%aJHJq`>DuPj`iJe!UENKYmo3kG+It7udiqBuK0J7wx!>`$sjEBP zH_-4X-TNjx_Gxk{pI=*F-`Lo|`v(61qG)x?CZc63iH7(SR9H=O+xDOBo6gqE>?*#{ zGSN|1^=<3;?L9lbo~lnBs@Xg}(K=YSw_yDD;mWoXjXMkO?8`Jx9jz-WeYU&sSutJ_~+zW6KKdAj1>i}F{+lby5I2ODnPI9OJB_1)dk LpM527Yw6@a>)grc literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/sitemap.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/sitemap.png new file mode 100644 index 0000000000000000000000000000000000000000..494adab497a9d1fbbc7e5ac140d4ee175c25af6b GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!eSlAhE0AuOHiv9vXm{uu&G>h&DEg5<6!=L=@p;s z|NqynWm5{_pV!_j(~|qa`J>!piHHL`AI#7_cw(2sa}%bgw|QA6@0i?E_wJl%!?uRN yy9P2#n6IjAI)6F)#{Onu@z^y{Y2SDKX4>?V?ZgG|;P*g_7(8A5T-G@yGywpiVr>in literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/time.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/time.png new file mode 100644 index 0000000000000000000000000000000000000000..f1aaf37b5d28b3fe9381d7958122376be6104742 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!S%6Q7E0AuOHiuMnvvW}>P^Vx? zkY6xE4d44Meqv{pKfH4~m*V1B_KL+5WLKG|i(`ny<=lQxK4wD>mdHKT)4u$-pDo6D zGWA!0nQEhh+~qC5U)|cYuJ6RE`%)UW-)K3^coraN?JCk8Tf=4PAfj<|V{puiC5M9~ z#4I)a9w^VTDd_Gs{Bie%<&>Yixx)IL8hf55ZNGW$Xoi|n-2daUmmlwF-^18r!gAu1 TdBs7X3m80I{an^LB{Ts5s3mPM literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/images/tree/warning-sign.png b/manager/media/style/MODxRE2_DropdownMenu/images/tree/warning-sign.png new file mode 100644 index 0000000000000000000000000000000000000000..630c32b6109e650ee7cb95c7094875fa703d110e GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!O@L2`E0AuOHitY^JEKSfs9(4w z$S;^d4zp=`>Fl#}J9jsb@U-S_}k^2B<5Z+5Eo# zx|`#cj*8uzLgwFIrJX;wY|ojvw14MbsLr!dt9~(ep7oZr6WbbZui!PY3X;icS|X>) zlXd6&3ceV#c(YUM-8!PSiFtD@WD%b<)n(fx#gHFA81HT5u;f`V%MWNHgQu&X%Q~lo FCIH_MYBB%- literal 0 HcmV?d00001 diff --git a/manager/media/style/MODxRE2_DropdownMenu/index.html b/manager/media/style/MODxRE2_DropdownMenu/index.html new file mode 100644 index 0000000000..fdd3791786 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/index.html @@ -0,0 +1,2 @@ +

    Unauthorized access

    +You're not allowed to access file folder \ No newline at end of file diff --git a/manager/media/style/MODxRE2_DropdownMenu/login.tpl b/manager/media/style/MODxRE2_DropdownMenu/login.tpl new file mode 100644 index 0000000000..f2df4bf90b --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/login.tpl @@ -0,0 +1,252 @@ + + + + [(site_name)] (MODX CMF Manager Login) + + + + + + + + + + +
    + + + +

    + +

    +
    © 2005-2016 by the MODX. MODX™ is licensed under the GPL.
    + + diff --git a/manager/media/style/MODxRE2_DropdownMenu/manager.lockout.tpl b/manager/media/style/MODxRE2_DropdownMenu/manager.lockout.tpl new file mode 100644 index 0000000000..b6ea28baf0 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/manager.lockout.tpl @@ -0,0 +1,89 @@ + + + +MODX Content Manager + + + + + + + + + + + +
    + +
    + + +
    + [+logo_slogan+] +
    + + + + +
    +

    [(site_name)]

    + +
    [+manager_lockout_message+]
    + +
    + +   + +
    +
    + +
    + +
    +
    + + + + +

    + MODX™ is licensed under the GPL license. © 2005-2016 MODX. +

    + + + + diff --git a/manager/media/style/MODxRE2_DropdownMenu/style.css b/manager/media/style/MODxRE2_DropdownMenu/style.css new file mode 100755 index 0000000000..f8faada782 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/style.css @@ -0,0 +1,783 @@ +/* -------------------------[ Neutralize styles, fonts and viewport ]--- */ + +* html { overflow-x: hidden; overflow-y: auto; } +/* for IE7 */ + +html, body, form, fieldset, img { margin: 0; padding: 0; } +img { border: none; } +html { font-size: 100.01%; line-height: 1.5; color: #333; } +body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; height: 100%; color: #333; background: #eeeeee; } +/* For Arabic Font */ +html[lang="ar"] body, html[lang="ary"] body, html[lang="azb"] body, html[lang="fa-IR"] body, html[lang="haz"] body, html[lang="ps"] body, html[lang="ur"] body { font-family: Tahoma, Arial, sans-serif; } +/* For Chinese Font */ +html[lang="zh"] body { font-family: "PingFang SC", "Microsoft JhengHei", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", Helvetica, sans-serif; } +/* For Devanagari Font */ +html[lang="bn-BD"] body, html[lang="hi-IN"] body, html[lang="mr-IN"] body { font-family: Arial, sans-serif; } +/* For Greek Font */ +html[lang="el"] body { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } +/* For Gujarati Font */ +html[lang="gu-IN"] body { font-family: Arial, sans-serif; } +/* For Hebrew Font */ +html[lang="he"] body { font-family: "Arial Hebrew", Arial, sans-serif; } +/* For Japanese Font */ +html[lang="ja"] body { font-family: Meiryo, "Hiragino Kaku Gothic Pro", sans-serif; } +/* For Korean font */ +html[lang="ko-KR"] body { font-family: "Apple SD Gothic Neo", "Malgun Gothic", "Nanum Gothic", Dotum, sans-serif; } +/* For Thai Font */ +html[lang="th"] body { font-family: "Sukhumvit Set", "Helvetica Neue", Helvetica, Arial, sans-serif; } +/* For Arabic Font */ +html[lang="fa"] body { font-family: Tahoma, Arial, sans-serif; } +img, a img { border: 0 !important; text-decoration: none; padding: 0; margin: 0; } +h1, h2, h3, h4, h5, h6, p, pre, blockquote, ul, ol, dl, address { margin: 0 0 .5em; padding: 0; font-weight: normal; } +li, dd, blockquote { margin: 0 0 0 1em; } +.rtl li, .rtl dd, .rtl blockquote { margin: 0 1em 0 0; } +.file-manager td { border-bottom: 1px solid #d5dfea; } +.ab2 { padding-bottom: 20px; } +td { vertical-align: top; } +/* -------------------------[ Miscellaneous conveniences ]--- */ + +.clearfix, .cls { clear: both; height: 0 !important; margin: 0; font-size: 1px; overflow: hidden; } +.clear { clear: both; } +.fail { color: #900; font-weight: 500; } +.warning { color: #111; font-weight: 500; } +.success { color: #090; font-weight: 500; } +.contentPad { height: 20px !important; clear: both; } +.hide, .skip, .printonly { display: none; } +.inline { display: inline; } +/* -------------------------[ Headers and Paragraphs ]--- */ +h1, h2, h3, h4, h5, h6, .subTitle { font-weight: 500; } +h1 { font-size: 1.8em; line-height: 35px; margin: 15px 15px 10px 15px; } +.rtl h1 { margin-right: 10px; } +h2 { font-size: 164%; } +h3 { font-size: 145%; } +h4 { font-size: 118%; } +h5 { font-size: 100%; font-weight: 500; } +h6 { font-size: 86%; font-weight: 500; } +p.caption, p.comment { font-size: 86%; color: #888; } +button { color: #821517; font: inherit; font-weight: 500; width: 112px; margin: 0 5px 0 0; cursor: pointer; } +.rtl button { margin: 0 0 0 5px; } +a, a:active, a:visited, a:link { color: #3697CD; text-decoration: none; } +a:hover { color: #26719B; text-decoration: underline; } +hr { color: #777; background-color: #777; height: 1px; border: 0; } +.split { background: #556476 url(images/misc/line.gif) repeat-x; height: 1px; font-size: 0; clear: both; padding: 0; } +#previewIframe { width: 100%; height: 400px; } +.messageRead { color: #333; } +.messageUnread { color: #3CB371; font-weight: 500; } +.right { font-weight: 500; color: #333; float: left; padding: 0 20px 20px; } +.rtl .right { float: right; } +.gridster > * { -webkit-transition: height .4s, width .4s !important; -moz-transition: height .4s !important; -o-transition: height .4s !important; -ms-transition: height .4s !important; transition: height .4s !important; } +/* frameSet*/ +.resizer-move::before { position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 900; background-color: transparent; content: "" } +#mainMenu, #tree, #main { position: absolute; } +#mainMenu iframe, #tree iframe, #main iframe, #mask_resizer { position: absolute; width: 100%; height: 100%; } +#mainMenu { position: relative; height: 48px; width: 100%; box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25); z-index: 100; } +#mainMenu iframe { height: 48px } +#tree { width: 320px; top: 48px; left: 0; bottom: 0; overflow: hidden; } +#main { top: 48px; left: 320px; right: 0; bottom: 0; } +/*resizer*/ +#resizer { position: absolute; z-index: 99; top: 48px; bottom: 0; left: 320px; width: 8px; margin-left: -1px; cursor: col-resize; background-color: transparent; transition: background-color .3s } +#resizer:hover { background-color: #e0e0e0; } +#resizer #hideMenu { position: absolute; left: -8px; top: 0; width: 16px; height: 40px; line-height: 35px; text-align: center; font-size: 30px; cursor: pointer; } +.sidebar-closed #resizer #hideMenu { left: 0 } +.sidebar-closed #resizer #hideMenu .fa::before { content: "\f105"; } +/* -------------------------[ Topbar ]--- */ +.dropdown-menu { display: none } +#topbar, #tocText { margin: 0; color: #333; padding: 0 5px; float: left; width: 10px; white-space: nowrap; line-height: 48px; } +#topbar * { vertical-align: middle; } +#topbar a, #topbar a:link, #topbar a:visited { font-weight: 500; color: #AAB1B9; text-decoration: none; } +#topbar a:hover { color: #fff; text-decoration: underline; } +#tocText, #buildText, #workText { color: #93a59e; } +#tocText, #buildText img, #workText img { margin: 0 5px; } +#statusbar { font-size: 11px; } +.rtl #statusbar { left: 0; } +.mainmenu { position: relative; z-index: 2 } +#supplementalNav { position: relative; z-index: 1; float: right; text-align: right; color: #C9D4E1; cursor: pointer } +#supplementalNav * { vertical-align: middle; } +#supplementalNav ul, #supplementalNav li { padding: 0; margin: 0; list-style: none } +#supplementalNav li { float: right } +#supplementalNav a { color: #e0e0e0; height: 48px; line-height: 46px; display: inline-block; padding: 0 15px; text-decoration: none } +#supplementalNav a:hover, #supplementalNav a.hover { color: #fff; background-color: rgba(255, 255, 255, 0.05); } +#supplementalNav .username { display: inline-block; margin-right: 10px } +#supplementalNav .icon { display: inline-block; border-radius: 50%; overflow: hidden; width: 28px; height: 28px; line-height: 0; background-size: cover; background-position: 50% 50%; background-repeat: no-repeat; } +#supplementalNav .fa { font-size: 28px; width: 28px; height: 28px; line-height: 28px; } +#msgCounter, #newMail { margin: 0; padding: 0; } +#menuForm { float: left } +/* -------------------------[ Forms ]--- */ +tbody, thead, tr { margin: 0; padding: 0; border: 0; } +form label { cursor: pointer; } +fieldset { border: none; } +input, select, textarea, option, optgroup, td { font: inherit; color: inherit; } +.rtl input, .rtl select, .rtl textarea, .rtl td { text-align: right; } +optgroup { font-style: normal; font-weight: 500; background-color: #ddd; } +optgroup option { font-weight: normal; background-color: #fff; } +#ta, .tmplvars textarea { } +form select { background: #F9F9F9; border-color: #AAAAAA #DEDEDE #DEDEDE #AAAAAA; border-style: solid; border-width: 1px; padding: 4px 4px 4px 2px; margin: 0 2px 0 0; min-height: 17px; vertical-align: baseline; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } +form select.dropdown, form select[size="1"], form select:not([size]) { height: 28px; } +form input[type="text"], form input[type="password"], form input[type="number"], form textarea { background: #f9f9f9; border-color: #999 #DDD #DDD #999; border-style: solid; border-width: 1px; padding: 4px 2px 4px 4px; margin: 0 5px 0 0; min-height: 17px; vertical-align: baseline; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; -moz-box-shadow: 0px 1px 3px #E8E8E8 inset; -webkit-box-shadow: 0px 1px 3px #E8E8E8 inset; box-shadow: 0px 1px 3px #E8E8E8 inset; } +.rtl form input[type="text"], .rtl form textarea { padding: 2px 2px 2px 0; } +input[type="email"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="number"]:focus, textarea:focus, select:focus { outline: none; background: #fff; border-color: green; border-style: solid; border-width: 1px; } +input[type="button"], input[type="submit"] { background: #ededed; border: 1px solid green; cursor: pointer; line-height: normal; margin: 0 5px 3px 0; padding: 4px 10px; overflow: visible; min-height: 27px; -webkit-appearance: button; background: -moz-linear-gradient(#f5f5f5, #DDDDDD); background: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#DDDDDD)); background: -o-linear-gradient(#f5f5f5, #DDDDDD); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f5f5f5, endColorstr=#DDDDDD); +zoom: 1; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } +input[type="button"]:hover, input[type="submit"] { border-color: green; background: -moz-linear-gradient(#FFFFFF, #EEEEEE); background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#EEEEEE)); background: -o-linear-gradient(#FFFFFF, #EEEEEE); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF, endColorstr=#EEEEEE); +zoom: 1; } +input.checkbox, input.radio, input.submit, input.button, input[type="checkbox"], input[type="radio"], input[type="submit"], input[type="button"] { height: auto !important; width: auto !important; cursor: pointer; cursor: hand; } +input.checkbox, input.radio, input[type="checkbox"], input[type="radio"] { vertical-align: -2px; } +select { border: 1px solid #c3c3c3 !important; border: 0; background: #fcfcfc; cursor: pointer; cursor: hand; } +.form { padding: 15px; border: solid 1px #ddd; } +form input.hidden { display: none !important; position: absolute; } +.form label, .form input, .form textarea { display: block; float: left; vertical-align: middle; } +.form label { padding-right: 20px; text-align: right; width: 110px; } +.rtl .form label, .rtl .form input, .rtl .form textarea { float: right; } +.rtl .form label { padding-left: 20px; text-align: left; } +form textarea { height: 75px; width: 300px; } +.form legend { color: #04C; font-weight: 500; padding: 5px; } +.form select { display: inline; float: left; } +.rtl .form select { float: right; } +.form br { clear: both; } +input.submit { display: block !important; float: none !important; margin: 20px 0 0 140px !important; } +.rtl input.submit { margin: 20px 140px 0 0 !important; } +.form fieldset.list { margin: 6px 6px 3px 0; } +.rtl .form fieldset.list { border: 0; padding: 0 !important; margin: 6px 0 3px 6px; } +.form fieldset.list legend { display: none; } +.form fieldset.list label, .form fieldset.list input { padding: 0; margin: 0 0 3px; float: left; display: inline; border: 0; background: none; width: auto; height: auto; } +.rtl .form fieldset.list label, .rtl .form fieldset.list input { float: right; } +.form fieldset.list label { padding-left: 5px; text-align: left; width: auto; } +/* -------------------------[ Misc stuff ]--- */ +.sectionBody fieldset { background: none repeat scroll 0 0 #FDFDFD; border: 1px solid #CCCCCC; padding: 15px !important; } +.sectionBody legend { font-weight: 500; padding: 5px 15px; background: #fff; border: 1px solid #ccc; -moz-box-shadow: 1px 1px 3px #ccc; -webkit-box-shadow: 1px 1px 3px #ccc; box-shadow: 1px 1px 3px #ccc; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } +.sectionBody fieldset h3 { font-size: 14px; color: #789; font-weight: 500; padding-bottom: 0; margin-bottom: 0; } +.sectionHeader, .showHideVisible { color: #666; margin: 0 15px; padding: 5px 3px 5px; zoom: 1; font-weight: 500; font-size: 14px; border: 1px solid #ccc; border-bottom: none; text-shadow: 0px 1px 0px #FFF; } +.tab-page .sectionHeader { margin: 2px 3px 0px; } +.rtl .sectionHeader { direction: rtl; padding: 5px 18px 5px 3px; } +.sectionBody, .layerVisible { position: relative; display: none; margin: 5px 15px 15px; display: block; } +.tab-page .sectionBody, .tab-page .section .sectionBody, .sectionBody .sectionBody { background: none repeat scroll 0 0 #F7F7F7 !important; border: 1px solid #CCCCCC; margin: 0 3px 15px; padding: 7px; } +.section .sectionBody { margin: 0 15px 15px; padding: 15px; background-color: #fff; border: 1px solid #CCCCCC; } +.rtl .sectionBody, .layerVisible { direction: rtl; position: inherit; } +.showHideVisible, .layerVisible { margin: 0 10px 4px; } +.sectionHeader { padding: 5px 9px 5px 15px; background: -moz-linear-gradient(#f5f5f5, #DDDDDD); background: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#DDDDDD)); background: -o-linear-gradient(#f5f5f5, #DDDDDD); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f5f5f5, endColorstr=#DDDDDD); +zoom: 1; -moz-box-shadow: 0px 1px 0px #fff inset; -webkit-box-shadow: 0px 1px 0px #fff inset; box-shadow: 0px 1px 0px #fff inset; } +.rtl .sectionHeader { direction: rtl; padding: 5px 18px 5px 3px; } +.comment { font-size: 11px; color: #999; padding: 4px 0; } +thead, .fancyrow { color: #333; height: 18px !important; background-color: #E4E4E4; } +thead td { color: #333; border-top: 1px solid #fff; } +.fancyrow2 { height: 18px !important; background-color: #F0A62F; background-position: top; background-repeat: repeat-x; border-bottom: 1px solid #fff; color: #fff; } +li { padding: 0; margin: 0; list-style: disc outside url(images/misc/li.png); } +ul { margin: 0 20px 0 10px; } +.rtl ul { margin: 0 10px 0 20px; } +.screen { border: 1px solid #ddd; text-align: center; } +a img { border: 0; } +.even { background: #D9E7C2; } +.odd { background: #fff; } +/* -------------------------[ end sortable table ]--- */ +.disabledImage { width: 20px; opacity: 0.3; filter: alpha(opacity=30); } +.disabledImage img { border: 0; } +.editorCell { border-top: 1px solid #808080; text-align: left; vertical-align: baseline; } +.rtl .editorCell { text-align: right; } +.row1, .row2, .row3 { background-color: #fff; color: #333; } +.row2 { background-color: #fff; } +.row3 { background-color: #f5f5f5; } +div.treeframebody { background: #f5f5f5 url(images/subnav.jpg) !important; -webkit-box-shadow: inset -2px 2px 6px 0px rgba(0, 0, 0, 0.1); box-shadow: inset -2px 2px 6px 0px rgba(0, 0, 0, 0.1); } +#treeMenu { margin-left: 2px; background-color: rgba(0, 0, 0, 0.1); border-bottom: 1px solid #fff; } +#treeMenu table td { padding: 3px 0px; } +#treeMenu * { vertical-align: middle; } +#treeHolder { cursor: default; height: 100%; padding: 6px 8px 0; line-height: 1.5em; } +#treeHolder { margin-top: 0; padding-left: 8px; } +#treeRoot { margin-top: 2px; margin-left: -20px; } +#treeRoot div img { margin: 0; vertical-align: middle; } +.rtl #treeRoot div img { margin: 0; } +#floater { display: none; position: absolute; width: 100%; padding: 15px; padding-bottom: 10px; top: 31px; left: 0px; background: #fff; border: 1px solid #b0b0b0; box-shadow: 0 5px 5px 0 rgba(0, 0, 0, .1); box-sizing: border-box; z-index: 500; } +#floater td { padding: 0 !important; } +#floater input, #floater select { box-sizing: border-box; width: 150px; margin-bottom: 5px; } +.rtl #floater { right: 4px } +.rootNode, .treeNode, .treeNodeHover, .treeNodeSelected, .emptyNode { color: #000; cursor: pointer; width: auto; margin-right: 2px; } +div.treeNode { white-space: nowrap; } +.treeNodeSelected, .treeNodeHover { background-color: #FFFFFF; border: 1px solid #CCC; color: #000; padding: 1px 2px; margin-left: -3px; } +.treeNodeSelected { font-weight: 700; } +.unpublished a, .unpublishedNode, .unpublish { color: #B68282; font-style: italic; } +.deletedNode, .deleted { color: #A52A2A; text-decoration: line-through; } +.publishedNode { /*color: #4078c0;*/ color: #3697cd; } +.emptyNode { color: #aaa; cursor: default; } +.notInMenuNode { color: #39515d; text-decoration: none; } +.protectedNode { color: #aaa; } +#treeSplitter { width: 10px; height: 100%; position: absolute; right: -10px; } +.rtl #treeSplitter { left: -10px; } +.disabledPlugin a { color: #B68282; font-style: italic; } +label.disabled { color: #aaa; } +/* -------------------------[ grid style ]--- */ +.grid { width: 100%; background-color: #fff; border: 1px solid silver; border-collapse: collapse; } +.grid th, .grid td { padding: 5px; } +.gridHeader, .grid th { color: #333; font-weight: 500; white-space: nowrap; background-color: #d2d2d2; text-align: left; } +.gridItem { background-color: #fff; padding: 3px; } +.gridAltItem { background-color: #f7f7f7; padding: 3px; } +.grid tbody tr:hover td { background: #E9EDF3; } +.gridRowIcon:hover { background-color: #f5f5dc; } +.grid a { text-decoration: none; } +.grid img { vertical-align: middle; padding-right: 4px; } +/* -------------------------[ search bar ]--- */ +.searchbar { width: 100%; } +.searchbar table { margin-top: -3px; } +.searchtext { margin-top: -5px !important; height: 18px; padding: 2px; } +.searchbutton { width: 22px; padding: 5px; text-decoration: none; background: #fff; border: 1px solid #D1D8DF; } +.searchbutton:hover { text-decoration: none; background: #fff; border: 1px solid #88939E; } +.searchbutton img { vertical-align: middle; margin: 0; padding: 0 } +.searchtoolbarbtn { text-decoration: none; border: 1px solid #D1D8DF; text-decoration: none !important; background: #fff; padding: 5px 5px 5px 2px; } +.searchtoolbarbtn img { vertical-align: middle; padding: 3px; } +.searchtoolbarbtn:hover { text-decoration: none; border: 1px solid #88939E; background: #fff; } +/* -------------------------[ home page main links ]--- */ +a.hometblink, a.hometblink:active, a.hometblink:visited, a.hometblink:link, .hometblink { text-decoration: underline; color: #333; font-weight: 500; } +a.hometblink:hover { text-decoration: underline; color: Gray; } +.notice { width: 100%; padding: 5px; border: 1px solid #eee; background-color: #f5f5f5; color: #707070; } +#preLoader { position: absolute; z-index: 50000; width: 100%; height: 100%; text-align: center; vertical-align: middle; padding: 100px 0 0 0; background-color: rgba(255, 255, 255, 0.5); } +.preLoaderText { background-color: #fff; width: 400px; padding: 50px; border: 1px solid #dadada; -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; -webkit-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); } +.preLoaderText p { font-size: 18px; padding: 25px 0 0 0; } +#loadingmask { display: none !important; } +/* -------------------------[ contextmenu in editing modules ]--- */ +.contextMenu { background: #fff; margin: 0; padding: 4px; border: 1px solid #c9c9c9; border-top-width: 3px; border-top-color: #3697CD; position: absolute; z-index: 10000; -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); } +.cntxMnuItem { background-image: url(images/misc/_tx_.gif); cursor: pointer; color: #333; padding: 3px 5px; border: 1px solid transparent; } +.rtl .cntxMnuItem, .rtl .cntxMnuItemDisabled { padding: 3px 5px; } +.cntxMnuItemDisabled { cursor: default; padding: 3px 5px; color: #111; } +.cntxMnuItemOver { background: #E6F2FF; border: 1px solid #BACCDB; color: #333; padding: 3px 5px; cursor: pointer; } +.rtl .cntxMnuItemOver { padding: 2px 1px 2px 15px; } +.cntxMnuItem img, .cntxMnuItemOver img, .cntxMnuItemDisabled img { margin: 0 8px 0 0; } +.rtl .cntxMnuItem img, .rtl .cntxMnuItemOver img, .rtl .cntxMnuItemDisabled img { margin: 0 0 0 8px; } +.cntxMnuItem img, .cntxMnuItemDisabled img { } +.cntxMnuSeparator { font-size: 0; height: 1px; background-color: #D8D8D8; overflow: hidden; margin: 3px 0; } +.rtl .cntxMnuSeparator { margin: 3px 28px 3px 1px; } +#frameset { overflow: hidden; position: absolute; top: 0; left: 0; right: 0; bottom: 0; } +#frameset .dropdown { display: block; position: absolute; z-index: 1001; left: auto; top: 48px; right: auto; min-width: 200px; background-color: #fff; border-radius: 0; box-shadow: 0 0.3rem 1rem rgba(0, 0, 0, 0.2); opacity: 0; visibility: hidden; overflow: auto; max-height: 400px; max-height: calc(100% - 48px); transition: opacity 0.3s, visibility 0.1s } +#frameset .show.dropdown { opacity: 1; visibility: visible } +#frameset .dropdown-menu { display: block; margin: 0; padding: 0px; overflow: hidden; } +#frameset .dropdown-menu li { list-style: none; } +#frameset .dropdown-menu a, #frameset .dropdown-menu span { display: block; position: relative; padding: 10px 15px; text-decoration: none; border-bottom: 1px solid rgba(0, 0, 0, 0.1); color: #39545e } +#frameset .dropdown-menu li:last-child a, #frameset .dropdown-menu li:last-child span { border: none } +#frameset .dropdown-menu a:hover::after { position: absolute; z-index: -1; content: ""; left: 0px; top: -1px; right: 0px; bottom: -1px; background-color: #0b9991; } +#frameset .dropdown-menu a:hover { color: #fff } +#frameset .dropdown-menu a .fa { margin-right: 10px; color: #39545e; width: 15px; text-align: center; } +#frameset .dropdown-menu span { text-align: center; font-size: 11px; color: #999; } +#frameset .dropdown #searchresult { display: block !important } +#frameset #searchresult { position: absolute; z-index: 98; overflow: auto; top: 48px; right: 0; bottom: 0; width: 0; margin-right: -100%; transition: margin-right 0.3s; background-color: #fcfcfc; box-shadow: 0 0 60px rgba(0, 0, 0, 0.15); border-left: 1px solid rgba(0, 0, 0, 0.1); box-sizing: border-box; } +#frameset #searchresult.open { margin-right: 0 !important } +#frameset #searchresult .ajaxSearchResults ul, #frameset #searchresult .ajaxSearchResults li { margin: 0; padding: 0; list-style: none } +#frameset #searchresult .ajaxSearchResults b, #frameset #searchresult .ajaxSearchResults strong, #frameset #searchresult .ajaxSearchResults a { display: block; background-color: #ddd; color: #3d5764; padding: 5px 10px; margin-top: -1px; border-top: 1px solid rgba(0, 0, 0, 0.03); border-bottom: 1px solid rgba(0, 0, 0, 0.03); box-sizing: border-box } +#frameset #searchresult .ajaxSearchResults a { color: #3697CD; padding: 4px 0 4px 10px; background-color: #fcfcfc; text-decoration: none; } +#frameset #searchresult .ajaxSearchResults a:hover { color: #333; background-color: #fff; } +#frameset #searchresult .ajaxSearchResults a .fa { position: relative; float: right; margin: -3px 0; padding: 4px 5px; color: #3d5764 } +#frameset #searchresult .ajaxSearchResults a.selected { background-color: #0b9991; color: #fff; font-weight: 700; } +#frameset #searchresult .ajaxSearchResults a .text-danger { font-weight: 700 } +/* -------------------------[ Top Navbar of snap in top menu bar layout ]--- */ +#topMenu { min-width: 450px; background: url("images/misc/headers.jpg") repeat scroll 0 0 #23393C; } +#Navcontainer { color: #fff; } +#nav { margin: 0; padding: 0; float: left } +.rtl #nav { right: 10px; } +#nav ul { display: none; height: 28px; position: relative; z-index: 500; margin: 0 0 0 -10px; padding: 0 0 0 10px; } +.rtl #nav ul { margin: 0 -10px 0 0; padding: 0 20px 0 0; } +#nav li { list-style: none; float: left; width: auto; margin: 0; padding: 0; } +.rtl #nav li { float: right; margin: 0 0 0 3px; } +#nav li a { color: #e0e0e0; height: 48px; text-decoration: none; white-space: nowrap; cursor: pointer; line-height: 48px; overflow: hidden; padding: 0 18px; float: none !important; float: left; display: block; } +#nav > li > a > .fa { margin-right: 10px } +#nav a:hover, #nav a.hover { color: #fff; background-color: rgba(255, 255, 255, 0.05); } +#nav a:active { color: #fff; background-color: rgba(255, 255, 255, 0.02); } +#nav li.active a, #nav li.active a.hover, #supplementalNav li.active a, #supplementalNav li.active a.hover { background: rgba(0, 0, 0, 0.15); } +#nav li.active a { color: #FFF; position: relative; z-index: 999999; } +/* -------------------------[ Contextual Menu used in the Tree Menu ]--- */ +#mx_contextmenu { position: absolute; height: auto; visibility: hidden; z-index: 10000; width: 190px; background: #fff; margin: 0; padding: 4px; border: 1px solid #C9C9C9; overflow: hidden; line-height: 11px; font-size: 12px; /* font-size: 11px; */ -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); } +#mx_contextmenu .menuLink { cursor: pointer; color: #222; padding: 4px 2px 4px 4px; line-height: 16px; border: 1px solid #fff; } +#mx_contextmenu .menuLink:hover { background: #E5F0D6; border-color: #98BF6C; color: #333; } +#mx_contextmenu .menuLink:hover, #mx_contextmenu .menuLinkDisabled { cursor: pointer; } +#mx_contextmenu .menuLinkDisabled { cursor: default; color: #787878; padding: 3px 2px 4px 4px; line-height: 16px; border: 1px solid #fff; } +#mx_contextmenu .menuLink img, #mx_contextmenu .menuLink:hover img, #mx_contextmenu .menuLinkDisabled img { margin-right: 8px; } +#mx_contextmenu .menuLink img, #mx_contextmenu .menuLinkDisabled img { /* opacity: .3; + filter: alpha(opacity=30); */ vertical-align: top; } +#mx_contextmenu .menuLink:hover img { /* opacity: 1; + filter: alpha(opacity=100); */ } +#mx_contextmenu #nameHolder { color: #86939E; text-align: left; cursor: default; font-weight: 500; margin-bottom: 2px; font-size: 12px; padding: 6px 6px 6px 4px; } +#mx_contextmenu .seperator { font-size: 0; height: 1px; background-color: #D8D8D8; overflow: hidden; margin: 3px 0; } +.rtl #mx_contextmenu .menuLink { padding: 3px 2px 3px 16px; } +.rtl #mx_contextmenu .menuLink:hover, .rtl #mx_contextmenu .menuLinkDisabled { padding: 2px 1px 2px 15px; } +.rtl #mx_contextmenu .menuLink img, .rtl #mx_contextmenu .menuLink:hover img, .rtl #mx_contextmenu .menuLinkDisabled img { margin-right: 8px; } +.rtl #mx_contextmenu #nameHolder { text-align: right; } +.rtl #mx_contextmenu .seperator { margin: 3px 28px 3px 1px; } +/* -------------------------[ Settings Table ]--- */ +.settings { width: 600px; } +.settings tr { width: 100% !important; } +.settings td, .settings th { background: transparent; } +.settings th { width: 200px !important; text-align: left; color: #555; font-size: inherit; } +.rtl .settings th { text-align: right; } +.filelist td { border-bottom: 1px solid #C2C3CF; } +/* -------------------------[ Tabs ]--- */ +.dynamic-tab-pane-control.tab-pane { position: relative; width: 100%; } +.rtl .dynamic-tab-pane-control.tab-pane { direction: rtl; } +.dynamic-tab-pane-control .tab-row .tab { color: #313131; font-size: 1em; cursor: pointer; display: inline; margin: 3px 2px 1px 0; float: left; padding: 4px 12px 5px 12px; z-index: 1; position: relative; top: 0; border: 1px solid #658f1a; background: none repeat scroll 0 0 #66901b; text-shadow: 0px -1px 0px #2B5F0C; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; -ms-border-radius: 0; background: -moz-linear-gradient(#8aae4b, #66901b); background: -webkit-gradient(linear, 0 0, 0 100%, from(#8aae4b), to(#66901b)); background: -o-linear-gradient(#8aae4b, #66901b); } +.rtl .dynamic-tab-pane-control .tab-row .tab { margin: 3px 5px 1px -3px; float: right; padding: 2px 15px 3px; } +.dynamic-tab-pane-control .tab-row .tab.hover { text-decoration: none; background: none repeat scroll 0 0 #749c2f; background: -moz-linear-gradient(#749c2f, #4b7109); background: -webkit-gradient(linear, 0 0, 0 100%, from(#749c2f), to(#4b7109)); background: -o-linear-gradient(#749c2f, #4b7109); } +.dynamic-tab-pane-control .tab-row .tab.selected { color: #333; z-index: 9; top: 0; padding-bottom: 6px; border-width: 1px; border-bottom-style: solid; border-color: #ffcc72 #AAA #FFF #AAA; border-radius: 0; border-width: 1px 1px 0; background: #fff; background-color: #fff; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#ffffff); +} +.dynamic-tab-pane-control .tab-row .tab.selected span { color: #111; background-color: #fff; text-shadow: none; } +.dynamic-tab-pane-control .tab-row .tab span { color: #fff; text-decoration: none; } +.dynamic-tab-pane-control .tab-row .tab .alert { color: #ffcc72; } +.dynamic-tab-pane-control .tab-row .tab.selected .alert { color: #ccc; } +.dynamic-tab-pane-control .tab-page { clear: both; background: #fff; position: relative; top: -2px; padding: 20px 15px 14px !important; } +.rtl .dynamic-tab-pane-control .tab-page { position: inherit; /* critical adjustment for IE ul li Proper RTL demonstration */ } +.dynamic-tab-pane-control .tab-row { z-index: 1; white-space: nowrap; } +.dynamic-tab-pane-control .tab-row .fa { margin-right: 3px; font-size: 14px; } +.dynamic-tab-pane-control ul { padding-left: 5px; padding-right: 10px; padding-bottom: 10px; } +.dynamic-tab-pane-control li { padding-left: 2px; padding-right: 5px; } +/* -------------------------[ Tree buttons ]--- */ +.treeButton, .treeButtonDisabled { display: block; cursor: pointer; cursor: hand; color: #333; border: 1px solid transparent; border-radius: 3px; padding: 3px 5px; white-space: nowrap; vertical-align: middle; } +.treeButton:hover { border-color: #6e7a86; background-color: #fff; background-color: rgba(255, 255, 255, .5); } +.treeButton:active { background-color: #fff; } +.treeButton .fa, .treeButton .fa-lg { font-size: 14px; } +.treeButtonDisabled { cursor: default; color: #777; opacity: .5; filter: alpha(opacity=50); } +/* -------------------------[ Welcome Page ]--- */ +a.hometblink, a.hometblink img { border: 0 !important; text-decoration: none !important; } +.wm_header { margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dotted #bbb; } +.wm_header_title { margin: 0; } +.wm_button { display: inline-block; margin: 0px 15px 15px 0px; text-align: center; } +.wm_messages { margin-left: 20px; margin-top: 15px; padding-top: 15px; border-top: 1px dotted #bbb; } +.wm_messages .comment { font-size: 12px; } +.wm_messages_inbox_link { text-decoration: none !important; color: #333 !important; } +.wm_messages_inbox_link:hover { color: gray !important; } +.table--managerWelcome { width: 100%; } +.rtl .wm_buttons { text-align: right; } +.rtl .wm_button { text-align: right; margin: 0 20px 2px 5px; } +/* -------------------------[ Welcome Page ]--- */ +#mainActionPages { background: #f5f5f5 url(images/misc/mainbg.gif) repeat-x top; } +.tab-page { border: 1px solid #AAA; border-radius: 0 0 5px 5px; margin-bottom: 2em; } +.tab-page img { vertical-align: middle; } +.sectionBody .tab-page { padding: 20px 15px 15px !important; } +/* -------------------------[ New sortable table class ]--- */ +.sortabletable { width: 100%; border-collapse: collapse; } +.sortabletable thead tr { color: #333; font-weight: 500; white-space: nowrap; background-color: #d2d2d2; text-align: left; } +.sortabletable tr { background: #fff; } +.sortabletable tr.even { background: #f7f7f7; } +.sortabletable tbody tr:hover { background: #E9F0F3; } +.sortabletable td, .sortabletable th { padding: 5px !important; border: 1px solid #ccc; } +.sortabletable th { text-align: left; cursor: pointer; color: #333; } +.rtl .sortabletable th { text-align: right; } +.sortabletable th a { text-decoration: none; color: #333; } +.sortabletable th:active { background: #ccc; padding: 3px 4px 1px 6px; } +.rtl .sortabletable th:active { padding: 3px 6px 1px 4px; } +/* -------------------------[ Pagination table ]--- */ +#max-display-records { margin: 10px 0; } +#pagination { margin: 10px 0; } +#pagination ul { margin: 10px 0; display: inline; } +#pagination li { list-style: none; display: inline; width: 15px; margin: 0 0 0 1px; } +#pagination li a { padding: 3px 8px; border: 1px solid #D9E7C2; text-decoration: none; color: #333; } +#pagination li.currentPage a, #pagination li a:hover { color: #060; border: 1px solid #060; } +fieldset.tab-page { border: 1px solid #e4e4e4 !important; } +h2#edit_document_title { font-size: 15px; color: #f5f5f5; width: 100%; border-bottom: none; padding: 5px 10px; } +fieldset#preview h2.tab { float: right; } +/* -------------------------[ Action Buttons ]--- */ +#actions { background: none repeat scroll 0 0 rgba(230, 230, 230, 0.8); height: 25px; margin: 0 -1px 0 0; padding: 10px 5px 14px 10px; position: fixed; right: 16px; text-align: right; top: 1px; z-index: 100; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } +select#stay { margin-top: -7px; padding: 6px 5px 6px 2px; width: auto !important; height: 32px; } +.rtl #actions { left: 10px; text-align: left; } +ul.actionButtons { margin: 0; padding: 0; /* accommodate border on buttons - */ background: none; min-height: 40px; width: auto; white-space: nowrap; padding-top: 5px; } +.actionButtons li { list-style: none; margin-right: 3px; padding: 0; float: left; } +.actionButtons img { vertical-align: top; margin-top: 1px; filter: alpha(opacity=30); -moz-opacity: 0.3; opacity: 0.3; } +.actionButtons:hover img { filter: alpha(opacity=100); -moz-opacity: 1; opacity: 1; } +.actionButtons a { border: 1px solid #BBB; border-radius: 3px 3px 3px 3px; color: #333; font-weight: 500; outline: medium none; padding: 7px 8px 7px 4px; text-decoration: none; vertical-align: top; white-space: nowrap; text-shadow: 0px 1px 0px #FFF; -moz-box-shadow: 1px 1px 2px #ccc; -webkit-box-shadow: 1px 1px 2px #ccc; box-shadow: 1px 1px 2px #ccc; background: -moz-linear-gradient(#FFFFFF, #E0E0E0); background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#E0E0E0)); background: -o-linear-gradient(#FFFFFF, #E0E0E0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF, endColorstr=#E0E0E0); +zoom: 1; } +.actionButtons a:hover { border-color: #999; -moz-box-shadow: 1px 1px 2px #aaa; -webkit-box-shadow: 1px 1px 2px #aaa; box-shadow: 1px 1px 2px #aaa; -webkit-transition: all .3s ease; -moz-transition: all .3s ease; -o-transition: all .3s ease; transition: .3s ease; background: -moz-linear-gradient(#FFFFFF, #F5F5F5); background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#F5F5F5)); background: -o-linear-gradient(#FFFFFF, #F5F5F5); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF, endColorstr=#F5F5F5); +zoom: 1; text-decoration: none !important; } +.actionButtons a:active { background-color: #92aac4; background-position: bottom left; -webkit-box-shadow: 0 0 10px #b8c7d6; -moz-box-shadow: 0 0 10px #b8c7d6; box-shadow: 0 0 10px #b8c7d6; } +.actionButtons li.primary a, .actionButtons a.primary, .actionButtons a.default { color: #fff; border-color: #658f1a; text-shadow: 0 -1px 0 #2B5F0C; background: #66901b; background: -moz-linear-gradient(#8aae4b, #66901b); background: -webkit-gradient(linear, 0 0, 0 100%, from(#8aae4b), to(#66901b)); background: -o-linear-gradient(#8aae4b, #66901b); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#8aae4b, endColorstr=#66901b); +} +.actionButtons li.disabled a { border: 1px solid #657587; color: #777; border-width: 0; pointer-events: none; } +.actionButtons li.disabled a img { opacity: .3; filter: alpha(opacity=30); } +.actionButtons .plus { margin: 0 2px 0 5px; color: #3b454f; font-weight: 500; } +/* +* Generic styles for all form elements + */ +form#mutate dt, form#mutate dd { margin-bottom: 10px; } +form#mutate dt label, form#mutate dt h3.label { font-size: 1em; display: inline; float: left; width: 200px; color: #821517 !important; font-weight: 500; } +form#mutate dd { margin-left: 210px; } +form#mutate input.disabled { background-color: #f5f5f5 !important; } +form#mutate select { width: 308px; } +form#mutate .inputBox { width: 93%; } +form#mutate select.inputBox { margin-right: 5px; } +form#mutate .multitv input[type="text"] { width: 300px; } +form#mutate .imageField { width: 50%; min-width: 300px; } +form#mutate input[name="menuindex"].inputBox { text-align: center; width: 40px !important; padding-left: 0; padding-right: 0; } +form#mutate input[name="ta"].inputBox { width: 70%; } +#tv_body input[type="text"], #tv_body input[type="password"], #tv_body input[type="number"], #tv_body textarea { background: none repeat scroll 0 0 #FFFFFF; max-width: 98% !important; } +form#mutate textarea.tv_textareamini { height: 100px; width: 300px; overflow-y: scroll; } +form#mutate textarea.tv_textarea { height: 100px; width: 100%; overflow-y: scroll; } +/* +* Styling for datepicker elements in settings and templavars +*/ +form#mutate input.date, form#mutate input.tvdate { margin-right: 10px; } +/* +* Individual Styles for fieldset#settings_page_settings +*/ +form#mutate fieldset#settings_page_settings input#pub_date, form#mutate fieldset#settings_page_settings input#unpub_date { width: 150px; } +form#mutate fieldset#settings_page_settings select { width: 155px; } +/* +* Individual Styles for fieldset#meta_keywords +*/ +form#mutate fieldset#meta_keywords { } +form#mutate fieldset#meta_keywords { } +form#mutate fieldset#meta_keywords select.inputBox { display: block; margin-bottom: 0; } +form#mutate fieldset#meta_keywords dl.keywords { float: left; margin-right: 30px; } +form#mutate fieldset#meta_keywords dl.metatags { float: left; } +form#mutate fieldset#meta_keywords dl dt label { width: 100px; } +form#mutate fieldset#meta_keywords dl dd { margin-left: 110px; } +/* +* Individual Styles for fieldset#preview +*/ +fieldset#preview iframe { width: 100%; margin: 0 auto; border: 1px solid #f5f5f5; } +/* +* Individual Styles for fieldset#document_content +*/ +fieldset#document_content textarea#ta { width: 100%; height: 400px; font-size: 1em; } +/* +* Individual Styles for fieldset#access_permissions +*/ +fieldset#access_permissions dt label { width: 200px; } +fieldset#access_permissions dd { margin-left: 210px; } +fieldset#access_permissions dl dd ul li { list-style-type: none; } +/* ppb: +* fieldset#settings_templvars +*/ +fieldset#settings_templvars .tv_url_select { width: 70px; margin-right: 10px; } +fieldset#settings_templvars .tv_url_input { width: 220px; } +fieldset#settings_templvars dd.tvCheckBox label input, fieldset#settings_templvars dd.tvRadioOptions label input { margin-right: 10px; } +fieldset#settings_templvars .tv_date { width: 150px; } +form#mutate select.tv_url_select { padding: 5px 3px; } +/* ppb: +* Style mootools tooltips +*/ +.custom-tip { color: #333; width: 175px; z-index: 13000; border: 1px solid #cccccc; background: #fff; padding: 5px; } +.custom-title { font-weight: 500; font-size: 1em; margin: 0; color: #fff; padding: 6px 6px 4px; background: #758CA2 url(images/misc/tab.gif); } +.custom-text { font-size: 1em; padding: 4px 8px 8px; background: #fff; } +/* ppb: +* Some styling for legacy mode fieldsets +*/ +fieldset.legacy { background: #fff; margin: 10px; padding: 10px; border: 1px solid #e4e4e4 !important; position: relative; margin-bottom: 35px; } +fieldset.legacy h2 { width: 100%; background: #f5f5f5; margin: -10px -10px 15px -10px; padding: 0 10px; border-bottom: 1px solid #e4e4e4 !important; } +/* -------------------------[ date picker ]--- */ +input.DatePicker, #mutate input.DatePicker, #userPane input.DatePicker, #webUserPane input.DatePicker, input#datefrom.DatePicker, input#dateto.DatePicker { width: 150px; padding: 3px 3px 3px 24px; border: 1px solid #b4cde4; background: #fff url(images/icons/datenofocus.gif) no-repeat top left; cursor: pointer; ime-mode: disabled; } +input:focus.DatePicker, #mutate input:focus.DatePicker, #userPane input:focus.DatePicker, #webUserPane input:focus.DatePicker, input#datefrom:focus.DatePicker, input#dateto:focus.DatePicker { background: #fffce9 url(images/icons/datefocus.gif) no-repeat top left; cursor: text; } +.dp_container { position: relative; padding: 0; z-index: 500; } +.dp_cal { background-color: #fff; border: 1px solid #0070bf; position: absolute; width: 177px; top: 24px; left: 0; margin: 0px 0px 3px 0px; } +.dp_cal table { width: 100%; border-collapse: collapse; border-spacing: 0; } +.dp_cal p { width: 177px; } +#mutate .dp_cal input.cal_timeTextBox, .dp_cal input.cal_timeTextBox { display: block; text-align: center; width: 60px !important; margin: 0 auto; margin-top: 3px; } +.dp_cal select { margin: 2px 3px; font-size: 1em; width: auto !important; } +.dp_cal select option { padding: 1px 3px; } +.dp_cal th, .dp_cal td { width: 14.2857%; text-align: center !important; font-size: 1em; padding: 2px 0; } +.dp_cal th { border: solid #aad4f2; border-width: 1px 0; color: #797774; background: #daf2e6; font-weight: 500; } +.dp_cal td { cursor: pointer; } +.dp_cal thead th { background: #d9eefc; } +.dp_cal td.dp_roll { color: #333; background: #fff6bf; } +/* -------------------------[ must have this for the IE6 select box hiding ]--- */ +.dp_hide { visibility: hidden; } +.dp_empty { background: #eee; } +.dp_today { background: #daf2e6; } +.dp_selected { color: #fff; background: #328dcf; } +/* System Alert Box ---------------------------------------------------------- */ +.cbOverlay { background-color: #000; z-index: 50000; } +.cbContainer { padding: 5px; background-color: white; z-index: 50000; } +.cbBox h3 { color: #000; background: #bee860 url(images/misc/fade.gif) repeat-x top; padding: 5px; font-weight: 500; } +.cbBox p { margin: 3px; } +.cbBox .cbButtons { text-align: center; } +.sysAlert { width: 500px; height: 330px; white-space: nowrap; overflow: auto; } +.phptextarea { font-family: Consolas, 'Courier New', 'Courier', monospace; } +/* Custom */ +/* normalize some td paddings */ +#tabTemplate tbody td, .sectionBody td, .sectionBody th { padding: 1px 5px; text-align: left; vertical-align: middle; } +.sectionBody .displayparams, .sectionBody .permissiongroup { margin-bottom: 3px; background-color: #eee; border-collapse: separate; border-spacing: 1px; } +.sectionBody .displayparams th, .sectionBody .displayparams td { padding: 4px 4px; } +.sectionBody .displayparams thead td, .sectionBody .permissiongroup thead td { border-top: none; } +#displayparams table { background: #fff; } +#displayparams table tbody td { border-bottom: 1px dotted #d3d3d3; } +.sectionBody .permissiongroup input, .sectionBody .permissiongroups input { width: 200px; } +td#displayparams > table.displayparams { border: none; } +/* replace warning red color in tabs */ +strong[style*='color:#EF1D1D'] { color: yellow !important; } +.selected strong[style*='color:#ffeb00'] { color: red !important; } +#tabEvents table, #tabEvents td { padding: 2px; } +code { font-size: inherit; font-family: Consolas, 'Courier New', 'Courier', monospace; background-color: #eee; border: 1px solid #ccc; padding: 1px 2px; } +#resourcesPane .disabledPlugin a:hover { color: #aaa; } +/* breadcrumbs */ +ul.breadcrumbs { margin: 0px 15px 12px 15px; padding: 0 0 9px 0; line-height: normal; font-size: 0; border-bottom: 1px dotted #CECACA; } +li.breadcrumbs__li { list-style: none; display: inline-block; padding: 0; margin: 0; } +a.breadcrumbs__a { font-size: 12px; text-decoration: none; } +.breadcrumbs__sep { font-size: 13px; margin: 0 6px; color: #777; } +li.breadcrumbs__li_current { font-size: 12px; font-weight: 500; } +/* end breadcrumbs */ +/* table styles*/ +.table, #documentPane #tv_body table, #documentPane [id*="table-"], #documentPane [id*="table-tv"] { width: 100%; } +.table--edit { margin-bottom: 15px; } +.table th, .table td { text-align: left; vertical-align: middle; } +table th { font-weight: 500; } +.table--edit th { width: 200px; color: #555; font-size: inherit; } +form input[type="text"], form input[type="password"], form input[type="number"], form textarea, form select { box-sizing: border-box; } +.table--edit input[type="text"], .table--edit input[type="password"], .table--edit input[type="number"], .table--edit textarea, .table--edit select, .settings input[type="text"], .settings input[type="password"], .settings input[type="number"], .settings textarea, .settings select { width: 300px; } +.table th, .table td, #tabTemplate tbody td, .sectionBody td, .sectionBody th { padding: 3px 5px; } +/* STYLES FOR HELP */ +#helpPane h1 { font-size: 20px; display: block; border-bottom: 1px solid #888; margin-bottom: 1em; font-weight: 500; } +#helpPane li:not(:first-child) > strong { margin-top: 1.4em; } +#helpPane li > strong { display: block; font-size: 14px; } +#helpPane pre { font-size: 12px; border: 1px solid #888; border-radius: 5px; background-color: #fff; padding: 1em; margin: 10px 0; } +/* Top nav search form */ +#searchform { position: relative; float: right; padding: 9px 0px; height: 30px; } +@media (max-width: 959px) { +#nav > li > a > .fa { margin-right: 0; line-height: 40px; font-size: 17px; } +#nav > li > a { font-size: 0px; } +div.username { display: none !important; } +} +@media (max-width: 730px) { +#searchform { display: none; } +} +#searchform input[type=text] { height: 27px; width: 160px; padding-left: 10px; margin-right: 8px; border: 0px solid rgba(255, 255, 255, 0.1); border-radius: 0 !important; border-width: 1px; background: rgba(0, 0, 0, 0.1); color: white; text-align: left; margin-top: 2px; /* + box-shadow: 1px 1px 2px rgba(0,0,0,0.3) inset; + -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.3) inset; + -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.3) inset; + */ -moz-transition-duration: 0.2s; -webkit-transition-duration: 0.2s; transition-duration: 0.2s; } +#searchform input[type=text]:focus { width: 250px; /*border-color: rgba(255,255,255,0.5);*/ background: rgba(0, 0, 0, 0.2); text-align: left; } +#searchform .fa-refresh { position: absolute; top: 17px; right: 12px; color: #e0e0e0; } +/* + * MODxRE2 styles + * css above is original MODxRE + * css below is basicaly MODxRE overrides to get MODxRE2 look + */ +* { border-radius: 0; -moz-osx-font-smoothing: grayscale; } +body { background-color: #F2F2F2 !important; background-image: none !important; } +div.treeframebody { background-color: #ebebeb !important; background-image: none !important; } +#topMenu { background: none; background-color: #39515D !important; background-image: -webkit-linear-gradient(left, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; background-image: -o-linear-gradient(left, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; background-image: linear-gradient(to right, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; } +/* nav */ +.alert-warning { color: #3697cd; } +/* tree */ +#treeMenu { background-color: rgba(0, 0, 0, 0.05); border-bottom: 1px solid #dbdbdb; } +/* tab panes */ +.dynamic-tab-pane-control.tab-pane { margin-top: 10px; } +.sectionBody > .dynamic-tab-pane-control.tab-pane, #treePane.dynamic-tab-pane-control.tab-pane { margin-top: 0; } +.dynamic-tab-pane-control .tab-row .tab, .dynamic-tab-pane-control .tab-row .tab span { color: #3697CD; font-size: 13px; } +.dynamic-tab-pane-control .tab-row .tab { position: relative; margin: 3px 2px 1px 0; padding: 8px 12px 9px 12px; border: 0 none; background: transparent; text-shadow: none; background: none; } +.dynamic-tab-pane-control .tab-row .tab.hover { /*padding-bottom: 6px;*/ background: transparent; background-color: transparent; filter: none; } +.dynamic-tab-pane-control .tab-row .tab.selected span, .dynamic-tab-pane-control .tab-row .tab.selected.hover span { color: #3697CD; } +.dynamic-tab-pane-control .tab-row .tab.selected, .dynamic-tab-pane-control .tab-row .tab.selected.hover { padding-bottom: 6px; border-style: solid; border-color: #3697CD #fff #fff #fff; border-width: 0; background: #fff; background-color: #fff; filter: none; box-shadow: 0 -3px 0 #3697cd, -1px 0 0 transparent; } +.dynamic-tab-pane-control .tab-row .tab:before, .dynamic-tab-pane-control .tab-row .tab:after { position: absolute; content: ''; left: 0; display: block; right: 0; } +.dynamic-tab-pane-control .tab-row .tab.selected:after, .dynamic-tab-pane-control .tab-row .tab.selected.hover:after { border-radius: 3px; box-shadow: 0 0 5px 0 rgba(0, 0, 0, .1); top: -3px; bottom: 1px; z-index: -1; } +.dynamic-tab-pane-control .tab-row .tab.selected:before { background: #FFF; top: 90%; bottom: -4px; } +.dynamic-tab-pane-control .tab-row .tab.hover, .dynamic-tab-pane-control .tab-row .tab.hover span { color: #2b749d; } +.tab-page, .dynamic-tab-pane-control .tab-page { border: 0 none; border-radius: 0; box-shadow: 0 0 5px 0 rgba(0, 0, 0, .1); } +.sectionHeader { padding: 7px 12px; background: #F2F2F2; } +.tab-page .sectionHeader { margin: 10px 3px 0px; } +.tab-page .sectionBody, .tab-page .section .sectionBody, .sectionBody .sectionBody { padding: 12px; background: #F9F9F9 !important; } +.no-events { pointer-events: none; } +/* Context Menu */ +.nu-context-menu { background-clip: padding-box; background-color: #fff; border: 1px solid rgba(0, 0, 0, 0.10); border-top: 3px solid #3697CD; border-radius: 2px; box-shadow: 0 2px 2px rgba(0, 0, 0, 0.15); box-sizing: border-box; display: block; height: 0; opacity: 0; overflow: hidden; position: absolute; width: 0; z-index: 9999; } +.nu-context-menu.active { opacity: 1; height: auto; width: auto; } +.nu-context-menu ul { font-size: 14px; list-style: none; margin: 2px 0 0; padding: 4px 0; text-align: left; } +.nu-context-menu ul li { clear: both; color: #777; cursor: pointer; font-weight: 400; line-height: 1.42857; padding: 2px 30px 2px 5px; margin: 0 4px; white-space: nowrap; border: 1px solid transparent; } +.nu-context-menu ul li:hover { background: #E6F2FF; border-color: #BACCDB; color: #333; } +.nu-context-menu ul li .fa { margin-right: 5px; } +.nu-context-menu ul hr { background: #e8e8e8; border: 0; color: #e8e8e8; height: 1px; margin: 4px 0; } +.nu-context-menu-title { color: #3697CD; font-weight: bold; } +/* Required for Bootstrap3 Collapse */ +.fade { opacity: 0; -webkit-transition: opacity .15s linear; -o-transition: opacity .15s linear; transition: opacity .15s linear; } +.fade.in { opacity: 1; } +.collapse { display: none; } +.collapse.in { display: block; } +.collapsing { position: relative; height: 0; overflow: hidden; -webkit-transition-timing-function: ease; -o-transition-timing-function: ease; transition-timing-function: ease; -webkit-transition-duration: .35s; -o-transition-duration: .35s; transition-duration: .35s; -webkit-transition-property: height, visibility; -o-transition-property: height, visibility; transition-property: height, visibility; } +.no-transition .collapsing { -webkit-transition: none; -o-transition: none; transition: none; } +.panel-title > a::before { content: "\f107"; /* fa-angle-down */ font-family: "FontAwesome"; } +.panel-title > a.collapsed::before { content: "\f105"; /* fa-angle-right */ padding: 0 1px 0 3px; } +.panel-title > a { font-size: 1.1em; color: #657587; display: block; padding: 3px 0; } +.panel-title > a:hover { text-decoration: none; color: #3697CD; background: #f9f9f9; } +/* category icons in manage elements */ +#site_templates, #site_tmplvars, #site_htmlsnippets, #site_snippets, #site_plugins { padding-left: 0; } +#site_templates li, #site_tmplvars li, #site_htmlsnippets li, #site_snippets li, #site_snippets li, #site_plugins li, #categories_list li { list-style: none; margin-left: -21px; } +#site_templates li strong:before, #site_tmplvars li strong:before, #site_htmlsnippets li strong:before, #site_snippets li strong:before, #site_snippets li strong:before, #site_plugins li strong:before, #categories_list li strong:before { font-family: "FontAwesome"; font-style: normal; font-weight: normal; color: #5b6f7a; padding: 0 5px 0 5px; content: '\f105'; } +.tab-pane ul li ul li strong:before { content: ''; } +/* elements icons in manage elements */ +.tab-pane ul li ul { /* width:100%; */ } +.tab-pane ul li ul li { list-style-type: none; list-style: none; padding-left: 20px; } +a.man_el_name:before { font-family: "FontAwesome"; font-style: normal; font-weight: normal; color: #5b6f7a; } +a.man_el_name.site_templates:before { content: '\f1ea'; } +a.man_el_name.site_tmplvars:before { content: '\f022'; } +a.man_el_name.site_htmlsnippets:before { content: '\f009'; } +a.man_el_name.site_snippets:before { content: '\f121'; } +a.man_el_name.site_plugins:before { content: '\f1e6'; } +a.man_el_name.site_modules:before { content: '\f085'; } +div#tabCategory.tab-page ul li ul li { padding-top: 7px; padding-bottom: 7px; } +/*Fake tables for providing dynamic amount of cells per row*/ +.rTable { display: table; width: 100%; padding: 0; } +.rTableRow { display: table-row; padding: 0; } +.rTableHeading { display: table-header-group; } +.rTableBody { display: table-row-group; } +.rTableFoot { display: table-footer-group; } +.lockCell, .mainCell, .btnCell, .rTableHead { display: table-cell; padding: 0; } +.lockCell { width: 20px; padding-left: 10px; } +.mainCell { width: auto; } +.btnCell { width: 6em; text-align: right; } +/* Manage elements general styles */ +a.man_el_name { display: block; padding: .1em 0 .1em 12px; } +a.man_el_name:hover { text-decoration: none; } +.lockCell + .mainCell a.man_el_name { padding-left: 0 !important; } +.lockCell + .mainCell a.man_el_name:before { display: none; } +.elements_descr { color: #222; margin-left: 1em; font-size: 0.88em; } +.resourceTable .panel-heading { margin: 0 -15px !important; background-color: #f5f5f5; border-top: 1px dotted #dedede; border-bottom: 1px dotted #dedede; } +.resourceTable .panel-title > a { padding: 5px 0 5px 15px; } +.resourceTable ul.elements { margin: 0 -15px; padding: 0 0 10px 0; } +.resourceTable ul.elements > li { padding: 0 !important; border-bottom: 1px dotted #dedede; border-left: 3px solid #FFF; transition: all 0.1s ease; margin: 0 !important; } +.resourceTable ul.elements > li:hover { background: #f9f9f9; border-left: 3px solid #3697CD; } +#resourcesPane .panel-group ul { } +ul.resourceTable .category_name { float: none; display: block; clear: both; margin-top: 20px; } +/* Manager Elements Buttons bar*/ +ul.elements_buttonbar { list-style: none; margin: 0; padding: 0; display: table; table-layout: fixed; } +ul.elements_buttonbar li { display: table-cell; padding: 0 !important; width: 2em; } +ul.elements_buttonbar li a { display: block; width: 2em; padding: 3px 4px; margin: 1px; } +ul.elements_buttonbar .fa { font-size: 13px !important; padding: 1px 1px 0; } +/* Manage elements views-form */ +.switchForm { display: block; width: 100%; float: left; clear: left; margin: 7px 0 7px -4px; padding: 5px; background-color: #fff; border: 1px solid #E4E4E4; border-radius: 3px; } +.switchForm h3.optionsTitle { color: #3697CD; padding-left: 7px; font-size: 16px; } +.switchForm label { color: #3697CD; font-weight: 700; } +.switchForm input.columns { width: 3em; color: #444; font-weight: normal; } +.switchForm input.fontsize { width: 4em; color: #444; font-weight: normal; } +.switchForm .cb_all { float: left; } +.switchForm .btn_reset { float: right; } +.switchForm .optionsLeft { float: left; padding: 4px 8px 4px 4px; } +.switchForm .optionsFull { display: block; clear: both; padding: 4px 8px 4px 4px; } +.switchForm .optionsRadios { padding-top: 6px; } +.switchForm .optionsChecks { padding-top: 10px; } +.switchForm .optionsFontsSize { margin-left: 9px; padding-left: 8px; border-left: 1px solid #ededed; } +.switchForm .optionsReset { margin-left: 8px; border-left: 1px solid #ededed; padding-left: 8px; } +.switchForm .optionsAllTabs { clear: left; padding-top: 10px; } +.switchForm .optionsClear { display: block; clear: both; padding-top: 8px; margin-bottom: 4px; border-bottom: 1px solid #ededed; } +/* Checkbox "Icons" */ +.noicons.tab-page ul li ul li a:before, .noicons .elements_description a:before { display: none !important; } +/* View-dependent styles */ +/* List-view */ +.resourceTable.list li { } +/* Inline-view */ +.resourceTable.inline ul.elements { margin: 0 !important; } +.resourceTable.inline ul.elements > li { float: left; margin: 10px 10px 0 0 !important; padding: 0 !important; border: 1px dotted #dedede; } +.resourceTable.inline ul.elements_buttonbar { margin: 0 5px 0 0 !important; } +.resourceTable.inline a.man_el_name { padding: 5px 10px; } +.resourceTable.inline ul.elements > li:hover { border: 1px solid #aaa } +/* Flex-view */ +.resourceTable.flex ul.elements { -webkit-column-gap: 10px; -moz-column-gap: 10px; -o-column-gap: 10px; column-gap: 10px; } +.resourceTable.flex ul.elements { } +.resourceTable.flex ul.elements > li { overflow: hidden; /* fix for Firefox */ break-inside: avoid-column; -webkit-column-break-inside: avoid; -moz-column-break-inside: avoid; -o-column-break-inside: avoid; -ms-column-break-inside: avoid; column-break-inside: avoid; page-break-inside: avoid } +.resourceTable.flex .elements_descr { display: block; margin-left: 1.5em; } +/* action buttons */ +.actionButtons a { padding: 8px 10px; font-size: 13px; font-weight: 500; } +.actionButtons a, .actionButtons li.primary a, .actionButtons a.primary, .actionButtons a.default { text-shadow: none; background: #fff; filter: none; color: #555; border-width: 1px; border-style: solid; border-color: #E4E4E4; border-radius: 3px !important; /*box-shadow: 0 0 0 1px #E4E4E4;*/ box-shadow: none; transition: none; } +.actionButtons a:hover { background: none; filter: none; background-color: #3697cd; box-shadow: none; border-color: #3697cd; color: #FFF !important; transition: none; } +.actionButtons a:active { background-color: #3189ba; border-color: #3189ba; } +.actionButtons li.primary a, .actionButtons a.primary { color: #fff; border-color: #32AB9A; background-color: #32AB9A; background-image: linear-gradient(#32AB9A, #00948E); } +.actionButtons li.primary a:hover, .actionButtons a.primary:hover { background-color: #2b9385; background-image: linear-gradient(#2b9385, #007571); border-color: #2b9385; } +.actionButtons li.primary a:active, .actionButtons a.primary:active { background: #32AB9A; border-color: #32AB9A; } +.actionButtons img { display: none; } +#treePane .actionButtons img { display: inline; } +.actionButtons--tableheader .fa { font-size: 14px; } +.sectionBody .actionButtons { padding-top: 0; min-height: 48px; } +.sectionBody .actionButtons li { margin-right: 10px; } +.sectionBody .actionButtons a { display: inline-block; padding: 9px 10px; line-height: 1; } +.treeButton, .treeButtonDisabled { color: #3d5764 !important; border-radius: 2px !important; min-width: 15px; text-align: center; } +.treeButton:active { background-color: #d5d5d5; } +input[type="button"], input[type="submit"] { background: #ededed; border: 1px solid #ededed; border-radius: 3px !important; } +input[type="button"]:hover, input[type="submit"]:hover { background: #3697CD; border: 1px solid #3697CD; color: #fff; } +input[type="button"]:active, input[type="submit"]:active { background: #3189ba; border: 1px solid #3189ba; } +form select, input[type="text"], input[type="email"], input[type="password"], input[type="url"], input[type="number"], textarea, form input[type="text"], form input[type="password"], form input[type="number"], form textarea, #tv_body select, #tv_body input[type="text"], #tv_body input[type="email"], #tv_body input[type="password"], #tv_body input[type="url"], #tv_body input[type="number"], #tv_body textarea { background-color: #FBFBFB; transition: all .2s; border-color: #dbdbdb; -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05) inset; box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05) inset; } +#tv_body select, #tv_body input[type="text"], #tv_body input[type="email"], #tv_body input[type="password"], #tv_body input[type="url"], #tv_body input[type="number"], #tv_body textarea { background-color: #fff; border-color: #cfcfcf; } +#tmplvars-pane select, #tmplvars-pane input[type="text"], #tmplvars-pane input[type="email"], #tmplvars-pane input[type="password"], #tmplvars-pane input[type="url"], #tmplvars-pane input[type="number"], #tmplvars-pane textarea { background-color: #FBFBFB; border-color: #dbdbdb; } +input[type="email"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="number"]:focus, textarea:focus, select:focus, form input[type="text"]:focus, form input[type="password"]:focus, form input[type="email"]:focus, form input[type="url"]:focus, form input[type="number"]:focus, form textarea:focus, #tv_body input[type="text"]:focus, #tv_body input[type="password"]:focus, #tv_body input[type="email"]:focus, #tv_body input[type="url"]:focus, #tv_body input[type="number"]:focus, #tv_body textarea:focus { border-color: #3697CD; } +/* context menu */ +#mx_contextmenu { border-top-color: #3697CD; border-top-width: 3px; } +#mx_contextmenu #nameHolder { color: #3697CD; font-size: 13px; padding: 9px 6px 7px 7px; line-height: 1.2; } +#mx_contextmenu .menuLink { color: #333; padding: 4px 2px 4px 6px; line-height: 1.3; border: 1px solid #fff; } +#mx_contextmenu .menuLink:hover { background: #E6F2FF; border-color: #BACCDB; color: #333; } +.treeButton .fa, .treeButton .fa-lg, #mx_contextmenu .menuLink .fa, #mx_contextmenu .menuLink .fa-lg { font-size: 14px; } +#mx_contextmenu img { display: none; } +/* tree */ +.treeNodeSelected, .treeNodeHover { background-color: rgba(54, 151, 205, 0.2); border: 1px solid #3697CD; color: #3697CD; padding: 1px 1px; margin-left: -2px; } +/* dashboard */ +.dashboard .wm_logo { margin-top: 15px; margin-bottom: 10px; margin-left: 10px; margin-right: 15px; } +.dashboard .wm_logo img { height: 56px; } +.wm_buttons a { font-weight: normal !important; color: #3d5764 !important; } +.wm_buttons .fa { margin-bottom: 5px; } +.dashboard h1 { margin-top: 30px; } +.widget-wrapper { border: 1px solid #ccc; } +.widget-wrapper .widget-title { border: 1px solid #ccc; border-width: 0 0 1px 0; } +.widget-stage .label, .widget-stage .label-info { background-color: transparent; color: inherit; } +.widget-stage .btn { background-color: transparent !important; color: #3d5764 !important; border-color: #ccc !important; } +.widget-stage .btn:hover { border-color: #3697CD !important; } +#modxrecent_widget table { margin-bottom: 0; } +#modxrecent_widget .table-condensed > tbody > tr > td { padding: 2px 3px; } +#modxrecent_widget table ul { margin: 0; padding: 0; } +#modxrecent_widget table li { padding: 3px 5px; } +#modxrecent_widget table li:last-child { border-bottom-width: 0; padding-bottom: 0; } +#content_body #which_editor { margin-top: 12px; } +/* resource children list */ +#tabChildren select[name="dir"], #tabChildren select[name="sort"] { margin-top: 10px; margin-bottom: 5px; margin-right: 10px; padding: 3px; font-size: 12px; } +table.grid { border: 1px solid #e1e1e1; } +table.grid th, table.grid .gridHeader { background-color: #e9e9e9; } +table.grid th, table.grid td { padding: 7px; } +table.actionButtons { margin-top: 15px; margin-bottom: 10px; } +table.actionButtons img { display: inline-block; } +table.actionButtons .searchtext { padding: 5px; height: 24px; width: 150px; } +/* backup */ +#tabBackup p.actionButtons { margin-top: 20px; margin-bottom: 15px; } +/* filter elements */ +.filterElements-form { margin-bottom: 10px; margin-top: 5px; } +.actionButtons .filterElements-form { margin-top: 0; margin-bottom: 0; } +.filterElements-form .form-control { display: block; width: 100%; max-width: 500px; font-size: 13px; } +.actionButtons .filterElements-form .form-control { width: 200px; height: 33px; padding-left: 8px; box-sizing: border-box; } +/* pagetitle-icon */ +.pagetitle-icon { margin-right: 2px; color: #3697CD; } +/* element-edit-message */ +.msg-container { padding-bottom: 10px; border-bottom: 1px solid #ededed; margin-bottom: 15px; color: #777; } +.userprofiletable { margin-bottom: -20px; } +.btn-small { padding: 2px 4px !important; font-size: 11px !important; } +.relative { position: relative; } +.modx-alert { display: block; margin: 60px 10px 10px 10px; padding: 1em; } +.modx-alert.alert-error { background-color: #ffd0d0; border: 1px solid #ff0000; color: #000; } +tr.userIdle td { color: #aaa; } +tr.userIdle td strong:before { font-family: "FontAwesome"; font-style: normal; font-weight: normal; color: #aaa; padding: 0 5px 0 0; content: '\f017'; } +#modxonline_widget td strong:before { font-family: "FontAwesome"; font-style: normal; font-weight: normal; color: #3d5764; padding: 0 5px 0 0; content: '\f2be'; } +#modxonline_widget td strong.userMultipleSessions:before { color: #bf4949; content: '\f2bd'; } +#modxonline_widget tr.userIdle td strong.userMultipleSessions:before { color: #bf4949; content: '\f017'; } +/* c-roleslist */ +.c-roleslist { margin-bottom: 10px; margin-left: 12px; } +.c-roleslist-name { display: block; font-size: 13px; font-weight: 500; } +.c-roleslist-hyphen { display: none; } +.c-roleslist-description { color: #666; } +.c-roleslist-item { margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px dashed #ddd; } +.c-roleslist-item:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom-width: 0; } +.c-roleslist-item--admin { font-style: italic; } +/* codemirror */ +.CodeMirror pre { font-size: 12px !important; } +/*Manage Files*/ +#ManageFiles i.fa, #ManageFiles span.fa { color: #39515d; } +#ManageFiles i.fa.FilesTopFolder { color: #80969c; font-size: 19px !important; } +#ManageFiles i.fa.FilesFolder { font-size: 19px !important; color: #80969c; margin-right: 4px; } +#ManageFiles i.fa.FilesDeletedFolder { font-size: 19px !important; color: #e2e2e2; margin-right: 4px; } +#ManageFiles i.fa.FilesPage { color: #80969c; margin-right: 4px; } +#FilesTable { border-collapse: collapse; } +#FilesTable tr, #FilesTable td { padding: 2px !important; } +#FilesTable td { border-bottom: 1px dotted #e2e2e2 !important; } +#FilesTable th { background: #fff; border: none; } +/*BS button*/ +.btn { display: inline-block; padding: 6px 12px; margin-bottom: 0; font-size: 16px; font-weight: normal; /* line-height: 1.42857143;*/ text-align: center; white-space: nowrap; vertical-align: middle; -ms-touch-action: manipulation; touch-action: manipulation; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background-image: none; border: 1px solid transparent; border-radius: 4px; } +.btn:focus, .btn:active:focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn.active.focus { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } +.btn:hover, .btn:focus, .btn.focus { color: #333; text-decoration: none; } +.btn:active, .btn.active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); } +.btn.disabled, .btn[disabled], fieldset[disabled] .btn { cursor: not-allowed; filter: alpha(opacity=45); -webkit-box-shadow: none; box-shadow: none; opacity: .45; } +a.btn.disabled, fieldset[disabled] a.btn { pointer-events: none; } +.btn-default { font-size: 14px; color: #3d5764 !important; background-color: #fff; border-color: #ccc; } +.btn-default:focus, .btn-default.focus { color: #333; background-color: #fff; border-color: #3697CD; } +.btn-default:hover { color: #333; background-color: #fff; border-color: #3697CD; } +.btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { color: #333; background-color: #e6e6e6; border-color: #adadad; } +.btn-default:active:hover, .btn-default.active:hover, .open > .dropdown-toggle.btn-default:hover, .btn-default:active:focus, .btn-default.active:focus, .open > .dropdown-toggle.btn-default:focus, .btn-default:active.focus, .btn-default.active.focus, .open > .dropdown-toggle.btn-default.focus { color: #333; background-color: #d4d4d4; border-color: #8c8c8c; } +.btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default { background-image: none; } +.btn-default.disabled:hover, .btn-default[disabled]:hover, fieldset[disabled] .btn-default:hover, .btn-default.disabled:focus, .btn-default[disabled]:focus, fieldset[disabled] .btn-default:focus, .btn-default.disabled.focus, .btn-default[disabled].focus, fieldset[disabled] .btn-default.focus { background-color: #fff; border-color: #ccc; } +.btn-default .badge { color: #fff; background-color: #333; } +.btn-lg, .btn-group-lg > .btn { padding: 10px 16px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; } +.btn-sm, .btn-group-sm > .btn { padding: 5px 10px; font-size: 12px; line-height: 1.5; border-radius: 3px; } +.btn-xs, .btn-group-xs > .btn { padding: 3px 5px; font-size: 10px; line-height: 1.5; border-radius: 3px; } +.btn-block { display: block; width: 100%; } +.btn-block + .btn-block { margin-top: 5px; } +.border-bottom { border-bottom: 2px solid #3697CD !important; } diff --git a/manager/media/style/MODxRE2_DropdownMenu/style.php b/manager/media/style/MODxRE2_DropdownMenu/style.php new file mode 100644 index 0000000000..2b9847a64a --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/style.php @@ -0,0 +1,186 @@ +config['manager_theme']/style.php + * Function: Manager style variables for images and icons. + * Encoding: UTF-8 + * Credit: icons by Mark James of FamFamFam http://www.famfamfam.com/lab/icons/ + * Date: 18-Mar-2010 + * Version: 1.1 + * MODX version: 1.0.3 +*/ +$style_path = 'media/style/' . $modx->config['manager_theme'] . '/images/'; +$modx->config['mgr_date_picker_path'] = 'media/style/common/moo-datepicker/datepicker.inc.php'; +if(!$modx->config['lang_code']) { + global $modx_lang_attribute; + $modx->config['lang_code'] = !$modx_lang_attribute ? 'en' : $modx_lang_attribute; +} + +if($_GET['a']==2) include_once('welcome.php'); + +// Tree Menu Toolbar +$_style['add_doc_tree'] = ''; +$_style['add_weblink_tree'] = ''; +$_style['collapse_tree'] = ''; +$_style['empty_recycle_bin'] = ''; +$_style['empty_recycle_bin_empty'] = ''; +$_style['expand_tree'] = ''; +$_style['hide_tree'] = ''; +$_style['refresh_tree'] = ''; +$_style['show_tree'] = $style_path.'tree/expand.png'; +$_style['sort_tree'] = ''; +$_style['sort_menuindex'] = ''; +$_style['element_management'] = ''; +$_style['images_management'] = ''; +$_style['files_management'] = ''; +$_style['icons_external_link'] = ''; + +//Tree Contextual Menu Popup +$_style['ctx_new_document'] = 'fa fa-file-o fa-fw fa-lg'; +$_style['ctx_edit_document'] = 'fa fa-pencil-square-o fa-fw fa-lg'; +$_style['ctx_move_document'] = 'fa fa-arrows fa-fw fa-lg'; +$_style['ctx_resource_duplicate'] = 'fa fa-clone fa-fw fa-lg'; +$_style['ctx_sort_menuindex'] = 'fa fa-sort-numeric-asc fa-fw fa-lg'; +$_style['ctx_publish_document'] = 'fa fa-arrow-up fa-fw fa-lg'; +$_style['ctx_unpublish_resource'] = 'fa fa-arrow-down fa-fw fa-lg'; +$_style['ctx_delete'] = 'fa fa-trash fa-fw fa-lg'; +$_style['ctx_undelete_resource'] = 'fa fa-arrow-circle-o-up fa-fw fa-lg'; +$_style['ctx_weblink'] = 'fa fa-link fa-fw fa-lg'; +$_style['ctx_resource_overview'] = 'fa fa-info fa-fw fa-lg'; +$_style['ctx_preview_resource'] = 'fa fa-eye fa-fw fa-lg'; + +// Tree Icons +$_style['tree_deletedpage'] = $style_path.'tree/file-alt-deleted.png'; +$_style['tree_folder'] = $style_path.'tree/folder-close-alt.png'; /* folder.png */ +$_style['tree_folderopen'] = $style_path.'tree/folder-open-alt.png'; /* folder-open.png */ +$_style['tree_folder_secure'] = $style_path.'tree/folder-close-alt-secure.png'; +$_style['tree_folderopen_secure'] = $style_path.'tree/folder-open-alt-secure.png'; +$_style['tree_globe'] = $style_path.'tree/globe.png'; +$_style['tree_linkgo'] = $style_path.'tree/link.png'; +$_style['tree_minusnode'] = $style_path.'tree/angle-down.png'; +$_style['tree_page'] = $style_path.'tree/file-alt.png'; +$_style['tree_page_home'] = $style_path.'tree/home.png'; +$_style['tree_page_404'] = $style_path.'tree/warning-sign.png'; +$_style['tree_page_hourglass'] = $style_path.'tree/time.png'; +$_style['tree_page_info'] = $style_path.'tree/info.png'; +$_style['tree_page_blank'] = $style_path.'tree/file-alt.png'; +$_style['tree_page_css'] = $style_path.'tree/file-text.png'; +$_style['tree_page_html'] = $style_path.'tree/file-alt.png'; +$_style['tree_page_xml'] = $style_path.'tree/file-code.png'; +$_style['tree_page_js'] = $style_path.'tree/file-code.png'; +$_style['tree_page_rss'] = $style_path.'tree/file-rss.png'; +$_style['tree_page_pdf'] = $style_path.'tree/file-pdf.png'; +$_style['tree_page_word'] = $style_path.'tree/file-word.png'; +$_style['tree_page_excel'] = $style_path.'tree/file-excel.png'; +$_style['tree_plusnode'] = $style_path.'tree/angle-right.png'; +$_style['tree_showtree'] = ''; +$_style['tree_weblink'] = $style_path.'tree/link.png'; + +$_style['tree_page_secure'] = $style_path.'tree/file-alt-secure.png'; +$_style['tree_page_blank_secure'] = $style_path.'tree/file-alt-secure.png'; +$_style['tree_page_css_secure'] = $style_path.'tree/file-code-secure.png'; +$_style['tree_page_html_secure'] = $style_path.'tree/file-alt-secure.png'; +$_style['tree_page_xml_secure'] = $style_path.'tree/file-code-secure.png'; +$_style['tree_page_js_secure'] = $style_path.'tree/file-code-secure.png'; +$_style['tree_page_rss_secure'] = $style_path.'tree/file-rss-secure.png'; +$_style['tree_page_pdf_secure'] = $style_path.'tree/file-pdf-secure.png'; +$_style['tree_page_word_secure'] = $style_path.'tree/file-word-secure.png'; +$_style['tree_page_excel_secure'] = $style_path.'tree/file-excel-secure.png'; + +//View Resource data +$_style['icons_new_document'] = 'fa fa-file-o fa-lg'; +$_style['icons_new_weblink'] = 'fa fa-link fa-lg'; +$_style['icons_move_document'] = 'fa fa-arrows fa-fw fa-lg'; +$_style['icons_publish_document'] = 'fa fa-arrow-up fa-fw fa-lg'; +$_style['icons_unpublish_resource'] = 'fa fa-arrow-down fa-fw fa-lg'; +$_style['icons_delete_resource'] = 'fa fa-trash fa-fw fa-lg'; +$_style['icons_undelete_resource'] = 'fa fa-arrow-circle-o-up fa-fw fa-lg'; +$_style['icons_resource_overview'] = 'fa fa-info fa-fw fa-lg'; +$_style['icons_edit_resource'] = 'fa fa-pencil-square-o fa-fw fa-lg'; +//context menu +$_style['icons_resource_duplicate'] = $style_path.'icons/clone.png'; +$_style['icons_edit_document'] = $style_path.'icons/save.png'; +$_style['icons_delete_document'] = $style_path.'icons/trash.png'; +//locks +$_style['icons_preview_resource'] = $style_path.'icons/eye.png'; +$_style['icons_secured'] = $style_path.'icons/lock.png'; + +//file manager icons +$_style['files_save'] = 'fa fa-floppy-o fa-fw fa-lg'; +$_style['files_folder'] = 'fa fa-folder-o fa-lg'; +$_style['files_deleted_folder'] = 'fa fa-folder-o fa-lg'; +$_style['files_folder-open'] = 'fa fa-folder-open-o fa-lg'; +$_style['files_page_php'] = 'fa fa-file-o fa-lg'; +$_style['files_page_html'] = 'fa fa-file-o fa-lg'; +$_style['files_cancel'] = 'fa fa-times-circle fa-fw fa-lg'; +$_style['files_top'] = 'fa fa-folder-open-o fa-lg'; +$_style['files_add'] = 'fa fa-plus-circle fa-fw fa-lg'; +$_style['files_upload'] = 'fa fa-upload fa-fw fa-lg'; +$_style['files_delete'] = 'fa fa-trash fa-fw fa-lg'; +$_style['files_duplicate'] = 'fa fa-clone fa-fw fa-lg'; +$_style['files_rename'] = 'fa fa-i-cursor fa-fw fa-lg'; +$_style['files_view'] = 'fa fa-eye fa-fw fa-lg'; +$_style['files_download'] = 'fa fa-download fa-fw fa-lg'; +$_style['files_unzip'] = 'fa fa-file-archive-o fa-fw fa-lg'; +$_style['files_edit'] = 'fa fa-pencil-square-o fa-fw fa-lg'; + +//for back compatibility + +$_style['icons_save'] = $style_path.'icons/save.png'; +$_style['icons_delete'] = $style_path.'icons/trash.png'; +$_style['icons_deleted_folder'] = $style_path.'tree/deletedfolder.png'; +$_style['icons_unzip'] = $style_path.'icons/download-alt.png'; + + +// Indicators +$_style['icons_tooltip'] = $style_path.'icons/question-sign-trans.png'; +$_style['icons_tooltip_over'] = $style_path.'icons/question-sign.png'; +$_style['icons_cal'] = $style_path.'icons/calendar.png'; +$_style['icons_cal_nodate'] = $style_path.'icons/calendar.png'; +$_style['icons_set_parent'] = $style_path.'icons/folder-open.png'; + +//modules +$_style['icons_modules'] = $style_path.'icons/modules.png'; +$_style['icons_run'] = $style_path.'icons/play.png'; + +//users and webusers +$_style['icons_user'] = $style_path.'icons/user.png'; + +//Messages +$_style['icons_message_unread'] = $style_path.'icons/email.png'; +$_style['icons_message_forward'] = $style_path.'icons/forward.png'; +$_style['icons_message_reply'] = $style_path.'icons/reply.png'; + +// Icons +$_style['icons_add'] = $style_path.'icons/add.png'; +$_style['icons_cancel'] = $style_path.'icons/cancel.png'; +$_style['icons_close'] = $style_path.'icons/stop.png'; +$_style['icons_refresh'] = $style_path.'icons/refresh.png'; +$_style['icons_table'] = $style_path.'icons/table.png'; + +// top bar +$_style['icons_loading_doc_tree'] = $style_path.'icons/info-sign.png'; +$_style['icons_mail'] = $style_path.'icons/email.png'; +$_style['icons_working'] = $style_path.'icons/exclamation.png'; + +//event log +$_style['icons_event1'] = $style_path.'icons/event1.png'; +$_style['icons_event2'] = $style_path.'icons/event2.png'; +$_style['icons_event3'] = $style_path.'icons/event3.png'; + + +//nowhere in the manager +$_style['icons_folder'] = $style_path.'icons/folder.png'; +$_style['icons_email'] = $style_path.'icons/email.png'; +$_style['icons_home'] = $style_path.'icons/home.png'; +$_style['icons_sort_menuindex'] = $style_path.'icons/sort_index.png'; +$_style['icons_weblink'] = $style_path.'icons/world_link.png'; +$_style['icons_tab_preview'] = $style_path.'icons/preview.png'; // Tabs +$_style['icons_information'] = $style_path.'icons/info-sign.png'; + + +// Miscellaneous +$_style['ajax_loader'] = '

    '.$_lang['loading_page'].'

    Please wait

    '; +$_style['tx'] = $style_path.'misc/_tx_.gif'; +$_style['icons_right_arrow'] = $style_path.'icons/arrow-right.png'; +$_style['fade'] = $style_path.'misc/fade.gif'; +$_style['ed_save'] = $style_path.'misc/ed_save.gif'; diff --git a/manager/media/style/MODxRE2_DropdownMenu/welcome.php b/manager/media/style/MODxRE2_DropdownMenu/welcome.php new file mode 100644 index 0000000000..90fcf67f33 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/welcome.php @@ -0,0 +1,21 @@ +config['enable_filter'] = 1; + +$modx->addSnippet('hasPermission','return $modx->hasPermission($key);'); + +if($modx->hasPermission('new_template') || $modx->hasPermission('edit_template') || $modx->hasPermission('new_snippet') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('new_plugin') || $modx->hasPermission('edit_plugin') || $modx->hasPermission('manage_metatags')) + $hasAnyPermission = 1; +else $hasAnyPermission = 0; +$modx->addSnippet('hasAnyPermission','global $hasAnyPermission; return $hasAnyPermission;'); +$modx->addSnippet('getLoginUserName','return $modx->getLoginUserName();'); +$code = 'global $_lang;return $_SESSION["nrtotalmessages"] ? sprintf($_lang["welcome_messages"], $_SESSION["nrtotalmessages"], \'\' . $_SESSION["nrnewmessages"] . "") : $_lang["messages_no_messages"];'; +$modx->addSnippet('getMessageCount',$code); + +// Large Icons +$_style['icons_backup_large'] = 'fa fa-database fa-fw fa-2x'; +$_style['icons_mail_large'] = 'fa fa-envelope fa-fw fa-2x'; +$_style['icons_modules_large'] = 'fa fa-cogs fa-fw fa-2x'; +$_style['icons_resources_large'] = 'fa fa-th fa-fw fa-2x'; +$_style['icons_security_large'] = 'fa fa-lock fa-fw fa-2x'; +$_style['icons_webusers_large'] = 'fa fa-users fa-fw fa-2x'; +$_style['icons_help_large'] = 'fa fa-question-circle fa-fw fa-2x'; diff --git a/manager/media/style/MODxRE2_DropdownMenu/welcome.tpl b/manager/media/style/MODxRE2_DropdownMenu/welcome.tpl new file mode 100644 index 0000000000..a9a06ef413 --- /dev/null +++ b/manager/media/style/MODxRE2_DropdownMenu/welcome.tpl @@ -0,0 +1,243 @@ + + + + + +
    + + + [[@OnManagerWelcomePrerender]] + + + +
    +
    + [+logout_reminder_msg+] +
    +
    + + +
    +
    + [+multiple_sessions_msg+] +
    +
    + + +
    +
    + [+config_check_results+] +
    +
    + +
    + + +
    + +
    +
      + [[@OnManagerWelcomeHome]] + + +
    • +
      +
      + [%welcome_title%] +
      +
      + +
      +
      +
      +
      +
      + + +
      + [%security%]
      +
      + + + +
      + [%web_users%]
      +
      + + + +
      + [%modules%]
      +
      + + + +
      + [%elements%]
      +
      + + + +
      + [%backup%]
      +
      + + + +
      + [%help%]
      +
      + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + +
      [%yourinfo_username%][[#getLoginUserName]]
      [%yourinfo_role%][[$_SESSION['mgrPermissions']['name'] ]]
      [%yourinfo_previous_login%][[$_SESSION['mgrLastlogin']:math('%s+[(server_offset_time)]'):dateFormat]]
      [%yourinfo_total_logins%][[$_SESSION['mgrLogincount']:math('%s+1')]]
      [%inbox%][[#getMessageCount]]
      +
      +
      +
      +
    • + + + + +
    • +
      +
      + [%onlineusers_title%] +
      +
      + +
      +
      +
      +
      +
      + [+OnlineInfo+] +
      +
      +
      +
    • + + + + +
    • +
      +
      + [%activity_title%] +
      +
      + +
      +
      +
      +
      + [+RecentInfo+] +
      +
      +
    • + + + + +
    • +
      +
      + [%modx_news_title%] +
      +
      + +
      +
      +
      +
      + [+modx_news_content+] +
      +
      +
    • + + + + +
    • +
      +
      + [%security_notices_title%] +
      +
      + +
      +
      +
      +
      + [+modx_security_notices_content+] +
      +
      +
    • + +
    +
    + + + [[@OnManagerWelcomeRender]] +
    +

    + [%reset%] +

    +
    + +
    + + + + + + + + \ No newline at end of file From 2750446a37866816b5150cdee9678fe14a9244f2 Mon Sep 17 00:00:00 2001 From: MrSwed Date: Wed, 19 Apr 2017 12:07:30 +0300 Subject: [PATCH 175/398] [F] Fix vertical align --- manager/media/style/MODxRE2/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css index 156bac434a..d31a9c8880 100644 --- a/manager/media/style/MODxRE2/style.css +++ b/manager/media/style/MODxRE2/style.css @@ -141,7 +141,7 @@ blockquote { padding-bottom: 20px; } -td{vertical-align:top;} +td,td[valign=top]{vertical-align:top;} /* -------------------------[ Miscellaneous conveniences ]--- */ From be8f23bc643930060f663a76fca594aad6d8dd57 Mon Sep 17 00:00:00 2001 From: Nicola Date: Wed, 19 Apr 2017 14:48:14 +0200 Subject: [PATCH 176/398] Responsive Action Buttons https://github.com/modxcms/evolution/issues/1303 --- manager/actions/bkmanager.static.php | 2 +- manager/actions/document_data.static.php | 2 +- manager/actions/eventlog_details.dynamic.php | 4 ++-- manager/actions/export_site.static.php | 4 ++-- manager/actions/files.dynamic.php | 4 ++-- manager/actions/import_site.static.php | 4 ++-- manager/actions/logging.static.php | 4 ++-- manager/actions/messages.static.php | 6 +++--- manager/actions/modules.static.php | 2 +- manager/actions/move_document.dynamic.php | 4 ++-- manager/actions/mutate_content.dynamic.php | 14 +++++++------- manager/actions/mutate_htmlsnippet.dynamic.php | 12 ++++++------ manager/actions/mutate_module.dynamic.php | 14 +++++++------- .../actions/mutate_module_resources.dynamic.php | 2 +- manager/actions/mutate_password.dynamic.php | 4 ++-- manager/actions/mutate_plugin.dynamic.php | 12 ++++++------ manager/actions/mutate_role.dynamic.php | 6 +++--- manager/actions/mutate_settings.dynamic.php | 4 ++-- manager/actions/mutate_snippet.dynamic.php | 12 ++++++------ manager/actions/mutate_templates.dynamic.php | 12 ++++++------ manager/actions/mutate_tmplvars.dynamic.php | 12 ++++++------ manager/actions/mutate_user.dynamic.php | 8 ++++---- manager/actions/mutate_web_user.dynamic.php | 4 ++-- manager/actions/resources/tab1_templates.inc.php | 4 ++-- .../actions/resources/tab2_templatevars.inc.php | 6 +++--- manager/actions/resources/tab3_chunks.inc.php | 4 ++-- manager/actions/resources/tab4_snippets.inc.php | 4 ++-- manager/actions/resources/tab5_plugins.inc.php | 6 +++--- .../actions/resources/tab6_categoryview.inc.php | 4 ++-- manager/actions/resources/tpl_viewForm.tpl | 2 +- manager/actions/search.static.php | 6 +++--- manager/media/style/MODxRE2/style.css | 13 ++++++++++++- manager/media/style/MODxRE2/style.php | 14 +++++++++++++- 33 files changed, 119 insertions(+), 96 deletions(-) diff --git a/manager/actions/bkmanager.static.php b/manager/actions/bkmanager.static.php index 5dfc74ab40..1c98eb7c28 100644 --- a/manager/actions/bkmanager.static.php +++ b/manager/actions/bkmanager.static.php @@ -195,7 +195,7 @@ function confirmRevert(filename) { diff --git a/manager/actions/document_data.static.php b/manager/actions/document_data.static.php index c58bbf9a15..0e67746e58 100644 --- a/manager/actions/document_data.static.php +++ b/manager/actions/document_data.static.php @@ -210,7 +210,7 @@ function movedocument() {
  • - +
  • makeUrl($id)."','previeWin')" : "window.open('".$modx->config['site_url']."index.php?id=$id','previeWin')"; ?>"> diff --git a/manager/actions/eventlog_details.dynamic.php b/manager/actions/eventlog_details.dynamic.php index 8917780afa..a582cd799b 100644 --- a/manager/actions/eventlog_details.dynamic.php +++ b/manager/actions/eventlog_details.dynamic.php @@ -23,9 +23,9 @@
    diff --git a/manager/actions/export_site.static.php b/manager/actions/export_site.static.php index 23b5d192cc..fc36a8c27a 100644 --- a/manager/actions/export_site.static.php +++ b/manager/actions/export_site.static.php @@ -18,7 +18,7 @@ @@ -79,7 +79,7 @@ @@ -306,8 +306,8 @@ function hideSpans(showSpan) { diff --git a/manager/actions/modules.static.php b/manager/actions/modules.static.php index 730a30c4b1..62bf6f1be5 100644 --- a/manager/actions/modules.static.php +++ b/manager/actions/modules.static.php @@ -89,7 +89,7 @@ function menuAction(a) {
    diff --git a/manager/actions/move_document.dynamic.php b/manager/actions/move_document.dynamic.php index 19cc0f6d0f..29a95fca81 100644 --- a/manager/actions/move_document.dynamic.php +++ b/manager/actions/move_document.dynamic.php @@ -73,8 +73,8 @@ function checkParentChildRelation(pId, pName) { diff --git a/manager/actions/mutate_content.dynamic.php b/manager/actions/mutate_content.dynamic.php index 698bee5d2b..9116969bdf 100644 --- a/manager/actions/mutate_content.dynamic.php +++ b/manager/actions/mutate_content.dynamic.php @@ -630,7 +630,7 @@ function SetUrl(url, width, height, alt) { diff --git a/manager/actions/mutate_htmlsnippet.dynamic.php b/manager/actions/mutate_htmlsnippet.dynamic.php index 7e723858b7..6a9b639b1b 100644 --- a/manager/actions/mutate_htmlsnippet.dynamic.php +++ b/manager/actions/mutate_htmlsnippet.dynamic.php @@ -125,7 +125,7 @@ function deletedocument() { diff --git a/manager/actions/mutate_module.dynamic.php b/manager/actions/mutate_module.dynamic.php index 177209c842..c151907b2b 100644 --- a/manager/actions/mutate_module.dynamic.php +++ b/manager/actions/mutate_module.dynamic.php @@ -423,7 +423,7 @@ function SetUrl(url, width, height, alt) { diff --git a/manager/actions/mutate_module_resources.dynamic.php b/manager/actions/mutate_module_resources.dynamic.php index 94c4a5d4b6..0fab47d418 100644 --- a/manager/actions/mutate_module_resources.dynamic.php +++ b/manager/actions/mutate_module_resources.dynamic.php @@ -168,7 +168,7 @@ function openSelector(resource,mode,callback,w,h){ diff --git a/manager/actions/mutate_password.dynamic.php b/manager/actions/mutate_password.dynamic.php index 5b143010f0..319da00622 100644 --- a/manager/actions/mutate_password.dynamic.php +++ b/manager/actions/mutate_password.dynamic.php @@ -8,8 +8,8 @@

    diff --git a/manager/actions/mutate_plugin.dynamic.php b/manager/actions/mutate_plugin.dynamic.php index a17b6836db..7b9d804180 100644 --- a/manager/actions/mutate_plugin.dynamic.php +++ b/manager/actions/mutate_plugin.dynamic.php @@ -419,7 +419,7 @@ function contains(a, obj) {
    diff --git a/manager/actions/mutate_role.dynamic.php b/manager/actions/mutate_role.dynamic.php index cad320912d..c699ec72e7 100644 --- a/manager/actions/mutate_role.dynamic.php +++ b/manager/actions/mutate_role.dynamic.php @@ -76,9 +76,9 @@ function deletedocument() {
    manager->action=='38') { ?> diff --git a/manager/actions/mutate_settings.dynamic.php b/manager/actions/mutate_settings.dynamic.php index 26721cc9c8..031f0d5be0 100644 --- a/manager/actions/mutate_settings.dynamic.php +++ b/manager/actions/mutate_settings.dynamic.php @@ -59,12 +59,12 @@ diff --git a/manager/actions/mutate_snippet.dynamic.php b/manager/actions/mutate_snippet.dynamic.php index d6b8fc8e8a..f4629d7b1d 100644 --- a/manager/actions/mutate_snippet.dynamic.php +++ b/manager/actions/mutate_snippet.dynamic.php @@ -377,7 +377,7 @@ function contains(a, obj) {
    diff --git a/manager/actions/mutate_templates.dynamic.php b/manager/actions/mutate_templates.dynamic.php index e745cfe580..17e20c8a59 100644 --- a/manager/actions/mutate_templates.dynamic.php +++ b/manager/actions/mutate_templates.dynamic.php @@ -98,7 +98,7 @@ function deletedocument() { diff --git a/manager/actions/mutate_tmplvars.dynamic.php b/manager/actions/mutate_tmplvars.dynamic.php index bdf5449477..878c7ea24b 100644 --- a/manager/actions/mutate_tmplvars.dynamic.php +++ b/manager/actions/mutate_tmplvars.dynamic.php @@ -280,7 +280,7 @@ function decode(s){ diff --git a/manager/actions/mutate_user.dynamic.php b/manager/actions/mutate_user.dynamic.php index 0dca822b58..a34128a0b2 100644 --- a/manager/actions/mutate_user.dynamic.php +++ b/manager/actions/mutate_user.dynamic.php @@ -213,7 +213,7 @@ function showHide(what, onoff){ diff --git a/manager/actions/mutate_web_user.dynamic.php b/manager/actions/mutate_web_user.dynamic.php index 9927016b6d..280170913b 100644 --- a/manager/actions/mutate_web_user.dynamic.php +++ b/manager/actions/mutate_web_user.dynamic.php @@ -200,7 +200,7 @@ function showHide(what, onoff){
    • - " /> + + " aria-hidden="true"> +
    • -
    • -
    • +
    • " aria-hidden="true">
    • +
    • " aria-hidden="true">
    diff --git a/manager/actions/resources/tab2_templatevars.inc.php b/manager/actions/resources/tab2_templatevars.inc.php index 5ab1a1acb0..63055bca1f 100644 --- a/manager/actions/resources/tab2_templatevars.inc.php +++ b/manager/actions/resources/tab2_templatevars.inc.php @@ -21,9 +21,9 @@
  • -
  • -
  • -
  • +
  • " aria-hidden="true">
  • +
  • " aria-hidden="true">
  • +
  • " aria-hidden="true">
  • diff --git a/manager/actions/resources/tab3_chunks.inc.php b/manager/actions/resources/tab3_chunks.inc.php index 80eb66b290..b55e7050d0 100644 --- a/manager/actions/resources/tab3_chunks.inc.php +++ b/manager/actions/resources/tab3_chunks.inc.php @@ -17,8 +17,8 @@ -
  • -
  • +
  • " aria-hidden="true">
  • +
  • " aria-hidden="true">
  • diff --git a/manager/actions/resources/tab4_snippets.inc.php b/manager/actions/resources/tab4_snippets.inc.php index d7b4d5bd8d..82a1223ad3 100644 --- a/manager/actions/resources/tab4_snippets.inc.php +++ b/manager/actions/resources/tab4_snippets.inc.php @@ -17,8 +17,8 @@ -
  • -
  • +
  • " aria-hidden="true">
  • +
  • " aria-hidden="true">
  • diff --git a/manager/actions/resources/tab5_plugins.inc.php b/manager/actions/resources/tab5_plugins.inc.php index 96b179479f..6fe7ee5130 100644 --- a/manager/actions/resources/tab5_plugins.inc.php +++ b/manager/actions/resources/tab5_plugins.inc.php @@ -17,15 +17,15 @@ - hasPermission('new_plugin')) { ?>
  • - hasPermission('save_plugin')) { ?>
  • + hasPermission('new_plugin')) { ?>
  • " aria-hidden="true">
  • + hasPermission('save_plugin')) { ?>
  • " aria-hidden="true">
  • hasPermission('delete_plugin') && $_SESSION['mgrRole'] == 1) { $tbl_site_plugins = $modx->getFullTableName('site_plugins'); if ($modx->db->getRecordCount($modx->db->query("SELECT id FROM {$tbl_site_plugins} t1 WHERE disabled = 1 AND name IN (SELECT name FROM {$tbl_site_plugins} t2 WHERE t1.name = t2.name AND t1.id != t2.id)"))) { ?>
  • -
  • +
  • " aria-hidden="true">
  • diff --git a/manager/actions/resources/tab6_categoryview.inc.php b/manager/actions/resources/tab6_categoryview.inc.php index d29208da36..9155e9c638 100644 --- a/manager/actions/resources/tab6_categoryview.inc.php +++ b/manager/actions/resources/tab6_categoryview.inc.php @@ -15,8 +15,8 @@ -
  • -
  • +
  • " aria-hidden="true">
  • +
  • " aria-hidden="true">
  • diff --git a/manager/actions/resources/tpl_viewForm.tpl b/manager/actions/resources/tpl_viewForm.tpl index cbb9917d5f..35206ba501 100644 --- a/manager/actions/resources/tpl_viewForm.tpl +++ b/manager/actions/resources/tpl_viewForm.tpl @@ -1,4 +1,4 @@ -
  • [%btn_view_options%]
  • +
  • [%btn_view_options%]
  • +
    + + [+OnManagerLoginFormPrerender+] + +
    + + + + + + + + + +

    [+login_captcha_message+]

    + +

    [+captcha_image+]

    + [+captcha_input+] + +
    + + + + [+OnManagerLoginFormRender+] +
    +
    +