Closed #39
This commit is contained in:
parent
823888b0c1
commit
eaa8c4897d
8 changed files with 114 additions and 6 deletions
|
@ -17,7 +17,7 @@ postsPerPage=20
|
||||||
thumbWidth=150
|
thumbWidth=150
|
||||||
thumbHeight=150
|
thumbHeight=150
|
||||||
thumbStyle=outside
|
thumbStyle=outside
|
||||||
endlessScrolling=1
|
endlessScrollingDefault=1
|
||||||
maxSearchTokens=4
|
maxSearchTokens=4
|
||||||
|
|
||||||
[comments]
|
[comments]
|
||||||
|
|
|
@ -40,14 +40,20 @@
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
form.settings label.left,
|
||||||
|
form.delete label.left,
|
||||||
form.edit label.left {
|
form.edit label.left {
|
||||||
width: 9em;
|
width: 9em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
form.settings .alert,
|
||||||
|
form.delete .alert,
|
||||||
form.edit .alert {
|
form.edit .alert {
|
||||||
margin: 1em 0;
|
margin: 1em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
form.settings input,
|
||||||
|
form.delete input,
|
||||||
form.edit select,
|
form.edit select,
|
||||||
form.edit input {
|
form.edit input {
|
||||||
width: 16em;
|
width: 16em;
|
||||||
|
|
|
@ -12,7 +12,7 @@ class CommentController
|
||||||
$this->context->stylesheets []= 'comment-list.css';
|
$this->context->stylesheets []= 'comment-list.css';
|
||||||
$this->context->stylesheets []= 'comment-small.css';
|
$this->context->stylesheets []= 'comment-small.css';
|
||||||
$this->context->subTitle = 'comments';
|
$this->context->subTitle = 'comments';
|
||||||
if ($this->config->browsing->endlessScrolling)
|
if ($this->config->user->hasEnabledEndlessScrolling())
|
||||||
$this->context->scripts []= 'paginator-endless.js';
|
$this->context->scripts []= 'paginator-endless.js';
|
||||||
|
|
||||||
$page = intval($page);
|
$page = intval($page);
|
||||||
|
|
|
@ -60,7 +60,7 @@ class PostController
|
||||||
$this->context->stylesheets []= 'post-small.css';
|
$this->context->stylesheets []= 'post-small.css';
|
||||||
$this->context->stylesheets []= 'post-list.css';
|
$this->context->stylesheets []= 'post-list.css';
|
||||||
$this->context->stylesheets []= 'paginator.css';
|
$this->context->stylesheets []= 'paginator.css';
|
||||||
if ($this->config->browsing->endlessScrolling)
|
if ($this->context->user->hasEnabledEndlessScrolling())
|
||||||
$this->context->scripts []= 'paginator-endless.js';
|
$this->context->scripts []= 'paginator-endless.js';
|
||||||
|
|
||||||
//redirect requests in form of /posts/?query=... to canonical address
|
//redirect requests in form of /posts/?query=... to canonical address
|
||||||
|
|
|
@ -53,7 +53,7 @@ class UserController
|
||||||
{
|
{
|
||||||
$this->context->stylesheets []= 'user-list.css';
|
$this->context->stylesheets []= 'user-list.css';
|
||||||
$this->context->stylesheets []= 'paginator.css';
|
$this->context->stylesheets []= 'paginator.css';
|
||||||
if ($this->config->browsing->endlessScrolling)
|
if ($this->context->user->hasEnabledEndlessScrolling())
|
||||||
$this->context->scripts []= 'paginator-endless.js';
|
$this->context->scripts []= 'paginator-endless.js';
|
||||||
|
|
||||||
$page = intval($page);
|
$page = intval($page);
|
||||||
|
@ -217,6 +217,42 @@ class UserController
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @route /user/{name}/settings
|
||||||
|
* @validate name [^\/]+
|
||||||
|
*/
|
||||||
|
public function settingsAction($name)
|
||||||
|
{
|
||||||
|
$user = Model_User::locate($name);
|
||||||
|
PrivilegesHelper::confirmWithException(Privilege::ViewUser, PrivilegesHelper::getIdentitySubPrivilege($user));
|
||||||
|
|
||||||
|
$this->context->handleExceptions = true;
|
||||||
|
$this->context->transport->user = $user;
|
||||||
|
$this->context->transport->tab = 'settings';
|
||||||
|
$this->context->viewName = 'user-view';
|
||||||
|
$this->context->stylesheets []= 'user-view.css';
|
||||||
|
$this->context->subTitle = $name;
|
||||||
|
|
||||||
|
if (InputHelper::get('submit'))
|
||||||
|
{
|
||||||
|
$suppliedSafety = InputHelper::get('safety');
|
||||||
|
if (!is_array($suppliedSafety))
|
||||||
|
$suppliedSafety = [];
|
||||||
|
foreach (PostSafety::getAll() as $safety)
|
||||||
|
$user->enableSafety($safety, in_array($safety, $suppliedSafety));
|
||||||
|
|
||||||
|
$user->enableEndlessScrolling(InputHelper::get('endless-scrolling'));
|
||||||
|
|
||||||
|
R::store($user);
|
||||||
|
$this->context->transport->user = $user;
|
||||||
|
if ($this->context->user->id == $user->id)
|
||||||
|
$this->context->user = $user;
|
||||||
|
$this->context->transport->success = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @route /user/{name}/edit
|
* @route /user/{name}/edit
|
||||||
* @validate name [^\/]+
|
* @validate name [^\/]+
|
||||||
|
@ -324,7 +360,7 @@ class UserController
|
||||||
$this->context->stylesheets []= 'post-list.css';
|
$this->context->stylesheets []= 'post-list.css';
|
||||||
$this->context->stylesheets []= 'post-small.css';
|
$this->context->stylesheets []= 'post-small.css';
|
||||||
$this->context->stylesheets []= 'paginator.css';
|
$this->context->stylesheets []= 'paginator.css';
|
||||||
if ($this->config->browsing->endlessScrolling)
|
if ($this->context->user->hasEnabledEndlessScrolling())
|
||||||
$this->context->scripts []= 'paginator-endless.js';
|
$this->context->scripts []= 'paginator-endless.js';
|
||||||
$this->context->subTitle = $name;
|
$this->context->subTitle = $name;
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,8 @@ class Model_User extends RedBean_SimpleModel
|
||||||
$this->settings = $settings;
|
$this->settings = $settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function hasEnabledSafety($safety)
|
public function hasEnabledSafety($safety)
|
||||||
{
|
{
|
||||||
return $this->getSetting('safety-' . $safety) !== false;
|
return $this->getSetting('safety-' . $safety) !== false;
|
||||||
|
@ -64,6 +66,21 @@ class Model_User extends RedBean_SimpleModel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function hasEnabledEndlessScrolling()
|
||||||
|
{
|
||||||
|
$ret = $this->getSetting('endless-scrolling');
|
||||||
|
if ($ret === null)
|
||||||
|
$ret = \Chibi\Registry::getConfig()->browsing->endlessScrollingDefault;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function enableEndlessScrolling($enabled)
|
||||||
|
{
|
||||||
|
$this->setSetting('endless-scrolling', (bool) $enabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static function validateUserName($userName)
|
public static function validateUserName($userName)
|
||||||
{
|
{
|
||||||
$userName = trim($userName);
|
$userName = trim($userName);
|
||||||
|
|
37
src/Views/user-settings.phtml
Normal file
37
src/Views/user-settings.phtml
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
<form action="<?php echo \Chibi\UrlHelper::route('user', 'settings', ['name' => $this->context->transport->user->name]) ?>" method="post" class="settings aligned">
|
||||||
|
<div class="safety">
|
||||||
|
<label class="left" for="name">Safety:</label>
|
||||||
|
<div class="input-wrapper">
|
||||||
|
<?php foreach (PostSafety::getAll() as $safety): ?>
|
||||||
|
<?php if (PrivilegesHelper::confirm(Privilege::ListPosts, PostSafety::toString($safety))): ?>
|
||||||
|
<label><input type="checkbox" name="safety[]" value="<?php echo $safety ?>"<?php if ($this->context->transport->user->hasEnabledSafety($safety)) echo ' checked="checked"' ?>/>
|
||||||
|
<?php echo TextHelper::camelCaseToHumanCase(PostSafety::toString($safety), true) ?></label>
|
||||||
|
<?php endif ?>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="endless-scrolling">
|
||||||
|
<label class="left" for="name">Endless scrolling:</label>
|
||||||
|
<div class="input-wrapper">
|
||||||
|
<label>
|
||||||
|
<input type="checkbox" name="endless-scrolling" <?php if ($this->context->transport->user->hasEnabledEndlessScrolling()) echo ' checked="checked"' ?>/>
|
||||||
|
Enabled
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" name="submit" value="1"/>
|
||||||
|
|
||||||
|
<?php if ($this->context->transport->success === true): ?>
|
||||||
|
<p class="alert alert-success">Browsing settings updated!</p>
|
||||||
|
<?php elseif (isset($this->context->transport->errorMessage)): ?>
|
||||||
|
<p class="alert alert-error">Error: <?php echo $this->context->transport->errorMessage ?></p>
|
||||||
|
<?php endif ?>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label class="left"> </label>
|
||||||
|
<button type="submit">Update settings</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
|
@ -121,6 +121,16 @@
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<?php if ($this->context->transport->tab == 'settings'): ?>
|
||||||
|
<li class="selected settings">
|
||||||
|
<?php else: ?>
|
||||||
|
<li class="settings">
|
||||||
|
<?php endif ?>
|
||||||
|
<a href="<?php echo \Chibi\UrlHelper::route('user', 'settings', ['name' => $this->context->transport->user->name]) ?>">
|
||||||
|
Browsing settings
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<?php if ($canModifyAnything): ?>
|
<?php if ($canModifyAnything): ?>
|
||||||
<?php if ($this->context->transport->tab == 'edit'): ?>
|
<?php if ($this->context->transport->tab == 'edit'): ?>
|
||||||
<li class="selected edit">
|
<li class="selected edit">
|
||||||
|
@ -152,7 +162,9 @@
|
||||||
<?php $this->renderFile('post-list') ?>
|
<?php $this->renderFile('post-list') ?>
|
||||||
<?php endif ?>
|
<?php endif ?>
|
||||||
|
|
||||||
<?php if ($this->context->transport->tab == 'edit'): ?>
|
<?php if ($this->context->transport->tab == 'settings'): ?>
|
||||||
|
<?php $this->renderFile('user-settings') ?>
|
||||||
|
<?php elseif ($this->context->transport->tab == 'edit'): ?>
|
||||||
<?php $this->renderFile('user-edit') ?>
|
<?php $this->renderFile('user-edit') ?>
|
||||||
<?php elseif ($this->context->transport->tab == 'delete'): ?>
|
<?php elseif ($this->context->transport->tab == 'delete'): ?>
|
||||||
<?php $this->renderFile('user-delete') ?>
|
<?php $this->renderFile('user-delete') ?>
|
||||||
|
|
Loading…
Reference in a new issue