diff options
Diffstat (limited to 'modules-available/news')
-rw-r--r-- | modules-available/news/config.json | 3 | ||||
-rw-r--r-- | modules-available/news/page.inc.php | 61 | ||||
-rw-r--r-- | modules-available/news/permissions/permissions.json | 6 | ||||
-rw-r--r-- | modules-available/news/style.css | 4 | ||||
-rw-r--r-- | modules-available/news/templates/page-news.html | 65 |
5 files changed, 93 insertions, 46 deletions
diff --git a/modules-available/news/config.json b/modules-available/news/config.json index 706412d0..e076ea5c 100644 --- a/modules-available/news/config.json +++ b/modules-available/news/config.json @@ -1,3 +1,4 @@ { - "category":"main.content" + "category":"main.content", + "dependencies": [ "js_stupidtable" ] } diff --git a/modules-available/news/page.inc.php b/modules-available/news/page.inc.php index ee377dc4..5ad79b0e 100644 --- a/modules-available/news/page.inc.php +++ b/modules-available/news/page.inc.php @@ -31,12 +31,10 @@ class Page_News extends Page // load user, we will need it later User::load(); - - // only admins should be able to edit news - if (!User::hasPermission('superadmin')) { - Message::addError('main.no-permission'); - Util::redirect('?do=Main'); - } + if (!User::isLoggedIn()) { + Message::addError('main.no-permission'); + Util::redirect('?do=Main'); + } // check which action we need to do $action = Request::any('action', 'show'); @@ -66,26 +64,41 @@ class Page_News extends Page $pageType = Request::post('news-type'); if ($pageType == 'news') { - if (!$this->saveNews()) { - // re-set the fields we got - Request::post('news-title') ? $this->newsTitle = Request::post('news-title') : $this->newsTitle = false; - Request::post('news-content') ? $this->newsContent = Request::post('news-content') : $this->newsContent = false; - } else { - Message::addSuccess('news-save-success'); - $lastId = Database::lastInsertId(); - Util::redirect("?do=News&newsid=$lastId"); - } + if (User::hasPermission("news.save")) { + if (!$this->saveNews()) { + // re-set the fields we got + Request::post('news-title') ? $this->newsTitle = Request::post('news-title') : $this->newsTitle = false; + Request::post('news-content') ? $this->newsContent = Request::post('news-content') : $this->newsContent = false; + } else { + Message::addSuccess('news-save-success'); + $lastId = Database::lastInsertId(); + Util::redirect("?do=News&newsid=$lastId"); + } + } } elseif ($pageType == 'help') { - if ($this->saveHelp()) { - Message::addSuccess('help-save-success'); - $lastId = Database::lastInsertId(); - Util::redirect("?do=News&newsid=$lastId"); - } + if (User::hasPermission("help.save")) { + if ($this->saveHelp()) { + Message::addSuccess('help-save-success'); + $lastId = Database::lastInsertId(); + Util::redirect("?do=News&newsid=$lastId"); + } + } } } elseif ($action === 'delete') { // delete it - $this->delNews(Request::post('newsid')); - Util::redirect('?do=News&editHelp='.Request::any('editHelp')); + $pageType = Request::post('news-type'); + + if ($pageType == 'news') { + if(User::hasPermission("news.delete")) { + $this->delNews(Request::post('newsid')); + Util::redirect('?do=News&editHelp='.Request::any('editHelp')); + } + } elseif ($pageType == 'help') { + if(User::hasPermission("help.delete")) { + $this->delNews(Request::post('newsid')); + Util::redirect('?do=News&editHelp='.Request::any('editHelp')); + } + } } else { // unknown action, redirect user Message::addError('invalid-action', $action); @@ -134,6 +147,10 @@ class Page_News extends Page 'editHelp' => $this->editHelp, 'list' => $lines, 'listHelp' => $linesHelp, + 'allowedNewsSave' => User::hasPermission("news.save"), + 'allowedNewsDelete' => User::hasPermission("news.delete"), + 'allowedHelpSave' => User::hasPermission("help.save"), + 'allowedHelpDelete' => User::hasPermission("help.delete"), 'hasSummernote' => $this->hasSummernote, )); } /** diff --git a/modules-available/news/permissions/permissions.json b/modules-available/news/permissions/permissions.json new file mode 100644 index 00000000..90d07aef --- /dev/null +++ b/modules-available/news/permissions/permissions.json @@ -0,0 +1,6 @@ +{ + "news.save": "Save new news.", + "news.delete": "Delete old news.", + "help.save": "Save new help texts.", + "help.delete": "Delete old help texts" +}
\ No newline at end of file diff --git a/modules-available/news/style.css b/modules-available/news/style.css index c11567ec..fc4bccab 100644 --- a/modules-available/news/style.css +++ b/modules-available/news/style.css @@ -4,3 +4,7 @@ background: none; border: none; } + +.bottom-margin-50 { + margin-bottom: 50px; +} diff --git a/modules-available/news/templates/page-news.html b/modules-available/news/templates/page-news.html index 192635ea..6293b62d 100644 --- a/modules-available/news/templates/page-news.html +++ b/modules-available/news/templates/page-news.html @@ -1,5 +1,5 @@ - <h1>{{lang_vmChooser_title}}</h1> + <ul class="nav nav-tabs" role="tablist"> <li role="presentation" class="{{^editHelp}}active{{/editHelp}}"><a href="#news" role="tab" data-toggle="tab">{{lang_editNews}}</a></li> <li role="presentation" class="{{#editHelp}}active{{/editHelp}}" ><a href="#help" role="tab" data-toggle="tab">{{lang_editHelp}}</a></li> @@ -17,9 +17,16 @@ <label for="news-content-id">{{lang_content}}</label> <textarea name="news-content" id ="news-content-id" class="form-control summernote" rows="5" cols="30" placeholder="">{{latestContent}}</textarea> </div> - <p>{{lang_latestUpdate}}: {{latestDate}}</p> - <button class="btn btn-primary btn-sm sn-btn" name="news-type" value="news" type="submit">{{lang_save}}</button> - <input type="hidden" name="token" value="{{token}}"> + <div class="row"> + <div class="text-left col-md-6"> + <p>{{lang_latestUpdate}}: {{latestDate}}</p> + </div> + <div class="text-right col-md-6"> + <button {{^allowedNewsSave}}disabled{{/allowedNewsSave}} class="btn btn-primary sn-btn" name="news-type" value="news" type="submit"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button> + <input type="hidden" name="token" value="{{token}}"> + </div> + </div> + </form> <br/> <div class="panel panel-default"> @@ -29,24 +36,28 @@ <div class="panel-body"> <div class="table-responsive"> <form method="post" action="?do=News&action=delete"> - <table class="table table-stripped table-condensed"> + <table class="table table-stripped table-condensed stupidtable"> <thead> <tr> - <th>{{lang_date}}</th> - <th>{{lang_title}}</th> - <th>{{lang_content}}</th> - <th></th> + <th data-sort="int">{{lang_date}}</th> + <th data-sort="string">{{lang_title}}</th> + <th data-sort="string">{{lang_content}}</th> + <th class="text-center">{{lang_show}}</th> + <th class="text-center">{{lang_delete}}</th> </tr> </thead> <tbody> {{#list}} <tr {{#active}}class="active"{{/active}}> - <td class="text-left text-nowrap">{{date}}</td> + <td class="text-left text-nowrap" data-sort-value={{dateline}}>{{date}}</td> <td><table class="slx-ellipsis"><tr><td>{{title}}</td></tr></table></td> <td><table class="slx-ellipsis"><tr><td>{{content}}</td></tr></table></td> - <td class="text-nowrap"> - <a class="btn btn-primary btn-xs" href="?do=news&newsid={{newsid}}&action=show"><span class="glyphicon glyphicon-share-alt"></span> {{lang_show}}</a> - <button class="btn btn-danger btn-xs" type="submit" name="newsid" value="{{newsid}}"><span class="glyphicon glyphicon-remove"></span> {{lang_delete}}</button> + <td class="text-center"> + <a class="btn btn-primary btn-xs" href="?do=news&newsid={{newsid}}&action=show"><span class="glyphicon glyphicon-share-alt"></span></a> + </td> + <td class="text-center"> + <input type="hidden" name="news-type" value="news"> + <button {{^allowedNewsDelete}}disabled{{/allowedNewsDelete}} class="btn btn-danger btn-xs" type="submit" name="newsid" value="{{newsid}}"><span class="glyphicon glyphicon-trash"></span></button> </td> </tr> {{/list}} @@ -61,12 +72,16 @@ <div role="tabpanel" class="tab-pane {{#editHelp}}active{{/editHelp}}" id="help"> <form action="?do=News&action=save" method="post"> <div class="form-group"> + <br/> <label for="news-content-id">{{lang_content}}</label> <textarea name="help-content" id="help-content-id" class="form-control summernote" style="min-height:400px" placeholder="">{{latestHelp}}</textarea> </div> - <button class="btn btn-primary btn-sm sn-btn" name="news-type" value="help" type="submit">{{lang_save}}</button> - <input type="hidden" name="token" value="{{token}}"> + <div class="text-right"> + <button {{^allowedHelpSave}}disabled{{/allowedHelpSave}} class="btn btn-primary sn-btn" name="news-type" value="help" type="submit"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button> + <input type="hidden" name="token" value="{{token}}"> + </div> </form> + <br/> <div class="panel panel-default"> <div class="panel-heading"> {{lang_oldHelp}} @@ -74,22 +89,26 @@ <div class="panel-body"> <div class="table-responsive"> <form method="post" action="?do=News&action=delete&editHelp=true"> - <table class="table table-stripped table-condensed"> + <table class="table table-stripped table-condensed stupidtable"> <thead> <tr> - <th>{{lang_date}}</th> - <th>{{lang_content}}</th> - <th></th> + <th data-sort="int">{{lang_date}}</th> + <th data-sort="string">{{lang_content}}</th> + <th class="text-center">{{lang_show}}</th> + <th class="text-center">{{lang_delete}}</th> </tr> </thead> <tbody> {{#listHelp}} <tr {{#active}}class="active"{{/active}}> - <td class="text-left text-nowrap">{{date}}</td> + <td class="text-left text-nowrap" data-sort-value={{dateline}}>{{date}}</td> <td><table class="slx-ellipsis"><tr><td>{{content}}</td></tr></table></td> - <td class="text-nowrap"> - <a class="btn btn-primary btn-xs" href="?do=news&newsid={{newsid}}&action=show"><span class="glyphicon glyphicon-share-alt"></span> {{lang_show}}</a> - <button class="btn btn-danger btn-xs" type="submit" name="newsid" value="{{newsid}}"><span class="glyphicon glyphicon-remove"></span> {{lang_delete}}</button> + <td class="text-center"> + <a class="btn btn-primary btn-xs" href="?do=news&newsid={{newsid}}&action=show"><span class="glyphicon glyphicon-share-alt"></span></a> + </td> + <td class="text-center"> + <input type="hidden" name="news-type" value="help"> + <button {{^allowedHelpDelete}}disabled{{/allowedHelpDelete}} class="btn btn-danger btn-xs" type="submit" name="newsid" value="{{newsid}}"><span class="glyphicon glyphicon-trash"></span></button> </td> </tr> {{/listHelp}} |