| Current Path : /var/www/html/jkdm/common/components/ |
| Current File : /var/www/html/jkdm/common/components/PortalModule.php |
<?php
namespace common\components;
use yii\BaseYii as Yii;
use common\components\LanguageSwitcher;
use yii\db\Expression;
use backend\models\frontendmenu\FrontendRoleMapping;
use common\widgets\inspinia\InspiniaAsset;
use yii\helpers\Url;
use common\components\Helpers;
use yii\helpers\Html;
class PortalModule {
/***
*REGISTER TAG MODULE NEEDED FOR EVERY MODULE
* noted that hierarchy of modules depend on it's position from top most to bottom
*/
public $tag = [
'get',
'php',
'menu',
'render',
'flash',
'baseurl',
'url',
'translate',
'langswitch',
'slider',
'fgmodal',
'cpmodal',
// 'langswitchstub',
];
/*** MODULE FUNCTION. NOTE: ALL FUNCTION MUST BE REGISTER USING TAG ***/
/***
* EQUIVALENT TO YII TRANSLATE
*/
public function translate($arg)
{
return Yii::t("portal", $arg);
}
/***
* PHP BLOCK CODE. STILL NEED OPENTAG AND CLOSE TAG <?php ?>
* param String JSON path / param
*/
public function php($arg)
{
$tmpfname = @tempnam(sys_get_temp_dir(), "tmp");
$handle = fopen($tmpfname, "w+");
fwrite($handle, $arg);
fclose($handle);
include($tmpfname);
$output = ob_get_contents(); // This contains the output of yourtemplate.php
ob_end_clean();
unlink($tmpfname);
return $output;
}
public function menu(){
$assetBundle = InspiniaAsset::register(Yii::$app->view);
echo '<link rel="stylesheet" href="'.$assetBundle->baseUrl.'/css/bootstrap.css">';
$menu = FrontendRoleMapping::find()->where(['role_code'=>'PUBLIC','parent_id'=>0])->orderBy('sort ASC')->all();
/*first level*/
$html = '<nav class="slide-menu" id="main-nav" >';
$html .= '<div class="welcome-message"><h4><strong>MYDLV</strong></h5>'.
'<span class="user-name">(SISTEM LEVI PELEPASAN)</span>'.
'</div>';
$html .= '<ul>';
foreach ($menu as $mval) {
$html .= '<li class="'.$mval->menu->menu_class.'"><a href="'.$mval->menu->menu_link.'">'.$mval->menu->menu_name.'</a>';
$this->menuchild($mval->id,$html);
$html .= '</li>';
}
$html .= '</ul>';
$html .= '</nav>';
return $html;
}
/***
* EQUIVALENT TO YII RENDER
* param String JSON path / param
*/
public function render($arg){
$arg = json_decode($arg);
$param = [];
foreach ($arg->param as $pkey => $pvalue) {
if($pkey=='model')
$param[$pkey] = new $pvalue();
else
$param[$pkey] = $pvalue;
}
return yii::$app->view->render($arg->file, $param);
}
/***
* EQUIVALENT TO YII URL HELPER
* param String JSON path / param
*/
public function url(string $arg){
/*convert json*/
$arg = $this->json($arg);
if( !empty($arg) && is_object($arg) ){
/*path*/
$param[] = $arg->path;
if( !empty($arg->param) )
foreach ($arg->param as $pkey => $pvalue) {
if(!empty($pvalue))
$param[$pkey] = $pvalue;
}
return Url::to($param);
}
}
/***
* FLASH MESSAGE
* param String name of alert
*/
public function flash($arg){
if(Yii::$app->session->hasFlash($arg)){
$html = '<div class="alert alert-'.$arg.' alert-dismissible" role="alert">'.
'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>'
. Yii::$app->session->getFlash($arg) .
'</div>';
return $html;
}
}
/***
* GET REQUEST EQUIVALENT
* param String
*/
public function get($arg){
return isset($_GET[$arg]) ? $_GET[$arg] : null;
}
/*** INTERNAL FUNCTION / IS NOT MODULE ****/
public function json($arg){
/*convert to json*/
$json = json_decode($arg);
if(!empty(json_last_error()))
throw new \Exception('<span style="color:red">ERROR --> '.Helpers::jsonerrcode(json_last_error()).'</span><br> JSON STRING --> '.$arg, 1);
else
return $json;
}
public function menuchild($id, &$html=null){
$menu = FrontendRoleMapping::find()->where(['parent_id' => $id])->orderBy('sort ASC')->all();
if(!empty($menu)){
/* parent */
$html .= '<ul>';
/*recursion*/
foreach($menu as $mval){
$html .= '<li class="'.$mval->menu->menu_class.'"><a tabindex="-1" href="'.$mval->menu->menu_link.'">'.$mval->menu->menu_name.'</a>';
$this->menuchild($mval->id, $html);
$html .= '</li>';
}
$html .= '</ul>';
}
}
public function baseurl(){
return Url::base(true);
}
public function langswitch(){
$assetBundle = (InspiniaAsset::register(Yii::$app->view));
return languageSwitcher::Widget(["bundleBase"=>$assetBundle->baseUrl]);
}
public function fgmodal(){
echo ' <div class="modal fade details-modal" id="forgetpass" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span class="fa fa-times fa-2"></span></button>
<h4 class="modal-title">Lupa Kata Laluan / Forget Password</h4>
</div>
<div class="modal-body">
'.Html::beginForm(['forgetpass'],'post',['id'=>'forgetpassform']).'
<div class="alert alert-info">
<span style="color:#696E74">Sila Masukan E-mel, Kod Pendaftaran untuk Mendapatkan kata laluan sementara.</span>
<span style="color:#696E74;font-style:italic;">Please Enter Email, Registrant ID to Obtain a temporary password.</span>
</div>
<div class="form-group">
<label>E-mel / Email</label>
'.Html::textInput('email',null,['class'=>'form-control','required' => true]).'
</div>
<div class="form-group">
<label>Kod Pendaftaran / Registrant ID</label>
'.Html::textInput('registrant_id',null,['class'=>'form-control','required' => true]).'
</div>
<button><i class="fa fa-save"></i> Hantar</button>
'.Html::endForm().'
</div>
</div>
</div>
</div>';
}
public function cpmodal(){
echo ' <div class="modal fade details-modal" id="changepass" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><span class="fa fa-times fa-2"></span></button>
<h4 class="modal-title">Tukar Kata Laluan | Change Password</h4>
</div>
<div class="modal-body">
'.Html::beginForm(['changepass'],'post',['id'=>'changepassform']).'
<div class="alert alert-info">
<span style="color:#696E74">Sila Masukan Maklumat yang diperlukan.</span><br>
<span style="color:#696E74;font-style:italic;">Please fill in required information.</span>
</div>
<div class="form-group">
<label>Kata laluan lama / Old Password</label>
'.Html::passwordInput('oldpassword',null,['class'=>'form-control','required' => true]).'
</div>
<div class="form-group">
<label>Kata laluan baru / New Password</label>
'.Html::passwordInput('password',null,['class'=>'form-control','required' => true]).'
</div>
<!--registrant id -->
'.Html::hiddenInput('userid', Yii::$app->user->identity->id, ['class'=>'form-control']).'
<button><i class="fa fa-save"></i> Hantar | Submit</button>
'.Html::endForm().'
</div>
</div>
</div>
</div>';
}
// public function langswitchstub(){
// $assetBundle = (InspiniaAsset::register(Yii::$app->view));
// return languageSwitcher::Widget(["bundleBase"=>$assetBundle->baseUrl]);
// }
}