Compare commits

..

5 Commits

Author SHA1 Message Date
Simon DELAGE 84ead8cff6 Update README.md 2014-09-13 09:24:53 +02:00
Simon DELAGE b84b0e5893 Update action.php
Forgot the ACL improvement wich is necessary to protect private namespaces
2014-09-07 07:30:45 +02:00
Simon DELAGE febe34601f Update README.md 2014-09-07 07:27:26 +02:00
Simon DELAGE e360655687 Removed patern from [templatepath] option
Was preventing to change the path
2014-09-01 15:37:49 +02:00
Simon DELAGE 3ba4f69548 Removed an empty line 2014-08-30 17:19:14 +02:00
31 changed files with 229 additions and 1234 deletions

View File

@ -1,11 +1,10 @@
User HomePage
UserHomepage
============
Dokuwiki plugin to automatically create user's homepage and/or namespace.
Previous authors stopped developing it in 2009.
I started to work on it in 2014-08.
## Live demo is up !
A [live demo website](http://demo.geekitude.fr/) is available (and also provides demo for [Mixture template](https://www.dokuwiki.org/template:mixture)). Simply log in as **demo** (same string for password) and play around.
This is the old version with only a few fixes to enable saving options and make ACL work.
The content is resetted every hour and any Github update is applied with a maximum delay of one hour.
Simon Delage

1
_template.txt Normal file
View File

@ -0,0 +1 @@
====== @NAME@ (@USER@) ======

View File

@ -1,482 +1,167 @@
<?php
/**
* Userhomepage plugin main file
* Previous authors: James GuanFeng Lin, Mikhail I. Izmestev, Daniel Stonier
* @author: Simon Delage <simon.geekitude@gmail.com>
* @license: CC Attribution-Share Alike 3.0 Unported <http://creativecommons.org/licenses/by-sa/3.0/>
*/
// AUTHOR James Lin
// Version 3.0.4
// FIXED by Simon Delage <simon.geekitude@gmail.com> on 2014-08-30
// must be run within Dokuwiki
if (!defined('DOKU_INC')) die();
if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN', DOKU_INC . 'lib/plugins/');
require_once (DOKU_PLUGIN . 'action.php');
require_once (DOKU_PLUGIN . '/acl/admin.php');
class action_plugin_userhomepage extends DokuWiki_Action_Plugin
{
private $userHomePagePath = '';
private $userHomePageTemplate = '';
private $home_wiki_page = '';
private $home_wiki_ns = '';
private $doku_page_path = '';
private $home_page_template = '';
class action_plugin_userhomepage extends DokuWiki_Action_Plugin{
function register(Doku_Event_Handler $controller) {
$controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, 'init',array());
$controller->register_hook('DETAIL_STARTED', 'AFTER', $this, 'init',array());
$controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'redirect',array());
$controller->register_hook('ACTION_ACT_PREPROCESS', 'AFTER', $this, 'acl',array());
$controller->register_hook('COMMON_USER_LINK', 'AFTER', $this, 'replaceUserLink',array());
}
function init(&$event, $param) {
global $conf;
if ($this->multiNsOk(true)) {
$this->helper = plugin_load('helper','userhomepage');
// If templates_path option starts with 'data/pages' it can automatically be adapted but should be changed
if (substr($this->getConf('templates_path'),0,10) == 'data/pages') {
$dest = str_replace("data/pages", "./pages", $this->getConf('templates_path'));
msg("Userhomepage option [<code>templates_path</code>] should be changed to a path relative to data folder (as set by Dokuwiki's [<code>savedir</code>] setting). Current value is based on former default (i.e. <code>data/pages/...</code>) and will still work but this message will keep appearing until the value is corrected, check <a href='https://www.dokuwiki.org/plugin:userhomepage'>this page</a> for details.",2);
} else {
$dest = $this->getConf('templates_path');
}
//if ($event == "DETAIL_STARTED") { return false; }
$this->dataDir = $conf['savedir'];
// CREATE PRIVATE NAMESPACE START PAGE TEMPLATES IF NEEDED (is required by options, doesn't exist yet and a known user is logged in and not showing image details page)
if (($this->getConf('create_private_ns')) && (!is_file($this->dataDir.'/'.$this->getConf('templates_path').'/userhomepage_private.txt')) && ($this->userOk()) && ($event != "DETAIL_STARTED")) {
// If a template exists in path as builded before 2015/05/14 version, use it as source to create userhomepage_private.txt in new templates_path
if ((is_file(DOKU_CONF.'../'.$this->getConf('templates_path').'/userhomepage_private.txt')) && ($this->getConf('templatepath') != null)) {
$source = DOKU_CONF.'../'.$this->getConf('templates_path').'/userhomepage_private.txt';
// If a template from version 3.0.4 exists, use it as source to create userhomepage_private.txt in templates_path
} elseif ((is_file(DOKU_INC.$this->getConf('templatepath'))) && ($this->getConf('templatepath') != null)) {
$source = $this->getConf('templatepath');
// Otherwise, we're on a fresh install
} else {
$source = 'lib/plugins/userhomepage/lang/'.$conf['lang'].'/userhomepage_private.default';
}
$this->copyFile($source, $dest, 'userhomepage_private.txt');
}
// CREATE PUBLIC PAGE TEMPLATES IF NEEDED (is required by options, doesn't exist yet and a known user is logged in and not showing image details page)
if (($this->getConf('create_public_page')) and (!is_file($this->dataDir.'/'.$this->getConf('templates_path').'/userhomepage_public.txt')) and ($this->userOk()) && ($event != "DETAIL_STARTED")) {
// If a template exists in path as builded before 2015/05/14 version, use it as source to create userhomepage_private.txt in new templates_path
if ((is_file(DOKU_CONF.'../'.$this->getConf('templates_path').'/userhomepage_public.txt')) && ($this->getConf('templatepath') != null)) {
$source = DOKU_CONF.'../'.$this->getConf('templates_path').'/userhomepage_public.txt';
} else {
$source = 'lib/plugins/userhomepage/lang/'.$conf['lang'].'/userhomepage_public.default';
}
$this->copyFile($source, $dest, 'userhomepage_public.txt');
}
// TARGETS
// ...:start.txt or ...:simon_delage.txt
$this->private_page = $this->helper->getPrivateID();
// user:simon.txt
$this->public_page = $this->helper->getPublicID();
// If a user is logged in, store timestamp (if it wasn't stored yet)
if (($_SERVER['REMOTE_USER'] != null) && (!isset($_SESSION['uhptimestamp']))) {
$_SESSION['uhptimestamp'] = time();
// If no user is logged in and a timestamp exists, set timestamp to null (ensures that redirection will work if user just logged out and comes back before closing browser)
} elseif (($_SERVER['REMOTE_USER'] == null) && (isset($_SESSION['uhptimestamp']))) {
$_SESSION['uhptimestamp'] = null;
}
} else {
return false;
}
}
function redirect(&$event, $param) {
global $conf;
global $lang;
global $ID;
if ($this->multiNsOk()) {
$created = array();
// If a user is logged in and not allready requesting his private namespace start page
if (($this->userOk())&&($_REQUEST['id']!=$this->private_page)) {
// if private page doesn't exists, create it (from template)
if ($this->getConf('create_private_ns') && is_file($this->dataDir.'/'.$this->getConf('templates_path').'/userhomepage_private.txt') && !page_exists($this->private_page) && !checklock($this->private_page) && !checkwordblock() && ($this->userOk('private'))) {
// Target private start page template
$this->private_page_template = $this->dataDir.'/'.$this->getConf('templates_path').'/userhomepage_private.txt';
// Create private page
lock($this->private_page);
saveWikiText($this->private_page,$this->applyTemplate('private'),'Automatically created');
unlock($this->private_page);
// Announce private namespace was created
msg($this->getLang('createdprivatens').' ('.$this->private_page.')', 1);
// Note that we created 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')) && ($this->userOk('private'))) {
//$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);
}
function init()
{
global $conf;
require_once (DOKU_INC.'inc/search.php');
if($_SERVER['REMOTE_USER']!=null)
{
//$this->doku_page_path = DOKU_INC . 'data/pages';
$this->doku_page_path = $conf['datadir'];
$this->home_page_template = DOKU_INC . $this->getConf('templatepath');
if ($this->getConf('group_by_name'))
{
// people:g:gme']li8600
$this->home_wiki_ns = cleanID($this->getConf('users_namespace').':'.strtolower(substr($this->homeNamespace(), 0, 1)).':'. $this->homeNamespace());
}
}
}
// Public page?
// 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() && ($this->userOk('public'))) {
// Target public page template
$this->public_page_template = $this->dataDir.'/'.$this->getConf('templates_path').'/userhomepage_public.txt';
// Create public page
lock($this->public_page);
saveWikiText($this->public_page,$this->applyTemplate('public'),'Automatically created');
unlock($this->public_page);
// Announce plubic page was created
msg($this->getLang('createdpublicpage').' ('.$this->public_page.')', 1);
// Note that we created public page
$created['public'] = page_exists($this->public_page);
}
// List IDs that can match wiki start
$wikistart = array($conf['start'], ':'.$conf['start']);
// If Translation plugin is active, wiki start page can also be '??:start'
if (!plugin_isdisabled('translation')) {
// For each language in Translation settings
foreach (explode(' ',$conf['plugin']['translation']['translations']) as $language){
array_push($wikistart, $language.':'.$conf['start'], ':'.$language.':'.$conf['start']);
}
}
// If user isn't on public or private page yet, check for redirection conditions
if (($ID != $this->public_page) && ($ID != $this->private_page)) {
// If Public page was just created, redirect to it and edit (or show)
if (($created['public']) && (page_exists($this->public_page))) {
send_redirect(wl($this->public_page, array('do='.$this->getConf('action')), true));
// Else if private start page was just created and edit option is set, redirect to it and edit
} elseif (($created['private']) && (page_exists($this->private_page)) && ($this->getConf('edit_before_create'))) {
send_redirect(wl($this->private_page, array('do='.$this->getConf('action')), true));
// Else if redirection is enabled and user's private page exists AND [(user isn't requesting a specific page OR he's requesting wiki start page) AND logged in 2sec ago max]
} elseif (($this->getConf('redirection')) && (page_exists($this->private_page)) && (((!isset($_GET['id'])) or (in_array($_GET['id'], $wikistart))) && (time()-$_SESSION["uhptimestamp"] <= 2))) {
send_redirect(wl($this->private_page, '', true));
}
}
}
} else {
return false;
}
}
function acl(&$event, $param) {
global $conf;
if ($this->multiNsOk()) {
if ((!$this->getConf('no_acl')) && ($conf['useacl']) && ($this->userOk())) {
global $config_cascade;
$existingLines = file($config_cascade['acl']['default']);
$newLines = array();
// ACL
$acl = new admin_plugin_acl();
// On private namespace
if ($this->getConf('create_private_ns')) {
// For known users
// If use_name_string or group_by_name is enabled, we can't use ACL wildcards so let's create ACL for current user on his private ns
if (($this->getConf('use_name_string')) or ($this->getConf('group_by_name'))) {
$where = $this->private_ns.':*';
$who = strtolower($_SERVER['REMOTE_USER']);
// Otherwise we can set ACL for all known users at once
} else {
$where = cleanID($this->getConf('users_namespace')).':%USER%:*';
$who = '%USER%';
}
$perm = AUTH_DELETE;
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
// For @ALL
if ($this->getConf('acl_all_private') != 'noacl') {
$where = cleanID($this->getConf('users_namespace')).':*';
$who = '@ALL';
$perm = (int)$this->getConf('acl_all_private');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
// For @user
if (($this->getConf('acl_user_private') != 'noacl') && ($this->getConf('acl_user_private') !== $this->getConf('acl_all_private'))) {
$where = cleanID($this->getConf('users_namespace')).':*';
$who = '@user';
$perm = (int)$this->getConf('acl_user_private');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
} // end of private namespaces acl
// On public user pages
if ($this->getConf('create_public_page')) {
// For known users
if (strpos($this->getConf('public_pages_ns'),':%NAME%:%START%') !== false) {
$where = cleanID(str_replace(':%NAME%:%START%', '', $this->getConf('public_pages_ns'))).':*';
} else {
$where = cleanID($this->getConf('public_pages_ns')).':%USER%';
}
$who = '%USER%';
$perm = AUTH_EDIT;
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
// For others
if ($this->getConf('acl_all_public') != 'noacl') {
// If both private and public namespaces are identical, we need to force rights for @ALL and/or @user on each public page
if ($this->getConf('users_namespace') == $this->getConf('public_pages_ns')) {
$files = scandir($this->dataDir.'/pages/'.$this->getConf('public_pages_ns'));
foreach($files as $file) {
if (is_file($this->dataDir.'/pages/'.$this->getConf('public_pages_ns').'/'.$file)) {
// ACL on templates will be managed another way
if (strpos($file, 'userhomepage_p') !== 0) {
// @ALL
if ($this->getConf('acl_all_public') != 'noacl') {
$where = $this->getConf('public_pages_ns').':'.substr($file, 0, -4);
$who = '@ALL';
$perm = $this->getConf('acl_all_public');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
// @user
if ($this->getConf('acl_user_public') != 'noacl') {
$where = $this->getConf('public_pages_ns').':'.substr($file, 0, -4);
$who = '@user';
$perm = $this->getConf('acl_user_public');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
}
}
}
// Otherwise we just need to give the right permission to each group on public pages namespace
} else {
// @ALL
if ($this->getConf('acl_all_public') != 'noacl') {
$where = cleanID(str_replace(':%NAME%:%START%', '', $this->getConf('public_pages_ns'))).':*';
$who = '@ALL';
$perm = $this->getConf('acl_all_public');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
// @user
if ($this->getConf('acl_user_public') != 'noacl') {
$where = cleanID(str_replace(':%NAME%:%START%', '', $this->getConf('public_pages_ns'))).':*';
$who = '@user';
$perm = $this->getConf('acl_user_public');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
else
{
// people:gli8600
$this->home_wiki_ns = cleanID($this->getConf('users_namespace').':'. $this->homeNamespace());
}
}
} // end for public pages acl
// On templates if they're in data/pages
if (strpos($this->getConf('templates_path'),'/pages') !== false) {
// For @ALL
if (($this->getConf('acl_all_templates') != 'noacl') && (($this->getConf('create_private_ns')) or ($this->getConf('create_public_page')))) {
$where = end(explode('/',$this->getConf('templates_path'))).':userhomepage_private';
$who = '@ALL';
$perm = (int)$this->getConf('acl_all_templates');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
$where = end(explode('/',$this->getConf('templates_path'))).':userhomepage_public';
$who = '@ALL';
$perm = (int)$this->getConf('acl_all_templates');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
// For @user
if (($this->getConf('acl_user_templates') != 'noacl') && ($this->getConf('acl_user_templates') !== $this->getConf('acl_all_templates')) && (($this->getConf('create_private_ns')) or ($this->getConf('create_public_page')))) {
$where = end(explode('/',$this->getConf('templates_path'))).':userhomepage_private';
$who = '@user';
$perm = (int)$this->getConf('acl_user_templates');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
$where = end(explode('/',$this->getConf('templates_path'))).':userhomepage_public';
$who = '@user';
$perm = (int)$this->getConf('acl_user_templates');
if (!in_array("$where\t$who\t$perm\n", $existingLines)) { $newLines[] = array('where' => $where, 'who' => $who, 'perm' => $perm); }
}
} // end of templates acl
$i = count($newLines);
if ($i > 0) {
msg("Userhomepage: adding or updating ".$i." ACL rules.",1);
foreach($newLines as $line) {
if (($line['where'] != null) && ($line['who'] != null)) {
// delete potential ACL rule with same scope (aka 'where') and same user (aka 'who')
$acl->_acl_del($line['where'], $line['who']);
$acl->_acl_add($line['where'], $line['who'], $line['perm']);
}
}
}
}
} else {
return false;
}
}
// people:gli8600:start.txt
$this->home_wiki_page= cleanID($this->home_wiki_ns . ':' . $this->homePage());
}
}
//draws a home link, used by calls from main.php in template folder
function homeButton()
{
$this->init();
if ($_SERVER['REMOTE_USER']!=null)
{
echo '<form class="button btn_show" method="post" action="doku.php?id='.$this->home_wiki_page.'"><input class="button" type="submit" value="Home"/></form>';
}
}
//draws a home button, used by calls from main.php in template folder
function homeLink()
{
$this->init();
if ($_SERVER['REMOTE_USER']!=null)
{
echo '<a href="doku.php?id='.$this->home_wiki_page.'">Home</a>';
}
}
function copyFile($source = null, $target_dir = null, $target_file = null) {
if (!is_file($this->dataDir.DIRECTORY_SEPARATOR.$target_dir.DIRECTORY_SEPARATOR.$target_file)) {
if(!is_dir($this->dataDir.DIRECTORY_SEPARATOR.$target_dir)){
io_mkdir_p($this->dataDir.DIRECTORY_SEPARATOR.$target_dir) || msg("Creating directory $target_dir failed",-1);
}
$source = str_replace('/', DIRECTORY_SEPARATOR, $source);
copy($source, $this->dataDir.DIRECTORY_SEPARATOR.$target_dir.DIRECTORY_SEPARATOR.$target_file);
if (is_file($this->dataDir.DIRECTORY_SEPARATOR.$target_dir.DIRECTORY_SEPARATOR.$target_file)) {
msg($this->getLang('copysuccess').' ('.$source.' > '.$this->dataDir.DIRECTORY_SEPARATOR.$target_dir.DIRECTORY_SEPARATOR.$target_file.')', 1);
} else {
msg($this->getLang('copyerror').' ('.$source.' > '.$this->dataDir.DIRECTORY_SEPARATOR.$target_dir.DIRECTORY_SEPARATOR.$target_file.')', -1);
}
} else {
msg($this->getLang('copynotneeded').' ('.$source.' > '.$this->dataDir.DIRECTORY_SEPARATOR.$target_dir.DIRECTORY_SEPARATOR.$target_file.')', 0);
}
}
function homeNamespace() {
if ( $this->getConf('use_name_string')) {
global $INFO;
$raw_string = $INFO['userinfo']['name'];
//james_lin
return $raw_string;
} else {
//gli8600
return strtolower($_SERVER['REMOTE_USER']);
};
}
function privateNamespace() {
if ( $this->getConf('use_name_string')) {
function homePage() {
if ( $this->getConf('use_start_page')) {
global $conf;
return $conf['start'];
} else {
return $this->homeNamespace();
};
}
function _template() {
global $INFO;
$raw_string = cleanID($INFO['userinfo']['name']);
// simon_delage
return $raw_string;
} else {
// simon
return strtolower($_SERVER['REMOTE_USER']);
$content = io_readFile($this->home_page_template, false);
$name = $INFO['userinfo']['name'];
$user = strtolower($_SERVER['REMOTE_USER']);
$content = str_replace('@NAME@',$name,$content);
$content = str_replace('@USER@',$user,$content);
return $content;
}
}
function privateStart() {
if ($this->getConf('use_start_page')) {
function page_template(&$event, $param)
{
$this->init();
if($this->home_wiki_page && $this->home_wiki_page == $event->data[0]) {
if(!$event->result) // FIXME: another template applied?
$event->result = $this->_template();
$event->preventDefault();
}
}
function redirect(&$event, $param)
{
global $conf;
return cleanID($conf['start']);
} else {
return $this->privateNamespace();
}
}
global $INFO;
function applyTemplate($type) {
if ($type == 'private') {
$content = io_readFile($this->private_page_template, false);
} elseif ($type == 'public') {
$content = io_readFile($this->public_page_template, false);
} else {
$content = io_readFile($type, false);
}
$content = str_replace('@TARGETPRIVATEPAGE@', $this->helper->getPrivateID(), $content);
$content = str_replace('@TARGETPRIVATENS@', cleanID(str_replace(':start', '', $this->helper->getPrivateID())), $content);
$content = str_replace('@TARGETPUBLICPAGE@', $this->helper->getPublicID(), $content);
$content = str_replace('@TARGETPUBLICNS@', cleanID(str_replace(':start', '', $this->helper->getPublicID())), $content);
// Improved template process to use standard replacement patterns from https://www.dokuwiki.org/namespace_templates based on code proposed by Christian Nancy
// Build a fake data structure for the parser
$data = array('tpl' => $content, 'id' => $this->private_page);
// Use the built-in parser
$content = parsePageTemplate($data);
return $content;
}
if (($_SERVER['REMOTE_USER']!=null)&&($_REQUEST['do']=='login'))
{
$this->init();
$id = $this->home_wiki_page;
function replaceUserLink(&$event, $param) {
global $INFO;
global $conf;
if ($this->multiNsOk()) {
if (($conf['showuseras'] == "username_link") and ($this->getConf('userlink_replace'))) {
$classes = $this->getConf('userlink_classes');
$classes = str_replace(',', ' ', $classes);
//if ($this->getConf('userlink_fa')) {
// $classes = str_replace('interwiki', '', $classes);
//}
$this->username = $event->data['username'];
$this->name = $event->data['name'];
$this->link = $event->data['link'];
$this->userlink = $event->data['userlink'];
$this->textonly = $event->data['textonly'];
// Logged in as...
if (strpos($this->name, '<bdi>') !== false) {
$privateId = $this->helper->getPrivateID();
$publicId = $this->helper->getPublicID();
if ((page_exists($privateId)) && (page_exists($publicId))) {
if ($this->getConf('userlink_fa')) {
$return = '<a href="'.wl($privateId).'" class="'.$classes.' uhp_fa" rel="nofollow" title="'.$this->getLang('privatenamespace').' ('.$privateId.')'.'"><bdi><i class="fa fa-user-secret"></i>'.$INFO['userinfo']['name'].'</bdi></a> (<a href="'.wl($publicId).'" class="'.$classes.' uhp_fa" rel="nofollow" title="'.$this->getLang('publicpage').' ('.$publicId.')'.'"><bdi><i class="fa fa-user"></i>'.$_SERVER['REMOTE_USER'].'</bdi></a>)';
} else {
$return = '<a href="'.wl($privateId).'" class="'.$classes.' uhp_private" rel="nofollow" title="'.$this->getLang('privatenamespace').' ('.$privateId.')'.'"><bdi>'.$INFO['userinfo']['name'].'</bdi></a> (<a href="'.wl($publicId).'" class="'.$classes.' uhp_public" rel="nofollow" title="'.$this->getLang('publicpage').' ('.$publicId.')'.'"><bdi>'.$_SERVER['REMOTE_USER'].'</bdi></a>)';
}
} elseif (page_exists($publicId)) {
if ($this->getConf('userlink_fa')) {
$return = '</a> (<a href="'.wl($publicId).'" class="'.$classes.' uhp_fa" rel="nofollow" title="'.$this->getLang('publicpage').'('.$publicId.')'.'"><bdi><i class="fa fa-user"></i>'.$_SERVER['REMOTE_USER'].'</bdi></a>)';
} else {
$return = '<bdi>'.$INFO['userinfo']['name'].'</bdi> (<a href="'.wl($publicId).'" class="'.$classes.' uhp_public" rel="nofollow" title="'.$this->getLang('publicpage').' ('.$publicId.')'.'"><bdi>'.$_SERVER['REMOTE_USER'].'</bdi></a>)';
}
} elseif (page_exists($privateId)) {
if ($this->getConf('userlink_fa')) {
$return = '<a href="'.wl($privateId).'" class="'.$classes.' uhp_fa" rel="nofollow" title="'.$this->getLang('privatenamespace').' ('.$privateId.')'.'"><bdi><i class="fa fa-user-secret"></i>'.$INFO['userinfo']['name'].'</bdi></a>';
} else {
$return = '<a href="'.wl($privateId).'" class="'.$classes.' uhp_private" rel="nofollow" title="'.$this->getLang('privatenamespace').' ('.$privateId.')'.'"><bdi>'.$INFO['userinfo']['name'].'</bdi></a> (<bdi>'.$_SERVER['REMOTE_USER'].'</bdi>)';
}
} else {
$return = null;
//check if page not exists, create it
if (!page_exists($id) && !checklock($id) && !checkwordblock())
{
// set acl's if requested
if ( $this->getConf('set_permissions') == 1 )
{
$acl = new admin_plugin_acl();
// Lines changed following suggestion from Luitzen van Gorkum
// Old user-page ACL:
// $ns = cleanID($this->home_wiki_ns.':'.$this->homePage());
// New user-namespace ACL:
$ns = cleanID($this->home_wiki_ns).':*';
$acl->_acl_add($ns, '@ALL', (int)$this->getConf('set_permissions_others'));
$acl->_acl_add($ns, strtolower($_SERVER['REMOTE_USER']), AUTH_DELETE);
}
// ... or Last modified...
} else {
// No change for this right now
$return = null;
}
if ($return != null) {
$event->data = array(
'username' => $this->username,
'name' => $this->name,
'link' => $this->link,
'userlink' => $return,
'textonly' => $this->textonly
);
}
}
} else {
return false;
}
}
function multiNsOk($msg=false) {
// Error: Public page switched to namespace and is in conflict with Private namespace
if (strpos($this->getConf('public_pages_ns'),':%NAME%:%START%') !== false) {
$PublicNS = str_replace(':%NAME%:%START%', '', $this->getConf('public_pages_ns'));
$PublicNS = str_replace(':', '', $PublicNS);
$PrivateNS = str_replace(':', '', $this->getConf('users_namespace'));
if ($PublicNS == $PrivateNS) {
if ($msg) {
msg("UserHomePage settings conflict ! Make sure Private and Public namespaces are different. Plugin will have no effect untill this is corrected.", -1);
}
return false;
} else {
return true;
}
} else {
return true;
}
}
function userOk($check = null) {
global $INFO;
// Proceed only if named user is connected...
if ($_SERVER['REMOTE_USER'] != null) {
// Check if user is member of a group in 'groups_private' or 'groups_public' (depending on $check)
if (($check == 'private') or ($check == 'public')) {
// Stop if 'groups_private' is set and and user is not member of at least one of said groups
$groups = $this->getConf('groups_'.$check);
$groups = str_replace(' ','', $groups);
$groups = explode(',', $groups);
$userGroups = $INFO['userinfo']['grps'];
// If UHP is set to check user's group(s)
if (($groups != null) and ($groups[0] != null) and ($userGroups != null)) {
$test = array_intersect($groups, $userGroups);
// Proceed if user is member of at least one group set UHP's corresponding setting
if (count($test) > 0) {
return true;
} else {
return false;
if (!$this->getConf('edit_before_create'))
{
//writes the user info to page
lock($id);
saveWikiText($id,$this->_template(),$lang['created']);
unlock($id);
}
// If UHP isn't set to ckeck user's group(s) we can proceed
} else {
return true;
// redirect to edit home page
send_redirect(wl($id, array("do" => ($this->getConf('edit_before_create'))?"edit":"show"), false, "&"));
}
// If $check is null, we only need to know that a named user is connected (wich we allready know if we went that far)
} else {
return true;
// if the user was at a specific page, then don't redirect to personal page.
if (($_REQUEST['id']==$conf['start'])||(!isset($_REQUEST['id'])))
{
send_redirect(wl($id));
}
}
// ... else stop
} else {
return false;
}
}
function getInfo()
{
return array
(
'name' => 'User Home Page',
'email' => 'simon.geekitude@gmail.com',
'date' => '2009-05-28',
'author' => 'Simon Delage (previously James GuanFeng Lin, Mikhail I. Izmestev & Daniel Stonier)',
'desc' => 'auto redirects users to <create> their homepage',
'url' => 'https://www.dokuwiki.org/plugin:userhomepage'
);
}
function register(&$controller)
{
$controller->register_hook('ACTION_ACT_PREPROCESS', 'BEFORE', $this, 'redirect',array());
$controller->register_hook('HTML_PAGE_FROMTEMPLATE', 'BEFORE', $this, 'page_template',array());
}
}

View File

@ -1,32 +1,14 @@
<?php
/**
* Configuration defaults file for Userhomepage plugin
* Previous authors: James GuanFeng Lin, Mikhail I. Izmestev, Daniel Stonier
* @author: Simon Delage <simon.geekitude@gmail.com>
* @license: CC Attribution-Share Alike 3.0 Unported <http://creativecommons.org/licenses/by-sa/3.0/>
/*
* Userhomepage plugin, configuration defaults
* FIXED by Simon Delage <simon.geekitude@gmail.com> on 2014-08-30
*/
$conf['create_private_ns'] = 0;
$conf['use_name_string'] = 0;
$conf['use_start_page'] = 1;
$conf['users_namespace'] = 'user';
$conf['group_by_name'] = 0;
$conf['edit_before_create'] = 0;
$conf['acl_all_private'] = '0';
$conf['acl_user_private'] = '0';
$conf['groups_private'] = '';
$conf['create_public_page'] = 0;
$conf['public_pages_ns'] = 'user';
$conf['acl_all_public'] = '1';
$conf['acl_user_public'] = '1';
$conf['groups_public'] = '';
$conf['templates_path'] = './pages/user';
$conf['templatepath'] = 'lib/plugins/userhomepage/_template.txt';
$conf['acl_all_templates'] = '1';
$conf['acl_user_templates'] = '1';
$conf['no_acl'] = 0;
$conf['redirection'] = 1;
$conf['action'] = 'edit';
$conf['userlink_replace'] = 1;
$conf['userlink_classes'] = 'interwiki iw_user wikilink1';
$conf['userlink_fa'] = 0;
$conf['use_name_string'] = 0; // use name string instead of login string for the user's ns
$conf['use_start_page'] = 1; // use state page instead of namespace string for home page
$conf['set_permissions'] = 1; // configure acl's
$conf['set_permissions_others'] = '0';
$conf['templatepath'] = 'lib/plugins/userhomepage/_template.txt'; // the location of the template file
$conf['users_namespace'] = 'people'; // namespace storing the user namespaces
$conf['group_by_name'] = 1; // use the first character of name to group people
$conf['edit_before_create'] = 1; // allow users to edit their home pages before create

View File

@ -1,32 +1,14 @@
<?php
/**
* Configuration metadata file for Userhomepage plugin
* Previous authors: James GuanFeng Lin, Mikhail I. Izmestev, Daniel Stonier
* @author: Simon Delage <simon.geekitude@gmail.com>
* @license: CC Attribution-Share Alike 3.0 Unported <http://creativecommons.org/licenses/by-sa/3.0/>
/*
* Userhomepage plugin, configuration metadata
* FIXED by Simon Delage <simon.geekitude@gmail.com> on 2014-08-30
*/
$meta['create_private_ns'] = array('onoff');
$meta['use_name_string'] = array('onoff');
$meta['use_start_page'] = array('onoff');
$meta['users_namespace'] = array('string','_pattern' => '/^(|[a-zA-Z\-:]+)$/');
$meta['group_by_name'] = array('onoff');
$meta['edit_before_create'] = array('onoff');
$meta['acl_all_private'] = array('multichoice','_choices'=>array('0','1','2','4','8','16','noacl'));
$meta['acl_user_private'] = array('multichoice','_choices'=>array('0','1','2','4','8','16','noacl'));
$meta['groups_private'] = array('string');
$meta['create_public_page'] = array('onoff');
$meta['public_pages_ns'] = array('string','_pattern' => '/^(|[a-zA-Z\-:%]+)$/','_caution' => 'warning');
$meta['acl_all_public'] = array('multichoice','_choices'=>array('0','1','2','noacl'));
$meta['acl_user_public'] = array('multichoice','_choices'=>array('0','1','2','noacl'));
$meta['groups_public'] = array('string');
$meta['templates_path'] = array('string');
$meta['templatepath'] = array('string');
$meta['acl_all_templates'] = array('multichoice','_choices'=>array('0','1','2','noacl'));
$meta['acl_user_templates'] = array('multichoice','_choices'=>array('0','1','2','noacl'));
$meta['no_acl'] = array('onoff');
$meta['redirection'] = array('onoff');
$meta['action'] = array('multichoice','_choices'=>array('edit','show'));
$meta['userlink_replace'] = array('onoff');
$meta['userlink_classes'] = array('string');
$meta['userlink_fa'] = array('onoff');
$meta['use_name_string'] = array('onoff'); // use name string instead of login string for the user's namespace
$meta['use_start_page'] = array('onoff'); // use start page instead of namespace string for home page
$meta['set_permissions'] = array('onoff'); // configure permissions
$meta['set_permissions_others'] = array('multichoice','_choices'=>array('0','1','2','4','8','16')); // if enable set permission, what permission for other people?
$meta['templatepath'] = array('string'); // the location of the template file
$meta['users_namespace'] = array('string','_pattern' => '/^(|[a-zA-Z\-:]+)$/'); // the namespace containing user directories
$meta['group_by_name'] = array('onoff'); // group people by the first character of name
$meta['edit_before_create'] = array('onoff'); // allow users to edit their home page before create.

View File

@ -1,160 +0,0 @@
<?php
/**
* Helper Component for the Userhomepage Plugin
*
* @author: Simon Delage <simon.geekitude@gmail.com>
* @license: CC Attribution-Share Alike 3.0 Unported <http://creativecommons.org/licenses/by-sa/3.0/>
*/
// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
class helper_plugin_userhomepage extends DokuWiki_Plugin {
// Returns the ID of current user's private namespace start page (even if it doesn't exist)
function getPrivateID() {
if ($this->getConf('group_by_name')) {
// private:s:simon or private:s:simon_delage
$this->private_ns = cleanID($this->getConf('users_namespace').':'.strtolower(substr($this->privateNamespace(), 0, 1)).':'. $this->privateNamespace());
} else {
// private:simon or private:simon_delage
$this->private_ns = cleanID($this->getConf('users_namespace').':'. $this->privateNamespace());
}
// ...:start.txt
return $this->private_page = $this->private_ns.':'.$this->privateStart();
}
// Returns the ID of any (or current) user's public page (even if it doesn't exist)
function getPublicID($userLogin=null) {
global $conf;
if ($userLogin == null) {
$userLogin = $_SERVER['REMOTE_USER'];
}
if (strpos($this->getConf('public_pages_ns'),':%NAME%:%START%') !== false) {
$target = str_replace('%NAME%', $userLogin, $this->getConf('public_pages_ns'));
$target = str_replace('%START%', $conf['start'], $target);
} else {
$target = $this->getConf('public_pages_ns').':'.$userLogin;
}
return $this->public_page = cleanID($target);
}
// Returns a link to current user's private namespace start page (even if it doesn't exist)
// If @param == "loggedinas", the link will be wraped in an <li> element
function getPrivateLink($param=null) {
global $INFO;
global $lang;
if ($param == "loggedinas") {
return '<li>'.$lang['loggedinas'].' <a href="'.wl($this->getPrivateID()).'" class="uhp_private" rel="nofollow" title="'.$this->getLang('privatenamespace').'">'.$INFO['userinfo']['name'].' ('.$_SERVER['REMOTE_USER'].')</a></li>';
} elseif ($param != null) {
return '<a href="'.wl($this->getPrivateID()).'" rel="nofollow" title="'.$this->getLang('privatenamespace').'">'.$param.'</a>';
} else {
return '<a href="'.wl($this->getPrivateID()).'" rel="nofollow" title="'.$this->getLang('privatenamespace').'">'.$this->getLang('privatenamespace').'</a>';
}
}
// Returns a link to current user's public page (even if it doesn't exist)
// If @param == "loggedinas", the link will be wraped in an <li> element
function getPublicLink($param=null) {
global $INFO;
global $lang;
if ($param == "loggedinas") {
return '<li>'.$lang['loggedinas'].' <a href="'.wl($this->getPublicID()).'" class="uhp_public" rel="nofollow" title="'.$this->getLang('publicpage').'">'.$INFO['userinfo']['name'].' ('.$_SERVER['REMOTE_USER'].')</a></li>';
} elseif ($param != null) {
return '<a href="'.wl($this->getPublicID()).'" rel="nofollow" title="'.$this->getLang('publicpage').'">'.$param.'</a>';
} else {
return '<a href="'.wl($this->getPublicID()).'" rel="nofollow" title="'.$this->getLang('publicpage').'">'.$this->getLang('publicpage').'</a>';
}
}
function getComplexLoggedInAs() {
global $INFO;
global $lang;
// If user's private namespace and public page exist, return a 'Logged in as' string with both styled links)
if ((page_exists($this->getPrivateID())) && (page_exists($this->getPublicID()))) {
return '<li>'.$lang['loggedinas'].' <a href="'.wl($this->getPrivateID()).'" class="uhp_private" rel="nofollow" title="'.$this->getLang('privatenamespace').'">'.$INFO['userinfo']['name'].'</a> (<a href="'.wl($this->getPublicID()).'" class="uhp_public" rel="nofollow" title="'.$this->getLang('publicpage').'">'.$_SERVER['REMOTE_USER'].'</a>)</li>';
// Else if only private namespace exists, return 'Logged in as' string with private namespace styled link
} elseif (page_exists($this->getPrivateID())) {
return $this->getPrivateLink("loggedinas");
// Else if only public page exists, return 'Logged in as' string with public page styled link
} elseif (page_exists($this->getPublicID())) {
return $this->getPublicLink("loggedinas");
// Else default back to standard string
} else {
return '<li class="user">'.$lang['loggedinas'].' '.userlink().'</li>';
}
}
// Returns a link to any user's public page (user login is required and page must exist)
// This is to provide proper "Last update by" link
function getAnyPublicLink($userLogin) {
global $lang;
if ($userLogin != null) {
$publicID = $this->getPublicID($userLogin);
$result = '<a href="'.wl($publicID).'" class="uhp_public ';
if (page_exists($publicID)) {
$result = $result.'wikilink1';
} else {
$result = $result.'wikilink2';
}
$result = $result.'" rel="nofollow" title="'.$this->getLang('publicpage').'">'.editorinfo($userLogin, true).'</a>';
return $result;
} else {
return false;
}
}
function getButton($type="private") {
global $INFO;
global $lang;
if ($type == "private") {
echo '<form class="button btn_show" method="post" action="doku.php?id='.$this->getPrivateID().'"><input class="button" type="submit" value="'.$this->getLang('privatenamespace').'"/></form>';
} elseif ($type == "public") {
echo '<form class="button btn_show" method="post" action="doku.php?id='.$this->getPublicID().'"><input class="button" type="submit" value="'.$this->getLang('publicpage').'"/></form>';
}
}
// Returns an array containing id and language of Private NS Start Page and/or Public Page (depending on options, page existance isn't checked)
function getElements() {
$return = array();
// Don't return anything if no known user is logged in
if ($_SERVER['REMOTE_USER'] != null) {
// Add PRIVATE NAMESPACE START PAGE INFO IF NEEDED (is required by options)
if ($this->getConf('create_private_ns')) {
$return['private'] = array();
$return['private']['id'] = $this->getPrivateID();
$return['private']['string'] = $this->getLang('privatenamespace');
}
// Add PUBLIC PAGE INFO IF NEEDED (is required by options)
if ($this->getConf('create_public_page')) {
$return['public'] = array();
$return['public']['id'] = $this->getPublicID();
$return['public']['string'] = $this->getLang('publicpage');
}
}
return $return;
}
function privateNamespace() {
if ($this->getConf('use_name_string')) {
global $INFO;
$raw_string = cleanID($INFO['userinfo']['name']);
// simon_delage
return $raw_string;
} else {
// simon
return strtolower($_SERVER['REMOTE_USER']);
}
}
function privateStart() {
if ( $this->getConf('use_start_page')) {
global $conf;
return cleanID($conf['start']);
} else {
return $this->privateNamespace();
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 792 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 742 B

View File

@ -1,15 +0,0 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Simon DELAGE <simon.geekitude@gmail.com>
* @author Dana <dannax3@gmx.de>
*/
$lang['copyerror'] = 'Fehler beim Kopieren';
$lang['copysuccess'] = 'Erfolgreich kopiert';
$lang['copynotneeded'] = 'Kopie wird nicht benötigt';
$lang['createdprivatens'] = 'Privaten Namespace erstellt';
$lang['createdpublicpage'] = 'Öffentliche Seite erstellt';
$lang['privatenamespace'] = 'Privater Namespace';
$lang['publicpage'] = 'Öffentliche Seite';

View File

@ -1,65 +0,0 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Simon Delage <simon.geekitude@gmail.com>
* @author Padhie <develop@padhie.de>
* @author Dana <dannax3@gmx.de>
*/
$lang['create_private_ns'] = 'Privaten Namespace für die Benutzer anlegen (alle anderen Optionen überprüfen, bevor diese Option aktiviert wird!)';
$lang['use_name_string'] = 'Den vollen Namen des Benutzers statt des Logins für seinen privaten Namespace benutzen';
$lang['use_start_page'] = 'Den Startseitennamen des Wikis für die Startseiten der privaten Namespaces benutzen (andernfalls wird der Name des privaten Namespace benutzt).';
$lang['users_namespace'] = 'Namespace, unter dem die privaten Namespaces der Benutzer angelegt werden';
$lang['group_by_name'] = 'Namespaces der Benutzer nach dem ersten Buchstaben des Benutzernamens gruppieren';
$lang['edit_before_create'] = 'Benutzern erlauben, die Startseite ihres privaten Namespace beim Anlegen zu bearbeiten (funktioniert nur, wenn nicht gleichzeitig eine öffentliche Seite angelegt wird)';
$lang['acl_all_private'] = 'Berechtigungen der Gruppe @ALL für private Namespaces';
$lang['acl_all_private_o_0'] = 'Keine (Standard)';
$lang['acl_all_private_o_1'] = 'Lesen';
$lang['acl_all_private_o_2'] = 'Bearbeiten';
$lang['acl_all_private_o_4'] = 'Anlegen';
$lang['acl_all_private_o_8'] = 'Hochladen';
$lang['acl_all_private_o_16'] = 'Entfernen';
$lang['acl_all_private_o_noacl'] = 'Kein automatischer ACL-Eintrag';
$lang['acl_user_private'] = 'Berechtigungen der Gruppe @user für private Namespaces';
$lang['acl_user_private_o_0'] = 'Keine (Standard)';
$lang['acl_user_private_o_1'] = 'Lesen';
$lang['acl_user_private_o_2'] = 'Bearbeiten';
$lang['acl_user_private_o_4'] = 'Anlegen';
$lang['acl_user_private_o_8'] = 'Hochladen';
$lang['acl_user_private_o_16'] = 'Entfernen';
$lang['acl_user_private_o_noacl'] = 'Kein automatischer ACL-Eintrag';
$lang['groups_private'] = 'Durch Kommata getrennte Liste von Benutzergruppen bezüglich der Erstellung von privaten Namesräumen (Freilassen, um oben stehende Einstellungen auf alle Benutzer anzuwenden).';
$lang['create_public_page'] = 'Öffentliche Seite für die Benutzer anlegen';
$lang['public_pages_ns'] = 'Namespace, unter dem die öffentlichen Seiten der Benutzer angelegt werden';
$lang['acl_all_public'] = 'Berechtigungen der Gruppe @ALL für öffentliche Seiten';
$lang['acl_all_public_o_0'] = 'Keine';
$lang['acl_all_public_o_1'] = 'Lesen (Standard)';
$lang['acl_all_public_o_2'] = 'Bearbeiten';
$lang['acl_all_public_o_noacl'] = 'Kein automatischer ACL-Eintrag';
$lang['acl_user_public'] = 'Berechtigungen für @user Gruppe auf öffentlichen Seiten';
$lang['acl_user_public_o_0'] = 'Keine';
$lang['acl_user_public_o_1'] = 'Lesen (Standard)';
$lang['acl_user_public_o_2'] = 'Bearbeiten';
$lang['acl_user_public_o_noacl'] = 'Kein automatischer ACL-Eintrag';
$lang['groups_public'] = 'Durch Kommata getrennte Liste von Benutzergruppen bezüglich der Erstellung von öffentlichen Seiten (Freilassen, um oben stehende Einstellungen auf alle Benutzer anzuwenden).';
$lang['templates_path'] = 'Relativer Pfad von [<code>savedir</code>] wo Templates gespeichert werden (userhomepage_private.txt and userhomepage_public.txt). Beispiel: <code>./pages/user</code> or <code>../lib/plugins/userhomepage</code>.';
$lang['templatepath'] = 'Templatepfad aus Version 3.0.4. Exisitert diese Datei, wird sie als Template für die Startseite neuer privater Namespaces verwendet (löschen, wenn dies nicht gewünscht wird)';
$lang['acl_all_templates'] = 'Berechtigungen der Gruppe @ALL für Templates, die in <code>data/pages...</code> liegen';
$lang['acl_all_templates_o_0'] = 'Keine';
$lang['acl_all_templates_o_1'] = 'Lesen (Standard)';
$lang['acl_all_templates_o_2'] = 'Bearbeiten';
$lang['acl_all_templates_o_noacl'] = 'Kein automatischer ACL-Eintrag';
$lang['acl_user_templates'] = 'Berechtigungen der Gruppe @user für Templates, die in <code>data/pages...</code> liegen';
$lang['acl_user_templates_o_0'] = 'Keine';
$lang['acl_user_templates_o_1'] = 'Lesen (Standard)';
$lang['acl_user_templates_o_2'] = 'Bearbeiten';
$lang['acl_user_templates_o_noacl'] = 'Kein automatischer ACL-Eintrag';
$lang['no_acl'] = 'Automatische Erstellung von ACL-Einträgen deaktivieren; bereits erstellte Einträge müssen manuell entfernt werden. Vergessen Sie nicht, ggf. ACL-Einträge für die Templates zu erstellen, falls diese in <code>data/pages...</code> liegen.';
$lang['redirection'] = 'Aktivieren einer Weiterleitung (Auch bei Deaktivierung, wird dies weiterhin bei der Erstellung von Seiten auftreten).';
$lang['action'] = 'Aktion bei der ersten Weiterleitung auf eine öffentliche Seite nach deren Erstellung (oder auf Startseite eines privaten Namespace).';
$lang['action_o_edit'] = 'Bearbeiten';
$lang['action_o_show'] = 'Anzeigen';
$lang['userlink_replace'] = 'Aktivieren des Ersetzens des [<code>Logged in as</code>] interwiki-Links, abhängig von Seiten erstellt durch Userhomepage (Funktioniert nur, wenn <code>showuseras</code> Option auf interwiki-Link gesetzt ist).';
$lang['userlink_classes'] = 'Durch Leerzeichen getrennte Liste von CSS-Klassen die auf [<code>Logged in as</code>] Interwiki-Links angewendet werden (Default: <code>interwiki iw_user wikilink1</code>).';
$lang['userlink_fa'] = 'Benutzen von Fontawesome-Icons anstelle von Bildern (Fontawesome muss durch ein Template oder Plugin installiert sein) ?';

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - Privater Namespace ======
Dieser Namespace ''//@TARGETPRIVATENS@://'' und sein Inhalt (Seiten, Bilder, ...) ist **für Ihre eigene Verwendung reserviert** (nur Administratoren können ebenfalls darauf zugreifen).
* Um eine Seite in Ihrem privaten Namespace zu erstellen, benutzen Sie einfach die normale Link-Syntax __ohne Angabe eines Namespace__ :
<code>[[beispielseite 1]]
[[beispiel 2|Meine Beispielseite 2]]</code>
* Um einen Unter-Namespace zu erstellen, geben Sie einfach die vollständige Position einer neuen Seite an:
<code>[[@TARGETPRIVATENS@:<zu-erstellender-unter-namespace>:beispiel 3]]</code>
Sie können diesen Absatz (abgesehen vom Titel der Seite) nun gerne löschen.\\
Los, schreiben Sie etwas! :-D

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - Öffentliche Seite ======
Diese öffentliche Seite ''//@TARGETPUBLICPAGE@.txt//'' kann, wie der Name schon sagt, **von jedem gelesen, aber nur vom Besitzer bearbeitet werden** (oder einem Administrator).
* Sie können sich selbst vorstellen, Links zu Ihren Beiträgen in diesem Wiki erstellen, eine Geschichte erzählen oder Ihre anderen Arbeiten präsentieren
* Denken Sie an die [[wp>http://de.wikipedia.org/wiki/Netiquette|Netiquette]] ;-)
Beschränkungen:
* Sie können keine anderen Seiten in diesem Namespace ''//@TARGETPUBLICNS@//'' erstellen
* Nur ein Administrator kann ein Bild hinzufügen
Sie können diesen Absatz (abgesehen vom Titel der Seite) nun gerne löschen.\\
Los, schreiben Sie etwas! :-D

View File

@ -1,14 +0,0 @@
<?php
/**
* English language file for Userhomepage plugin
* @author Simon DELAGE <simon.geekitude@gmail.com>
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*/
$lang['copyerror'] = 'Copy error';
$lang['copysuccess'] = 'Successfull copy';
$lang['copynotneeded'] = 'Copy not needed';
$lang['createdprivatens'] = 'Created your private namespace';
$lang['createdpublicpage'] = 'Created your public page';
$lang['privatenamespace'] = 'Private Space';
$lang['publicpage'] = 'Public Page';

View File

@ -1,64 +1,21 @@
<?php
/**
* English settings file for Userhomepage plugin
* Previous authors: James GuanFeng Lin, Mikhail I. Izmestev, Daniel Stonier
* @author: Simon Delage <simon.geekitude@gmail.com>
* @license: CC Attribution-Share Alike 3.0 Unported <http://creativecommons.org/licenses/by-sa/3.0/>
* English language file for config of Userhomepage plugin
* @author: Daniel Stonier <d.stonier@gmail.com>
* FIXED by Simon Delage <simon.geekitude@gmail.com> on 2014-08-30
*/
$lang['create_private_ns'] = 'Create user\'s private namespace (double-check all options before enabling)?';
$lang['use_name_string'] = 'Use user\'s full name instead of login for his private namespace.';
$lang['use_start_page'] = 'Use the wiki\'s start page name for the start page of each private namespace (otherwise, the private namespace name will be used).';
$lang['users_namespace'] = 'Namespace under which user namespaces are created.';
$lang['group_by_name'] = 'Group users\' namespaces by the first character of user name?';
$lang['edit_before_create'] = 'Allow users to edit the start page of their private namespace on creation (will only work if a public page isn\'t generated at the same time).';
$lang['acl_all_private'] = 'Permissions for @ALL group on Private Namespaces';
$lang['acl_all_private_o_0'] = 'None (Default)';
$lang['acl_all_private_o_1'] = 'Read';
$lang['acl_all_private_o_2'] = 'Edit';
$lang['acl_all_private_o_4'] = 'Create';
$lang['acl_all_private_o_8'] = 'Upload';
$lang['acl_all_private_o_16'] = 'Delete';
$lang['acl_all_private_o_noacl'] = 'No automatic ACL';
$lang['acl_user_private'] = 'Permissions for @user group on Private Namespaces';
$lang['acl_user_private_o_0'] = 'None (Default)';
$lang['acl_user_private_o_1'] = 'Read';
$lang['acl_user_private_o_2'] = 'Edit';
$lang['acl_user_private_o_4'] = 'Create';
$lang['acl_user_private_o_8'] = 'Upload';
$lang['acl_user_private_o_16'] = 'Delete';
$lang['acl_user_private_o_noacl'] = 'No automatic ACL';
$lang['groups_private'] = 'Comma separated list of user groups concerned by Private Namespace creation (leave empty to apply above settings to all users).';
$lang['create_public_page'] = 'Create a user\'s public page?';
$lang['public_pages_ns'] = 'Namespace under wich public pages are created.';
$lang['acl_all_public'] = 'Permissions for @ALL group on Public Pages';
$lang['acl_all_public_o_0'] = 'None';
$lang['acl_all_public_o_1'] = 'Read (Default)';
$lang['acl_all_public_o_2'] = 'Edit';
$lang['acl_all_public_o_noacl'] = 'No automatic ACL';
$lang['acl_user_public'] = 'Permissions for @user group on Public Pages';
$lang['acl_user_public_o_0'] = 'None';
$lang['acl_user_public_o_1'] = 'Read (Default)';
$lang['acl_user_public_o_2'] = 'Edit';
$lang['acl_user_public_o_noacl'] = 'No automatic ACL';
$lang['groups_public'] = 'Comma separated list of user groups concerned by Public Page creation (leave empty to apply above settings to all users).';
$lang['templates_path'] = 'Relative path from [<code>savedir</code>] where templates will be stored (userhomepage_private.txt and userhomepage_public.txt). Examples: <code>./pages/user</code> or <code>../lib/plugins/userhomepage</code>.';
$lang['templatepath'] = 'Template path from version 3.0.4. If this file exists, it will be used as default source for new private namespace start page template (clear the path if you don\'t want to).';
$lang['acl_all_templates'] = 'Permissions for @ALL group on templates (if they are stored in <code>data/pages...</code>)';
$lang['acl_all_templates_o_0'] = 'None';
$lang['acl_all_templates_o_1'] = 'Read (Default)';
$lang['acl_all_templates_o_2'] = 'Edit';
$lang['acl_all_templates_o_noacl'] = 'No automatic ACL';
$lang['acl_user_templates'] = 'Permissions for @user group on templates (if they are stored in <code>data/pages...</code>)';
$lang['acl_user_templates_o_0'] = 'None';
$lang['acl_user_templates_o_1'] = 'Read (Default)';
$lang['acl_user_templates_o_2'] = 'Edit';
$lang['acl_user_templates_o_noacl'] = 'No automatic ACL';
$lang['no_acl'] = 'No automated ACL setting at all but you\'ll have to remove those created so far manually. Don\'t forget to set some ACL on templates.';
$lang['redirection'] = 'Enable redirection (even if disabled, it will still occur on pages creation).';
$lang['action'] = 'Action on first redirection to public page after it\'s creation (or private namespace start page).';
$lang['action_o_edit'] = 'Edit (Default)';
$lang['action_o_show'] = 'Show';
$lang['userlink_replace'] = 'Enable replacement of [<code>Logged in as</code>] interwiki link, depending on pages created by Userhomepage (only works if <code>showuseras</code> option is set to interwiki link).';
$lang['userlink_classes'] = 'Space separated list of CSS classes to apply to [<code>Logged in as</code>] interwiki links (default: <code>interwiki iw_user wikilink1</code>).';
$lang['userlink_fa'] = 'Use Fontawesome icons instead of images (Fontawesome has to be installed by template or a plugin) ?';
$lang['use_name_string'] = 'Use names strings for the user\'s namespace (alt. login strings).';
$lang['use_start_page'] = 'Use the wiki\'s start page string instead of the user\'s namespace string for the home page.';
$lang['set_permissions'] = 'Configure acl\'s to permit user full access to their home namespace.';
$lang['set_permissions_others'] = 'If set permission enabled, what permission for other people?';
$lang['set_permissions_others_o_0'] = 'None';
$lang['set_permissions_others_o_1'] = 'Read';
$lang['set_permissions_others_o_2'] = 'Edit';
$lang['set_permissions_others_o_4'] = 'Create';
$lang['set_permissions_others_o_8'] = 'Upload';
$lang['set_permissions_others_o_16'] = 'Delete';
$lang['templatepath'] = 'Doku relative path to the template file.';
$lang['users_namespace'] = 'Namespace under which user namespaces are created.';
$lang['group_by_name'] = 'Group home pages by the first character of user name?';
$lang['edit_before_create'] = 'Allow users to edit their home pages before create';

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - Private Space ======
This namespace ''//@TARGETPRIVATENS@://'' and it's content (pages, images, ...) is **reserved for your own usage** (only superusers can also access to it)...
* To create a page inside this private space, simply use the standard link syntax __without any namespace__ :
<code>[[example page 1]]
[[example 2|My example page 2]]</code>
* To create a sub-namespace, simply indicate the new page's full position :
<code>[[@TARGETPRIVATENS@:<sub-namespace_to_create>:example 3]]</code>
Feel free to remove this paragraph (beside the title)...\\
Now, write something! :-D

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - Public Page ======
This public page ''//@TARGETPUBLICPAGE@.txt//'', as stated by it's name, **can be read by anyone but only you can edit it** (or a superuser)...
* You can introduce yourself, add links to your contributions in this wiki, tell a story or present your other works
* Think about [[wp>http://en.wikipedia.org/wiki/Etiquette_in_technology|netiquette]] ;-)
Limitations:
* You can't create any other page in that namespace ''//@TARGETPUBLICNS@//''
* Only a superuser can add a picture
Feel free to remove this paragraph (beside the title)...\\
Now, write something! :-D

View File

@ -1,14 +0,0 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Sam01 <m.sajad079@gmail.com>
*/
$lang['copyerror'] = 'کپی کردن خطا';
$lang['copysuccess'] = 'با موفقیت کپی شد';
$lang['copynotneeded'] = 'کپی نیاز نیست';
$lang['createdprivatens'] = 'ایجادکردن فضای‌نام خصوصی شما';
$lang['createdpublicpage'] = 'ایجادکردن صفحه‌ی عمومی شما';
$lang['privatenamespace'] = 'فضای خصوصی';
$lang['publicpage'] = 'فضای عمومی';

View File

@ -1,62 +0,0 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Sam01 <m.sajad079@gmail.com>
*/
$lang['create_private_ns'] = 'ایجاد صفحه‌ی خصوصی کاربر (دوبار بررسی‌شدن همه‌ی گزینه‌ها قبل از فراهم شدن؟)';
$lang['use_name_string'] = 'استفاده از نام کامل کاربر به‌ جای ورود به سیستم برای فضای‌نام خصوصی خود.';
$lang['use_start_page'] = 'استفاده نام صفحه آغازین ویکی برای صفحه آغازین هر فضای نام خصوصی (در غیر این صورت، نام فضای نامی خصوصی استفاده خواهد شد).';
$lang['users_namespace'] = 'فضای‌نام زیر فضای‌نام های کاربر که ایجاد شده اند.';
$lang['group_by_name'] = 'گروه فضای‌نام کاربران توسط کاراکتر اول نام کاربر؟';
$lang['edit_before_create'] = 'دسترسی کاربران برای ویرایش صفحه آغازین فضای نام خصوصی‌شان در ایجاد (کار خواهد کرد فقط اگر یک صفحه عمومی در همان زمان تولید نشود)';
$lang['acl_all_private'] = 'مجوز برای گروه @ALL در فضای‌نام‌های خصوصی';
$lang['acl_all_private_o_0'] = 'هیچ (پیشفرض)';
$lang['acl_all_private_o_1'] = 'خواندن';
$lang['acl_all_private_o_2'] = 'ویرایش';
$lang['acl_all_private_o_4'] = 'ایجاد';
$lang['acl_all_private_o_8'] = 'آپلود';
$lang['acl_all_private_o_16'] = 'حذف';
$lang['acl_all_private_o_noacl'] = 'بدون ACL خودکار';
$lang['acl_user_private'] = 'مجوز برای گروه @user در فضای‌نام خصوصی';
$lang['acl_user_private_o_0'] = 'هیچ (پیشفرض)';
$lang['acl_user_private_o_1'] = 'خواندن';
$lang['acl_user_private_o_2'] = 'ویرایش';
$lang['acl_user_private_o_4'] = 'ایجاد';
$lang['acl_user_private_o_8'] = 'آپلود';
$lang['acl_user_private_o_16'] = 'حذف';
$lang['acl_user_private_o_noacl'] = 'بدون ACL خودکار';
$lang['groups_private'] = 'جداکردن لیست نگران گروهای کاربر با کاما توسط ایجاد فضای نام خصوصی (خالی بگذارید تا تنظیمات بالا برای همه کاربران استفاده شود)';
$lang['create_public_page'] = 'ایجاد یک صفحه‌ی عمومی کاربر؟';
$lang['public_pages_ns'] = 'فضای‌نام زیر صفحه‌های عمومی ایجاد شده.';
$lang['acl_all_public'] = 'مجوز برای گروه @ALL در صفحات عمومی';
$lang['acl_all_public_o_0'] = 'هیچ';
$lang['acl_all_public_o_1'] = 'خواندن (پیشفرض)';
$lang['acl_all_public_o_2'] = 'ویرایش';
$lang['acl_all_public_o_noacl'] = 'بدون ACL خودکار';
$lang['acl_user_public'] = 'مجوز برای گروه @user در صفحات عمومی';
$lang['acl_user_public_o_0'] = 'هیچ';
$lang['acl_user_public_o_1'] = 'خواندن(پیشفرض)';
$lang['acl_user_public_o_2'] = 'ویرایش';
$lang['acl_user_public_o_noacl'] = 'بدون ACL خودکار';
$lang['groups_public'] = 'جداکردن با کاما لیست گروه کاربر که صفحه عمومی ایجاد';
$lang['templatepath'] = 'قالب مسیر از نسخه 3.0.4 اگر این فایل وجود داشته باشد، آن استفاده خواهد شد به عنوان امنیت پیش فرض برای فضای‌نام خصوصی جدید قالب صفحه آغازین (پاک کردن مسیر اگر شما نمیخواهید)';
$lang['acl_all_templates'] = 'مجوز برای گروه @ALL در قالب‌ها (اگر آنها ذخیره شده اند در <code>data/pages...</code>)';
$lang['acl_all_templates_o_0'] = 'هیچ';
$lang['acl_all_templates_o_1'] = 'خواندن (پیشفرض)';
$lang['acl_all_templates_o_2'] = 'ویرایش';
$lang['acl_all_templates_o_noacl'] = 'بدون ACL خودکار';
$lang['acl_user_templates'] = 'مجوز برای گروه @ALL در قالب‌ها (اگر آنها ذخیره شده اند در <code>data/pages...</code>)';
$lang['acl_user_templates_o_0'] = 'هیچ';
$lang['acl_user_templates_o_1'] = 'خواندن (پیشفرض)';
$lang['acl_user_templates_o_2'] = 'ویرایش';
$lang['acl_user_templates_o_noacl'] = 'بدون ACL خودکار';
$lang['no_acl'] = 'بدون ACL خودکار تنظیمات در همه اما شما باید حذف کنید آن را یا ایجاد کنید به طور دستی. تنظیم را فراموش نکنید در برخی ACL در قالب‌ها.';
$lang['redirection'] = 'فعال بودن تغییرمسیر (حتی اگر غیرفعال هم باشد، در ایجاد صفحه‌ها رخ می‌دهد).';
$lang['action'] = 'اقدام در اولین تغییرمسیر به صفحه عمومی بعد از ایجاد آن (یا فضای‌نام خصوصی صفحه آغازین)';
$lang['action_o_edit'] = 'ویرایش (پیشفرض)';
$lang['action_o_show'] = 'نمایش';
$lang['userlink_replace'] = 'فعال بودن جایگزینی [<code>وارد شده به عنوان</code>] در لینک‌های داخلی ویکی، بسته به صفحات ایجاد شده توسط صفحه خانگی کاربر (درصورتی کار می‌کند <code>showuseras</code> که تنظیمات روی لینک‌های داخلی ویکی باشند).';
$lang['userlink_classes'] = 'فضای لیست جدا شده از همه برای کلاس‌های CSS به درخواست [<code>واردشده به عنوان</code>] در لینک‌های داخلی ویکی (پیشفرض: <code>interwiki iw_user wikilink1</code>).';
$lang['userlink_fa'] = 'استفاده از آیکون‌های Fontawesome به جای تصاویر (Fontawesome باید توسط قالب یا افزونه نصب شده باشد) ؟';

View File

@ -1,14 +0,0 @@
<?php
/**
* French language file for Userhomepage plugin
* @author Simon DELAGE <simon.geekitude@gmail.com>
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*/
$lang['copyerror'] = 'Erreur de copie';
$lang['copysuccess'] = 'Copie réussie';
$lang['copynotneeded'] = 'Copie non nécessaire';
$lang['createdprivatens'] = 'Votre espace privé est créé';
$lang['createdpublicpage'] = 'Votre page publique est créée';
$lang['privatenamespace'] = 'Espace Privé';
$lang['publicpage'] = 'Page Publique';

View File

@ -1,64 +0,0 @@
<?php
/**
* French settings file for Userhomepage plugin
* Previous authors: James GuanFeng Lin, Mikhail I. Izmestev, Daniel Stonier
* @author: Simon Delage <simon.geekitude@gmail.com>
* @license: CC Attribution-Share Alike 3.0 Unported <http://creativecommons.org/licenses/by-sa/3.0/>
*/
$lang['create_private_ns'] = 'Créer les espaces privés des utilisateurs (vérifier soigneusement toutes les options avant l\'activation)?';
$lang['use_name_string'] = 'Utiliser le nom complet de l\'utilisateurs au lieu du login pour son espace privé.';
$lang['use_start_page'] = 'Utiliser le nom de page d\'accueil du wiki pour celle de chaque espace privé (sinon le nom de l\'espace privé sera utilisé).';
$lang['users_namespace'] = 'Espace de nom sous lequel créer les espaces privés des utilisateurs.';
$lang['group_by_name'] = 'Grouper les espaces privés des utilisateurs par la première lettre de leur nom ?';
$lang['edit_before_create'] = 'Permettre aux utilisateurs d\'éditer la page d\'accueil de leur espace privé à sa création (fonctionnera uniquement si une page publique n\'est pas créée en même temps).';
$lang['acl_all_private'] = 'Droits d\'accès pour le groupe @ALL sur les Espaces Privés';
$lang['acl_all_private_o_0'] = 'Aucun (Défaut)';
$lang['acl_all_private_o_1'] = 'Lecture';
$lang['acl_all_private_o_2'] = 'Écriture';
$lang['acl_all_private_o_4'] = 'Création';
$lang['acl_all_private_o_8'] = 'Envoyer';
$lang['acl_all_private_o_16'] = 'Effacer';
$lang['acl_all_private_o_noacl'] = 'Pas de gestion automatique des droits';
$lang['acl_user_private'] = 'Droits d\'accès pour le groupe @user sur les Espaces Privés';
$lang['acl_user_private_o_0'] = 'Aucun (Défaut)';
$lang['acl_user_private_o_1'] = 'Lecture';
$lang['acl_user_private_o_2'] = 'Écriture';
$lang['acl_user_private_o_4'] = 'Création';
$lang['acl_user_private_o_8'] = 'Envoyer';
$lang['acl_user_private_o_16'] = 'Effacer';
$lang['acl_user_private_o_noacl'] = 'Pas de gestion automatique des droits';
$lang['groups_private'] = 'Liste séparée par des virgules de groupes d\'utilisateurs concernés par la création d\'un espace privé (laisser vide pour appliquer les réglages ci-dessus à tous les utilisateurs).';
$lang['create_public_page'] = 'Créer une page publique pour chaque utilisateur?';
$lang['public_pages_ns'] = 'Espace de nom sous lequel créer les pages publiques.';
$lang['acl_all_public'] = 'Droits d\'accès pour le groupe @ALL sur les Pages Publiques';
$lang['acl_all_public_o_0'] = 'Aucun';
$lang['acl_all_public_o_1'] = 'Lecture (Défaut)';
$lang['acl_all_public_o_2'] = 'Écriture';
$lang['acl_all_public_o_noacl'] = 'Pas de gestion automatique des droits';
$lang['acl_user_public'] = 'Droits d\'accès pour le groupe @user sur les Pages Publiques';
$lang['acl_user_public_o_0'] = 'Aucun';
$lang['acl_user_public_o_1'] = 'Lecture (Défaut)';
$lang['acl_user_public_o_2'] = 'Écriture';
$lang['acl_user_public_o_noacl'] = 'Pas de gestion automatique des droits';
$lang['groups_public'] = 'Liste séparée par des virgules de groupes d\'utilisateurs concernés par la création d\'une page publique (laisser vide pour appliquer les réglages ci-dessus à tous les utilisateurs).';
$lang['templates_path'] = 'Chemin relatif depuis [<code>savedir</code>] où les modèles seront stockés (userhomepage_private.txt et userhomepage_public.txt). Exemples: <code>./pages/user</code> (permet d\'éditer les modèles depuis le wiki) ou <code>../lib/plugins/userhomepage</code> (pour plus de protecion ou pour les centraliser dans une ferme de wikis).';
$lang['templatepath'] = 'Chemin vers le modèle de la version 3.0.4. Si le fichier existe, il sera utilisé comme source pour le modèle des pages d\'accueil des espaces privés (videz le chemin si vous ne le souhaitez pas).';
$lang['acl_all_templates'] = 'Droits d\'accès pour le groupe @ALL sur les modèles (s\'ils sont stockés dans <code>data/pages...</code>)';
$lang['acl_all_templates_o_0'] = 'Aucun';
$lang['acl_all_templates_o_1'] = 'Lecture (Défaut)';
$lang['acl_all_templates_o_2'] = 'Écriture';
$lang['acl_all_templates_o_noacl'] = 'Pas de gestion automatique des droits';
$lang['acl_user_templates'] = 'Droits d\'accès pour le groupe @user sur les modèles (s\'ils sont stockés dans <code>data/pages...</code>)';
$lang['acl_user_templates_o_0'] = 'Aucun';
$lang['acl_user_templates_o_1'] = 'Lecture (Défaut)';
$lang['acl_user_templates_o_2'] = 'Écriture';
$lang['acl_user_templates_o_noacl'] = 'Pas de gestion automatique des droits';
$lang['no_acl'] = 'Aucun règlage automatique des droits d\'accès mais vous devrez nettoyer manuellement les règles déjà créées. Pensez à protéger les modèles.';
$lang['redirection'] = 'Activer la redirection (même désactivée, elle aura tout de même lieu lors de la création des pages).';
$lang['action'] = 'Action à la première redirection vers la page publique après sa création (ou la page d\'accueil de l\'espace de nom privé).';
$lang['action_o_edit'] = 'Editer (Défaut)';
$lang['action_o_show'] = 'Afficher';
$lang['userlink_replace'] = 'Activer le remplacement du lien interwiki [<code>Connecté en tant que</code>], selon les pages créées par Userhomepage (ne fonctionne que si l\'option <code>showuseras</code> est configurée pour le lien interwiki).';
$lang['userlink_classes'] = 'Liste séparée par des espaces de classes CSS à appliquer aux liens de la chaîne [<code>Connecté en tant que</code>] (défaut: <code>interwiki iw_user wikilink1</code>).';
$lang['userlink_fa'] = 'Utiliser des icônes Fontawesome au lieu d\'images (Fontawesome doit être installé par le thème ou un plugin) ?';

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - Espace Privé ======
Cet espace de nom ''//@TARGETPRIVATENS@://'' et son contenu (pages, images, ...) **vous est réservé** (seul un super-utilisateur peut y accéder)...
* Pour créer une page au sein de cet espace réservé, utilisez simplement la syntaxe de lien __sans aucun espace de nom__ :
<code>[[page exemple 1]]
[[exemple2|Ma page exemple2]]</code>
* Pour créer un sous-espace de nom, il suffit d'indiquer une nouvelle page avec son emplacement complet :
<code>[[@TARGETPRIVATENS@:<sous-espace_à_créer>:exemple3]]</code>
Vous pouvez évidement supprimer ce paragraphe (sauf le titre)...\\
A vos claviers! :-D

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - Page Publique ======
Cette page publique ''//@TARGETPUBLICPAGE@.txt//'' est par définition **accessible à tous en lecture mais vous seul pouvez la modifier** (en dehors d'un super-utilisateur)...
* Vous pouvez vous présenter, raconter une histoire ou présenter vos travaux personnels (même sans lien avec ce wiki)
* Ne créez pas d'autre page dans cet espace de nom ''//@TARGETPUBLICNS@//''
* Pensez à la [[wpfr>http://fr.wikipedia.org/wiki/N%C3%A9tiquette|nétiquette]] ;-)
Contrainte:
* Seul un super-utilisateur peut ajouter une image
Vous pouvez évidement supprimer ce paragraphe (sauf le titre)...\\
A vos claviers! :-D

View File

@ -1,14 +0,0 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Hideaki SAWADA <chuno@live.jp>
*/
$lang['copyerror'] = 'コピー失敗';
$lang['copysuccess'] = 'コピー成功';
$lang['copynotneeded'] = 'コピー不要';
$lang['createdprivatens'] = '私用の名前空間を作成した。';
$lang['createdpublicpage'] = '公開ページを作成した。';
$lang['privatenamespace'] = '私用の名前空間';
$lang['publicpage'] = '公開ページ';

View File

@ -1,65 +0,0 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Hideaki SAWADA <chuno@live.jp>
*/
$lang['create_private_ns'] = 'ユーザーの私用の名前空間の作成(有効化する前に全オプションを再度確認して下さい)';
$lang['use_name_string'] = '私用の名前空間名としてユーザー名の代わりに氏名を使用する。';
$lang['use_start_page'] = 'Wiki のスタートページ名を私用の名前空間のスタートページに使用する(無効の場合、名前空間名を使用)。';
$lang['users_namespace'] = 'ユーザーの名前空間を作成する名前空間';
$lang['group_by_name'] = 'ユーザー名の一文字目による users グループの名前空間';
$lang['edit_before_create'] = '私用の名前空間作成時にスタートページの編集を許可する(同時に公開ページを作成しない場合のみ)。';
$lang['acl_all_private'] = '私用の名前空間に対する @ALL グループのアクセス権限';
$lang['acl_all_private_o_0'] = '無し(デフォルト)';
$lang['acl_all_private_o_1'] = '読取';
$lang['acl_all_private_o_2'] = '編集';
$lang['acl_all_private_o_4'] = '作成';
$lang['acl_all_private_o_8'] = 'アップロード';
$lang['acl_all_private_o_16'] = '削除';
$lang['acl_all_private_o_noacl'] = '自動的にアクセス権限を与えない';
$lang['acl_user_private'] = '私用の名前空間に対する @user グループのアクセス権限';
$lang['acl_user_private_o_0'] = '無し(デフォルト)';
$lang['acl_user_private_o_1'] = '読取';
$lang['acl_user_private_o_2'] = '編集';
$lang['acl_user_private_o_4'] = '作成';
$lang['acl_user_private_o_8'] = 'アップロード';
$lang['acl_user_private_o_16'] = '削除';
$lang['acl_user_private_o_noacl'] = '自動的にアクセス権限を与えない';
$lang['groups_private'] = '私用の名前空間を作成するユーザーグループのカンマ区切り一覧(上記の設定を全ユーザーに適用する場合、空のままにします)';
$lang['create_public_page'] = 'ユーザーの公開ページの作成';
$lang['public_pages_ns'] = '公開ページを作成する名前空間';
$lang['acl_all_public'] = '公開ページに対する @ALL グループのアクセス権限';
$lang['acl_all_public_o_0'] = '無し';
$lang['acl_all_public_o_1'] = '読取(デフォルト)';
$lang['acl_all_public_o_2'] = '編集';
$lang['acl_all_public_o_noacl'] = '自動的にアクセス権限を与えない';
$lang['acl_user_public'] = '公開ページに対する @user グループのアクセス権限';
$lang['acl_user_public_o_0'] = '無し';
$lang['acl_user_public_o_1'] = '読取(デフォルト)';
$lang['acl_user_public_o_2'] = '編集';
$lang['acl_user_public_o_noacl'] = '自動的にアクセス権限を与えない';
$lang['groups_public'] = '公開ページを作成するユーザーグループのカンマ区切り一覧(上記の設定を全ユーザーに適用する場合、空のままにします)';
$lang['templates_path'] = 'テンプレートが保存される [<code>savedir</code>] からの相対パスuserhomepage_private.txt userhomepage_public.txt
例: <code>./pages/user</code> または <code>../lib/plugins/userhomepage</code>';
$lang['templatepath'] = 'バージョン 3.0.4 から引き継いだテンプレートのパス。このファイルがある場合、私用の名前空間の新規スタートページテンプレートのデフォルト元として使用する(望まない場合は初期化する)。';
$lang['acl_all_templates'] = 'テンプレート対する @ALL グループのアクセス権限(<code>data/pages...</code>に置いた場合)';
$lang['acl_all_templates_o_0'] = '無し';
$lang['acl_all_templates_o_1'] = '読取(デフォルト)';
$lang['acl_all_templates_o_2'] = '編集';
$lang['acl_all_templates_o_noacl'] = '自動的にアクセス権限を与えない';
$lang['acl_user_templates'] = 'テンプレート対する @user グループのアクセス権限(<code>data/pages...</code>に置いた場合)';
$lang['acl_user_templates_o_0'] = '無し';
$lang['acl_user_templates_o_1'] = '読取(デフォルト)';
$lang['acl_user_templates_o_2'] = '編集';
$lang['acl_user_templates_o_noacl'] = '自動的にアクセス権限を与えない';
$lang['no_acl'] = '自動的にアクセス権限を与えませんが、これまでに手動で設定しらアクセス権限を削除する必要があります。
テンプレートにアクセス権限設定することを忘れないでください。';
$lang['redirection'] = 'リダイレクトを有効にする。(無効の場合でも、ページは作成します)';
$lang['action'] = '公開ページ(または私用の名前空間のスタートページ)作成直後のリダイレクト時の操作。';
$lang['action_o_edit'] = '編集(デフォルト)';
$lang['action_o_show'] = '表示';
$lang['userlink_replace'] = 'Userhomepage が作成したページに応じて、[<code>Logged in as</code>] インターウィキリンクの置換えを有効にします。(<code>showuseras</code> オプションがインターウィキリンクに設定されている場合のみ動作します)';
$lang['userlink_classes'] = '[<code>Logged in as</code>] インターウィキリンクに適用する CSS クラスのスペース区切り一覧(デフォルト: <code>interwiki iw_user wikilink1</code>';
$lang['userlink_fa'] = '画像の代わりに Fontawesome アイコンを使用しますか(テンプレートやプラグインには Fontawesome をインストールする必要がある)?';

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - 私用の名前空間 ======
この名前空間(//@TARGETPRIVATENS@://)と内容(ページ・画像・…)は**あなた専用として予約されました**(スーパーユーザー以外はアクセスできません)…
* この私用の名前空間内にページを作成するには__名前空間なしの__内部リンク構文を使用します
<code>[[example page 1]]
[[example 2|My example page 2]]</code>
* サブ名前空間を作成するには新規ページの絶対内部リンクを使用します:
<code>[[@TARGETPRIVATENS@:<sub-namespace_to_create>:exemple 3]]</code>
この文章は(見出し以外)自由に削除して下さい…\\
さぁ、何かを書きましょう! :-D

View File

@ -1,10 +0,0 @@
====== @NAME@ (@USER@) - 公開ページ ======
この公開ページ(//@TARGETPUBLICPAGE@.txt//)は、名前の通り**誰でも読めますがあなた(またはスーパーユーザー)しか編集できません**…
* 自己紹介・Wiki 内の自分の投稿へのリンク・話を書く・自分の他の作品発表が可能です。
* [[wpjp>ネチケット]]について考えてみよう ;-)
制限事項:
* 名前空間(//@TARGETPUBLICNS@//)内に他のページを作成できません。
* スーパーユーザーしか画像を追加できません。
この文章は(見出し以外)自由に削除して下さい…\\
さぁ、何かを書きましょう! :-D

View File

@ -1,14 +0,0 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Erial <erial2@gmail.com>
*/
$lang['copyerror'] = '복사 에러';
$lang['copysuccess'] = '복사 성공';
$lang['copynotneeded'] = '복사할 필요가 없습니다';
$lang['createdprivatens'] = '당신의 개인 이름공간이 만들어졌습니다';
$lang['createdpublicpage'] = '당신의 공개 문서가 만들어졌습니다';
$lang['privatenamespace'] = '개인 공간';
$lang['publicpage'] = '공개 문서';

View File

@ -1,63 +1,21 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Erial <erial2@gmail.com>
* Korean language file for the configuration manager
* @author: 이재영 <jakan2@gmail.com>
* FIXED by Simon Delage <simon.geekitude@gmail.com> on 2014-08-30
*/
$lang['create_private_ns'] = '사용자의 개인 이름공간 만들기 (활성화 하기 전에 모든 옵션을 재차 확인하십시오)';
$lang['use_name_string'] = '개인 이름공간에서 로그인명 대신 풀네임을 사용함.';
$lang['use_start_page'] = '각각의 개인 이름공간의 시작 문서를 위키의 시작 문서명을 따라 사용함 (미체크시 개인 이름공간 이름의 문서를 사용함)';
$lang['users_namespace'] = '사용자 이름공간 아래에 하부 이름공간이 생성되었습니다.';
$lang['group_by_name'] = '사용자 이름의 첫자로 그룹 사용자의 이름공간을 만드시겠습니까?';
$lang['edit_before_create'] = '계정 생성시 개인 이름공간의 시작문서 편집을 허용하시겠습니까 (공개 문서가 동시에 생성되지 않을 경우에만 작동합니다)';
$lang['acl_all_private'] = '개인 이름공간에대한 @ALL 그룹의 권한';
$lang['acl_all_private_o_0'] = '없음 (기본설정)';
$lang['acl_all_private_o_1'] = '읽기';
$lang['acl_all_private_o_2'] = '수정';
$lang['acl_all_private_o_4'] = '만들기';
$lang['acl_all_private_o_8'] = '업로드';
$lang['acl_all_private_o_16'] = '삭제';
$lang['acl_all_private_o_noacl'] = '자동 ACL 사용 안함';
$lang['acl_user_private'] = '개인 이름공간에대한 @user 그룹의 권한';
$lang['acl_user_private_o_0'] = '없음 (기본설정)';
$lang['acl_user_private_o_1'] = '읽기';
$lang['acl_user_private_o_2'] = '수정';
$lang['acl_user_private_o_4'] = '만들기';
$lang['acl_user_private_o_8'] = '업로드';
$lang['acl_user_private_o_16'] = '삭제';
$lang['acl_user_private_o_noacl'] = '자동 ACL 사용 안함';
$lang['groups_private'] = '개인 이름공간 생성에 참여할 수 있는 사용자 그룹의 목록을 콤마로 구분지어 입력해주십시오 (비워두면 상기설정은 모든 사용자에게 적용됩니다)';
$lang['create_public_page'] = '사용자의 공개 문서를 만들겠습니까?';
$lang['public_pages_ns'] = '공개 문서 아래의 이름공간이 만들어졌습니다.';
$lang['acl_all_public'] = '공개 문서에 대한 @ALL 그룹의 권한';
$lang['acl_all_public_o_0'] = '없음';
$lang['acl_all_public_o_1'] = '읽기 (기본설정)';
$lang['acl_all_public_o_2'] = '수정';
$lang['acl_all_public_o_noacl'] = '자동 ACL 사용 안함';
$lang['acl_user_public'] = '공개 문서에 대한 @user 그룹의 권한';
$lang['acl_user_public_o_0'] = '없음';
$lang['acl_user_public_o_1'] = '읽기 (기본설정)';
$lang['acl_user_public_o_2'] = '수정';
$lang['acl_user_public_o_noacl'] = '자동 ACL 사용 안함';
$lang['groups_public'] = '공개 문서 생성에 참여할 수 있는 사용자 그룹의 목록을 콤마로 구분지어 입력해주십시오 (비워두면 상기설정은 모든 사용자에게 적용됩니다)';
$lang['templates_path'] = '템플릿이 저장될 [<code>savedir</code>]와의 연관 위치 (userhomepage_private.txt 또는 userhomepage_public.txt). 예제: <code>./pages/user</code> 또는 <code>../lib/plugins/userhomepage</code>.';
$lang['templatepath'] = '버전 3.0.4 이후의 템플릿 위치. 만약 이 파일이 있으면 새로운 개인 이름공간의 시작문서를 만들 때 기본 양식 문서로 사용합니다. (사용하지 않으면 비워두세요)';
$lang['acl_all_templates'] = '템플릿에 대한 @ALL 그룹의 권한 (내용이 <code>data/pages...</code>에 저장될 경우)';
$lang['acl_all_templates_o_0'] = '없음';
$lang['acl_all_templates_o_1'] = '읽기 (기본설정)';
$lang['acl_all_templates_o_2'] = '수정';
$lang['acl_all_templates_o_noacl'] = '자동 ACL 사용 안함';
$lang['acl_user_templates'] = '템플릿에 대한 @user 그룹의 권한 (내용이 <code>data/pages...</code>에 저장될 경우)';
$lang['acl_user_templates_o_0'] = '없음';
$lang['acl_user_templates_o_1'] = '읽기 (기본설정)';
$lang['acl_user_templates_o_2'] = '수정';
$lang['acl_user_templates_o_noacl'] = '자동 ACL 사용 안함';
$lang['no_acl'] = '자동 ACL 설정을 전혀 사용하지 않습니다. 이미 생성된 것들은 수동으로 삭제해야 합니다. 템플릿 ACL 설정도 잊지 마세요.';
$lang['redirection'] = '자동 넘기기 활성화 (이 옵션을 비활성화 해도 문서 생성시에는 작동합니다)';
$lang['action'] = '공개 문서(또는 개인 이름공간의 시작문서)가 만들어진 후 사용자가 처음 접속할 때 진행할 처리 ';
$lang['action_o_edit'] = '수정 (기본설정)';
$lang['action_o_show'] = '보기';
$lang['userlink_replace'] = '위키 내부로 연결된 [<code>로그인한 사용자</code>]를 Userhomepage가 만든 문서로 대체하는걸 허용함 (<code>showuseras</code> 옵션이 위키 내부 연결로 설정된 경우에만 작동함)';
$lang['userlink_classes'] = '띄어쓰기로 구분된 [<code>로그인한 사용자</code>]의 위키 내부 연결에 사용할 CSS 클래스의 목록. (기본설정: <code>interwiki iw_user wikilink1</code>).';
$lang['userlink_fa'] = '이미지 대신에 Fontawesome 아이콘을 사용하시겠습니까? (Fontawesome 기능이 템플릿이나 플러그인으로 설치되어있어야합니다)';
$lang['use_name_string'] = 'Use names strings for the user\'s namespace (alt. login strings).';
$lang['use_start_page'] = 'Use the wiki\'s start page string instead of the user\'s namespace string for the home page.';
$lang['set_permissions'] = '홈 네임스페이스에 대한 모든 권한을 갖도론 acl을 설정하세요.';
$lang['set_permissions_others'] = 'If set permission enabled, what permission for other people?';
$lang['set_permissions_others_o_0'] = 'None';
$lang['set_permissions_others_o_1'] = 'Read';
$lang['set_permissions_others_o_2'] = 'Edit';
$lang['set_permissions_others_o_4'] = 'Create';
$lang['set_permissions_others_o_8'] = 'Upload';
$lang['set_permissions_others_o_16'] = 'Delete';
$lang['templatepath'] = '템플릿화일들이 존재하는 Doku 의 경로를 알려주세요.';
$lang['users_namespace'] = '사용자 네임스페이스가 있는 네임스페이스.';
$lang['group_by_name'] = 'Group home pages by the first character of user name?';
$lang['edit_before_create'] = 'Allow users to edit their home pages before create';

21
lang/ru/settings.php Normal file
View File

@ -0,0 +1,21 @@
<?php
/**
* Russian language file for the configuration manager
* @author: Mikhail I. Izmestev <izmmishao5@gmail.com>
* FIXED by Simon Delage <simon.geekitude@gmail.com> on 2014-08-30
*/
$lang['use_name_string'] = 'Использовать полное имя для неймспейса пользователя (иначе будет использоваться логин).';
$lang['use_start_page'] = 'Использовать имя стартовой страницы вместо имени пользователя для домашней страницы.';
$lang['set_permissions'] = 'Устанавливать пользователю полные права доступа к домашней странице.';
$lang['set_permissions_others'] = 'Какие права доступа устанавливать для остальных пользователей?';
$lang['set_permissions_others_o_0'] = 'Замечание';
$lang['set_permissions_others_o_1'] = 'Чтение';
$lang['set_permissions_others_o_2'] = 'Правка';
$lang['set_permissions_others_o_4'] = 'Создание';
$lang['set_permissions_others_o_8'] = 'Загрузка файлов';
$lang['set_permissions_others_o_16'] = 'Удаление';
$lang['templatepath'] = 'Относительный путь до файла шаблона.';
$lang['users_namespace'] = 'Неймспейс где будут создаваться неймспейсы пользователей.';
$lang['group_by_name'] = 'Группировать неймспейсы пользователей по первой букве имени?';
$lang['edit_before_create'] = 'Редактировать домашнюю страницу, но не создавать её.';

View File

@ -1,7 +1,7 @@
base userhomepage
author Simon Delage
email simon.geekitude@gmail.com
date 2016-12-01
name User Homepage
desc Automatically create user's private namespace and/or public page and redirects users to private namespace on login.
date 2009-05-28
name User Home Page
desc Auto redirects users to <create> their homepage.
url https://www.dokuwiki.org/plugin:userhomepage

View File

@ -1,9 +0,0 @@
/********************************************************************
Screen Styles for the Userhomepage Plugin (additional to all.css)
********************************************************************/
a.uhp_private,a.uhp_public { padding-left:19px; }
a.uhp_private { background:url(images/ns.png) no-repeat left; }
a.uhp_public { background:url(images/user.png) no-repeat left; }
a.uhp_fa i.fa-user-secret,
a.uhp_fa i.fa-user { padding: 0 5px 0 2px !important; }