本文整理汇总了PHP中Plugin::current方法的典型用法代码示例。如果您正苦于以下问题:PHP Plugin::current方法的具体用法?PHP Plugin::current怎么用?PHP Plugin::current使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Plugin
的用法示例。
在下文中一共展示了Plugin::current方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: index
/**
* Display the main page
*/
public function index()
{
$filters = $this->getFilters();
$this->addKeysToJavaScript("language.confirm-delete-lang", "language.confirm-delete-key");
$this->addJavaScript(Plugin::current()->getJsUrl('languages.js'));
return LeftSidebarTab::make(array('icon' => 'flag', 'title' => Lang::get('language.lang-page-name'), 'page' => array('content' => $this->editKeys()), 'sidebar' => array('widgets' => array(LanguageFilterWidget::getInstance($filters), NewLanguageKeyWidget::getInstance())), 'tabId' => 'language-manage-page'));
}
示例2: display
/**
* Display the widget
*
* @return string The generated HTML
*/
public function display()
{
// The number of updates
$updates = array();
$titles = array();
$api = new HawkApi();
$plugins = array_map(function ($plugin) {
return $plugin->getDefinition('version');
}, Plugin::getAll(false));
$themes = array_map(function ($theme) {
return $theme->getDefinition('version');
}, Theme::getAll());
try {
$updates = $api->getAllAvailableUpdates($plugins, $themes);
} catch (\Hawk\HawkApiException $e) {
$updates = array();
}
if (!empty($updates)) {
if (!empty($updates['hawk'])) {
\Hawk\Plugins\Main\MenuItem::getByName('admin.settings')->label .= View::make(Plugin::current()->getView('available-updates.tpl'), array('updates' => count($updates['hawk']), 'title' => Lang::get('admin.available-updates-title-core', array('number' => count($updates['hawk'])), count($updates['hawk']))));
}
if (!empty($updates['plugins'])) {
\Hawk\Plugins\Main\MenuItem::getByName('admin.plugins')->label .= View::make(Plugin::current()->getView('available-updates.tpl'), array('updates' => count($updates['plugins']), 'title' => Lang::get('admin.available-updates-title-plugins', array('number' => count($updates['plugins'])), count($updates['plugins']))));
}
if (!empty($updates['themes'])) {
\Hawk\Plugins\Main\MenuItem::getByName('admin.themes')->label .= View::make(Plugin::current()->getView('available-updates.tpl'), array('updates' => count($updates['themes']), 'title' => Lang::get('admin.available-updates-title-plugins', array('number' => count($updates['themes'])), count($updates['themes']))));
}
}
return '';
}
示例3: settings
/**
* Install the application
*/
public function settings()
{
$form = new Form(array('id' => 'install-settings-form', 'labelWidth' => '30em', 'fieldsets' => array('global' => array('legend' => Lang::get('install.settings-global-legend', null, null, $this->language), new TextInput(array('name' => 'title', 'required' => true, 'label' => Lang::get('install.settings-title-label', null, null, $this->language), 'default' => DEFAULT_HTML_TITLE)), new TextInput(array('name' => 'rooturl', 'required' => true, 'label' => Lang::get('install.settings-rooturl-label', null, null, $this->language), 'placeholder' => 'http://', 'default' => getenv('REQUEST_SCHEME') . '://' . getenv('SERVER_NAME'))), new SelectInput(array('name' => 'timezone', 'required' => true, 'options' => array_combine(\DateTimeZone::listIdentifiers(), \DateTimeZone::listIdentifiers()), 'default' => DEFAULT_TIMEZONE, 'label' => Lang::get('install.settings-timezone-label')))), 'database' => array('legend' => Lang::get('install.settings-database-legend', null, null, $this->language), new TextInput(array('name' => 'db[host]', 'required' => true, 'label' => Lang::get('install.settings-db-host-label', null, null, $this->language), 'default' => 'localhost')), new TextInput(array('name' => 'db[username]', 'required' => true, 'label' => Lang::get('install.settings-db-username-label', null, null, $this->language))), new PasswordInput(array('name' => 'db[password]', 'required' => true, 'label' => Lang::get('install.settings-db-password-label', null, null, $this->language), 'pattern' => '/^.*$/')), new TextInput(array('name' => 'db[dbname]', 'required' => true, 'pattern' => '/^\\w+$/', 'label' => Lang::get('install.settings-db-dbname-label', null, null, $this->language))), new TextInput(array('name' => 'db[prefix]', 'default' => 'Hawk', 'pattern' => '/^\\w+$/', 'label' => Lang::get('install.settings-db-prefix-label', null, null, $this->language)))), 'admin' => array('legend' => Lang::get('install.settings-admin-legend', null, null, $this->language), new TextInput(array('name' => 'admin[login]', 'required' => true, 'pattern' => '/^\\w+$/', 'label' => Lang::get('install.settings-admin-login-label', null, null, $this->language))), new EmailInput(array('name' => 'admin[email]', 'required' => true, 'label' => Lang::get('install.settings-admin-email-label', null, null, $this->language))), new PasswordInput(array('name' => 'admin[password]', 'required' => true, 'label' => Lang::get('install.settings-admin-password-label', null, null, $this->language))), new PasswordInput(array('name' => 'admin[passagain]', 'required' => true, 'compare' => 'admin[password]', 'label' => Lang::get('install.settings-admin-passagain-label', null, null, $this->language)))), '_submits' => array(new SubmitInput(array('name' => 'valid', 'value' => Lang::get('install.install-button', null, null, $this->language), 'icon' => 'cog')))), 'onsuccess' => 'location.href = data.rooturl;'));
if (!$form->submitted()) {
// Display the form
$body = View::make(Plugin::current()->getView('settings.tpl'), array('form' => $form));
return \Hawk\Plugins\Main\MainController::getInstance()->index($body);
} else {
// Make the installation
if ($form->check()) {
/**
* Generate Crypto constants
*/
$salt = Crypto::generateKey(24);
$key = Crypto::generateKey(32);
$iv = Crypto::generateKey(16);
$configMode = 'prod';
/**
* Create the database and it tables
*/
$tmpfile = tempnam(sys_get_temp_dir(), '');
DB::add('tmp', array(array('host' => $form->getData('db[host]'), 'username' => $form->getData('db[username]'), 'password' => $form->getData('db[password]'))));
try {
DB::get('tmp');
} catch (DBException $e) {
return $form->response(Form::STATUS_ERROR, Lang::get('install.install-connection-error'));
}
try {
$param = array('{{ $dbname }}' => $form->getData('db[dbname]'), '{{ $prefix }}' => $form->getData('db[prefix]'), '{{ $language }}' => $this->language, '{{ $timezone }}' => $form->getData('timezone'), '{{ $title }}' => Db::get('tmp')->quote($form->getData('title')), '{{ $email }}' => Db::get('tmp')->quote($form->getData('admin[email]')), '{{ $login }}' => Db::get('tmp')->quote($form->getData('admin[login]')), '{{ $password }}' => Db::get('tmp')->quote(Crypto::saltHash($form->getData('admin[password]'), $salt)), '{{ $ip }}' => Db::get('tmp')->quote(App::request()->clientIp()));
$sql = strtr(file_get_contents(Plugin::current()->getRootDir() . 'templates/install.sql.tpl'), $param);
// file_put_contents($tmpfile, $sql);
Db::get('tmp')->query($sql);
/**
* Create the config file
*/
$param = array('{{ $salt }}' => addcslashes($salt, "'"), '{{ $key }}' => addcslashes($key, "'"), '{{ $iv }}' => addcslashes($iv, "'"), '{{ $configMode }}' => $configMode, '{{ $rooturl }}' => $form->getData('rooturl'), '{{ $host }}' => $form->getData('db[host]'), '{{ $username }}' => $form->getData('db[username]'), '{{ $password }}' => $form->getData('db[password]'), '{{ $dbname }}' => $form->getData('db[dbname]'), '{{ $prefix }}' => $form->getData('db[prefix]'), '{{ $sessionEngine }}' => $form->getData('session'), '{{ $version }}' => $form->getData('version'));
$config = strtr(file_get_contents(Plugin::current()->getRootDir() . 'templates/config.php.tpl'), $param);
file_put_contents(INCLUDES_DIR . 'config.php', $config);
/**
* Create etc/dev.php
*/
App::fs()->copy(Plugin::current()->getRootDir() . 'templates/etc-dev.php', ETC_DIR . 'dev.php');
/**
* Create etc/prod.php
*/
App::fs()->copy(Plugin::current()->getRootDir() . 'templates/etc-prod.php', ETC_DIR . 'prod.php');
$form->addReturn('rooturl', $form->getData('rooturl'));
return $form->response(Form::STATUS_SUCCESS, Lang::get('install.install-success'));
} catch (\Exception $e) {
return $form->response(Form::STATUS_ERROR, Lang::get('install.install-error'));
}
}
}
}
示例4: index
/**
* Display the main page of the permission settings
*/
public function index()
{
$permissionGroups = Permission::getAllGroupByPlugin();
$example = isset($this->roleId) ? array('roleId' => $this->roleId) : array();
$data = RolePermission::getListByExample(new DBExample($example));
$values = array();
foreach ($data as $value) {
$values[$value->permissionId][$value->roleId] = $value->value;
}
$roles = isset($this->roleId) ? array(Role::getById($this->roleId)) : Role::getAll(null, array(), array(), true);
$param = array('id' => 'permissions-form', 'fieldsets' => array('form' => array(), '_submits' => array(new SubmitInput(array('name' => 'valid', 'value' => Lang::get('main.valid-button'))))));
foreach ($roles as $role) {
foreach ($permissionGroups as $group => $permissions) {
if (Plugin::get($group)) {
foreach ($permissions as $permission) {
if ($role->id == Role::ADMIN_ROLE_ID) {
$default = 1;
} elseif (isset($values[$permission->id][$role->id])) {
$default = $values[$permission->id][$role->id];
} else {
$default = 0;
}
$param['fieldsets']['form'][] = new CheckboxInput(array('name' => "permission-{$permission->id}-{$role->id}", 'disabled' => $role->id == Role::ADMIN_ROLE_ID || $role->id == Role::GUEST_ROLE_ID && !$permission->availableForGuests, 'default' => $default, 'class' => $permission->id == Permission::ALL_PRIVILEGES_ID ? 'select-all' : '', 'nl' => false));
}
}
}
}
$form = new Form($param);
if (!$form->submitted()) {
$page = View::make(Plugin::current()->getView("permissions.tpl"), array('permissions' => $permissionGroups, 'fields' => $form->inputs, 'roles' => $roles));
return NoSidebarTab::make(array('icon' => 'unlock-alt', 'title' => Lang::get('permissions.page-title'), 'page' => $form->wrap($page)));
} else {
try {
foreach ($form->inputs as $name => $field) {
if (preg_match('/^permission\\-(\\d+)\\-(\\d+)$/', $name, $match)) {
$permissionId = $match[1];
$roleId = $match[2];
$value = App::request()->getBody($name) ? 1 : 0;
if ($roleId != Role::ADMIN_ROLE_ID && !($roleId == Role::GUEST_ROLE_ID && !$permission->availableForGuests)) {
$permission = new RolePermission();
$permission->set(array('roleId' => $roleId, 'permissionId' => $permissionId, 'value' => $value));
$permission->save();
}
}
}
App::logger()->info('Permissions were succesfully updated');
return $form->response(Form::STATUS_SUCCESS, Lang::get("roles.permissions-update-success"));
} catch (Exception $e) {
App::logger()->error('An error occured while updating permissions');
return $form->response(Form::STATUS_ERROR, DEBUG_MODE ? $e->getMessage() : Lang::get("roles.permissions-update-error"));
}
}
}
示例5: listRoles
/**
* List all the roles
*/
public function listRoles()
{
if (App::request()->getParams('setdefault')) {
Option::set('roles.default-role', App::request()->getParams('setdefault'));
$defaultRole = App::request()->getParams('setdefault');
} else {
$defaultRole = Option::get('roles.default-role');
}
$param = array('id' => 'roles-list', 'action' => App::router()->getUri('list-roles'), 'model' => 'Role', 'navigation' => false, 'controls' => array(array('icon' => 'plus', 'label' => Lang::get('roles.add-role-btn'), 'href' => App::router()->getUri('edit-role', array('roleId' => -1)), 'target' => 'dialog', 'class' => 'btn-success'), array('icon' => 'unlock-alt', 'label' => Lang::get('roles.edit-permissions-btn'), 'href' => App::router()->getUri('permissions'), 'target' => 'newtab')), 'fields' => array('removable' => array('field' => 'removable', 'hidden' => true), 'color' => array('field' => 'color', 'hidden' => true), 'actions' => array('independant' => true, 'display' => function ($value, $field, $line) {
return Icon::make(array('icon' => 'pencil', 'class' => 'text-info', 'href' => App::router()->getUri('edit-role', array('roleId' => $line->id)), 'target' => 'dialog')) . Icon::make(array('icon' => 'unlock-alt', 'class' => 'text-success', 'href' => App::router()->getUri('role-permissions', array('roleId' => $line->id)), 'target' => 'newtab')) . ($line->isRemovable() ? Icon::make(array('icon' => 'close', 'class' => 'text-danger delete-role', 'data-role' => $line->id)) : '');
}, 'search' => false, 'sort' => false), 'name' => array('independant' => true, 'label' => Lang::get('roles.list-name-label'), 'display' => function ($value, $field, $line) {
return "<span style='color:{$line->color}'>" . Lang::get("roles.role-{$line->id}-label") . "</span>";
}), 'default' => array('independant' => true, 'label' => Lang::get('roles.list-default-label'), 'display' => function ($value, $field, $line) use($defaultRole) {
if ($line->id != 0) {
$checkbox = new CheckboxInput(array('class' => 'set-default-role', 'value' => $defaultRole == $line->id, 'disabled' => $defaultRole == $line->id, 'attributes' => array('value' => $line->id)));
return $checkbox->display();
}
}, 'search' => false, 'sort' => false)));
$this->addKeysToJavaScript("roles.delete-role-confirmation");
return View::make(Plugin::current()->getView("roles-list.tpl"), array('list' => new ItemList($param)));
}
示例6: index
/**
* Customize the menu
*/
public function index()
{
$items = MenuItem::getAll();
$form = new Form(array('id' => 'set-menus-form', 'action' => App::router()->getUri('set-menu'), 'inputs' => array(new HiddenInput(array('name' => 'data', 'default' => json_encode($items, JSON_NUMERIC_CHECK), 'attributes' => array('e-value' => 'JSON.stringify(items.valueOf())'))), new SubmitInput(array('name' => 'valid', 'value' => Lang::get('main.valid-button')))), 'onsuccess' => 'app.refreshMenu()'));
if (!$form->submitted()) {
$this->addKeysToJavaScript($this->_plugin . '.plugins-advert-menu-changed');
return View::make(Plugin::current()->getView('sort-main-menu.tpl'), array('form' => $form));
} else {
try {
$items = MenuItem::getAll('id');
$data = json_decode($form->getData('data'), true);
foreach ($data as $line) {
$item = $items[$line['id']];
$item->set(array('active' => $line['active'], 'parentId' => $line['parentId'], 'order' => $line['order']));
$item->save();
}
return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.sort-menu-success'));
} catch (Exception $e) {
return $form->response(Form::STATUS_ERROR, DEBUG_MODE ? $e->getMessage() : Lang::get($this->_plugin . '.sort-menu-error'));
}
}
}
示例7: search
/**
* Search themes on the remote platform
*/
public function search()
{
$api = new HawkApi();
$search = App::request()->getParams('search');
// Search themes on the API
try {
$themes = $api->searchThemes($search);
} catch (\Hawk\HawkApiException $e) {
$themes = array();
}
// Remove the plugins already downloaded on the application
foreach ($themes as &$theme) {
$installed = Theme::get($theme['name']);
$theme['installed'] = $installed !== null;
if ($installed) {
$theme['currentVersion'] = $installed->getDefinition('version');
}
}
$list = new ItemList(array('id' => 'search-themes-list', 'data' => $themes, 'resultTpl' => Plugin::current()->getView('theme-search-list.tpl'), 'fields' => array()));
if ($list->isRefreshing()) {
return $list->display();
} else {
$this->addCss(Plugin::current()->getCssUrl('themes.less'));
$this->addJavaScript(Plugin::current()->getJsUrl('themes.js'));
return LeftSidebarTab::make(array('page' => array('content' => $list->display()), 'sidebar' => array('widgets' => array(new SearchThemeWidget())), 'icon' => 'picture-o', 'title' => Lang::get($this->_plugin . '.search-theme-result-title', array('search' => $search))));
}
}
示例8: settings
/**
* Display and treat application settings
*/
public function settings()
{
$languages = array_map(function ($language) {
return $language->label;
}, Language::getAll('tag'));
$roleObjects = Role::getListByExample(new DBExample(array('id' => array('$ne' => 0))), 'id');
$roles = array();
foreach ($roleObjects as $role) {
$roles[$role->id] = Lang::get("roles.role-{$role->id}-label");
}
$items = MenuItem::getAvailableItems();
$menuItems = array();
foreach ($items as $item) {
if ($item->action && !preg_match('/^(javascript\\:|#)/', $item->action) && (!$item->target || $item->target == 'newtab')) {
if ($item->label === 'user.username') {
$item->label = App::session()->getUser()->username;
}
$menuItems[$item->action] = $item->label;
} else {
foreach ($item->visibleItems as $subitem) {
if ($item->label === 'user.username') {
$item->label = App::session()->getUser()->username;
}
if (!preg_match('/^(javascript\\:|#)/', $subitem->action) && (!$subitem->target || $subitem->target == 'newtab')) {
$menuItems[$subitem->action] = $item->label . " > " . $subitem->label;
}
}
}
}
$api = new HawkApi();
try {
$updates = $api->getCoreAvailableUpdates();
} catch (\Hawk\HawkApiException $e) {
$updates = array();
}
$param = array('id' => 'settings-form', 'upload' => true, 'fieldsets' => array('main' => array(new TextInput(array('name' => 'main_sitename', 'required' => true, 'default' => Option::get('main.sitename'), 'label' => Lang::get('admin.settings-sitename-label'))), new SelectInput(array('name' => 'main_language', 'required' => true, 'options' => $languages, 'default' => Option::get('main.language'), 'label' => Lang::get('admin.settings-language-label'))), new SelectInput(array('name' => 'main_timezone', 'required' => true, 'options' => array_combine(\DateTimeZone::listIdentifiers(), \DateTimeZone::listIdentifiers()), 'default' => Option::get('main.timezone'), 'label' => Lang::get('admin.settings-timezone-label'))), new SelectInput(array('name' => 'main_currency', 'required' => true, 'options' => array('EUR' => 'Euro (€)', 'USD' => 'US Dollar ($)'), 'default' => Option::get('main.currency'), 'label' => Lang::get('admin.settings-currency-label'))), new FileInput(array('name' => 'logo', 'label' => Lang::get('admin.settings-logo-label'), 'after' => Option::get('main.logo') ? '<img src="' . Plugin::get('main')->getUserfilesUrl(Option::get('main.logo')) . '" class="settings-logo-preview" />' : '', 'maxSize' => 200000, 'extensions' => array('gif', 'png', 'jpg', 'jpeg'))), new FileInput(array('name' => 'favicon', 'label' => Lang::get('admin.settings-favicon-label'), 'after' => Option::get('main.favicon') ? '<img src="' . Plugin::get('main')->getUserfilesUrl(Option::get('main.favicon')) . '" class="settings-favicon-preview" />' : '', 'maxSize' => 20000, 'extensions' => array('gif', 'png', 'jpg', 'jpeg', 'ico')))), 'referencing' => call_user_func(function () use($languages) {
$inputs = array();
foreach ($languages as $tag => $language) {
$inputs[] = new TextInput(array('name' => 'main_page-title-' . $tag, 'default' => Option::get('main.page-title-' . $tag)));
$inputs[] = new TextareaInput(array('name' => 'main_page-description-' . $tag, 'default' => Option::get('main.page-description-' . $tag)));
$inputs[] = new TextInput(array('name' => 'main_page-keywords-' . $tag, 'default' => Option::get('main.page-keywords-' . $tag)));
}
return $inputs;
}), 'home' => array(new RadioInput(array('name' => 'main_home-page-type', 'options' => array('default' => Lang::get('admin.settings-home-page-type-default'), 'custom' => Lang::get('admin.settings-home-page-type-custom'), 'page' => Lang::get('admin.settings-home-page-type-page')), 'default' => Option::get('main.home-page-type') ? Option::get('main.home-page-type') : 'default', 'label' => Lang::get('admin.settings-home-page-type-label'), 'layout' => 'vertical', 'attributes' => array('e-value' => 'homePage.type'))), new WysiwygInput(array('name' => 'main_home-page-html', 'id' => 'home-page-html', 'label' => Lang::get('admin.settings-home-page-html-label'), 'default' => Option::get('main.home-page-html'))), new SelectInput(array('name' => 'main_home-page-item', 'id' => 'home-page-item', 'label' => Lang::get('admin.settings-home-page-item-label'), 'options' => $menuItems, 'value' => Option::get('main.home-page-item'))), new CheckboxInput(array('name' => 'main_open-last-tabs', 'label' => Lang::get('admin.settings-open-last-tabs'), 'default' => Option::get('main.open-last-tabs'), 'dataType' => 'int'))), 'users' => array(new RadioInput(array('name' => 'main_allow-guest', 'options' => array(0 => Lang::get('main.no-txt'), 1 => Lang::get('main.yes-txt')), 'default' => Option::get('main.allow-guest') ? Option::get('main.allow-guest') : 0, 'label' => Lang::get('admin.settings-allow-guest-label'))), new RadioInput(array('name' => 'main_open-register', 'options' => array(0 => Lang::get('admin.settings-open-register-off'), 1 => Lang::get('admin.settings-open-register-on')), 'layout' => 'vertical', 'label' => Lang::get('admin.settings-open-registers-label'), 'default' => Option::get('main.open-register') ? Option::get('main.open-register') : 0, 'attributes' => array('e-value' => 'register.open'))), new CheckboxInput(array('name' => 'main_confirm-register-email', 'label' => Lang::get('admin.settings-confirm-email-label'), 'default' => Option::get('main.confirm-register-email'), 'dataType' => 'int', 'attributes' => array('e-value' => 'register.checkEmail'))), new WysiwygInput(array('name' => 'main_confirm-email-content', 'id' => 'settings-confirm-email-content-input', 'default' => Option::get('main.confirm-email-content'), 'label' => Lang::get('admin.settings-confirm-email-content-label'), 'labelWidth' => 'auto')), new CheckboxInput(array('name' => 'main_confirm-register-terms', 'label' => Lang::get('admin.settings-confirm-terms-label'), 'default' => Option::get('main.confirm-register-terms'), 'dataType' => 'int', 'labelWidth' => 'auto', 'attributes' => array('e-value' => 'register.checkTerms'))), new WysiwygInput(array('name' => 'main_terms', 'id' => 'settings-terms-input', 'label' => Lang::get('admin.settings-terms-label'), 'labelWidth' => 'auto', 'default' => Option::get('main.terms'))), new SelectInput(array('name' => 'roles_default-role', 'label' => Lang::get('admin.settings-default-role-label'), 'options' => $roles, 'default' => Option::get('roles.default-role')))), 'email' => array(new EmailInput(array('name' => 'main_mailer-from', 'default' => Option::get('main.mailer-from') ? Option::get('main.mailer-from') : App::session()->getUser()->email, 'label' => Lang::get('admin.settings-mailer-from-label'))), new TextInput(array('name' => 'main_mailer-from-name', 'default' => Option::get('main.mailer-from-name') ? Option::get('main.mailer-from-name') : App::session()->getUser()->getDisplayName(), 'label' => Lang::get('admin.settings-mailer-from-name-label'))), new SelectInput(array('name' => 'main_mailer-type', 'default' => Option::get('main.mailer-type'), 'options' => array('mail' => Lang::get('admin.settings-mailer-type-mail-value'), 'smtp' => Lang::get('admin.settings-mailer-type-smtp-value'), 'pop3' => Lang::get('admin.settings-mailer-type-pop3-value')), 'label' => Lang::get('admin.settings-mailer-type-label'), 'attributes' => array('e-value' => 'mail.type'))), new TextInput(array('name' => 'main_mailer-host', 'default' => Option::get('main.mailer-host'), 'label' => Lang::get('admin.settings-mailer-host-label'))), new IntegerInput(array('name' => 'main_mailer-port', 'default' => Option::get('main.mailer-port'), 'label' => Lang::get('admin.settings-mailer-port-label'), 'size' => 4)), new TextInput(array('name' => 'main_mailer-username', 'default' => Option::get('main.mailer-username'), 'label' => Lang::get('admin.settings-mailer-username-label'))), new PasswordInput(array('name' => 'main_mailer-password', 'encrypt' => 'Crypto::aes256Encode', 'decrypt' => 'Crypto::aes256Decode', 'default' => Option::get('main.mailer-password'), 'label' => Lang::get('admin.settings-mailer-password-label'))), new SelectInput(array('name' => 'main_smtp-secured', 'options' => array('' => Lang::get('main.no-txt'), 'ssl' => 'SSL', 'tsl' => 'TSL'), 'label' => Lang::get('admin.settings-smtp-secured-label')))), '_submits' => array(empty($updates) ? new HtmlInput(array('value' => '<span class="btn btn-success">' . Lang::get('admin.hawk-version-up-to-date', array('version' => HAWK_VERSION)) . '</span>')) : new ButtonInput(array('name' => 'update-hawk', 'value' => Lang::get('admin.update-page-update-hawk-btn', array('version' => end($updates)['version'])), 'icon' => 'refresh', 'id' => 'update-hawk-btn', 'attributes' => array('e-click' => 'function(){ updateHawk("' . end($updates)['version'] . '"); }'), 'class' => 'btn-warning')), new SubmitInput(array('name' => 'save', 'value' => Lang::get('main.valid-button'), 'class' => 'pull-right')))));
$form = new Form($param);
if (!$form->submitted()) {
// Display the form
$this->addCss(Plugin::current()->getCssUrl('settings.less'));
$page = View::make(Plugin::current()->getView('settings.tpl'), array('form' => $form, 'languages' => $languages));
$this->addKeysToJavaScript('admin.update-page-confirm-update-hawk');
$this->addJavaScript(Plugin::current()->getJsUrl('settings.js'));
return NoSidebarTab::make(array('icon' => 'cogs', 'title' => Lang::get('admin.settings-page-name'), 'description' => Lang::get('admin.settings-page-description'), 'page' => $page));
} else {
// treat the form
try {
if ($form->check()) {
// register scalar values
foreach ($form->inputs as $name => $field) {
if (!$field instanceof \Hawk\FileInput && !$field instanceof \Hawk\ButtonInput && !$field instanceof \Hawk\HtmlInput) {
$value = $field->dbvalue();
if ($value === null) {
$value = '0';
}
$optionName = str_replace('_', '.', $name);
App::logger()->error("Option name =" . $optionName . 'X');
App::logger()->error("basename=" . $value . 'X');
Option::set($optionName, $value);
} elseif ($field instanceof \Hawk\FileInput) {
$upload = Upload::getInstance($name);
if ($upload) {
try {
$file = $upload->getFile();
$dir = Plugin::get('main')->getPublicUserfilesDir();
if (!is_dir($dir)) {
mkdir($dir, 0755);
}
if ($name == 'favicon') {
$basename = uniqid() . '.ico';
$generator = new \PHPICO($file->tmpFile, array(array(16, 16), array(32, 32), array(48, 48), array(64, 64)));
$generator->save_ico($dir . $basename);
} else {
$basename = uniqid() . '.' . $file->extension;
$upload->move($file, $dir, $basename);
}
// remove the old image
@unlink($dir . Option::get("main.{$name}"));
App::logger()->error("Option name = " . $name);
App::logger()->error("main.{$name}");
App::logger()->error("basename=" . $basename);
Option::set("main.{$name}", $basename);
} catch (ImageException $e) {
$form->error($name, Lang::get('form.image-format'));
throw $e;
}
}
}
}
//.........这里部分代码省略.........
示例9: edit
/**
* Edit a profile question
*/
public function edit()
{
$q = ProfileQuestion::getByName($this->name);
$roles = Role::getAll();
// Get roles associate to this ProfileQuestion in json parameters
if ($q) {
$attributesRoles = $q->getRoles();
} else {
$attributesRoles = array();
}
$allowedTypes = ProfileQuestion::$allowedTypes;
$param = array('id' => 'profile-question-form', 'model' => 'ProfileQuestion', 'reference' => array('name' => $this->name), 'labelWidth' => '200px', 'fieldsets' => array('general' => array('legend' => Lang::get($this->_plugin . '.profile-question-form-general-legend'), new TextInput(array('name' => 'name', 'unique' => true, 'maxlength' => 32, 'label' => Lang::get($this->_plugin . '.profile-question-form-name-label') . ' ' . Lang::get($this->_plugin . '.profile-question-form-name-description'), 'required' => true)), new SelectInput(array('name' => 'type', 'required' => true, 'options' => array_combine($allowedTypes, array_map(function ($type) {
return Lang::get($this->_plugin . '.profile-question-form-type-' . $type);
}, $allowedTypes)), 'label' => Lang::get($this->_plugin . '.profile-question-form-type-label'), 'attributes' => array('e-value' => 'type'))), new CheckboxInput(array('name' => 'displayInRegister', 'label' => Lang::get($this->_plugin . '.profile-question-form-displayInRegister-label'))), new CheckboxInput(array('name' => 'displayInProfile', 'label' => Lang::get($this->_plugin . '.profile-question-form-displayInProfile-label'))), new HiddenInput(array('name' => 'editable', 'value' => 1))), 'parameters' => array('legend' => Lang::get($this->_plugin . '.profile-question-form-parameters-legend'), new ObjectInput(array('name' => 'parameters', 'id' => 'question-form-parameters', 'hidden' => true, 'attributes' => array('e-value' => 'parameters'))), new CheckboxInput(array('name' => 'required', 'independant' => true, 'label' => Lang::get($this->_plugin . '.profile-question-form-required-label'), 'attributes' => array('e-value' => "required"))), new CheckboxInput(array('name' => 'readonly', 'independant' => true, 'label' => Lang::get($this->_plugin . '.profile-question-form-readonly-label'), 'attributes' => array('e-value' => "readonly"))), new DatetimeInput(array('name' => 'minDate', 'independant' => true, 'label' => Lang::get($this->_plugin . '.profile-question-form-minDate-label'), 'attributes' => array('e-value' => "minDate"))), new DatetimeInput(array('name' => 'maxDate', 'independant' => true, 'label' => Lang::get($this->_plugin . '.profile-question-form-maxDate-label'), 'attributes' => array('e-value' => "maxDate"))), new HtmlInput(array('name' => 'parameters-description', 'value' => '<p class="alert alert-info">' . Icon::make(array('icon' => 'exclamation-circle')) . Lang::get($this->_plugin . '.profile-question-form-translation-description') . '</p>')), new TextInput(array('name' => 'label', 'required' => true, 'independant' => true, 'label' => Lang::get($this->_plugin . '.profile-question-form-label-label'), 'default' => $this->name != '_new' ? Lang::get($this->_plugin . '.profile-question-' . $this->name . '-label') : '')), new TextareaInput(array('name' => 'options', 'independant' => true, 'required' => App::request()->getBody('type') == 'select' || App::request()->getBody('type') == 'radio', 'label' => Lang::get($this->_plugin . '.profile-question-form-options-label') . '<br />' . Lang::get($this->_plugin . '.profile-question-form-options-description'), 'labelClass' => 'required', 'attributes' => array('e-value' => "options"), 'cols' => 20, 'rows' => 10))), '_submits' => array(new SubmitInput(array('name' => 'valid', 'value' => Lang::get('main.valid-button'))), new DeleteInput(array('name' => 'delete', 'value' => Lang::get('main.delete-button'), 'notDisplayed' => $this->name == '_new')), new ButtonInput(array('name' => 'cancel', 'value' => Lang::get('main.cancel-button'), 'onclick' => 'app.dialog("close")')))), 'onsuccess' => 'app.dialog("close"); app.load(app.getUri("profile-questions"), {selector : "#admin-questions-tab"})');
$form = new Form($param);
if (!$form->submitted()) {
$this->addJavaScript($this->getPlugin()->getJsUrl('question-form.js'));
$content = View::make(Plugin::current()->getView("question-form.tpl"), array('form' => $form));
return View::make(Theme::getSelected()->getView("dialogbox.tpl"), array('title' => Lang::get($this->_plugin . ".users-questions-title"), 'icon' => 'file-word-o', 'page' => $content));
} else {
if ($form->submitted() == "delete") {
$this->delete();
return $form->response(Form::STATUS_SUCCESS);
} else {
if ($form->check()) {
$form->register(Form::NO_EXIT);
Language::current()->saveTranslations(array('admin' => array('profile-question-' . $form->getData("name") . '-label' => App::request()->getBody('label'))));
// Create the lang options
if ($form->inputs['options']->required) {
$keys = array('admin' => array());
foreach (explode(PHP_EOL, $form->getData("options")) as $i => $option) {
if (!empty($option)) {
$keys['admin']['profile-question-' . $form->getData("name") . '-option-' . $i] = trim($option);
}
}
Language::current()->saveTranslations($keys);
}
return $form->response(Form::STATUS_SUCCESS);
}
}
}
}
示例10: jsConf
/**
* Generate the conf.js file
*/
public function jsConf()
{
$canAccessApplication = App::session()->getUser()->canAccessApplication();
// Get all routes
$routes = array();
foreach (App::router()->getRoutes() as $name => $route) {
if ($route->isAccessible()) {
$routes[$name] = array('url' => $route->url, 'where' => $route->where, 'default' => $route->default, 'pattern' => $route->pattern, 'duplicable' => !empty($route->duplicable));
}
}
// Get all Lang labels
$keys = array('main' => Lang::keys('javascript'), 'form' => Lang::keys('form'));
$keys = json_encode($keys, JSON_HEX_APOS | JSON_HEX_QUOT);
// Get the pages to open
$pages = array();
if (App::session()->isLogged() && Option::get($this->_plugin . '.open-last-tabs') && App::request()->getCookies('open-tabs')) {
// Open the last tabs the users opened before logout
$pages = json_decode(App::request()->getCookies('open-tabs'), true);
$pages = array_values(array_filter($pages));
}
if (empty($pages)) {
$pages[] = App::router()->getUri('new-tab');
}
// Get the theme variables
$theme = Theme::getSelected();
$editableVariables = $theme->getEditableVariables();
$initVariables = array();
foreach ($editableVariables as $variable) {
$initVariables[$variable['name']] = $variable['default'];
}
// Get the url for the new tab
$newTabUrl = App::router()->getUri('new-tab');
if (Option::get('main.home-page-type') == 'page') {
$newTabUrl = App::router()->getUri(Option::get('main.home-page-item'));
}
$mainMenu = $this->getMainMenu();
App::response()->setContentType('javascript');
return View::make(Plugin::current()->getView('conf.js.tpl'), array('keys' => $keys, 'routes' => json_encode($routes, JSON_HEX_APOS | JSON_HEX_QUOT | JSON_PRETTY_PRINT), 'lastTabs' => json_encode($pages, JSON_HEX_APOS | JSON_HEX_QUOT | JSON_PRETTY_PRINT), 'accessible' => $canAccessApplication, 'less' => array('initVars' => json_encode($initVariables, JSON_HEX_APOS | JSON_HEX_QUOT | JSON_PRETTY_PRINT)), 'newTabUrl' => $newTabUrl, 'mainMenu' => json_encode($mainMenu, JSON_HEX_APOS | JSON_HEX_QUOT | JSON_PRETTY_PRINT)));
}
示例11: create
/**
* Create a new plugin structure
*/
public function create()
{
$form = new Form(array('id' => 'new-plugin-form', 'labelWidth' => '20em', 'fieldsets' => array('form' => array(new HtmlInput(array('name' => 'intro', 'value' => '<div class="alert alert-info">' . Lang::get($this->_plugin . '.new-plugin-intro') . '</div>')), new TextInput(array('name' => 'name', 'required' => true, 'pattern' => '/^[\\w\\-]+$/', 'label' => Lang::get($this->_plugin . '.new-plugin-name-label'))), new TextInput(array('name' => 'title', 'required' => true, 'label' => Lang::get($this->_plugin . '.new-plugin-title-label'))), new TextareaInput(array('name' => 'description', 'label' => Lang::get($this->_plugin . '.new-plugin-description-label'))), new TextInput(array('name' => 'version', 'required' => true, 'pattern' => '/^(\\d+\\.){2,3}\\d+$/', 'label' => Lang::get($this->_plugin . '.new-plugin-version-label'), 'default' => '0.0.1')), new TextInput(array('name' => 'author', 'label' => Lang::get($this->_plugin . '.new-plugin-author-label')))), 'submits' => array(new SubmitInput(array('name' => 'valid', 'value' => Lang::get('main.valid-button'))), new ButtonInput(array('name' => 'cancel', 'value' => Lang::get('main.cancel-button'), 'onclick' => 'app.dialog("close")')))), 'onsuccess' => 'app.dialog("close"); app.load(app.getUri("manage-plugins"));'));
if (!$form->submitted()) {
// Display the form
return View::make(Theme::getSelected()->getView('dialogbox.tpl'), array('title' => Lang::get($this->_plugin . '.new-plugin-title'), 'icon' => 'plug', 'page' => $form));
} else {
// Create the plugin
if ($form->check()) {
if (in_array($form->getData('name'), Plugin::$forbiddenNames)) {
$message = Lang::get($this->_plugin . '.new-plugin-forbidden-name', array('forbidden' => implode(', ', Plugin::$forbiddenNames)));
$form->error('name', $message);
return $form->response(Form::STATUS_CHECK_ERROR, $message);
}
$namespace = Plugin::getNamespaceByName($form->getData('name'));
// Check the plugin does not exists
foreach (Plugin::getAll(false) as $plugin) {
if ($namespace === $plugin->getNamespace()) {
// A plugin with the same name already exists
$form->error('name', Lang::get($this->_plugin . '.new-plugin-already-exists-error'));
return $form->response(Form::STATUS_CHECK_ERROR, Lang::get($this->_plugin . '.new-plugin-already-exists-error'));
}
}
// The plugin can be created
$dir = PLUGINS_DIR . $form->getData('name') . '/';
try {
// Create the directories structure
if (!mkdir($dir)) {
throw new \Exception('Impossible to create the directory ' . $dir);
}
foreach (array('controllers', 'models', 'lib', 'lang', 'views', 'static', 'static/less', 'static/js', 'static/img', 'widgets') as $subdir) {
if (!mkdir($dir . $subdir, 0755, true)) {
throw new \Exception('Impossible to create the directory ' . $dir . $subdir);
}
}
// Create the file manifest.json
$conf = array('title' => $form->getData('title'), 'description' => $form->getData('description'), 'version' => $form->getData('version'), 'author' => $form->getData('author'), 'dependencies' => array());
if (file_put_contents($dir . Plugin::MANIFEST_BASENAME, json_encode($conf, JSON_PRETTY_PRINT)) === false) {
throw new \Exception('Impossible to create the file ' . Plugin::MANIFEST_BASENAME);
}
$plugin = Plugin::get($form->getData('name'));
$namespace = $plugin->getNamespace();
// Create the file start.php
$start = str_replace(array('{{ $namespace }}', '{{ $name }}'), array($namespace, $plugin->getName()), file_get_contents(Plugin::current()->getRootDir() . 'templates/start.tpl'));
if (file_put_contents($dir . 'start.php', $start) === false) {
throw new \Exceptio('Impossible to create the file start.php');
}
// Create the file Installer.php
$installer = str_replace(array('{{ $namespace }}', '{{ $name }}'), array($namespace, $plugin->getName()), file_get_contents(Plugin::current()->getRootDir() . 'templates/installer.tpl'));
if (file_put_contents($dir . 'Installer.php', $installer) === false) {
throw new \Exception('Impossible to create the file classes/Installer.php');
}
// Create the file BaseController.php
$controller = str_replace('{{ $namespace }}', $namespace, file_get_contents(Plugin::current()->getRootDir() . 'templates/base-controller.tpl'));
if (file_put_contents($dir . 'controllers/BaseController.php', $controller) === false) {
throw new \Exception('Impossible to create the file controllers/BaseController.php');
}
// Create the language file
$language = file_get_contents(Plugin::current()->getRootDir() . 'templates/lang.tpl');
if (file_put_contents($dir . 'lang/' . $plugin->getName() . '.en.lang', $language) === false) {
throw new \Exception('Impossible to create the file lang/' . $plugin->getName() . '.en.lang');
}
// Create the README file
if (touch($dir . 'README.md') === false) {
throw new \Exception('Impossible to create the README file');
}
return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.new-plugin-success'));
} catch (\Exception $e) {
if (is_dir($dir)) {
App::fs()->remove($dir);
}
return $form->response(Form::STATUS_ERROR, DEBUG_MODE ? $e->getMessage() : Lang::get($this->_plugin . '.new-plugin-error'));
}
}
}
}
示例12: edit
/**
* Create or edit an user
*/
public function edit()
{
$user = App::session()->getUser();
$roles = array_map(function ($role) {
return $role->getLabel();
}, Role::getAll('id'));
$param = array('id' => 'user-profile-form', 'upload' => true, 'object' => $user, 'fieldsets' => array('general' => array('legend' => Lang::get('admin.user-form-general-legend'), new TextInput(array('name' => 'username', 'required' => true, 'label' => Lang::get('admin.user-form-username-label'), 'disabled' => true)), new EmailInput(array('name' => 'email', 'required' => true, 'label' => Lang::get('admin.user-form-email-label')))), 'profile' => array('legend' => Lang::get('admin.user-form-profile-legend')), '_submits' => array(new SubmitInput(array('name' => 'valid', 'value' => Lang::get($this->_plugin . '.valid-button'))))), 'onsuccess' => 'app.dialog("close")');
// Get the user profile questions
$questions = ProfileQuestion::getAll('name', array(), array('order' => DB::SORT_ASC));
// Generate the question fields
foreach ($questions as $question) {
if ($question->displayInProfile && $question->isAllowedForRole($user->roleId)) {
$classname = '\\Hawk\\' . ucwords($question->type) . 'Input';
$field = json_decode($question->parameters, true);
$field['name'] = $question->name;
$field['id'] = 'user-form-' . $question->name . '-input';
$field['independant'] = true;
$field['label'] = Lang::get('admin.profile-question-' . $question->name . '-label');
if (isset($field['readonly'])) {
if ($field['readonly']) {
$field['required'] = false;
}
}
if ($user) {
if ($question->type == "file") {
$field['after'] = sprintf('<img src="%s" class="profile-image" />', $user->getProfileData($question->name) ? $user->getProfileData($question->name) : '');
} else {
$field['default'] = $user->getProfileData($question->name);
}
}
if ($question->name == 'language') {
// Get language options
$languages = Language::getAllActive();
$options = array();
foreach ($languages as $language) {
$options[$language->tag] = $language->label;
}
$field['options'] = $options;
if (!$field['default']) {
$field['default'] = Option::get($this->_plugin . '.language');
}
}
$param['fieldsets']['profile'][] = new $classname($field);
}
}
$form = new Form($param);
if (!$form->submitted()) {
return NoSidebarTab::make(array('title' => Lang::get('admin.user-form-title'), 'page' => array('content' => $form)));
} else {
try {
foreach ($questions as $question) {
if ($question->displayInProfile && $question->isAllowedForRole($user->roleId)) {
if ($question->type === 'file') {
$upload = Upload::getInstance($question->name);
if ($upload) {
$file = $upload->getFile(0);
$dir = Plugin::current()->getPublicUserfilesDir() . 'img/';
$url = Plugin::current()->getUserfilesUrl() . 'img/';
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$basename = uniqid() . $file->extension;
$upload->move($file, $dir, $basename);
$user->setProfileData($question->name, $url . $basename);
}
} else {
$user->setProfileData($question->name, $form->inputs[$question->name]->dbvalue());
}
}
}
$user->saveProfile();
if ($form->getData('email') !== $user->email) {
// The user asked to reset it email
// Check this email is not used by another user on the application
$existingUser = User::getByExample(new DBExample(array('id' => array('$ne' => $user->id), 'email' => $form->getData('email'))));
if ($existingUser) {
return $form->response(Form::STATUS_CHECK_ERROR, Lang::get($this->_plugin . '.reset-email-already-used'));
}
// Send the email to validate the new email
// Create the token to validate the new email
$tokenData = array('userId' => $user->id, 'currentEmail' => $user->email, 'newEmail' => $form->getData('email'), 'createTime' => time());
$token = base64_encode(Crypto::aes256Encode(json_encode($tokenData)));
// Create the email content
$emailContent = View::make($this->getPlugin()->getView('change-email-validation.tpl'), array('sitename' => Option::get($this->_plugin . '.sitename'), 'validationUrl' => App::router()->getUrl('validate-new-email', array('token' => $token))));
$email = new Mail();
$email->to($form->getData('email'))->from(Option::get('main.mailer-from'), Option::get('main.mailer-from-name'))->title(Lang::get($this->_plugin . '.reset-email-title', array('sitename' => Option::get($this->_plugin . '.sitename'))))->content($emailContent)->subject(Lang::get($this->_plugin . '.reset-email-title', array('sitename' => Option::get($this->_plugin . '.sitename'))))->send();
return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.user-profile-update-success-with-email'));
}
return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.user-profile-update-success'));
} catch (Exception $e) {
return $form->response(Form::STATUS_ERROR, Lang::get($this->_plugin . '.user-profile-update-error'));
}
}
}
示例13: forgottenPassword
/**
* Display and treat the form when the user forgot his password
*/
public function forgottenPassword()
{
$form = new Form(array('id' => 'forgotten-password-form', 'fieldsets' => array('form' => array(new EmailInput(array('name' => 'email', 'required' => true, 'label' => Lang::get($this->_plugin . '.forgotten-pwd-form-email-label')))), 'submits' => array(new SubmitInput(array('name' => 'valid', 'label' => Lang::get($this->_plugin . '.valid-button'))), new ButtonInput(array('name' => 'cancel', 'label' => Lang::get($this->_plugin . '.cancel-button'), 'href' => App::router()->getUri('login'), 'target' => 'dialog')))), 'onsuccess' => '
app.dialog(app.getUri("reset-password"));
app.notify("warning", Lang.get("main.forgotten-pwd-sent-email-message"));
'));
if (!$form->submitted()) {
Lang::addKeysToJavascript($this->_plugin . '.forgotten-pwd-sent-email-message');
return Dialogbox::make(array('title' => Lang::get($this->_plugin . '.forgotten-pwd-form-title'), 'icon' => 'lock-alt', 'page' => $form));
} else {
if ($form->check()) {
$user = User::getByEmail($form->getData('email'));
if (!$user) {
// The user does not exists. For security reasons,
// reply the email was successfully sent, after a random delay to work around robots
usleep(mt_rand(0, 500) * 100);
return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.forgotten-pwd-sent-email-message'));
}
try {
// The user exists, send an email with a 6 chars random verification code
$code = Crypto::generateKey(6);
// Register the verification code in the session
App::session()->setData('forgottenPassword', array('email' => $form->getData('email'), 'code' => Crypto::aes256Encode($code)));
$mail = new Mail();
$mail->from(Option::get($this->_plugin . '.mailer-from'), Option::get($this->_plugin . '.mailer-from-name'))->to($form->getData('email'))->subject(Lang::get($this->_plugin . '.reset-pwd-email-title', array('sitename' => Option::get($this->_plugin . '.sitename'))))->title(Lang::get('main.reset-pwd-email-title', array('sitename' => Option::get('main.sitename'))))->content(View::make(Plugin::current()->getView('reset-password-email.tpl'), array('sitename' => Option::get($this->_plugin . '.sitename'), 'code' => $code)))->send();
return $form->response(Form::STATUS_SUCCESS, Lang::get($this->_plugin . '.forgotten-pwd-sent-email-message'));
} catch (\Exception $e) {
return $form->response(Form::STATUS_ERROR, DEBUG_MODE ? $e->getMessage() : Lang::get($this->_plugin . '.forgotten-pwd-form-error'));
}
}
}
}
示例14: listUsers
/**
* Display the list of the users
*/
public function listUsers()
{
$example = array('id' => array('$ne' => User::GUEST_USER_ID));
$filters = UserFilterWidget::getInstance()->getFilters();
if (isset($filters['status']) && $filters['status'] != -1) {
$example['active'] = $filters['status'];
}
$param = array('id' => 'admin-users-list', 'model' => 'User', 'action' => App::router()->getUri('list-users'), 'reference' => 'id', 'filter' => new DBExample($example), 'controls' => array(array('icon' => 'plus', 'label' => Lang::get($this->_plugin . '.new-user-btn'), 'class' => 'btn-success', 'href' => App::router()->getUri("edit-user", array('username' => '_new')), 'target' => 'dialog')), 'fields' => array('actions' => array('independant' => true, 'display' => function ($value, $field, $user) {
$return = Icon::make(array('icon' => 'pencil', 'class' => 'text-primary', 'href' => App::router()->getUri('edit-user', array('username' => $user->username)), 'target' => 'dialog'));
if ($user->isRemovable()) {
$return .= Icon::make(array('icon' => 'close', 'class' => 'text-danger delete-user', 'data-user' => $user->username));
$return .= $user->active ? Icon::make(array('icon' => 'lock', 'class' => 'text-warning lock-user', 'data-user' => $user->username)) : Icon::make(array('icon' => 'unlock', 'class' => 'text-success unlock-user', 'data-user' => $user->username));
}
return $return;
}, 'search' => false, 'sort' => false), 'username' => array('label' => Lang::get($this->_plugin . '.users-list-username-label')), 'email' => array('label' => Lang::get($this->_plugin . '.users-list-email-label')), 'roleId' => array('label' => Lang::get($this->_plugin . '.users-list-roleId-label'), 'sort' => false, 'search' => array('type' => 'select', 'options' => call_user_func(function () {
$options = array();
foreach (Role::getAll('id', array('id')) as $id => $role) {
$options[$id] = Lang::get('roles.role-' . $id . '-label');
}
return $options;
}), 'invitation' => Lang::get($this->_plugin . '.user-filter-status-all')), 'display' => function ($value) {
return Lang::get('roles.role-' . $value . '-label');
}), 'active' => array('label' => Lang::get($this->_plugin . '.users-list-active-label'), 'search' => false, 'sort' => false, 'class' => function ($value) {
return 'bold ' . ($value ? 'text-success' : 'text-danger');
}, 'display' => function ($value) {
return $value ? Lang::get($this->_plugin . '.users-list-active') : Lang::get($this->_plugin . '.users-list-inactive');
}), 'createTime' => array('label' => Lang::get($this->_plugin . '.users-list-createTime-label'), 'search' => false, 'display' => function ($value) {
return date(Lang::get('main.date-format'), $value);
})));
$list = new ItemList($param);
if (App::request()->getParams('refresh')) {
return $list->display();
} else {
$this->addKeysToJavaScript("admin.user-delete-confirmation");
return View::make(Plugin::current()->getView("users-list.tpl"), array('list' => $list));
}
}