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 = "";
+
+ $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 .= "
+
+
+
+
+ ";
+ return $text;
+ }
+
+ function render_section_radio($id, $section)
+ {
+ global $pref;
+ //DEFAULT
+ $checked_def = varset($pref['url_config'][$section['path']]) ? '' : ' checked="checked"';
+ $def = "
+
+ Default
+ ";
+
+ //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 Config
+
+
+
+ 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 .= "
+
+
+
+ Config Profile [{$config_profile}]
+
+
+
+
+ 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 @@