Added private namespace skeleton feature
This commit is contained in:
parent
3d8f6fbf30
commit
50aa60436f
33
action.php
33
action.php
|
@ -95,10 +95,37 @@ class action_plugin_userhomepage extends DokuWiki_Action_Plugin{
|
||||||
saveWikiText($this->private_page,$this->applyTemplate('private'),'Automatically created');
|
saveWikiText($this->private_page,$this->applyTemplate('private'),'Automatically created');
|
||||||
unlock($this->private_page);
|
unlock($this->private_page);
|
||||||
// Announce private namespace was created
|
// Announce private namespace was created
|
||||||
msg($this->getLang('createdprivatens').' ('.$this->private_page.')', 0);
|
msg($this->getLang('createdprivatens').' ('.$this->private_page.')', 1);
|
||||||
// Note that we created private page
|
// Note that we created private page
|
||||||
$created['private'] = page_exists($this->private_page);
|
$created['private'] = page_exists($this->private_page);
|
||||||
}
|
}
|
||||||
|
// If private ns is managed by plugin, check for any template from skeleton that doesn't exist yet
|
||||||
|
if ($this->getConf('create_private_ns') && (is_dir($this->dataDir.'/'.$this->getConf('templates_path').'/uhp_private_skeleton'))) {
|
||||||
|
//$files = scandir($this->dataDir.'/'.$this->getConf('templates_path').'/uhp_private_skeleton/');
|
||||||
|
$path = realpath($this->dataDir.'/'.$this->getConf('templates_path').'/uhp_private_skeleton/');
|
||||||
|
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);
|
||||||
|
if ($this->getConf('group_by_name')) {
|
||||||
|
// private:s:simon or private:s:simon_delage
|
||||||
|
$this->private_ns = cleanID($this->getConf('users_namespace').':'.substr($this->privateNamespace(), 0, 1).':'. $this->privateNamespace());
|
||||||
|
} else {
|
||||||
|
// private:simon or private:simon_delage
|
||||||
|
$this->private_ns = cleanID($this->getConf('users_namespace').':'. $this->privateNamespace());
|
||||||
|
}
|
||||||
|
foreach($objects as $objectName => $object){
|
||||||
|
$file = str_replace($path, '', $objectName);
|
||||||
|
if ((is_file($this->dataDir.'/'.$this->getConf('templates_path').'/uhp_private_skeleton'.$file)) and (strpos($file, '.txt') !== false)) {
|
||||||
|
$custom_page_id = cleanID(str_replace('.txt', '', str_replace('/', ':', str_replace('\\', ':', $file))));
|
||||||
|
$this->custom_target = $this->private_ns.':'.$custom_page_id;
|
||||||
|
if (!page_exists($this->custom_target)) {
|
||||||
|
$this->custom_page_template = $this->dataDir.'/'.$this->getConf('templates_path').'/uhp_private_skeleton'.$file;
|
||||||
|
lock($this->custom_target);
|
||||||
|
saveWikiText($this->custom_target,$this->applyTemplate($this->custom_page_template),'Automatically created');
|
||||||
|
msg("Added '".$this->custom_target."' page from user namespace skeleton to your private namespace.",0);
|
||||||
|
unlock($this->custom_target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// Public page?
|
// Public page?
|
||||||
// If public page doesn't exists, create it (from template)
|
// If public page doesn't exists, create it (from template)
|
||||||
if ($this->getConf('create_public_page') && is_file($this->dataDir.'/'.$this->getConf('templates_path').'/userhomepage_public.txt') && !page_exists($this->public_page) && !checklock($this->public_page) && !checkwordblock()) {
|
if ($this->getConf('create_public_page') && is_file($this->dataDir.'/'.$this->getConf('templates_path').'/userhomepage_public.txt') && !page_exists($this->public_page) && !checklock($this->public_page) && !checkwordblock()) {
|
||||||
|
@ -109,7 +136,7 @@ class action_plugin_userhomepage extends DokuWiki_Action_Plugin{
|
||||||
saveWikiText($this->public_page,$this->applyTemplate('public'),'Automatically created');
|
saveWikiText($this->public_page,$this->applyTemplate('public'),'Automatically created');
|
||||||
unlock($this->public_page);
|
unlock($this->public_page);
|
||||||
// Announce plubic page was created
|
// Announce plubic page was created
|
||||||
msg($this->getLang('createdpublicpage').' ('.$this->public_page.')', 0);
|
msg($this->getLang('createdpublicpage').' ('.$this->public_page.')', 1);
|
||||||
// Note that we created public page
|
// Note that we created public page
|
||||||
$created['public'] = page_exists($this->public_page);
|
$created['public'] = page_exists($this->public_page);
|
||||||
}
|
}
|
||||||
|
@ -310,6 +337,8 @@ class action_plugin_userhomepage extends DokuWiki_Action_Plugin{
|
||||||
$content = io_readFile($this->private_page_template, false);
|
$content = io_readFile($this->private_page_template, false);
|
||||||
} elseif ($type == 'public') {
|
} elseif ($type == 'public') {
|
||||||
$content = io_readFile($this->public_page_template, false);
|
$content = io_readFile($this->public_page_template, false);
|
||||||
|
} else {
|
||||||
|
$content = io_readFile($type, false);
|
||||||
}
|
}
|
||||||
$content = str_replace('@TARGETPRIVATEPAGE@', $this->private_page, $content);
|
$content = str_replace('@TARGETPRIVATEPAGE@', $this->private_page, $content);
|
||||||
$content = str_replace('@TARGETPRIVATENS@', $this->private_ns, $content);
|
$content = str_replace('@TARGETPRIVATENS@', $this->private_ns, $content);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
base userhomepage
|
base userhomepage
|
||||||
author Simon Delage
|
author Simon Delage
|
||||||
email simon.geekitude@gmail.com
|
email simon.geekitude@gmail.com
|
||||||
date 2015-10-03
|
date 2015-10-04
|
||||||
name User Homepage
|
name User Homepage
|
||||||
desc Automatically create user's private namespace and/or public page and redirects users to private namespace on login.
|
desc Automatically create user's private namespace and/or public page and redirects users to private namespace on login.
|
||||||
url https://www.dokuwiki.org/plugin:userhomepage
|
url https://www.dokuwiki.org/plugin:userhomepage
|
||||||
|
|
Loading…
Reference in a new issue