Esempio n. 1
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $data = $course->get(array('id' => $this->id));
        foreach ($data as $key => $val) {
            $data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        echo <<<EOF
<h2  class="page-header">{$data[name]}</h2>
<h4>{$data[category_name]}</h4>
<div class="col-lg-8">
    <ul class="list-group category-list" index="{$this->id}/">

EOF;
        $root = $_SERVER['DOCUMENT_ROOT'] . '/../files/courses/' . $this->id;
        $this->put_list($root);
        echo <<<EOF
    </ul>
    <div class="row">
\t
\t<a href="#"  data-toggle="toggler" parent-id="{$this->id}/" title="{$translator->addfile}" type="file">
\t\t\t<span class="glyphicon glyphicon-file"></span> </a>
\t\t\t<a href="#"  data-toggle="toggler" parent-id="{$this->id}/" title="{$translator->addfolder}" type="folder">
\t\t\t<span class="glyphicon glyphicon-folder-open"></span> </a>
\t
    </div>

</div>
EOF;
    }
Esempio n. 2
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $request = new Request();
        try {
            $id = array_shift($this->param);
            $course = new Course();
            $c_data = $course->get(array('id' => $id));
            $data['course_id'] = $id;
            $data['user_id'] = $_SESSION['user_id'];
            $data['active'] = true;
            $data['planned_date'] = $_GET['planned_date'] != '' ? $_GET['planned_date'] : date('Y-m-d H:i:s', time());
            $r_id = $request->add($data);
            if ($c_data['need_approve'] == 'f') {
                $request->approve($r_id);
                echo <<<EOF
<div class="container">
   <div class="page-header">
        <h1>{$translator->Request_updated}</h1>
      </div>
   <p class="lead">{$translator->Request_updated_Desc}</p>
      <p >{$translator->Error_Backcourses}</p>
</div>
<script type="text/javascript">
window.location.href='/mycourses';
</script>

EOF;
            } else {
                echo <<<EOF
<div class="container">
   <div class="page-header">
        <h1>{$translator->Request_updated}</h1>
      </div>
   <p class="lead">{$translator->Request_need_approve_Desc}</p>
      <p >{$translator->Error_Backcourses}</p>
</div>

EOF;
            }
        } catch (Exception $e) {
            echo <<<EOF
<div class="container">
   <div class="page-header">
        <h1>{$translator->Request_error}</h1>
      </div>
   <p class="lead">{$translator->Request_error_Desc}</p>
      <p >{$translator->Error_Backcourses}</p>
</div>

EOF;
        }
    }
Esempio n. 3
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        echo <<<EOF
<div class="container-fluid">
<div class="col-md-10 col-lg-8 col-lg-offset-2 ">
\t<h1 class="page-header">{$translator->Help} <small>{$translator->Help_desc}</small></h1>
\t\t<ul>
\t\t\t<li><a href="?file=LMS - Editor.pdf">Створення і керування переліком курсів в системі (Укр)</a></li>
\t\t</ul>
\t</div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 4
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $page = $_GET['page'];
        $offset = intval($page) * ITEMS_IN_PAGE;
        if (isset($_GET['search'])) {
            $search = $_GET['search'];
            unset($_GET['search']);
            unset($_GET['page']);
        } else {
            $search = null;
        }
        $cnt = $course->getCount(array('search' => $search));
        if ($cnt > ITEMS_IN_PAGE) {
            $pagination = $this->addPaginator($cnt, $page);
        }
        echo <<<EOF
<div class="container-fluid">
<div class="col-md-10 col-lg-8 col-lg-offset-2 ">
\t<h4 class="page-header">{$translator->Search_result}: <span class="badge">{$cnt}</span></h4>
\t{$pagination}
EOF;
        $enum = $course->enumerate(array('search' => $search), $offset, ITEMS_IN_PAGE);
        if (isset($enum)) {
            foreach ($enum as $data) {
                echo <<<EOF
\t\t<h4>{$data[name]}</h4>
\t\t<h6>{$data[category_name]}</h6>
\t\t<p>{$data[describe]}</p>
\t\t<p><a href="/course/{$data[id]}">{$translator->Go_to}...</a></p>
EOF;
            }
        } else {
            $search = htmlspecialchars($search);
            echo <<<EOF
\t\t<h4>{$translator->no_results} по "{$search}"</h4>\t\t
EOF;
        }
        echo <<<EOF
\t{$pagination}
\t</div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 5
0
 function displayBody()
 {
     parent::displayBody();
     if (!is_array($this->param)) {
         return;
     }
     $func = array_shift($this->param);
     switch ($func) {
         case 'approve':
             $this->approve();
             break;
         case 'delete':
             $this->delete();
             break;
         default:
             $this->view();
     }
 }
Esempio n. 6
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $training = new Training();
        $t_data = $training->get(array('course_hash' => $this->course_hash, 'user_id' => $_SESSION['user_id']));
        $c_data = $course->get(array('id' => $t_data['course_id']));
        foreach ($c_data as $key => $val) {
            $c_data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        echo <<<EOF
<div class="container-fluid">
<div class="col-lg-10 col-lg-offset-1" id="window">
\t<div class="row" >
\t<div class="col-xs-10">
\t    <h4>{$c_data[category_name]}</h4>
\t    <h2>{$c_data[name]}</h2>
\t</div>
\t<div class="col-xs-2 text-right" id="top_buttons">
\t    <a href="#" id="fullscreen"><span class="glyphicon glyphicon-fullscreen"></span></a>
\t    <a href="#" id="inscreen" class="collapse"><span class="glyphicon glyphicon-remove"></span></a>
\t</div>
\t</div>
\t<div class="embed-responsive embed-responsive-16by9" id="fullscreen_media">
\t  <iframe class="embed-responsive-item" src="/learn/{$this->course_hash}/index.html" id="iframe"></iframe>
\t</div>
\t<nav id="bottom_buttons">
\t  <ul class="pager">
\t    <li class="previous"><a href="#" id="back"><span aria-hidden="true">&larr;</span> {$translator->Back}</a></li>
\t    <li class="top"><a href="#" id="top">{$translator->Top}</a>|
\t\t<a href="/mycourses/finish/{$t_data[id]}" onclick='return confirm("{$translator->AreYouSure}");'>{$translator->Finish}</a></li>
\t    <li class="next"><a href="#" id="next">{$translator->Next} <span aria-hidden="true">&rarr;</span></a></li>
\t  </ul>
\t</nav>
</div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 7
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $obj = new Category();
        $cnt = $obj->getCount();
        if (sizeof($_GET) > 0) {
            foreach ($_GET as $key => $val) {
                $values[$key] = htmlspecialchars($val, ENT_QUOTES);
            }
        }
        $enum = $obj->enumerate();
        foreach ($enum as $key => $val) {
            if ($val['id'] != 0) {
                $this->items[$val['parent_id']][] = $val;
            }
        }
        foreach ($this->items as $key => $val) {
            asort($this->items[$key]);
        }
        echo <<<EOF
<h2  class="page-header">{$translator->Categories_header} <span class="badge">{$cnt}</span></h2>
<div class="col-lg-8">
    <ul class="list-group category-list" index="0">

EOF;
        $this->put_list();
        echo <<<EOF
    </ul>
    <div class="row">
\t<div class="btn-group">
\t<a href="#" class="btn btn-sm" data-toggle="toggler" parent-id="0">
\t    <span class="glyphicon glyphicon-plus"></span> {$translator->add}</a>
\t</div>
    </div>

</div>
EOF;
    }
Esempio n. 8
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $category = new Category();
        $course = new Course();
        $cnt = $course->getCount();
        $enum = $category->enumerate(array('active' => true));
        foreach ($enum as $key => $val) {
            if ($val['id'] != 0) {
                $this->items[$val['parent_id']][] = $val;
            }
        }
        foreach ($this->items as $key => $val) {
            asort($this->items[$key]);
        }
        $enum = $course->enumerate(array('active' => true));
        if (isset($enum)) {
            foreach ($enum as $key => $val) {
                $this->courses[$val['category_id']][] = $val;
            }
        }
        foreach ($this->items as $key => $val) {
            asort($this->items[$key]);
        }
        echo <<<EOF
<h2  class="page-header">{$translator->Courses_header} <span class="badge">{$cnt}</span></h2>
<div class="col-lg-8">
    <ul class="list-group category-list" index="0">

EOF;
        $this->put_list();
        echo <<<EOF
    </ul>
</div>

EOF;
    }
Esempio n. 9
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $training = new Training();
        $id = array_shift($this->param);
        try {
            $t_exists = $training->checkFinish($_SESSION['user_id'], $id);
        } catch (Exception $e) {
        }
        $data = $course->get(array('id' => $id));
        foreach ($data as $key => $val) {
            $data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        foreach ($course->formats as $key => $val) {
            if ($key == $data['format_id']) {
                $format = htmlspecialchars($val, ENT_QUOTES);
            }
        }
        foreach ($course->languages as $key => $val) {
            if ($key == $data['language']) {
                $language = htmlspecialchars($val, ENT_QUOTES);
            }
        }
        if ($data['active'] == 't') {
            $active = 'checked';
        }
        if ($data['exam'] == 't') {
            $exam = 'checked';
        }
        if ($data[duration] > 8) {
            $duration = floor($data['duration'] / 8) . " {$translator->days}" . ($data['duration'] % 8 > 0 ? " + " . $data['duration'] % 8 . " {$translator->hours}" : '');
        } else {
            $duration = $data['duration'] . " {$translator->hours}";
        }
        if ($t_exists) {
            $disabled = 'disabled';
        }
        echo <<<EOF
<div class="container-fluid">
<div class="col-md-10 col-lg-8 col-lg-offset-2 ">
\t<h4>{$data[category_name]}</h4>
\t<h2>{$data[name]}</h2>
\t<div class="row">
\t    <div class="col-sm-6"><small>{$translator->Duration}: {$duration}</small></div>
\t    <div class="col-sm-6 text-right"><small>{$translator->Format}: {$format}</small></div>
\t</div>
\t<hr/>
\t<label for="describe">{$translator->Describe}:</label> 
\t<p class="describe">{$data[describe]}</p>
\t<label for="data">{$translator->Prerequisites}:</label> 
\t<p class="describe">{$data[prerequisites]}</p>
\t<label for="skills">{$translator->Skills}:</label>
\t<p class="describe">{$data[skills]}</p>
\t<label for="equipment">{$translator->Equipment}:</label>
\t<p class="describe">{$data[equipment]}</p>

<!-- TODO>
 Add needed courses select-box
\t    <div class="form-group">Courses</div>
<!-->
\t<div>
\t    <label for="language">{$translator->Language}:</label> {$language}
\t</div>
\t<div>
\t    <label for="language">{$translator->Author}:</label> {$data[author]}
\t</div>
\t<hr/>
\t<div>
\t\t<a href="/enroll/{$data['id']}" class="btn btn-primary btn-lg {$disabled}" >{$translator->Register}</a>
\t</div>
\t</div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 10
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $user = new User();
        $page = $_GET['page'];
        $offset = intval($page) * ITEMS_IN_PAGE;
        if (isset($_GET['search'])) {
            unset($_GET['search']);
            unset($_GET['page']);
            $search = $_GET;
        } else {
            $search = null;
        }
        $cnt = $user->getCount($search);
        if (sizeof($_GET) > 0) {
            foreach ($_GET as $key => $val) {
                $values[$key] = htmlspecialchars($val, ENT_QUOTES);
            }
            foreach ($user->roles as $key => $val) {
                if (($_GET['role_id'] & $val) > 0) {
                    $valname = 'role' . $val;
                    ${$valname} = 'checked';
                }
            }
            if ($_GET['role_id'] == 0) {
                $role0 = 'checked';
                $values['role_id'] = 0;
            }
        }
        if ($cnt > ITEMS_IN_PAGE) {
            $pagination = $this->addPaginator($cnt, $page);
        }
        echo <<<EOF
<h2  class="page-header">{$translator->Users_header} <span class="badge">{$cnt}</span></h2>
    <div class="row">
\t<div class="col-md-1">
\t<button class="btn btn-sm btn-default"  data-toggle="collapse" data-target="#filter">
\t    <span class="glyphicon glyphicon-filter"></span> {$translator->Filter}</button>
\t</div>
    </div>
    <div class="row">
        <div class="col-md-5 collapse" id="filter">
\t    <form role="form" class="form-horizontal" action="?" method="get">
\t\t<div class="form-group">
\t\t    <div class="form-group">
\t\t    <label for="name" class="control-label col-sm-3">{$translator->Name}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="name" name="name" value="{$values[name]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <label for="email" class="control-label col-sm-3">{$translator->Email}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="email" name="email" value="{$values[email]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <label for="company" class="control-label col-sm-3">{$translator->Company}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="company" name="company" value="{$values[company]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <label for="phone" class="control-label col-sm-3">{$translator->Phone}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="phone" name="phone"  value="{$values[phone]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <label for="country" class="control-label col-sm-3">{$translator->Country}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="country" name="country" value="{$values[country]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <label for="city" class="control-label col-sm-3">{$translator->City}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="city" name="city" value="{$values[city]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="col-sm-offset-3">

EOF;
        foreach ($user->roles as $key => $val) {
            $valname = 'role' . $val;
            echo "\t\t    <input type=\"checkbox\" class=\"role_id\" id=\"{$valname}\" value=\"{$val}\" " . ${$valname} . ">\n\t\t    <label for=\"{$valname}\">" . User::RolesAsString($val) . "</label>" . NL;
        }
        echo <<<EOF
\t\t    <input class="sr-only" id="role_id" name="role_id" value="{$values[role_id]}">
\t\t    <input class="sr-only" name="search" value="1">
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <div class="col-sm-offset-3 col-md-10">
\t\t    <button type="submit" class="btn btn-sm btn-default">{$translator->Apply}</button>
\t\t    </div>
\t\t    </div>
\t\t</div>
\t    </form>
\t</div>
    </div>
{$pagination}
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>#</th>
                  <th>{$translator->Name}</th>
                  <th>{$translator->Roles}</th>
                  <th>{$translator->Email}</th>
                  <th>{$translator->Phone}</th>
                  <th>{$translator->Company}</th>
                  <th>{$translator->Place}</th>
                </tr>
              </thead>
              <tbody>

EOF;
        $enum = $user->enumerate($search, $offset, ITEMS_IN_PAGE, 'users.last_name,users.first_name');
        if (is_object($enum)) {
            $i = 1 + $offset;
            foreach ($enum as $key => $data) {
                if ($data['active'] == 'f') {
                    $active = " class=\"not-active\"";
                } else {
                    $active = "";
                }
                echo "                <tr>\n                  <td>{$i}</td>\n                  <td" . $active . ">{$data[name]}</td>\n                  <td>" . User::RolesAsString($data['role_id']) . "</td>\n                  <td>{$data[email]}</td>\n                  <td>{$data[phone]}</td>\n                  <td>{$data[company]} <small>{$data[position]}</small></td>\n                  <td>{$data[country]} <small>{$data[city]}</small></td>\n                  <td><a href=\"/admin_user/edit/{$data[id]}\" title=\"{$translator->edit}\"><span class=\"glyphicon glyphicon-user\"></span></a></td>\n                  <td><a href=\"/admin_user/delete/{$data[id]}\" title=\"{$translator->del}\" onClick=\"return confirm('{$translator->AreYouSure}');\"><span class=\"glyphicon glyphicon-trash\"></span></a></td>\n                </tr>\n";
                $i++;
            }
        }
        echo <<<EOF
\t    </table>
\t</div>

EOF;
    }
Esempio n. 11
0
 function displayBody()
 {
     parent::displayBody();
     if (!is_array($this->param)) {
         return;
     }
     $func = array_shift($this->param);
     switch ($func) {
         case 'new':
             $this->edit(true);
             break;
         case 'add':
             $this->add();
             break;
         case 'edit':
             $this->edit();
             break;
         case 'save':
             $this->save();
             break;
     }
 }
Esempio n. 12
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $training = new Training();
        $t_data = $training->get(array('exam_hash' => $this->exam_hash, 'user_id' => $_SESSION['user_id']));
        $c_data = $course->get(array('id' => $t_data['course_id']));
        foreach ($c_data as $key => $val) {
            $c_data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        echo <<<EOF
<div class="container-fluid">
<div class="col-lg-10 col-lg-offset-1" id="window">
\t<div class="row" >
\t<div class="col-xs-10">
\t    <h4>{$c_data[category_name]}</h4>
\t    <h2>{$c_data[name]}</h2>
\t</div>
\t<div class="col-xs-2 text-right" id="top_buttons">
\t    <a href="#" id="fullscreen"><span class="glyphicon glyphicon-fullscreen"></span></a>
\t    <a href="#" id="inscreen" class="collapse"><span class="glyphicon glyphicon-remove"></span></a>
\t</div>
\t</div>

EOF;
        try {
            $d2 = new DateTime('now');
            $diff = $d2->diff(new DateTime($t_data['finished']));
            $diff = $diff->format('%r%i');
            if ($diff < 0) {
                throw new Exception("Time out", self::TIMEOUT);
            }
            $exam = new Exam();
            $enum = $exam->enumerate(array('training_id' => $t_data['id']), intval($this->page), 1, 'id');
            $cnt = $exam->getCount(array('training_id' => $t_data['id']));
            $current = $this->page + 1;
            $back = $this->page > 0 ? $this->page - 1 : 0;
            $next = $this->page + 1;
            if (!$enum) {
                throw new Exception("Not found", self::NOTFOUND);
            }
            $e_data = $enum->current();
            $question = new Question();
            $q_data = $question->get(array('id' => $e_data['question_id']));
            echo <<<EOF
\t<div class="embed-responsive embed-responsive-16by9" id="fullscreen_media">
\t<p>{$translator->Question}: {$current} / {$cnt}</p>
\t<p> {$translator->Time_remain}: {$diff}</p>
\t{$q_data[data]}
\t<hr>
\t{$translator->Answer}: 
\t    <form action="?" method="post">
\t    <input type="hidden" name="id" value="{$e_data[id]}">
EOF;
            switch ($q_data['type_id']) {
                case Question::SINGLE:
                    echo "<ol>";
                    for ($i = 1; $i <= $q_data['count']; $i++) {
                        echo "<li><input type=\"radio\" name=\"answer\" value=\"{$i}\" " . ($i == $e_data['answer'] ? 'checked' : '') . "></li>" . NL;
                    }
                    echo "</ol>";
                    break;
                case Question::MULTI:
                    echo "<ol>";
                    $e_data['answer'] = explode(',', $e_data['answer']);
                    for ($i = 1; $i <= $q_data['count']; $i++) {
                        echo "<li><input type=\"checkbox\" name=\"answer[]\" value=\"{$i}\" " . (in_array($i, $e_data['answer']) ? 'checked' : '') . "></li>" . NL;
                    }
                    echo "</ol>";
                    break;
                case Question::TEXT:
                    echo "<input type=\"text\" name=\"answer\" value=\"{$e_data['answer']}\">" . NL;
                    break;
                default:
            }
            $back = $this->page > 0 ? $this->page - 1 : 0;
            $next = $this->page + 1;
            echo <<<EOF
\t    <input type="submit" class="btn btn-primary">
\t    </form>
\t</div>

EOF;
        } catch (Exception $e) {
            switch ($e->getCode()) {
                case self::TIMEOUT:
                    echo <<<EOF
    <div class="bs-callout bs-callout-danger" id="callout-type-b-i-elems">
    <h4>{$translator->Timeout}</h4>
    <p>{$translator->Timeout_Desc}</p>
    <p class="text-muted">{$translator->BackCourses}</p>
    </div>

EOF;
                    $training->update($t_data['id'], array('status_id' => Training::FAILED));
                    break;
                case self::NOTFOUND:
                    echo <<<EOF
    <div class="embed-responsive embed-responsive-16by9" id="fullscreen_media">
    <div class="bs-callout bs-callout-info" id="callout-type-b-i-elems">
    <h4>{$translator->Not_found}</h4>
    <p>{$translator->Not_found_Desc}</p>
    <p class="text-muted">{$translator->BackExam}</p>
    </div>
    </div>

EOF;
                    break;
                default:
                    echo $e;
                    echo <<<EOF
    <div class="bs-callout bs-callout-danger" id="callout-type-b-i-elems">
    <h4>{$translator->Error}</h4>
    <p>{$translator->Error_Desc}</p>
    <p class="text-muted">{$translator->BackExam}</p>
    </div>

EOF;
            }
            // echo "<script>window.history.back();</script>";
        }
        echo <<<EOF
\t<nav id="bottom_buttons">
\t  <ul class="pager">
\t    <li class="previous"><a href="{$back}" id="back"><span aria-hidden="true">&larr;</span> {$translator->Back}</a></li>
\t    <li class="top"><a href="0" id="top">{$translator->Top}</a>|
\t\t<a href="/result/{$t_data[id]}" onclick='return confirm("{$translator->AreYouSure}");'>{$translator->Finish}</a></li>
\t    <li class="next"><a href="{$next}" id="next">{$translator->Next} <span aria-hidden="true">&rarr;</span></a></li>
\t  </ul>
\t</nav>
</div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 13
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $category = new Category();
        $training = new Training();
        $t_data = $training->get(array('id' => $this->id, 'user_id' => $_SESSION['user_id']));
        $c_data = $course->get(array('id' => $t_data['course_id']));
        foreach ($c_data as $key => $val) {
            $c_data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        $category_id = $c_data['category_id'];
        $enum = $category->enumerate();
        if ($enum) {
            foreach ($enum as $key => $val) {
                if ($val['id'] != 0) {
                    $items[$val['id']] = $val;
                }
            }
            $categories = $this->makeCategoryList($items, $category_id);
        }
        if ($t_data['status_id'] == Training::FINISHED) {
            $result = $translator->Congratulations;
            $result_class = "alert-success";
        } else {
            $result = $translator->Sorry;
            $result_class = "alert-danger";
        }
        echo <<<EOF
<div class="container-fluid">
    <div class="col-lg-10 col-lg-offset-1" id="window">
\t<h4>{$categories}</h4>
\t<h2>{$c_data[name]}</h2>
\t<h3 class="alert {$result_class}" role="alert">{$result}</h3>
\t<h4>{$translator->Result}: {$t_data[result]}% ({$t_data['answers']} / {$t_data[questions]})</h4>
\t<table class="table">
\t    <tr>
\t\t<th>#</th>
\t\t<th>{$translator->Question}</th>
\t\t<th>{$translator->Result}</th>
\t    </tr>

EOF;
        $exam = new Exam();
        $enum = $exam->enumerateResult($t_data['id']);
        $i = 1;
        foreach ($enum as $key => $e_data) {
            $answer = $e_data['result'] == 't' ? $translator->Right : $translator->Wrong;
            $class = $e_data['result'] == 't' ? "success" : "danger";
            echo <<<EOF
\t    <tr class="alert alert-{$class}" role="alert">
\t\t<td>{$i}</td>
\t\t<td>{$e_data[question]}</td>
\t\t<td >{$answer}</td>
\t    </tr>
EOF;
            $i++;
        }
        echo <<<EOF
\t</table>
    </div>
</div> <!-- /container -->

EOF;
    }
Esempio n. 14
0
    function displayFooter()
    {
        parent::displayFooter();
        $locale = LC;
        echo <<<EOF
<script src="/js/moment-with-locales.js"></script>
<script src="/js/bootstrap-datetimepicker.js"></script>
<script>
\$(function() {
    \$.ajaxSetup({
\tasync: false
    });
    \$( ".datetimepicker" ).each(function(){
\t\$(this).datetimepicker({
\t    locale: '{$locale}',
\t    format: 'YYYY-MM-DD HH:mm'
\t    });
\t});
    \$("#category_id").change(function(){
\t\$.getJSON("/admin_training/courses/"+\$("#category_id :selected").val(),
\t\t function(data){
\t\t    \$("#course_id").html('');
\t\t    \$.each(data,function(i,field){
\t\t\t\$('#course_id').append(\$('<option>', {
\t\t\t    value: field[0],
\t\t\t    text: field[1]
\t\t\t    }));
\t\t    });
\t    });
    });
    \$("#searchuser").keyup(function(){
\t\$('#usermenu').html('');
\tif (\$("#searchuser").val().length > 0)
\t\$.getJSON("/admin_training/finduser/{$this->id}?search="+\$("#searchuser").val(),
\tfunction(res){
\t    \$.each(res,function(i,data){
\t    \$('#usermenu').append('<a class="list-group-item adduser list-group-item-info" '+
\t\t\t\t    'href="#" onclick="return adduser('+data['id']+');"><h4>'+
\t\t\t\t    data['name']+' <small>'+data['email']+'</small></h4><p>'+data['city']+' / '+data['company']+
\t\t    '</p></a>'+"\\n");
\t\t    });
\t});
    });
  });
function removeuser(id){
    \$.getJSON("/admin_training/removeuser/{$this->id}/"+id,function(data){
\t\$('table#users tr#row'+id).remove();
    });
    return false;
}
function adduser(id){
    \$.getJSON("/admin_training/adduser/{$this->id}/"+id,function(data){
\t\$('#users').find('tbody').append('<tr id="row'+data['id']+'"><td>'+data['name']+'</td><td>'+
\t\tdata['email']+'</td><td>'+data['company']+' / '+data['city']+'</td><td>'+
\t\t'<a href="#" onclick="return removeuser('+data['id']+');">'+
\t\t'<span class="glyphicon glyphicon-trash"></span></a></td></tr>');
\t\$('#usermenu').html('');
    });
    
    return false;
}
  
</script>

EOF;
    }
Esempio n. 15
0
    function displayFooter()
    {
        parent::displayFooter();
        $translator = new Translator();
        $question = new Question();
        foreach ($question->types as $key => $name) {
            $types .= "<option value=\"{$key}\">" . htmlspecialchars($translator->{$name}) . "</option>";
        }
        echo <<<EOF
<script src="/js/tinymce.min.js"></script>
<script>
\$(function() {
    \$.ajaxSetup({
        async: false
    });

 \$("a[data-toggle='add']").each(function(){
        \$(this).click(function(){
\t    \$.getJSON("/admin_questions/find/{$this->id}",
    \t\tfunction(data){
        \t    \$('#question-list').before('<li class="list-group-item"><form action="/admin_questions/save/{$this->id}" method="post">'+
                    '<input type="hidden" name="id" value="'+data['id']+'">'+
\t\t    '<select name="type_id" class="form-control">{$types}</select>'+
\t\t    '<textarea name="data" id="data" rows=5 class="form-control"></textarea>'+
\t\t    '<input name="count" type="number" min="1" placeholder="Answers" class="form-control">'+
\t\t    '<input name="answer" class="form-control">'+
\t\t    '<input type="submit" class="btn btn-primary">'+
\t\t    '<a href="/admin_questions/delete/{$this->id}/'+data['id']+'" class="btn btn-danger">{$translator->Cancel}</a>'+"</form></li>\\n");
\t\t    tinymce.init({selector:'textarea#data',
\t\t    plugins: [
\t\t\t    "advlist autolink lists link image charmap print preview anchor",
\t\t\t    "searchreplace visualblocks code fullscreen",
\t\t\t    "insertdatetime media table contextmenu paste"
\t\t\t],
\t\t\ttoolbar: "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist | link image",
\t\t\tautosave_ask_before_unload: false,
\t\t\tmin_height: 160,
\t\t\theight : 180});

    \t\t});
    \t    return false;
    \t});

});
 \$("a[data-toggle='del']").each(function(){
        \$(this).click(function(){
\t    document.location.href="/admin_questions/delete/"+\$(this).attr('parent-id')+"/"+\$(this).attr('item-id');
    \t});

});

 \$("a[data-toggle='edit']").each(function(){
        \$(this).click(function(){
\t    item=\$(this).attr('item-id');
\t    \$.getJSON("/admin_questions/load/{$this->id}/"+item,
    \t\tfunction(data){
        \t    \$('.question-item[item-id="'+data['id']+'"]').html('<form action="/admin_questions/save/{$this->id}" method="post">'+
                    '<input type="hidden" name="id" value="'+data['id']+'">'+
\t\t    '<select name="type_id" class="form-control type-id" id="'+data['id']+'">{$types}</select>'+
\t\t    '<textarea name="data" id="data" rows=5 class="form-control">'+data['data']+'</textarea>'+
\t\t    '<input name="count" class="form-control" type="number" min="1" placeholder="Answers" value="'+data['count']+'">'+
\t\t    '<input name="answer" class="form-control" value="'+data['answer']+'">'+
\t\t    '<input type="submit" class="btn btn-primary">'+
\t\t    '<a href="/admin_questions/delete/{$this->id}/'+data['id']+'" class="btn btn-danger">{$translator->Cancel}</a>'+"</form>\\n");
\t\t    \$('#'+data['id']+'.type-id').val(data['type_id']);
\t\t    tinymce.init({selector:'textarea#data',
\t\t    plugins: [
\t\t\t    "advlist autolink lists link image charmap print preview anchor",
\t\t\t    "searchreplace visualblocks code fullscreen",
\t\t\t    "insertdatetime media table contextmenu paste"
\t\t\t],
\t\t\ttoolbar: "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist | link image",
\t\t\tautosave_ask_before_unload: false,
\t\t\tmin_height: 160,
\t\t\theight : 180});
    \t\t});
\t    return false;
    \t});

});
  });


</script>


EOF;
    }
Esempio n. 16
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $course = new Course();
        $data = $course->get(array('id' => $this->id));
        foreach ($data as $key => $val) {
            $data[$key] = htmlspecialchars($val, ENT_QUOTES);
        }
        $path = preg_replace('/\\//', '</li><li>', $this->path);
        echo <<<EOF
<h4>{$data[category_name]}</h4>
<h2  class="page-header">{$data[name]}</h2>
<ol class="breadcrumb">
\t<li><a href="/admin_manager/list/{$this->id}"><span class="glyphicon glyphicon-home"></span> {$translator->Back}</a>
\t<li>{$path}
</ol>

EOF;
        if (preg_match('/.*(jpe?g|png|gif|svg)$/i', $this->path)) {
            $type = "image";
        }
        if (preg_match('/.*(txt|htm|html)$/i', $this->path)) {
            $type = "text";
        }
        if (preg_match('/.*(swf|pdf)$/i', $this->path)) {
            $type = "embed";
        }
        if (preg_match('/.*(mov|mp4|wmv|avi)$/i', $this->path)) {
            $type = "video";
        }
        if (preg_match('/.*(mp3)$/i', $this->path)) {
            $type = "audio";
        }
        switch ($type) {
            case 'text':
                echo <<<EOF
<div class="col-lg-8">
    <form action="/admin_editor/save/{$this->id}/{$this->path}" method="post">
\t\t<textarea name="data" id="data" rows=5 class="form-control">

EOF;
                echo htmlspecialchars(file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/../files/courses/' . $this->id . '/' . $this->path));
                echo <<<EOF
    \t\t</textarea>
<button type="submit" class="btn btn-md btn-primary">{$translator->Save}</button>\t\t
    </form>
</div>
EOF;
                break;
            case 'image':
                echo <<<EOF
\t\t<img src="/admin_editor/get_image/{$this->id}/{$this->path}" class="img-responsive">
\t\t
EOF;
                break;
            case 'video':
                echo <<<EOF
\t\t<div class="embed-responsive embed-responsive-16by9">
\t\t  <video class="embed-responsive-item" controls>
\t\t  <source src="/admin_editor/get_image/{$this->id}/{$this->path}" ></source>
\t\t  </video>
\t\t</div>
EOF;
                break;
            case 'audio':
                echo <<<EOF
\t\t<div class="">
\t\t  <audio class="embed-responsive-item" controls>
\t\t  <source src="/admin_editor/get_image/{$this->id}/{$this->path}" >
\t\t  </audio>
\t\t</div>
EOF;
                break;
            case 'embed':
                echo <<<EOF
\t\t<div class="embed-responsive embed-responsive-16by9">
\t\t  <object data="/admin_editor/get_image/{$this->id}/{$this->path}" class="embed-responsive-item"></object>
\t\t</div>
EOF;
                break;
        }
    }
 /**
  * @param AuthorizedPage $Page
  * @param string $Email
  * @param string $AccessCode
  * @param string $ClientKey
  * @param string $ClientInfo
  * @return Authorization|boolean
  */
 public static function Fetch(AuthorizedPage $Page, $Email, $AccessCode, $ClientKey = null, $ClientInfo = null)
 {
     if (!$Page || !$Page->ID || !$Page->IsAllowedEmail(strtolower($Email))) {
         return false;
     }
     return Authorization::get()->filter(array('PageID' => $Page->ID, 'Email' => strtolower($Email), 'AccessCode' => strtoupper($AccessCode), 'ClientKey' => $ClientKey ? $ClientKey : Authorization::generateClientKey(), 'ClientInfo' => $ClientInfo ? $ClientInfo : Authorization::generateClientInfo()))->First();
 }
Esempio n. 18
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $trainer = new Trainer();
        $page = $_GET['page'];
        $offset = intval($page) * ITEMS_IN_PAGE;
        if (isset($_GET['search'])) {
            unset($_GET['search']);
            unset($_GET['page']);
            $search = $_GET;
        } else {
            $search = null;
        }
        $cnt = $trainer->getCount($search);
        if (sizeof($_GET) > 0) {
            foreach ($_GET as $key => $val) {
                $values[$key] = htmlspecialchars($val, ENT_QUOTES);
            }
        }
        if ($cnt > ITEMS_IN_PAGE) {
            $pagination = $this->addPaginator($cnt, $page);
        }
        echo <<<EOF
<h2  class="page-header">{$translator->Trainers_header} <span class="badge">{$cnt}</span></h2>
    <div class="row">
\t<div class="btn-group">
\t<a href="/admin_trainer/new" class="btn btn-sm btn-default">
\t    <span class="glyphicon glyphicon-plus"></span><span class="glyphicon glyphicon-user"></span> {$translator->Add}</a>
\t<button class="btn btn-sm btn-default"  data-toggle="collapse" data-target="#filter">
\t    <span class="glyphicon glyphicon-filter"></span> {$translator->Filter}
\t</button>
\t</div>
    </div>
    <div class="row">
        <div class="col-md-5 collapse" id="filter">
\t    <form role="form" class="form-horizontal" action="?" method="get">
\t\t<div class="form-group">
\t\t    <div class="form-group">
\t\t    <label for="name" class="control-label col-sm-3">{$translator->Name}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="name" name="name" value="{$values[name]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <label for="email" class="control-label col-sm-3">{$translator->Email}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="email" name="email" value="{$values[email]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <label for="data" class="control-label col-sm-3">{$translator->Data}:</label>
\t\t    <div class="col-sm-8">
\t\t    <input type="text" class="form-control" id="data" name="data" value="{$values[data]}">
\t\t    </div>
\t\t    </div>
\t\t    <div class="form-group">
\t\t    <div class="col-sm-offset-3 col-md-10">
\t\t    <input class="sr-only" name="search" value="1">
\t\t    <button type="submit" class="btn btn-sm btn-default">{$translator->Apply}</button>
\t\t    </div>
\t\t    </div>
\t\t</div>
\t    </form>
\t</div>
    </div>
{$pagination}
          <div class="table-responsive">
            <table class="table table-striped">
              <thead>
                <tr>
                  <th>#</th>
                  <th>{$translator->Name}</th>
                  <th>{$translator->Email}</th>
                  <th>{$translator->Data}</th>
                </tr>
              </thead>
              <tbody>

EOF;
        $enum = $trainer->enumerate($search, $offset, ITEMS_IN_PAGE);
        if (is_object($enum)) {
            $i = 1 + $offset;
            foreach ($enum as $key => $data) {
                if (strlen($data['data']) > 50) {
                    $data['data'] = '<small>' . $data['data'] . '</small>';
                } else {
                    if (strlen($data['data']) > 200) {
                        $data['data'] = '<small>' . substr($data['data'], 0, 200) . '...</small>';
                    }
                }
                echo "                <tr>\n                  <td>{$i}</td>\n                  <td>{$data[name]}</td>\n                  <td>{$data[email]}</td>\n                  <td>{$data[data]}</td>\n                  <td><a href=\"/admin_trainer/edit/{$data[id]}\" title=\"{$translator->edit}\"><span class=\"glyphicon glyphicon-user\"></span></a></td>\n                  <td><a href=\"/admin_trainer/delete/{$data[id]}\" title=\"{$translator->del}\" onClick=\"return confirm('{$translator->AreYouSure}');\"><span class=\"glyphicon glyphicon-trash\"></span></a></td>\n                </tr>" . NL;
                $i++;
            }
        }
        echo <<<EOF
\t    </table>
\t</div>

EOF;
    }
Esempio n. 19
0
    function displayFooter()
    {
        parent::displayFooter();
        $locale = LC;
        echo <<<EOF
<script src="/js/moment-with-locales.js"></script>
<script src="/js/bootstrap-datetimepicker.js"></script>
<script>
\$(function() {
            \$( ".datetimepicker" ).each(function(){
             \$(this).datetimepicker({
                locale: '{$locale}',
                format: 'YYYY-MM-DD HH:mm'
                });
            });
    });
</script>

EOF;
    }
Esempio n. 20
0
    function displayBody()
    {
        parent::displayBody();
        $translator = new Translator();
        $training = new Training();
        echo <<<EOF
<h2  class="page-header">{$translator->MyCourses}</h2>

EOF;
        $enum = $training->enumerate(array('user_id' => $_SESSION['user_id'], 'active' => 'true'));
        if ($enum) {
            foreach ($enum as $key => $data) {
                $now = new DateTime('now');
                $finish = new DateTime($data['finish']);
                // check for timeout and set new status
                switch ($data['status_id']) {
                    case Training::CREATED:
                    case Training::STARTED:
                    case Training::EXAM:
                    case Training::EXAM_STARTED:
                        if ($now > $finish) {
                            $training->update($data['id'], array('status_id' => Training::TIMEOUT));
                            $data['status_id'] = Training::TIMEOUT;
                        }
                    default:
                }
                // prepeare data for display
                switch ($data['status_id']) {
                    case Training::TIMEOUT:
                        $data['result_desc'] = "<span class=\"label label-danger\">{$translator->Overtime}</span>";
                        $actions = "<a href=\"/course/{$data[course_id]}\" class=\"btn btn-default btn-md\">\n\t        <span class=\"glyphicon glyphicon glyphicon-repeat\"></span> {$translator->Repeat}</a>\n\t        <a href=\"/mycourses/delete/{$data[id]}\" class=\"btn btn-default btn-md\"\n\t        onclick='return confirm(\"{$translator->AreYouSure}\");'>\n\t        <span class=\"glyphicon glyphicon glyphicon-trash\"></span> {$translator->Delete}</a>";
                        break;
                    case Training::CREATED:
                        $data['result_desc'] = "<span class=\"label label-default\">{$translator->Not_started}</span>";
                        $actions = "<a href=\"/learn/{$data[course_hash]}\" class=\"btn btn-primary btn-md\">\n    \t    <span class=\"glyphicon glyphicon-play\"></span> {$translator->Learn}</a>\n    \t    <a href=\"/mycourses/dismiss/{$data[id]}\" class=\"btn btn-danger btn-md\">\n    \t    <span class=\"glyphicon glyphicon-trash\"></span> {$translator->Dismiss}</a>";
                        break;
                    case Training::DELETED:
                        $data['result_desc'] = "<span class=\"label label-default\">{$translator->Deleted}</span>";
                        $actions = "<a href=\"/course/{$data[course_id]}\" class=\"btn btn-default btn-md\">\n            <span class=\"glyphicon glyphicon glyphicon-repeat\"></span> {$translator->Repeat}</a>\n            <a href=\"/mycourses/delete/{$data[id]}\" class=\"btn btn-default btn-md\"\n            onclick='return confirm(\"{$translator->AreYouSure}\");'>\n\t    <span class=\"glyphicon glyphicon glyphicon-trash\"></span> {$translator->Delete}</a>";
                        break;
                    case Training::STARTED:
                        $data['result_desc'] = "<span class=\"label label-warning\">{$translator->Not_tested}</span>";
                        $actions = "<a href=\"/learn/{$data[course_hash]}\" class=\"btn btn-primary btn-md\">\n\t    <span class=\"glyphicon glyphicon-play\"></span> {$translator->Learn}</a>\n\t    ";
                        break;
                    case Training::EXAM:
                    case Training::EXAM_STARTED:
                        $data['result_desc'] = "<span class=\"label label-danger\">{$translator->NotCertified}</span>" . "<div>{$translator->Result}: " . intval($data['result']) . "%({$data[answers]}/{$data[questions]})</div>";
                        $actions = "<a href=\"/exam/{$data[exam_hash]}/\" class=\"btn btn-warning btn-md\">\n\t    <span class=\"glyphicon glyphicon-check\"></span> {$translator->Test}</a>";
                        break;
                    case Training::FAILED:
                        $data['result_desc'] = "<span class=\"label label-danger\">{$translator->NotCertified}</span>" . "<div>{$translator->Result}: " . intval($data['result']) . "%({$data[answers]}/{$data[questions]})</div>";
                        $actions = "<a href=\"/course/{$data[course_id]}\" class=\"btn btn-default btn-md\">\n            <span class=\"glyphicon glyphicon glyphicon-repeat\"></span> {$translator->Repeat}</a>\n            <a href=\"/mycourses/delete/{$data[id]}\" class=\"btn btn-default btn-md\"\n            onclick='return confirm(\"{$translator->AreYouSure}\");'>\n\t    <span class=\"glyphicon glyphicon glyphicon-trash\"></span> {$translator->Delete}</a>";
                        break;
                    case Training::FINISHED:
                        if ($data['exam'] == 't') {
                            $data['result_desc'] = "<span class=\"label label-success\">{$translator->Certified}</span>" . "<div>{$translator->Result}: " . intval($data['result']) . "%({$data[answers]}/{$data[questions]})</div>";
                            $actions = "<a href=\"/certificate/{$data[course_hash]}\" class=\"btn btn-success btn-md\">\n\t\t<span class=\"glyphicon glyphicon-certificate\"></span> {$translator->Certificate}</a>";
                        } else {
                            $data['result_desc'] = "<span class=\"label label-success\">{$translator->Certified}</span>";
                            $actions = "<a href=\"/certificate/{$data[course_hash]}\" class=\"btn btn-success btn-md\">\n\t\t<span class=\"glyphicon glyphicon-thumbs-star\"></span> {$translator->Certificate}</a>";
                        }
                        break;
                    default:
                }
                if ($data['finished']) {
                    $finish = $data['finished'];
                } else {
                    $finish = $data['finish'];
                }
                echo <<<EOF
<div class="panel panel-default col-md-6 col-lg-4 mycourse">
    <div class="panel-heading overflow-hidden">
\t<p class="text-muted">{$data[category_name]}</p>
\t<h4><a href="/course/{$data[course_id]}">{$data[course_name]}</a></h4>
    </div>
    <div class="panel-body">
\t<div class="row">
\t    <div class="col-md-8">
\t<p>{$translator->Start}: {$data[start]}</p>
\t<p>{$translator->Finish}: {$finish}</p>
\t    </div>
\t    <div class="col-md-4">
\t\t{$data[result_desc]}
\t    </div>
\t</div>
    \t<div class="row">
    \t{$actions}
\t</div>
    </div>
</div>

EOF;
            }
        } else {
            echo <<<EOF
<div class="panel panel-default col-lg-8">
    <div class="panel-body">
\t{$translator->No_courses}
    </div>
</div>

EOF;
        }
    }