Viewing file: IPanelApp.php (21.6 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
if(!class_exists('IPanel'))
require_once(APP_PATH."/cms/IPanel.php");
if(!class_exists('IPanelMenu'))
require_once(APP_PATH."/cms/IPanelMenu.php");
if(!class_exists('IPanelConfig'))
require_once(APP_PATH."/cms/IPanelConfig.php");
if(!class_exists('IPanelForm'))
require_once(APP_PATH."/cms/IPanelForm.php");
class IPanelApp extends IPanel {
public function setMenu(){
$this->menu = new IPanelMenu($this->getArea());
}
public function setConfig(){
$this->config = new IPanelConfig($this->getArea(), $this->getMode());
}
public function getCurrentTitle(){
return $this->getMenu()->getCurrentTitle();
}
public function getCurrentDescription(){
return $this->getMenu()->getCurrentDescription();
}
public function getCurrentAlias(){
return $this->getMenu()->getCurrentAlias();
}
public function writeStatusOptions(){
if($this->getConfig()->getParameter("status") != null){
/* $control = new GenericCtrl($this->getArea());
$arrayStatus = $control->getStatusList();
$html = "<h4>";
$html.= " <a title='Listar todos os registros' class='stselect' href='#todos'>Tudo</a> (".count($arrayStatus).") |";
foreach($arrayStatus as $status){
$html.= "<a title='Listar ".$status[status]."' href='#publicados'>Publicado</a> (".$status['total'].") |";
}
$html.= "</h4>";*/
}
}
/**
* Gera o código html para o campo de seleção de tipo de pesquisa
*
* @return html
*/
public function writeSearchForm($field, $valueIni, $valueEnd, $get, $isPopUp=false){
$form = new IPanelForm($this->getArea());
$form->setConfig($this->getConfig());
$form->setArea($this->getArea());
if($this->getConfig()->getParameter("searchType") == "advanced"){
echo $form->writeAdvancedSearchForm($get, $isPopUp);
}else{
echo $form->writeSearchForm($field, $valueIni, $valueEnd, $isPopUp, $get);
}
}
/**
* Gera o código html para o formulário de geração de relatório
*
* @return html
*/
public function writeSearchReport(){
$form = new IPanelForm($this->getArea());
$form->setConfig($this->getConfig());
$form->setArea($this->getArea());
echo $form->writeAdvancedSearchForm(null, false, true);
}
/**
* Retorna o código html para lista de detalhes do registro
* @param Object $object Objeto atual a ser populado no formulario
*
* @return html
*/
public function writeDetails($object){
$functions = new IPanelFunctions();
$arrayGroups = array();
// $htmlDetail = '<div id="flip-tabs" class="left">';
// $htmlDetail.= ' <ul id="flip-navigation-'.$object['id'].'" class="flip-navigation">';
$htmlDetail = '<div id="caixa">';
$htmlDetail.= '<p id="abas">';
foreach($this->getConfig()->getFields() as $fields){
foreach($fields as $field => $value){
$html = "";
if($value['detail'] == true){
if(empty($value['detailGroup'])){
$group = $this->getConfig()->getParameter("detailGroupDefault");
if(empty($group)){
$group = "Informações";
}
} else{
$group = $value['detailGroup'];
}
if(!in_array($group, $arrayGroups)){
if(count($arrayGroups) == 0){
$class = 'selected';
$color = "#FFCC00";
}else{
$class = "";
$color = "#000000";
}
// $htmlDetail.= '<li class="flip-navigation li '.$class.'"><a href="javascript:;" id="tab_'.count($arrayGroups).'">'.$group.'</a></li>';
$htmlDetail.= ' <a href="#aba'.count($arrayGroups).'" class="'.$class.'">'.$group.'</a>';
// ${"div_".count($arrayGroups)} = '<div class="flip-container div" style="background:'.$color.' !important">';
${"li_".count($arrayGroups)} = '<li id="aba'.count($arrayGroups).'">';
$arrayGroups = array_merge($arrayGroups, array($group));
}
//
// Verifica se foi especificado uma função para tratamento do campo
//
$subfield = explode(".", $field);
switch(count($subfield)){
case "1": $valueField = $object[$subfield[0]]; break;
case "2": $valueField = $object[$subfield[0]][$subfield[1]]; break;
case "3": $valueField = $object[$subfield[0]][$subfield[1]][$subfield[2]]; break;
case "4": $valueField = $object[$subfield[0]][$subfield[1]][$subfield[2]][$subfield[3]]; break;
}
if($value['listFunction'] != ""){
$function = $value['listFunction'];
$valueField = $functions->$function($valueField);
}
if($value['type'] == "image"){
$uploads = $this->getConfig()->getParameter("uploads.folder");
$html.= ' <li style="min-height:22px; border-bottom:0px; width:900px; clear:both;"><div align="right" width="110" style="float:left; padding-right:5px; width:110px;"><strong> '.$value['name'].':</strong></div>';
$html.= ' <div style="width:765px; float:left; margin-left:15px;"><img src="../uploads/'.$uploads.'/'.$object['id'].'/'.$valueField.'" width="120"/></div></li>';
}
else if($value['type'] == "file"){
$uploads = $this->getConfig()->getParameter("uploads.folder");
$html.= ' <br/><li style="min-height:25px;border-bottom:0px; width:900px; clear:both;"><div align="right" width="110" style="float:left;border-bottom:0px; width:110px; padding-right:5px"><strong>'.$value['name'].':</strong></div>';
$html.= ' <div style="width:765px; float:left; margin-left:15px;"><a href="../uploads/'.$uploads.'/'.$object['id'].'/'.$valueField.'" target="_blank"> '.$valueField.'</a></div><div style="clear:both !important"></div></li>';
}
else{
$html.= ' <div class="cont-colunas"><div class="coluna-esq"><strong> '.$value['name'].':</strong> </div>';
$html.= ' <div class="coluna-dir"> '.$valueField.'</div></div> ';
// $html.= ' <br/><li style="min-height:25px;border-bottom:0px; width:900px; clear:both;"><div align="right" width="110" style="float:left; width:110px"><strong> '.$value['name'].':</strong></div>';
// $html.= ' <div style="width:765px; float:left; margin-left:15px;"> '.$valueField.'</div></li>';
// $html.= ' <div align="right" width="110" style="float:left; width:110px; height:35px"><strong> '.$value['name'].':</strong></div>';
// $html.= ' <div style="width:300px; float:left; margin-left:15px; height:35px"> '.$valueField.'</div>';
}
$key = array_search($group, $arrayGroups);
${"li_".$key}.= $html;
}
}
// $htmlDetail.= '</ul>';
$htmlDetail.= '</p>';
$htmlDetail.= '<ul id="conteudos">';
// $htmlDetail.= '<form id="flip-container-'.$object['id'].'" class="flip-container">';
for($i=0; $i < count($arrayGroups); $i++){
// $htmlDetail.= ${"div_".$i}."</div>";
$htmlDetail.= ${"li_".$i}."</li>";
}
// $htmlDetail.= "</form>";
// $htmlDetail.= "</div>";
$htmlDetail.= "</ul>";
$htmlDetail.= "</div>";
/*
$htmlDetail.= '<script type="text/javascript">';
$htmlDetail.= ' $("document").ready(function(){';
$htmlDetail.= ' $("#flip-container-'.$object['id'].'").quickFlip();';
$htmlDetail.= ' $("#flip-navigation-'.$object['id'].' .flip-navigation li a").each(function(){';
$htmlDetail.= ' $(this).click(function(){ alert("teste");';
$htmlDetail.= ' $("#flip-navigation-'.$object['id'].' .flip-navigation li").each(function(){';
$htmlDetail.= ' $(this).removeClass("flip-navigation li selected");';
$htmlDetail.= ' });';
$htmlDetail.= ' $(this).parent().addClass("flip-navigation li selected");';
$htmlDetail.= ' var flipid = $(this).attr("id").substr(5);';
$htmlDetail.= ' $("#flip-container-'.$object['id'].'").quickFlipper({ }, flipid, 1);';
$htmlDetail.= ' return false;';
$htmlDetail.= ' });';
$htmlDetail.= ' });';
$htmlDetail.= '});';
$htmlDetail.= '</script>';
* */
}
return $htmlDetail;
}
/**
* Retorna o código html para script de mudança de aba
* @param Object $object Objeto atual a ser populado no formulario
*
* @return html
*/
public function writeScriptDetailsTab($id, $group){
$arrayGroups = array();
$htmlDetail = '<div id="flip-tabs-'.$object['id'].'" class="left">';
$htmlDetail.= ' <ul id="flip-navigation" >';
foreach($this->getConfig()->getFields() as $fields){
foreach($fields as $field => $value){
$html = "";
if($value['detail'] == true){
if(empty($value['detailGroup'])){
$group = $this->getConfig()->getParameter("detailGroupDefault");
if(empty($group)){
$group = "Informações";
}
} else{
$group = $value['detailGroup'];
}
if(!in_array($group, $arrayGroups)){
if(count($arrayGroups) == 0){
$class = 'class="selected"';
}else{
$class = "";
}
$htmlDetail.= '<li><a href="#" id="tab_'.count($arrayGroups).'" '.$class.'>'.$group.'</a></li>';
${"div_".count($arrayGroups)} = '<div class="">';
$arrayGroups = array_merge($arrayGroups, array($group));
}
//
// Verifica se foi especificado uma função para tratamento do campo
//
$subfield = explode(".", $field);
switch(count($subfield)){
case "1": $valueField = $object[$subfield[0]]; break;
case "2": $valueField = $object[$subfield[0]][$subfield[1]]; break;
case "3": $valueField = $object[$subfield[0]][$subfield[1]][$subfield[2]]; break;
case "4": $valueField = $object[$subfield[0]][$subfield[1]][$subfield[2]][$subfield[3]]; break;
}
if($value['listFunction'] != ""){
$function = $value['listFunction'];
$valueField = $functions->$function($valueField);
}
if($value['type'] == "image"){
$uploads = $this->getConfig()->getParameter("uploads.folder");
$html.= ' <li style="min-height:22px; border-bottom:0px; width:900px; clear:both;"><div align="right" width="110" style="float:left; padding-right:5px; width:110px;"><strong> '.$value['name'].':</strong></div>';
$html.= ' <div style="width:765px; float:left; margin-left:15px;"><img src="../uploads/'.$uploads.'/'.$object['id'].'/'.$valueField.'" width="120"/></div></li>';
}
else if($value['type'] == "file"){
$uploads = $this->getConfig()->getParameter("uploads.folder");
$html.= ' <br/><li style="min-height:25px;border-bottom:0px; width:900px; clear:both;"><div align="right" width="110" style="float:left;border-bottom:0px; width:110px; padding-right:5px"><strong>'.$value['name'].':</strong></div>';
$html.= ' <div style="width:765px; float:left; margin-left:15px;"><a href="../uploads/'.$uploads.'/'.$object['id'].'/'.$valueField.'" target="_blank"> '.$valueField.'</a></div><div style="clear:both !important"></div></li>';
}
else{
$html.= ' <br/><li style="min-height:25px;border-bottom:0px; width:900px; clear:both;"><div align="right" width="110" style="float:left; width:110px"><strong> '.$value['name'].':</strong></div>';
$html.= ' <div style="width:765px; float:left; margin-left:15px;"> '.$valueField.'</div></li>';
// $html.= ' <div align="right" width="110" style="float:left; width:110px; height:35px"><strong> '.$value['name'].':</strong></div>';
// $html.= ' <div style="width:300px; float:left; margin-left:15px; height:35px"> '.$valueField.'</div>';
}
$key = array_search($group, $arrayGroups);
${"div_".$key}.= $html;
}
}
$htmlDetail.= '</ul>';
$htmlDetail.= '<form id="flip-container">';
for($i=0; $i < count($arrayGroups); $i++){
$htmlDetail.= ${"div_".$i}."</div>";
}
$htmlDetail.= "</form>";
$htmlDetail.= "</div>";
}
return $htmlDetail;
}
/**
* Gera o código html do formulário do setor atual
* Os campos são criados de acordo com a marcação form: true no arquivo de configuração
* @param Object $object Objeto a ser usado para popular o formulário
*
* @return html
*/
public function writeForm($object, $group=""){
$form = new IPanelForm();
$form->setConfig($this->getConfig());
$form->setArea($this->getArea());
$form->setMode("Form");
return $form->writeForm($object, $group);
}
/**
* Gera o script Jquery para validação e mascaramento dos campos
* Os campos de data possuem mascara prédefinida não sendo necessário especificá-la
* no arquivo de configuraçao.
*
* @return html
*/
public function writeValidationScript(){
$form = new IPanelForm();
$form->setConfig($this->getConfig());
$form->setArea($this->getArea());
return $form->writeValidationScript();
}
/**
* Gera o html para criação das áreas do setor administrativo
* É efetuado um laço no array referente aos setores do admin que está registrado na sessão
*
* @return html
*/
public function writeActionsForm($permissoes, $tipo="Normal"){
session_start();
$linksMenu = $_SESSION['setores'];
$html = "";
foreach($linksMenu as $keySetores){
foreach($keySetores as $aba => $links){
if($aba != "Iniciar"){
//
// Gera o link para a página inicial do sistema administrativo
//
foreach($links as $link => $value){
if(($value['mode'] == "Report" && $tipo == "Report") || ($tipo == "Normal" && $value['mode'] != "Report")){
$html.= '<div class="div_permissao">';
$html.= ' <input type="checkbox" name="'.$link.'" id="'.$link.'" value="S"
onclick="selectAllActionsBySetor('.chr(39).$link.chr(39).', '.chr(39).$value['actions'].chr(39).')"/>';
$html.= ' <span class="titulo_permissao">'.$value['name'].'</span><br/>';
$arrayAcoes = explode(",", $value['actions']);
for($i=0; $i < count($arrayAcoes); $i++){
$acao = str_replace(" ","",$arrayAcoes[$i]);
if($this->verificaPermissao($link, $acao, $permissoes)){
$checked = "checked";
}else{
$checked = "";
}
$html.= ' <input type="checkbox" name="'.$link.'_'.$acao.'" id="'.$link.'_'.$acao.'" value="S" '.$checked.'>';
$html.= '<span class="topico_permissao">'.$acao.'</span><br/>';
}
$html.= " </div>";
}
}
}
}
}
print $html;
}
/**
* Gera o html para criação das abas de navegação do setor administrativo
* É efetuado um laço no array referente aos setores do admin que está registrado na sessão
*
* @return html
*/
public function createArrayPermissions($post, $usrId){
session_start();
$linksMenu = $_SESSION['setores'];
foreach($linksMenu as $keySetores){
foreach($keySetores as $aba => $links){
foreach($links as $link => $value){
$arrayAcoes = explode(",", $value['actions']);
for($i=0; $i < count($arrayAcoes); $i++){
$acao = str_replace(" ","",$arrayAcoes[$i]);
if($post[$link."_".$acao] == "S"){
$permissao = new Permissao();
$permissao->local = $link;
$permissao->acao = $acao;
$permissao->usrId = $usrId;
$permissao->save();
}
}
}
}
}
}
/**
* Verifica se existe permissão de acesso para o setor
* É efetuado um laço no array referente aos setores do admin que está registrado na sessão
* @param String $local Setor atual
* @param String $acao Acao a ser executada
*
* @return Boolean
*/
public function verificaPermissao($local, $acao, $permissoes=null){
session_start();
if($permissoes == null){
$permissoes = unserialize($_SESSION['permissoes']);
}
$status = false;
if($permissoes != null){
foreach($permissoes as $permissao){
if($permissao['local'] == $local && $permissao['acao'] == $acao){
$status = true;
}
}
}
return $status;
}
/**
* Verifica se existe permissão de acesso para o setor
* É efetuado um laço no array referente aos setores do admin que está registrado na sessão
* @param String $local Setor atual
* @param String $acao Acao a ser executada
*
* @return Boolean
*/
public function verificaPermissaoSetor($local){
session_start();
$permissoes = unserialize($_SESSION['permissoes']);
$status = false;
if($permissoes != null){
foreach($permissoes as $permissao){
if($permissao['local'] == $local){
$status = true;
}
}
}
return $status;
}
/**
* Gera a url com os parâmetros informados na pesquisa
*
* @return String
*/
public function writeUrlParametersSearch($get){
if($this->getConfig()->getParameter("searchType") == "advanced"){
$form = new IPanelForm();
$form->setConfig($this->getConfig());
$form->setArea($this->getArea());
return $form->writeUrlParametersSearch($get);
}else{
return "";
}
}
/**
* Retorna o número de campos para a área de pesquisa
*
* @return Integer
*/
public function getNumFieldsSearch(){
$count = 0;
foreach($this->getConfig()->getFields() as $fields){
foreach($fields as $field => $value){
if($value['search'] == true){
$count++;
}
}
}
return $count;
}
/**
* Retorna a url a ser utilizada no action do formulário
*
* @return String
*/
public function getActionFormUrl($get){
$url = $this->getConfig()->getParameter("actionFormUrl");
if($url == "" || $url == null){
return "../app/cms/processa.php?lc=".$this->getArea().$this->getParameters($get);
}else{
return "../app/cms/".$url."?lc=".$this->getArea().$this->getParameters($get);
}
}
}
?>
|