mirror of
https://github.com/nuxsmin/sysPass.git
synced 2026-03-12 11:26:55 +01:00
* [MOD] Solves #393. The auth chain wasn't stopped on auth module success exit. Thanks to @MAndretti for the feedback.
* [ADD] Notifications can now be edited * [MOD] UI tweaks
This commit is contained in:
@@ -66,9 +66,13 @@ class Auth
|
||||
{
|
||||
$this->UserData = $UserData;
|
||||
|
||||
$this->registerAuth('authLdap');
|
||||
$this->registerAuth('authDatabase');
|
||||
$this->registerAuth('authBrowser');
|
||||
|
||||
if (Checks::ldapIsAvailable() && Checks::ldapIsEnabled()) {
|
||||
$this->registerAuth('authLdap');
|
||||
}
|
||||
|
||||
$this->registerAuth('authDatabase');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -115,12 +119,6 @@ class Auth
|
||||
*/
|
||||
public function authLdap()
|
||||
{
|
||||
if (!Checks::ldapIsAvailable()
|
||||
|| !Checks::ldapIsEnabled()
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$Ldap = Config::getConfig()->isLdapAds() ? new LdapMsAds() : new LdapStd();
|
||||
|
||||
$LdapAuthData = $Ldap->getLdapAuthData();
|
||||
@@ -137,6 +135,7 @@ class Auth
|
||||
}
|
||||
|
||||
$LdapAuthData->setAuthenticated(1);
|
||||
|
||||
return $LdapAuthData;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,6 +51,14 @@ abstract class AuthDataBase
|
||||
* @var string
|
||||
*/
|
||||
protected $server;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $required = false;
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $failed = false;
|
||||
|
||||
/**
|
||||
* @return string
|
||||
@@ -131,4 +139,36 @@ abstract class AuthDataBase
|
||||
{
|
||||
$this->statusCode = (int)$statusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isRequired()
|
||||
{
|
||||
return (bool)$this->required;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $required
|
||||
*/
|
||||
public function setRequired($required)
|
||||
{
|
||||
$this->required = (bool)$required;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isFailed()
|
||||
{
|
||||
return $this->failed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $failed
|
||||
*/
|
||||
public function setFailed($failed)
|
||||
{
|
||||
$this->failed = $failed;
|
||||
}
|
||||
}
|
||||
@@ -216,8 +216,6 @@ abstract class LdapBase implements LdapInterface, AuthInterface
|
||||
$this->LogMessage->addDetails('LDAP DN', $dn);
|
||||
$this->writeLog();
|
||||
|
||||
$this->getLdapAuthData()->setAuthenticated(1);
|
||||
|
||||
throw new SPException(SPException::SP_ERROR, __($this->LogMessage->getDescription()));
|
||||
}
|
||||
|
||||
|
||||
@@ -119,12 +119,17 @@ class Notices extends GridBase
|
||||
$GridActionCheck->setOnClickFunction('notice/check');
|
||||
$GridActionCheck->setFilterRowSource('notice_checked', 1);
|
||||
|
||||
if (!$isAdminApp) {
|
||||
$GridActionCheck->setFilterRowSource('notice_sticky', 1);
|
||||
}
|
||||
|
||||
$Grid->setDataActions($GridActionCheck);
|
||||
|
||||
$GridActionEdit = new DataGridAction();
|
||||
$GridActionEdit->setId(self::ACTION_NOT_USER_EDIT);
|
||||
$GridActionEdit->setName(__('Editar Notificación'));
|
||||
$GridActionEdit->setTitle(__('Editar Notificación'));
|
||||
$GridActionEdit->setIcon($this->icons->getIconEdit());
|
||||
$GridActionEdit->setOnClickFunction('notice/show');
|
||||
|
||||
$Grid->setDataActions($GridActionEdit);
|
||||
|
||||
$GridActionDel = new DataGridAction();
|
||||
$GridActionDel->setId(self::ACTION_NOT_USER_DELETE);
|
||||
$GridActionDel->setType(DataGridActionType::DELETE_ITEM);
|
||||
@@ -134,6 +139,8 @@ class Notices extends GridBase
|
||||
$GridActionDel->setOnClickFunction('appMgmt/delete');
|
||||
|
||||
if (!$isAdminApp) {
|
||||
$GridActionCheck->setFilterRowSource('notice_sticky', 1);
|
||||
$GridActionEdit->setFilterRowSource('notice_sticky', 1);
|
||||
$GridActionDel->setFilterRowSource('notice_sticky', 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -175,6 +175,7 @@ class ItemActionController implements ItemControllerInterface
|
||||
case ActionsInterface::ACTION_NOT_USER_CHECK:
|
||||
case ActionsInterface::ACTION_NOT_USER_VIEW:
|
||||
case ActionsInterface::ACTION_NOT_USER_NEW:
|
||||
case ActionsInterface::ACTION_NOT_USER_EDIT:
|
||||
case ActionsInterface::ACTION_NOT_USER_DELETE:
|
||||
$this->noticeAction();
|
||||
break;
|
||||
@@ -247,6 +248,8 @@ class ItemActionController implements ItemControllerInterface
|
||||
case ActionsInterface::ACTION_USR_USERS_DELETE:
|
||||
if (is_array($this->itemId)) {
|
||||
$UsersData = User::getItem()->deleteBatch($this->itemId);
|
||||
|
||||
$this->LogMessage->addDescription(__('Usuarios eliminados', false));
|
||||
} else {
|
||||
$UsersData = [User::getItem()->getById($this->itemId)];
|
||||
|
||||
@@ -1032,6 +1035,14 @@ class ItemActionController implements ItemControllerInterface
|
||||
|
||||
$this->JsonResponse->setDescription(__('Notificación creada'));
|
||||
break;
|
||||
case ActionsInterface::ACTION_NOT_USER_EDIT:
|
||||
$Form = new NoticeForm($this->itemId);
|
||||
$Form->validate($this->actionId);
|
||||
|
||||
Notice::getItem($Form->getItemData())->update();
|
||||
|
||||
$this->JsonResponse->setDescription(__('Notificación actualizada'));
|
||||
break;
|
||||
case ActionsInterface::ACTION_NOT_USER_DELETE:
|
||||
if (is_array($this->itemId)) {
|
||||
Notice::getItem()->deleteBatch($this->itemId);
|
||||
|
||||
@@ -124,7 +124,9 @@ class LoginController
|
||||
|
||||
/** @var AuthResult $AuthResult */
|
||||
foreach ($result as $AuthResult) {
|
||||
$this->{$AuthResult->getAuth()}($AuthResult->getData());
|
||||
if ($this->{$AuthResult->getAuth()}($AuthResult->getData()) === true) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new AuthException(SPException::SP_INFO, __('Login incorrecto', false), '', self::STATUS_INVALID_LOGIN);
|
||||
@@ -412,7 +414,6 @@ class LoginController
|
||||
* Comprobar si el cliente ha enviado las variables de autentificación
|
||||
*
|
||||
* @param BrowserAuthData $AuthData
|
||||
* @return bool
|
||||
* @throws \SP\Core\Exceptions\SPException
|
||||
* @throws AuthException
|
||||
*/
|
||||
@@ -429,7 +430,5 @@ class LoginController
|
||||
} elseif ($AuthData->getAuthenticated() === 1) {
|
||||
$this->LogMessage->addDetails(__('Tipo', false), __FUNCTION__);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -33,7 +33,6 @@ use SP\Core\Template;
|
||||
use SP\DataModel\NoticeData;
|
||||
use SP\Mgmt\Notices\Notice;
|
||||
use SP\Mgmt\Users\User;
|
||||
use SP\Mgmt\Users\UserUtil;
|
||||
use SP\Util\Checks;
|
||||
use SP\Util\Json;
|
||||
use SP\Util\Util;
|
||||
@@ -107,6 +106,10 @@ class NoticeShowController extends ControllerBase implements ActionsInterface, I
|
||||
$this->view->assign('header', __('Nueva Notificación'));
|
||||
$this->getNotice();
|
||||
break;
|
||||
case self::ACTION_NOT_USER_EDIT:
|
||||
$this->view->assign('header', __('Editar Notificación'));
|
||||
$this->getNotice();
|
||||
break;
|
||||
default:
|
||||
$this->invalidAction();
|
||||
}
|
||||
|
||||
@@ -137,8 +137,9 @@ interface ActionsInterface
|
||||
const ACTION_NOT_USER = 761;
|
||||
const ACTION_NOT_USER_VIEW = 7610;
|
||||
const ACTION_NOT_USER_NEW = 7611;
|
||||
const ACTION_NOT_USER_CHECK = 7612;
|
||||
const ACTION_NOT_USER_EDIT = 7612;
|
||||
const ACTION_NOT_USER_DELETE = 7613;
|
||||
const ACTION_NOT_USER_CHECK = 7614;
|
||||
const ACTION_NOT_USER_SEARCH = 7615;
|
||||
const ACTION_CFG = 80;
|
||||
const ACTION_CFG_GENERAL = 801;
|
||||
|
||||
@@ -95,6 +95,7 @@ class NoticeForm extends FormBase implements FormInterface
|
||||
$Description->addDescription(Request::analyze('notice_description'));
|
||||
|
||||
$this->NoticeData = new NoticeData();
|
||||
$this->NoticeData->setNoticeId($this->itemId);
|
||||
$this->NoticeData->setNoticeType(Request::analyze('notice_type'));
|
||||
$this->NoticeData->setNoticeComponent(Request::analyze('notice_component'));
|
||||
$this->NoticeData->setNoticeDescription($Description);
|
||||
|
||||
@@ -125,7 +125,6 @@ class Notice extends NoticeBase implements ItemInterface
|
||||
$Data->addParam($this->itemData->getNoticeType());
|
||||
$Data->addParam($this->itemData->getNoticeComponent());
|
||||
$Data->addParam($this->itemData->getNoticeDescription());
|
||||
$Data->addParam($this->itemData->isNoticeChecked());
|
||||
$Data->addParam($this->itemData->getNoticeUserId());
|
||||
$Data->addParam($this->itemData->isNoticeSticky());
|
||||
$Data->addParam($this->itemData->isNoticeOnlyAdmin());
|
||||
@@ -149,7 +148,8 @@ class Notice extends NoticeBase implements ItemInterface
|
||||
public function getById($id)
|
||||
{
|
||||
$query = /** @lang SQL */
|
||||
'SELECT notice_type,
|
||||
'SELECT notice_id,
|
||||
notice_type,
|
||||
notice_component,
|
||||
notice_description,
|
||||
FROM_UNIXTIME(notice_date) AS notice_date,
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1 +1 @@
|
||||
.dtp{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.2);z-index:2000;font-size:15px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp>.dtp-content{background:#fff;max-width:300px;box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);max-height:520px;position:relative;left:50%}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#607d8b;color:#eceff1;text-align:center;padding:.3em}.dtp div.dtp-date,.dtp div.dtp-time{background:#607d8b;text-align:center;color:#eceff1;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.5em;color:#fff}.dtp div.dtp-picker{padding:1em;text-align:center}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-weight:500;text-align:center}.dtp div.dtp-picker-month{padding-bottom:20px !important;text-transform:uppercase !important}.dtp .dtp-close{position:absolute;top:.5em;right:1em}.dtp .dtp-close>a{color:#fff}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:251px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:0}.dtp table.dtp-picker-days tr>td{font-weight:700;text-align:center;padding:.5em}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd !important;padding:.4em .5em .5em .6em}.dtp table.dtp-picker-days tr>td>a,.dtp .dtp-picker-time>a{color:#212121;text-decoration:none;padding:.4em;border-radius:5px !important}.dtp table.dtp-picker-days tr>td>a.selected{background:#607d8b;color:#eceff1}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:.4em .3em}.dtp .p10>a{color:#fff;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:.7em .5em;border-radius:50% !important;text-decoration:none;background:#eee;font-size:1em}.dtp .dtp-actual-meridien a.selected{background:#607d8b;color:#eceff1}.dtp .dtp-picker-time>.dtp-select-hour{cursor:pointer}.dtp .dtp-picker-time>.dtp-select-minute{cursor:pointer}.dtp .dtp-buttons{padding:0 1em 1em 1em;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}
|
||||
.dtp{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.2);z-index:2000;font-size:15px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dtp>.dtp-content{background:#fff;max-width:300px;box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);max-height:520px;position:relative;left:50%}.dtp>.dtp-content>.dtp-date-view>header.dtp-header{background:#607d8b;color:#eceff1;text-align:center;padding:.3em}.dtp div.dtp-date,.dtp div.dtp-time{background:#607d8b;text-align:center;color:#eceff1;padding:10px}.dtp div.dtp-date>div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:3em;line-height:.9}.dtp div.dtp-actual-maxtime{font-size:3em;line-height:.9}.dtp div.dtp-actual-year{font-size:1.5em;color:#fff}.dtp div.dtp-picker{padding:1em;text-align:center}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-weight:500;text-align:center}.dtp div.dtp-picker-month{padding-bottom:20px!important;text-transform:uppercase!important}.dtp .dtp-close{position:absolute;top:.5em;right:1em}.dtp .dtp-close>a{color:#fff}.dtp .dtp-close>a>i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:251px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr>td{border:0}.dtp table.dtp-picker-days tr>td{font-weight:700;text-align:center;padding:.5em}.dtp table.dtp-picker-days tr>td>span.dtp-select-day{color:#bdbdbd!important;padding:.4em .5em .5em .6em}.dtp table.dtp-picker-days tr>td>a,.dtp .dtp-picker-time>a{color:#212121;text-decoration:none;padding:.4em;border-radius:5px!important}.dtp table.dtp-picker-days tr>td>a.selected{background:#607d8b;color:#eceff1}.dtp table.dtp-picker-days tr>th{color:#757575;text-align:center;font-weight:700;padding:.4em .3em}.dtp .p10>a{color:#fff;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:.7em .5em;border-radius:50%!important;text-decoration:none;background:#eee;font-size:1em}.dtp .dtp-actual-meridien a.selected{background:#607d8b;color:#eceff1}.dtp .dtp-picker-time>.dtp-select-hour{cursor:pointer}.dtp .dtp-picker-time>.dtp-select-minute{cursor:pointer}.dtp .dtp-buttons{padding:0 1em 1em 1em;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center}
|
||||
File diff suppressed because one or more lines are too long
2
inc/themes/material-blue/css/styles.min.css
vendored
2
inc/themes/material-blue/css/styles.min.css
vendored
File diff suppressed because one or more lines are too long
2
inc/themes/material-blue/js/app-theme.min.js
vendored
2
inc/themes/material-blue/js/app-theme.min.js
vendored
@@ -1,5 +1,5 @@
|
||||
var $jscomp={scope:{},findInternal:function(a,g,e){a instanceof String&&(a=String(a));for(var h=a.length,k=0;k<h;k++){var m=a[k];if(g.call(e,m,k,a))return{i:k,v:m}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(a,g,e){if(e.get||e.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[g]=e.value)};
|
||||
$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,g,e,h){if(g){e=$jscomp.global;a=a.split(".");for(h=0;h<a.length-1;h++){var k=a[h];k in e||(e[k]={});e=e[k]}a=a[a.length-1];h=e[a];g=g(h);g!=h&&null!=g&&$jscomp.defineProperty(e,a,{configurable:!0,writable:!0,value:g})}};
|
||||
$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(a,g,e,h){if(g){e=$jscomp.global;a=a.split(".");for(h=0;h<a.length-1;h++){var k=a[h];k in e||(e[k]={});e=e[k]}a=a[a.length-1];h=e[a];g=g(h);g!=h&&null!=g&&$jscomp.defineProperty(e,a,{configurable:!0,writable:!0,value:g})}};
|
||||
$jscomp.polyfill("Array.prototype.find",function(a){return a?a:function(a,e){return $jscomp.findInternal(this,a,e).v}},"es6-impl","es3");
|
||||
sysPass.Theme=function(a){var g=a.log,e={elems:{$wrap:$("#wrap-loading"),$loading:$("#loading")},show:function(a){void 0!==a&&!0===a&&e.elems.$wrap.addClass("overlay-full");e.elems.$wrap.show();e.elems.$loading.addClass("is-active")},hide:function(){e.elems.$wrap.removeClass("overlay-full").hide();e.elems.$loading.removeClass("is-active")},upgradeFull:function(){e.elems.$wrap.addClass("overlay-full")}},h=function(b){for(var d=0,f="",c;d<a.passwordData.complexity.numlength;)c=Math.floor(100*Math.random())%
|
||||
94+33,!a.passwordData.complexity.symbols&&(33<=c&&47>=c||58<=c&&64>=c||91<=c&&96>=c||123<=c&&126>=c)||!a.passwordData.complexity.numbers&&48<=c&&57>=c||!a.passwordData.complexity.uppercase&&65<=c&&90>=c||(d++,f+=String.fromCharCode(c));$("#viewPass").attr("title",f);var e=zxcvbn(f);a.passwordData.passLength=f.length;b?(d=b.parent(),c=$("#"+b.attr("id")+"R"),a.outputResult(e,b),b=new MaterialTextfield,d.find("input:password").val(f),d.addClass(b.CssClasses_.IS_DIRTY).removeClass(b.CssClasses_.IS_INVALID),
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
<tr>
|
||||
<td class="descField"><?php echo __('Login'); ?></td>
|
||||
<td class="valField">
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="login" name="login" type="text" required
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
value="<?php echo $user->getUserLogin(); ?>"
|
||||
maxlength="80" <?php echo $user->isUserIsLdap() || $isReadonly; ?>>
|
||||
<label class="mdl-textfield__label"
|
||||
for="login"><?php echo __('Login de inicio de sesión'); ?></label>
|
||||
</div>
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="login" name="login" type="text" required
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
value="<?php echo $user->getUserLogin(); ?>"
|
||||
maxlength="80" <?php echo $user->isUserIsLdap() || $isReadonly; ?>>
|
||||
<label class="mdl-textfield__label"
|
||||
for="login"><?php echo __('Login de inicio de sesión'); ?></label>
|
||||
</div>
|
||||
<?php if ($user->isUserIsLdap()): ?>
|
||||
<i class="material-icons <?php echo $icons->getIconLdapUser()->getClass(); ?>"
|
||||
title="<?php echo $icons->getIconLdapUser()->getTitle(); ?>"><?php echo $icons->getIconLdapUser()->getIcon(); ?></i>
|
||||
@@ -80,13 +80,13 @@
|
||||
<tr>
|
||||
<td class="descField"><?php echo __('Email'); ?></td>
|
||||
<td class="valField">
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="email" name="email" type="email" required
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
value="<?php echo $user->getUserEmail(); ?>" maxlength="50" <?php echo $isReadonly; ?>>
|
||||
<label class="mdl-textfield__label"
|
||||
for="email"><?php echo __('Dirección de correo'); ?></label>
|
||||
</div
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<input id="email" name="email" type="email" required
|
||||
class="mdl-textfield__input mdl-color-text--indigo-400"
|
||||
value="<?php echo $user->getUserEmail(); ?>" maxlength="50" <?php echo $isReadonly; ?>>
|
||||
<label class="mdl-textfield__label"
|
||||
for="email"><?php echo __('Dirección de correo'); ?></label>
|
||||
</div
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
@@ -125,7 +125,7 @@
|
||||
<?php if (!$isView): ?>
|
||||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
|
||||
<textarea class="mdl-textfield__input" rows="3" id="notes" name="notes"
|
||||
maxlength="1000" <?php echo $isReadonly ;?>><?php echo $user->getUserNotes(); ?></textarea>
|
||||
maxlength="1000" <?php echo $isReadonly; ?>><?php echo $user->getUserNotes(); ?></textarea>
|
||||
<label class="mdl-textfield__label"
|
||||
for="notes"><?php echo __('Notas sobre la cuenta'); ?></label>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/** @var \SP\Core\UI\ThemeIconsBase $icons */
|
||||
?>
|
||||
<div id="box-popup">
|
||||
<h2 class="center"><?php echo $header; ?></h2>
|
||||
<h2 class="center"><?php echo $header; ?><i class="btn-popup-close material-icons">close</i></h2>
|
||||
|
||||
<form method="post" name="frmNotices" id="frmNotices" class="form-action"
|
||||
data-onsubmit="appMgmt/save"
|
||||
@@ -84,14 +84,14 @@
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php if ($SessionUserData->isUserIsAdminApp() || $isDemo): ?>
|
||||
<?php if (!$isView && ($SessionUserData->isUserIsAdminApp() || $isDemo)): ?>
|
||||
<tr>
|
||||
<td class="descField"><?php echo __('Usuario'); ?></td>
|
||||
<td class="valField">
|
||||
<div class="lowres-title"><?php echo __('Usuario'); ?></div>
|
||||
|
||||
<select id="notice_user" name="notice_user"
|
||||
class="select-box" <?php echo $isDisabled; ?>>
|
||||
class="select-box select-box-deselect" <?php echo $isDisabled; ?>>
|
||||
<option value=""><?php echo __('Seleccionar Usuario'); ?></option>
|
||||
<?php foreach ($users as $user): ?>
|
||||
<option
|
||||
@@ -110,12 +110,12 @@
|
||||
<span class="mdl-switch__label"><?php echo __('Global'); ?></span>
|
||||
</label>
|
||||
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="notice_onlyadmin"
|
||||
title="<?php echo __('Sólo para administradores de la aplicación'); ?>">
|
||||
<!-- <label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="notice_onlyadmin"
|
||||
title="<?php /*echo __('Sólo para administradores de la aplicación'); */?>">
|
||||
<input type="checkbox" id="notice_onlyadmin" class="mdl-switch__input mdl-color-text--indigo-400"
|
||||
name="notice_onlyadmin" <?php echo $notice->isNoticeOnlyAdmin() ? 'checked' : ' '; ?> <?php echo $isDisabled; ?>/>
|
||||
<span class="mdl-switch__label"><?php echo __('Solo Admins'); ?></span>
|
||||
</label>
|
||||
name="notice_onlyadmin" <?php /*echo $notice->isNoticeOnlyAdmin() ? 'checked' : ' '; */?> <?php /*echo $isDisabled; */?>/>
|
||||
<span class="mdl-switch__label"><?php /*echo __('Solo Admins'); */?></span>
|
||||
</label>-->
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
|
||||
2
js/app-actions.min.js
vendored
2
js/app-actions.min.js
vendored
@@ -1,5 +1,5 @@
|
||||
var $jscomp={scope:{},findInternal:function(c,d,k){c instanceof String&&(c=String(c));for(var f=c.length,g=0;g<f;g++){var l=c[g];if(d.call(k,l,g,c))return{i:g,v:l}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(c,d,k){if(k.get||k.set)throw new TypeError("ES3 does not support getters and setters.");c!=Array.prototype&&c!=Object.prototype&&(c[d]=k.value)};
|
||||
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,d,k,f){if(d){k=$jscomp.global;c=c.split(".");for(f=0;f<c.length-1;f++){var g=c[f];g in k||(k[g]={});k=k[g]}c=c[c.length-1];f=k[c];d=d(f);d!=f&&null!=d&&$jscomp.defineProperty(k,c,{configurable:!0,writable:!0,value:d})}};
|
||||
$jscomp.getGlobal=function(c){return"undefined"!=typeof window&&window===c?c:"undefined"!=typeof global&&null!=global?global:c};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(c,d,k,f){if(d){k=$jscomp.global;c=c.split(".");for(f=0;f<c.length-1;f++){var g=c[f];g in k||(k[g]={});k=k[g]}c=c[c.length-1];f=k[c];d=d(f);d!=f&&null!=d&&$jscomp.defineProperty(k,c,{configurable:!0,writable:!0,value:d})}};
|
||||
$jscomp.polyfill("Array.prototype.find",function(c){return c?c:function(c,k){return $jscomp.findInternal(this,c,k).v}},"es6-impl","es3");
|
||||
sysPass.Actions=function(c){var d=c.log,k=0,f={doAction:"/ajax/ajax_getContent.php",updateItems:"/ajax/ajax_getItems.php",user:{savePreferences:"/ajax/ajax_userPrefsSave.php",password:"/ajax/ajax_usrpass.php",passreset:"/ajax/ajax_passReset.php"},main:{login:"/ajax/ajax_doLogin.php",install:"/ajax/ajax_install.php",getUpdates:"/ajax/ajax_checkUpds.php"},checks:"/ajax/ajax_checkConnection.php",config:{save:"/ajax/ajax_configSave.php","export":"/ajax/ajax_configSave.php","import":"/ajax/ajax_configSave.php"},
|
||||
file:"/ajax/ajax_filesMgmt.php",link:"/ajax/ajax_itemSave.php",plugin:"/ajax/ajax_itemSave.php",account:{save:"/ajax/ajax_itemSave.php",saveFavorite:"/ajax/ajax_itemSave.php",request:"/ajax/ajax_itemSave.php",getFiles:"/ajax/ajax_accGetFiles.php",search:"/ajax/ajax_accSearch.php"},appMgmt:{show:"/ajax/ajax_itemShow.php",save:"/ajax/ajax_itemSave.php",search:"/ajax/ajax_itemSearch.php"},eventlog:"/ajax/ajax_eventlog.php",wiki:{show:"/ajax/ajax_wiki.php"},notice:{show:"/ajax/ajax_noticeShow.php",search:"/ajax/ajax_noticeSearch.php"}},
|
||||
|
||||
2
js/app-triggers.min.js
vendored
2
js/app-triggers.min.js
vendored
@@ -1,5 +1,5 @@
|
||||
var $jscomp={scope:{},findInternal:function(b,d,e){b instanceof String&&(b=String(b));for(var f=b.length,a=0;a<f;a++){var c=b[a];if(d.call(e,c,a,b))return{i:a,v:c}}return{i:-1,v:void 0}}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(b,d,e){if(e.get||e.set)throw new TypeError("ES3 does not support getters and setters.");b!=Array.prototype&&b!=Object.prototype&&(b[d]=e.value)};
|
||||
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,d,e,f){if(d){e=$jscomp.global;b=b.split(".");for(f=0;f<b.length-1;f++){var a=b[f];a in e||(e[a]={});e=e[a]}b=b[b.length-1];f=e[b];d=d(f);d!=f&&null!=d&&$jscomp.defineProperty(e,b,{configurable:!0,writable:!0,value:d})}};
|
||||
$jscomp.getGlobal=function(b){return"undefined"!=typeof window&&window===b?b:"undefined"!=typeof global&&null!=global?global:b};$jscomp.global=$jscomp.getGlobal(this);$jscomp.polyfill=function(b,d,e,f){if(d){e=$jscomp.global;b=b.split(".");for(f=0;f<b.length-1;f++){var a=b[f];a in e||(e[a]={});e=e[a]}b=b[b.length-1];f=e[b];d=d(f);d!=f&&null!=d&&$jscomp.defineProperty(e,b,{configurable:!0,writable:!0,value:d})}};
|
||||
$jscomp.polyfill("Array.prototype.find",function(b){return b?b:function(b,e){return $jscomp.findInternal(this,b,e).v}},"es6-impl","es3");
|
||||
sysPass.Triggers=function(b){var d=b.log,e=function(a){var c={valueField:"id",labelField:"name",searchField:["name"]};a.find(".select-box").each(function(a){var d=$(this);c.plugins=d.hasClass("select-box-deselect")?{clear_selection:{title:b.config().LANG[51]}}:{};if(d.data("onchange")){var g=d.data("onchange").split("/");c.onChange=function(a){if(0<a)if(2===g.length)sysPassApp.actions()[g[0]][g[1]](d);else sysPassApp.actions()[g[0]](d)}}d.selectize(c)});a.find("#allowed_exts").selectize({create:function(a){return{value:a.toUpperCase(),
|
||||
text:a.toUpperCase()}},createFilter:/^[a-z0-9]{1,4}$/i,plugins:["remove_button"]});a.find("#wikifilter").selectize({create:!0,createFilter:/^[a-z0-9:._-]+$/i,plugins:["remove_button"]})},f=function(){d.info("updateFormHash");var a=$(".form-action[data-hash]");0<a.length&&a.each(function(){var a=$(this);a.attr("data-hash",SparkMD5.hash(a.serialize(),!1))})};return{views:{main:function(){d.info("views:main");$(".btn-menu").click(function(){var a=$(this);"1"===a.attr("data-history-reset")&&b.appRequests().history.reset();
|
||||
|
||||
Reference in New Issue
Block a user