/**
  * Register hooks.
  *
  * @since 1.0.0
  */
 public static function register_hooks()
 {
     // Don't do anything if not in the backend
     if (!is_backend()) {
         return;
     }
     self::add_action('admin_head', 'setup_help_tabs', 10, 0);
 }
 public function testIsBackend()
 {
     // arrange
     $env = 'backend-production';
     // act
     $result = is_backend($env);
     // assert
     $this->assertEquals(true, $result);
 }
 /**
  * Register hooks.
  *
  * @since 1.0.0
  */
 public static function register_hooks()
 {
     // Don't do anything if not in the backend
     if (!is_backend()) {
         return;
     }
     // Settings & Pages
     self::add_action('admin_menu', 'add_menu_pages');
     self::add_action('admin_init', 'register_settings');
 }
Example #4
0
    static function renderUpdateFormBackend(SiteUser $user = null, $action = '')
    {
        // set default action value
        if ($action != '') {
            $action = uri($action);
        }
        // get vars from form submission
        $username = isset($_POST['username']) ? strip_tags($_POST['username']) : (isset($user) ? $user->getUsername() : '');
        $email = isset($_POST['email']) ? strip_tags($_POST['email']) : (isset($user) ? $user->getEmail() : '');
        $password = '';
        $password_confirm = '';
        $active = isset($_POST['active']) ? strip_tags($_POST['active']) : (isset($user) ? $user->getActive() : false);
        $mandatory_label = ' <span style="color: rgb(185,2,0); font-weight: bold;">*</span>';
        $roles_form_markup = '<div id="form-field-roles"><label>Roles</label><ul class="checkbox">';
        foreach (SiteRole::findAll() as $role) {
            $roles_form_markup .= '<li><label><input type="checkbox" name="roles[' . $role->getid() . ']" value=1 ' . (isset($_POST['roles']) ? isset($_POST['roles'][$role->getId()]) ? 'checked="checked"' : '' : ($user && $user->hasRole($role->getName()) ? 'checked="checked"' : '')) . ' />' . $role->getName() . '</label></li>';
        }
        $roles_form_markup .= '</ul></div>';
        $rtn = '
<form action="' . $action . '" method="POST" id="adduser" enctype="multipart/form-data">
  <div class="form-group" id="form-field-username">
    <label for="username">' . i18n(array('en' => 'Username', 'zh' => '用户名')) . $mandatory_label . ' <small style="font-weight: normal;"><i>(' . i18n(array('en' => 'alphabetical letters, number or underscore', 'zh' => '英文字母,数字或下划线')) . ')</i></small></label>
    <input type="text" class="form-control" id="username" name="username" value="' . $username . '" required placeholder="" />
  </div>
  <div class="form-group" id="form-field-email" >
    <label for="email">' . i18n(array('en' => 'Email', 'zh' => '电子邮箱')) . $mandatory_label . '</label>
    <input type="email" class="form-control" id="email" name="email" value="' . $email . '" required />
  </div>
  <div class="form-group" id="form-field-password">
    <label for="password">' . i18n(array('en' => 'Password', 'zh' => '密码')) . $mandatory_label . ' <small style="font-weight: normal;"><i>(' . i18n(array('en' => 'at least 6 letters', 'zh' => '至少6位')) . ')</i></small></label>
    <input type="password" class="form-control" id="password" name="password" value="' . $password . '" required />
  </div>
  <div class="form-group" id="form-field-password_confirm">
    <label for="password_confirm">' . i18n(array('en' => 'Password again', 'zh' => '再次确认密码')) . $mandatory_label . '</label>
    <input type="password" class="form-control" id="password_confirm" name="password_confirm" value="' . $password_confirm . '" required />
  </div>
  ' . (class_exists('SiteProfile') ? SiteProfile::renderUpdateForm($user) : '') . '
  <div class="checkbox" id="form-field-active">
    <label>
      <input type="checkbox" id="active" name="active" value="1" ' . ($active == false ? '' : 'checked="checked"') . '> ' . i18n(array('en' => 'Active?', 'zh' => '有效用户')) . '
    </label>
  </div>
  <input type="hidden" value=1 name="noemailnotification" />
  ' . (is_backend() ? $roles_form_markup : '') . '
  <div class="form-group" id="form-field-notice"><small><i>
    ' . $mandatory_label . i18n(array('en' => ' indicates mandatory fields', 'zh' => ' 标记为必填项')) . '
  </i></small></div>
  <button type="submit" name="submit" class="btn btn-primary">' . (is_null($user) ? i18n(array('en' => 'Add new user', 'zh' => '添加新用户')) : i18n(array('en' => 'Update user', 'zh' => '更新用户'))) . '</button>
</form>
';
        return $rtn;
    }
 /**
  * Register hooks.
  *
  * @since 1.0.0
  */
 public static function register_hooks()
 {
     // Don't do anything if not in the backend
     if (!is_backend()) {
         return;
     }
     // Setup stuff
     self::add_action('plugins_loaded', 'load_textdomain', 10, 0);
     // Plugin information
     self::add_action('in_plugin_update_message-' . plugin_basename(SLUG_PLUGIN_FILE), 'update_notice');
     // Script/Style Enqueues
     self::add_action('admin_enqueue_scripts', 'enqueue_assets');
 }
 /**
  * Register hooks.
  *
  * @since 1.0.0
  */
 public static function register_hooks()
 {
     // Don't do anything if not in the backend
     if (!is_backend()) {
         return;
     }
     // After-setup stuff
     self::add_action('plugins_loaded', 'load_textdomain');
     // Settings registration
     self::add_action('admin_init', 'register_settings', 10, 0);
     // Interface additions
     self::add_filter('display_post_states', 'add_index_state', 10, 2);
     self::add_action('edit_form_after_title', 'add_index_notice', 10, 1);
 }
 /**
  * Register hooks.
  *
  * @since 1.0.0
  *
  * @uses Registry::get() to retrieve enabled post types.
  */
 public static function register_hooks()
 {
     // Don't do anything if not in the backend
     if (is_backend()) {
         return;
     }
     // Request handling
     self::add_action('parse_request', 'handle_request', 10, 1);
     // Title/link rewriting
     self::add_filter('wp_title_parts', 'rewrite_title_parts', 10, 1);
     self::add_filter('post_type_archive_link', 'rewrite_archive_link', 10, 2);
     // Admin bar additions
     self::add_action('admin_bar_menu', 'add_edit_button', 85, 1);
 }
 static function bootstrap()
 {
     // include libs
     $whichend = is_backend() ? 'backend' : 'frontend';
     // jquery-ui
     if (!Asset::checkAssetAdded('jquery-ui', 'js', $whichend)) {
         $js = "<script src='" . uri('libraries/jquery-ui/jquery-ui.min.js', false) . "'></script>";
         Asset::addDynamicAsset('jquery-ui', 'js', $whichend, $js);
     }
     if (!Asset::checkAssetAdded('jquery-ui', 'css', $whichend)) {
         $js = "<link rel=\"stylesheet\" href=\"" . uri('libraries/jquery-ui/jquery-ui.theme.min.css', false) . "\">";
         $js .= "\n<link rel=\"stylesheet\" href=\"" . uri('libraries/jquery-ui/jquery-ui.structure.min.css', false) . "\">";
         Asset::addDynamicAsset('jquery-ui', 'css', $whichend, $js);
     }
 }
Example #9
0
 /**
  * Render an exception into an HTTP response.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  \Exception $e
  *
  * @return \Illuminate\Http\Response
  */
 public function render($request, \Exception $e)
 {
     if ($request->ajax() && !$request->pjax() || $request->wantsJson()) {
         return $this->sendResponseForApiException($e);
     }
     if (is_backend()) {
         if ($e instanceof ModelNotFoundException) {
             return $this->sendResponseForModelNotFound($e);
         }
         if ($e instanceof ValidationException) {
             return $this->sendResponseForValidationError($request, $e);
         }
         return $this->renderControllerException($e);
     }
     return parent::render($request, $e);
 }
Example #10
0
<?php

// register admin
$user = User::getInstance();
if (is_backend() && $user->isLogin()) {
    Backend::registerSideNav('
  <li>
    <a href="#"><i class="fa fa-folder-open"></i> ' . i18n(array('en' => 'Project', 'zh' => '项目')) . '<span class="fa arrow"></span></a>
    <ul class="nav nav-second-level collapse">
      <li><a href="' . uri('admin/project/list') . '">' . i18n(array('en' => 'List', 'zh' => '列表')) . '</a></li>
      <li><a href="' . uri('admin/project/create') . '">' . i18n(array('en' => 'Create', 'zh' => '创建')) . '</a></li>
    </ul>
  </li>
  ');
}
Example #11
0
    </div>
  </div>
</div>
<div class='hr-line-dashed'></div>

<?php 
// include jquery-ui library if not
if (is_frontend()) {
    $already_included_at_frontend = Asset::checkAssetAdded('jquery-ui', 'js', 'frontend') || Asset::checkAssetAdded('jquery_ui', 'js', 'frontend');
    if (!$already_included_at_frontend) {
        echo "\n" . '<script type="text/javascript" src="' . uri('modules/core/assets/jquery-ui-1.11.4.custom/jquery-ui.min.js') . '"></script>' . "\n";
        echo "\n" . '<script type="text/javascript">loadCSS("' . uri('modules/core/assets/jquery-ui-1.11.4.custom/jquery-ui.min.css') . '")</script>' . "\n";
        Asset::addDynamicAsset('jquery_ui', 'js', 'frontend', '<script type="text/javascript" src="' . uri('modules/core/assets/jquery-ui-1.11.4.custom/jquery-ui.min.js') . '"></script>');
    }
} else {
    if (is_backend()) {
        $already_included_at_backend = Asset::checkAssetAdded('jquery-ui', 'js', 'backend') || Asset::checkAssetAdded('jquery_ui', 'js', 'backend');
        if (!$already_included_at_backend) {
            echo "\n" . '<script type="text/javascript" src="' . uri('modules/core/assets/jquery-ui-1.11.4.custom/jquery-ui.min.js') . '"></script>' . "\n";
            echo "\n" . '<script type="text/javascript">loadCSS("' . uri('modules/core/assets/jquery-ui-1.11.4.custom/jquery-ui.min.css') . '")</script>' . "\n";
            Asset::addDynamicAsset('jquery_ui', 'js', 'backend', '<script type="text/javascript" src="' . uri('modules/core/assets/jquery-ui-1.11.4.custom/jquery-ui.min.js') . '"></script>');
        }
    }
}
?>

    <script type='text/javascript'>
      $('#69Wf0 .datepicker').datepicker({
        dateFormat: '@'
        ,altField: "#69Wf0 .altFormat", altFormat: "yy-mm-dd"
        ,changeMonth: 1
Example #12
0
function is_frontend()
{
    return !is_backend();
}
    static function bootstrap($name)
    {
        // include libs
        $whichend = is_backend() ? 'backend' : 'frontend';
        // jquery-ui
        if (!Asset::checkAssetAdded('jquery-ui', 'js', $whichend)) {
            $js = "<script src='" . uri('libraries/jquery-ui/jquery-ui.min.js', false) . "'></script>";
            Asset::addDynamicAsset('jquery-ui', 'js', $whichend, $js);
        }
        if (!Asset::checkAssetAdded('jquery-ui', 'css', $whichend)) {
            $js = "<link rel=\"stylesheet\" href=\"" . uri('libraries/jquery-ui/jquery-ui.theme.min.css', false) . "\">\n";
            $js .= "  <link rel=\"stylesheet\" href=\"" . uri('libraries/jquery-ui/jquery-ui.structure.min.css', false) . "\">";
            Asset::addDynamicAsset('jquery-ui', 'css', $whichend, $js);
        }
        // plupload
        if (!Asset::checkAssetAdded('plupload', 'js', $whichend)) {
            $js = "<script type='text/javascript' src='" . uri('libraries/plupload/js/plupload.full.min.js', false) . "'></script>";
            Asset::addDynamicAsset('plupload', 'js', $whichend, $js);
        }
        // plupload queue js
        if (!Asset::checkAssetAdded('plupload_queue', 'js', $whichend)) {
            $js = "<script type='text/javascript' src='" . uri('libraries/plupload/js/jquery.plupload.queue/jquery.plupload.queue.min.js', false) . "'></script>";
            Asset::addDynamicAsset('plupload_queue', 'js', $whichend, $js);
        }
        // plupload queue css
        if (!Asset::checkAssetAdded('plupload_queue', 'css', $whichend)) {
            $css = "<link type='text/css' rel='stylesheet' href='" . uri('libraries/plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css') . "' media='screen' />";
            Asset::addDynamicAsset('plupload_queue', 'css', $whichend, $css);
        }
        // plupload language js
        if (!Asset::checkAssetAdded('plupload_i18n', 'js', $whichend)) {
            $js = "<script type='text/javascript' src='" . uri('libraries/plupload') . "/js/i18n/" . (get_language() == 'zh' ? 'zh_CN' : 'en') . ".js'></script>";
            Asset::addDynamicAsset('plupload_i18n', 'js', $whichend, $js);
        }
        // plupload markup css
        if (!Asset::checkAssetAdded('plupload_markup', 'css', $whichend)) {
            $css = '<!-- plupload markup style -->
  <style>
    .file-container {height:auto;border:none;box-shadow:none;list-style:none;}
    .file-container:after {content:" ";display:table;clear:both;*zoom: 1;}
    .uploaded-file {margin-bottom:5px;margin-right:5px;float:left;padding:2px;border:1px solid #DDD;width:85px;height:110px;background-color:#FFF;}
    .uploaded-file a {display:block;width:80px;height:80px;overflow:hidden;color:#666;text-align:center;line-height:80px;}
    .uploaded-file button {display:block;width:80px;height:20px;text-align:center;margin-top:3px;}
  </style>';
            Asset::addDynamicAsset('plupload_markup', 'css', $whichend, $css);
        }
        // plupload markup js
        if (!Asset::checkAssetAdded('plupload_markup', 'js', $whichend)) {
            $js = '<!-- js functions for plupload file widget -->
<script type="text/javascript">

function textareaToFilelist(textarea, max_file_number) {
  // build the list
  textarea.hide();
  var formGroup = textarea.parents(\'.form-group\').first();
  
  var content = jQuery.trim(textarea.val());;
  var files = content.split("\\n");
  
  // remove and rebuild file container
  $(\'.file-container\', formGroup).remove();
  var container = $(\'<ul class="form-control file-container"></ul>\');
  
  for (i in files) {
    var file = files[i];
    if (file == \'\') {
      break;
    }
    // get file name
    var tokens = file.split(\'/\');
    var fileName = tokens[tokens.length-1];
    
    var cell = \'\';
    tokens = fileName.split(\'.\');
    var extension = tokens[tokens.length-1];
    var extension_icon = \'\';
    switch (extension.toLowerCase()) {
      case \'doc\':
      case \'docx\':
        extension_icon = \'word\'; break;
      case \'pdf\':
        extension_icon = \'pdf\'; break;
      case \'txt\':
        extension_icon = \'text\'; break;
      case \'csv\':
      case \'xls\':
        extension_icon = \'excel\'; break;
      case \'zip\':
      case \'rar\':
        extension_icon = \'archive\'; break;
      case \'mp3\':
        extension_icon = \'audio\'; break;
      case \'mp4\':
      case \'flv\':
        extension_icon = \'video\'; break;
    }
    extension_icon = \'<i class="fa fa-file-\'+extension_icon+\'-o"></i>\';
    if (tokens[tokens.length-1].match(/(jpg|jpeg|png|gif)/i)) {
      cell = \'<a style="background:#EEE url(\'+"/"+site.settings.subroot+(site.settings.subroot == "" ? "" : "/")+file+\') center no-repeat;background-size:contain" target=_blank href="\'+"/"+site.settings.subroot+(site.settings.subroot == "" ? "" : "/")+file+\'"></a>\';
    } else {
      cell = \'<a style="background:#EEE;font-size:45px;" target=_blank href="\'+"/"+site.settings.subroot+(site.settings.subroot == "" ? "" : "/")+file+\'">\'+extension_icon+\'</a>\';
    }
    
    // build file item
    var regx = \'/\'+extension+\'/gi\'; // regx to replace extension
    container.append(
      $(\'<li id="\'+tokens[0]+\'_uploaded" class="uploaded-file">\'+cell+\'<button data-furi="\'+file+\'" class="delete btn btn-xs btn-danger"><i class="fa fa-trash"></i></button></li>\')
    );
  }

  textarea.after(container);
  // add addMore button if not exist
  if ($(\'.addMore\', formGroup).length == 0) {
    container.after(
      $(\'<div class="form-control" style="border:none;box-shadow:none;"><button style="display:none;" class="addMore btn btn-sm btn-primary"><i class="fa fa-plus"></i> ' . i18n(array("en" => "Add new file", "zh" => "添加新文件")) . '</button></div>\')
    );
    $(\'.addMore\', formGroup).on(\'click\', function(){
      $(this).fadeOut(function(){
        $(\'.uploader\', formGroup).fadeIn();
      });
      return false;
    });
  }

  container.sortable({
    update: function(event, ui){
      filelistToTextarea(container, max_file_number);
    }
  });
  container.disableSelection();
  
  checkMaxItemReached(max_file_number, textarea, $(\'.addMore\', formGroup), $(\'.uploader\', formGroup));
}

function filelistToTextarea(filelist, max_file_number) {
  var content = "";
  $(\'.delete\', filelist).each(function(){
    content += $(this).data(\'furi\') + "\\n";
  });
  content = jQuery.trim(content);
  var formGroup = filelist.parents(\'.form-group\').first();
  var textarea = $(\'textarea\', formGroup);
  textarea.val(content);
  checkMaxItemReached(max_file_number, textarea, $(\'.addMore\', formGroup), $(\'.uploader\', formGroup));
}

function checkMaxItemReached(max, textarea, addButton, uploader) {
  var content = jQuery.trim(textarea.val());;
  var files = content.split("\\n");
  if (max > files.length || (files.length == 1 && files[0] == "")) {
    addButton.show();
    uploader.hide();
  } else {
    addButton.fadeOut(function(){
      uploader.fadeOut();
    });
  }
}
</script>
<!-- END OF js functions for plupload file widget -->';
            Asset::addDynamicAsset('plupload_markup', 'js', $whichend, $js);
        }
    }
Example #14
0
<?php

// define global const
define('UID_BACKEND_LOGIN_FORM', 'Backend Login Form');
define('FILE_DIR', WEBROOT . DS . 'files');
if (!is_dir(FILE_DIR)) {
    mkdir(FILE_DIR);
}
if (!is_writable(FILE_DIR)) {
    die('File directory needs to be writable');
}
define('CACHE_DIR', FILE_DIR . DS . 'cache');
if (!is_dir(CACHE_DIR)) {
    mkdir(CACHE_DIR);
}
if (!is_writable(CACHE_DIR)) {
    die('Cache directory needs to be writable');
}
// register maintenance admin page
$user = User::getInstance();
if (!is_cli() && $user->isLogin() && is_backend()) {
    // register admin
    Backend::registerSideNav('
  <li>
    <a href="' . uri('admin/maintenance') . '"><i class="fa fa-wrench"></i> ' . i18n(array('en' => 'Maintenance', 'zh' => '系统维护')) . '</a>
  </li>
  ');
}
Example #15
0
    static function renderCreateFormFrontend(MySiteUser $user = null, $action = '')
    {
        // set default action value
        if ($action != '') {
            $action = uri($action);
        }
        // get vars from form submission
        $username = isset($_POST['username']) ? strip_tags($_POST['username']) : (isset($user) ? $user->getUsername() : '');
        $email = isset($_POST['email']) ? strip_tags($_POST['email']) : (isset($user) ? $user->getEmail() : '');
        $password = '';
        $password_confirm = '';
        if ($user && $user->getId() == MySiteUser::getCurrentUser()->getId()) {
            // when updating self profile, we don't include 'active'
            $active_field = '';
        } else {
            $active = isset($_POST['active']) ? strip_tags($_POST['active']) : (isset($user) ? $user->getActive() . "" : false);
            $active_field = '
  <div class="form-group" id="form-field-active">
    <label class="col-sm-2 control-label" for="active">' . i18n(array('en' => 'Active', 'zh' => '是否在职')) . '</label>
    <div class="col-sm-10">
      <select class="form-control" name="active" id="active">
        <option value="1" ' . ($active && $active == "1" ? 'selected=selected' : '') . '>在职</option>
        <option value="0" ' . ($active && $active == "0" ? 'selected=selected' : '') . '>离职</option>
      </select>
    </div>
  </div>
  <div class="hr-line-dashed"></div>';
        }
        $mandatory_label = ' <span style="color: rgb(185,2,0); font-weight: bold;">*</span>';
        $roles_form_markup = '<div id="form-field-roles"><label class="col-sm-2 control-label">Roles</label><div class="col-sm-10"><ul class="checkbox">';
        foreach (SiteRole::findAll() as $role) {
            $roles_form_markup .= '<li><label><input type="checkbox" name="roles[' . $role->getid() . ']" value=1 ' . (isset($_POST['roles']) ? isset($_POST['roles'][$role->getId()]) ? 'checked="checked"' : '' : ($user && $user->hasRole($role->getName()) ? 'checked="checked"' : '')) . ' />' . $role->getName() . '</label></li>';
        }
        $roles_form_markup .= '</ul></div></div>';
        $rtn = '
<form class="form-horizontal" action="' . $action . '" method="POST" enctype="multipart/form-data">
  <div class="form-group" id="form-field-email" >
    <label class="col-sm-2 control-label" for="email">' . i18n(array('en' => 'Email', 'zh' => '电子邮箱')) . $mandatory_label . '</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="email" name="email" value="' . $email . '" required />
    </div>
  </div>
  <div class="hr-line-dashed"></div>
  <div class="form-group" id="form-field-password">
    <label class="col-sm-2 control-label" for="password">' . i18n(array('en' => 'Password', 'zh' => '密码')) . $mandatory_label . ' </label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="password" name="password" value="' . $password . '" required />
      <span class="help-block m-b-none"><small>(' . i18n(array('en' => 'at least 6 letters', 'zh' => '至少6位')) . ')</small></span>
    </div>
  </div>
  <div class="form-group" id="form-field-password_confirm">
    <label class="col-sm-2 control-label" for="password_confirm">' . i18n(array('en' => 'Password again', 'zh' => '再次确认密码')) . $mandatory_label . '</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="password_confirm" name="password_confirm" value="' . $password_confirm . '" required />
    </div>
  </div>
  <div class="hr-line-dashed"></div>
  ' . (class_exists('SiteProfile') ? SiteProfile::renderUpdateForm($user) : '') . '
  <div class="hr-line-dashed"></div>
' . $active_field . '
  <input type="hidden" value=1 name="noemailnotification" />
  ' . (is_backend() ? $roles_form_markup : '') . '
  <div class="form-group" id="form-field-notice">
    <div class="col-sm-10 col-sm-push-2">
      <small><i>
    ' . $mandatory_label . i18n(array('en' => ' indicates mandatory fields', 'zh' => ' 标记为必填项')) . '
      </i></small>
    </div>
  </div>
  <div class="col-sm-10 col-sm-push-2">
    <button type="submit" name="submit" class="btn btn-primary">' . (is_null($user) ? i18n(array('en' => 'Add new user', 'zh' => '添加新用户')) : i18n(array('en' => 'Update user', 'zh' => '更新用户'))) . '</button>
  </div>
  
</form>
';
        return $rtn;
    }