diff --git a/e107_admin/ad_links.php b/e107_admin/ad_links.php index 02a00dbd9..52ee6425b 100644 --- a/e107_admin/ad_links.php +++ b/e107_admin/ad_links.php @@ -1,20 +1,17 @@ "); } +if (!defined('E_16_EURL')) { + define('E_16_EURL', ""); +} if (!defined('E_16_USER')) { define('E_16_USER', ""); } @@ -321,6 +321,9 @@ if (!defined('E_32_SEARCH')) { if (!defined('E_32_UPLOADS')) { define('E_32_UPLOADS', ""); } +if (!defined('E_32_EURL')) { + define('E_32_EURL', ""); +} if (!defined('E_32_USER')) { define('E_32_USER', ""); } @@ -398,6 +401,7 @@ $e_icon_array = array( 'theme_manage' => E_32_THEMEMANAGER, 'maintain' => E_32_MAINTAIN, 'upload' => E_32_UPLOADS, + 'eurl' => E_32_EURL, 'userclass' => E_32_USERCLASS, 'user_extended' => E_32_USER_EXTENDED, 'users' => E_32_USER, @@ -476,6 +480,7 @@ $array_functions = array( 28 => array(e_ADMIN."users_extended.php", ADLAN_78, ADLAN_79, "4", 2, E_16_USER_EXTENDED, E_32_USER_EXTENDED), 29 => array(e_ADMIN."fileinspector.php", ADLAN_147, ADLAN_148, "Y", 4, E_16_INSPECT, E_32_INSPECT), 30 => array(e_ADMIN."notify.php", ADLAN_149, ADLAN_150, "O", 4, E_16_NOTIFY, E_32_NOTIFY), - 31 => array(e_ADMIN."cron.php", ADLAN_157, ADLAN_158, "U", 4, E_16_CRON, E_32_CRON) + 31 => array(e_ADMIN."cron.php", ADLAN_157, ADLAN_158, "U", 4, E_16_CRON, E_32_CRON), + 32 => array(e_ADMIN."eurl.php", ADLAN_159, ADLAN_160, "L", 1, E_16_EURL, E_32_EURL) ); ?> diff --git a/e107_admin/administrator.php b/e107_admin/administrator.php index 98c61caa2..44244ec98 100644 --- a/e107_admin/administrator.php +++ b/e107_admin/administrator.php @@ -1,20 +1,17 @@ "; // Post links // $text .= checkb("J", $a_perms).ADMSLAN_41."
"; // Post articles - NOW PLUGIN // $text .= checkb("K", $a_perms).ADMSLAN_42."
"; // Post reviews - NOW PLUGIN -// $text .= checkb("L", $a_perms).ADMSLAN_43."
"; // Post content pages - NOW PLUGIN + $text .= checkb("L", $a_perms).ADMSLAN_43."
"; // Configure URLs $text .= checkb("R", $a_perms).ADMSLAN_44."
"; // Post downloads - $text .= checkb("U", $a_perms).ADMSLAN_45."
"; // Post polls + $text .= checkb("U", $a_perms).ADMSLAN_45."
"; // Schedule Tasks $text .= checkb("M", $a_perms).ADMSLAN_46."
"; // Welcome message $text .= checkb("N", $a_perms).ADMSLAN_47."

"; // Moderate submitted news diff --git a/e107_admin/eurl.php b/e107_admin/eurl.php new file mode 100644 index 000000000..7c91b85f0 --- /dev/null +++ b/e107_admin/eurl.php @@ -0,0 +1,262 @@ +update(); + $plug_message = $res ? LAN_UPDATED : ($res === 0 ? LAN_NO_CHANGE : LAN_UPDATED_FAILED); + $plug_message = "
".$plug_message."

"; +} + +//var_dump($pref['url_config'], $e107->url->getUrl('pm', 'main', array('f'=>'box', 'box'=>2))); + +$urlc->renderPage(); +require_once(e_ADMIN.'footer.php'); + +class admin_url_config { + + var $_rs; + var $_plug; + var $_api; + + function admin_url_config() + { + global $e107; + require_once(e_HANDLER.'plugin_class.php'); + require_once(e_HANDLER.'file_class.php'); + require_once(e_HANDLER.'form_handler.php'); + $this->_rs = new form(); + $this->_plug = new e107plugin(); + $this->_fl = new e_file(); + $this->_api = &$e107; + } + + function renderPage() { + global $plug_message; + $text = "
+ {$plug_message} +
+ + "; + + $text .= " + + + + "; + + $text .= $this->render_sections('core'); + + $text .= " + + + "; + + $text .= $this->render_sections('plugin'); + + $text .= " + + + + + +
Configure Core URLs
Configure Plugin URLs
".$this->_rs->form_button('submit', 'update', LAN_UPDATE)."
+
+
"; + + $this->_api->ns->tablerender('Manage Site URLs', $text); + } + + function render_sections($id) { + + if($id == 'core') { + $sections = $this->get_core_sections(); + } else { + $sections = $this->_plug->getall(1); + } + + $ret = ''; + foreach ($sections as $section) { + if($id == 'core' && !is_readable(e_FILE.'e_url/core/'.$section['core_path'])) continue; + elseif($id == 'plugin' && !is_readable(e_PLUGIN.$section['plugin_path'].'/e_url')) continue; + $ret .= $this->render_section($id, $section); + } + + return $ret; + } + + function render_section($id, $section) + { + + $this->normalize($id, $section); //var_dump($id, $section); + $text .= " + + {$section['name']} + + ".$this->render_section_radio($id, $section)." + "; + $text .= " + + + "; + return $text; + } + + function render_section_radio($id, $section) + { + global $pref; + //DEFAULT + $checked_def = varset($pref['url_config'][$section['path']]) ? '' : ' checked="checked"'; + $def = " + + + "; + + //CUSTOM - CENTRAL REPOSITORY + $udefined_id = $id.'-custom:'.$section['path']; + $udefined_path = e_FILE."e_url/custom/{$id}/{$section['path']}/"; + $need_save = false; $checked = false; + $custom = ''; + if(is_readable($udefined_path)) + { + //Search the central url config repository - one config to rull them all + if($pref['url_config'][$section['path']]) + { + $pref['url_config'][$section['path']] = $udefined_id; + $need_save = true; + } + + $checked = $pref['url_config'][$section['path']] == $udefined_id ? ' checked="checked"' : ''; + $custom = " +
+ + + +
+
+ User defined URL configuration - overrides (disables) all custom configuration profiles.
+ Remove the User defined configuration folder to enable the custom configuration profiles.
+ Location: ".e_FILE_ABS."e_url/custom/{$id}/{$section['path']}/"." +
+
+ "; + } + + + //CUSTOM PROFILES - PLUGINS ONLY + $config_profiles = ''; $profile_id = ''; + if($id == 'plugin') + $profile_path = e_PLUGIN."{$section['path']}/e_url/"; + else + $profile_path = e_FILE."e_url/core/{$section['path']}/"; + + $config_profiles_array = $this->get_plug_profiles($profile_path); + //Search for custom url config released with the plugin + if($config_profiles_array) + { + foreach ($config_profiles_array as $config_profile) { + $profile_id = $id.'-profile:'.$config_profile; + $checked_profile = $pref['url_config'][$section['path']] == $profile_id ? ' checked="checked"' : ''; + if($custom) $checked_profile = ' disabled="disabled"'; + $config_profiles .= " +
+ + + +
+
+ Under Construction - profile.xml
+ Location: ".str_replace(array(e_PLUGIN, e_FILE), array(e_PLUGIN_ABS, e_FILE_ABS), $profile_path)."{$config_profile}/ +
+
+ "; + } + + } + + $this->render_shutdown($need_save); + + return $def.$config_profiles.$custom; + } + + function get_plug_profiles($path) + { + $ret = $this->_fl->get_dirs($path, '', array('CVS', '.svn')); + return $ret; + } + + function render_shutdown($now) + { + global $pref; + if($now && !isset($_POST['update'])) + { + save_prefs(); + } + } + + function get_core_sections() + { + $core_def = array( + 'news' => array("core_name" => 'News', 'core_path' => 'news'), + 'downloads' => array("core_name" => 'Downloads', 'core_path' => 'downloads') + ); + + return $core_def; + } + + function normalize($id, &$section) + { + $tmp = $section; + foreach ($tmp as $k => $v) + { + $section[str_replace($id.'_', '', $k)] = $v; + unset($section[$k]); + } + } + + function update() + { + global $pref; + $pref['url_config'] = $_POST['cprofile']; + return save_prefs(); + } +} + + +function headerjs() +{ + + $js = " + "; + + return $js; +} +?> \ No newline at end of file diff --git a/e107_files/jslib/e107.js.php b/e107_files/jslib/e107.js.php index 76e27bf5e..c702a5e3e 100644 --- a/e107_files/jslib/e107.js.php +++ b/e107_files/jslib/e107.js.php @@ -8,8 +8,8 @@ * e107 Javascript API * * $Source: /cvs_backup/e107_0.8/e107_files/jslib/e107.js.php,v $ - * $Revision: 1.11 $ - * $Date: 2008-11-29 23:31:02 $ + * $Revision: 1.12 $ + * $Date: 2008-12-02 00:32:30 $ * $Author: secretr $ * */ @@ -823,7 +823,9 @@ Object.extend(e107Helper, { var expandthem = event.memo.element ? $(event.memo.element) : $$('body')[0]; expandthem.select('.e-expandit').invoke('observe', 'click', function(e) { e.stop(); - this.toggle(e.element(), {}); + var element = e.findElement('a'); + if(!element) element = e.element(); + this.toggle(element, {}); }.bindAsEventListener(e107Helper)); }, diff --git a/e107_handlers/e107Url.php b/e107_handlers/e107Url.php index 8d7613819..afb4a27f4 100755 --- a/e107_handlers/e107Url.php +++ b/e107_handlers/e107Url.php @@ -1,20 +1,17 @@ 1); } - $handlerId = $section . '/' . $urlType; if (!isset($this->_link_handlers[$handlerId])) + $handlerId = $section . '/' . $urlType; if (!isset($this->_link_handlers[$handlerId])) { $this->_link_handlers[$handlerId] = $this->_initHandler($section, $urlType); @@ -50,29 +47,62 @@ class eURL return '#url-not-found'; } + /** + * Parse Request string + * + * @param string $section + * @param string $urlType + * @param string $request + * @return mixed parsed url + */ + function parseUrl($section, $urlType, $request = '') + { + if (empty($request)) + { + $request = e_QUERY; + } + + $handlerId = $section . '/' . $urlType; + if (!isset($this->_link_handlers[$handlerId])) + { + $this->_link_handlers[$handlerId] = $this->_initHandler($section, $urlType); + } + + return call_user_func('parse_'.$this->_link_handlers[$handlerId], $request); + } + function _initHandler($section, $urlType) { global $pref; //FIXME pref handler, $e107->prefs instance - $core = false; - if (strpos($section, ':') !== false) + if (strpos($section, ':') === false) { - list($tmp, $section) = explode(':', $section, 2); - $core = ($tmp === 'core'); + $section = 'plugin:'.$section; } - elseif (isset($this->_link_handlers['plugin:'.$section])) - { - return $this->_link_handlers['plugin:'.$section]; - } - - $handlerId = $section . '/' . $urlType; + + list($type, $section) = explode(':', $section, 2); $handler = 'url_' . $section . '_' . $urlType; // Check to see if custom code is active and exists if (varsettrue($pref['url_config'][$section])) { - // Search the central url config repository - one config to rull them all - $fileName = ($core ? e_FILE."url/custom/base/{$handlerId}.php" : e_FILE."url/custom/plugins/{$handlerId}.php"); + $filePath = str_replace( + array( + 'core-custom:', + 'core-profile:', + 'plugin-custom:', + 'plugin-profile:' + ), + array( + e_FILE.'e_url/custom/core/', + e_FILE.'e_url/core/'.$section.'/', + e_FILE.'e_url/custom/plugin/', + e_PLUGIN.$section.'/e_url/', + ), + $pref['url_config'][$section] + ); + $fileName = $filePath.'/'.$urlType.'.php'; + var_dump('FileName: '.$fileName, $handler); if (is_readable($fileName)) { include_once ($fileName); @@ -81,22 +111,12 @@ class eURL { return $handler; } - // Search for custom url config released with the plugin - if (!$core) - { - $fileName = e_PLUGIN."{$section}/url/custom/{$urlType}.php"; - if (is_readable($fileName)) - { - include_once ($fileName); - } - if (function_exists($handler)) - { - return $handler; - } - } } - // Search the default url config - the last station - $fileName = ($core ? e_FILE."url/base/{$handlerId}.php" : e_PLUGIN."{$section}/url/{$urlType}.php"); + + //Search the default url config - the last station + $core = ($type === 'core'); + $handlerId = $section . '/' . $urlType; + $fileName = ($core ? e_FILE."url/core/{$handlerId}.php" : e_PLUGIN."{$section}/url/{$urlType}.php"); if (is_readable($fileName)) { include_once ($fileName); @@ -111,17 +131,17 @@ class eURL $e107->url->getCoreUser('user', array('id' => 10)); function __call($method, $arguments) { - if (strpos($method, "getCore") === 0) - { - $section = strtolower(substr($method, 7)); - return $this->getCoreUrl($section, varset($arguments[0]), varset($arguments[1])); - } - elseif (strpos($method, "get") === 0) - { - $section = strtolower(substr($method, 3)); - return $this->getUrl($section, varset($arguments[0]), varset($arguments[1])); - } - return ''; + if (strpos($method, "getCore") === 0) + { + $section = strtolower(substr($method, 7)); + return $this->getCoreUrl($section, varset($arguments[0]), varset($arguments[1])); + } + elseif (strpos($method, "get") === 0) + { + $section = strtolower(substr($method, 3)); + return $this->getUrl($section, varset($arguments[0]), varset($arguments[1])); + } + return ''; } */ } diff --git a/e107_languages/English/admin/lan_admin.php b/e107_languages/English/admin/lan_admin.php index 31af0f55e..e94670070 100644 --- a/e107_languages/English/admin/lan_admin.php +++ b/e107_languages/English/admin/lan_admin.php @@ -1,13 +1,17 @@