%PDF- %PDF-
| Direktori : /home/tjamichg/portal.tjamich.gob.mx/adminit2018/inc/classes/ |
| Current File : /home/tjamichg/portal.tjamich.gob.mx/adminit2018/inc/classes/Template.php |
<?php
class Template {
// Template Variables
public $name = '',
$version = '',
$author = '',
$robots = '',
$title = '',
$description = '',
$assets_folder = '',
$body_bg = '',
$main_nav = array(),
$main_nav_active = '',
$theme = '',
$cookies,
$google_maps_api_key,
$l_sidebar_position,
$l_sidebar_mini,
$l_sidebar_visible_desktop,
$l_sidebar_visible_mobile,
$l_side_overlay_hoverable,
$l_side_overlay_visible,
$l_side_scroll,
$l_header_fixed,
$l_header_transparent,
$inc_side_overlay,
$inc_sidebar,
$inc_header;
private $nav_html = '',
$page_classes = '',
$placeholder_names = array(
'female' => array(
'Rebeca',
'Rebequina',
'Chiquinina'
),
'male' => array(
'Carlos Ruiz',
'El Tips',
'Carlos Alberto'
)
),
$placeholder_text = array(
'small' => 'Texto corto.',
'medium' => 'Texto mediano.',
'large' => 'Texto grande.'
);
/**
* Class constructor
*/
public function __construct($name = '', $version = '', $assets_folder = '') {
// Set Template's name, version and assets folder
$this->name = $name;
$this->version = $version;
$this->assets_folder = $assets_folder;
}
/**
* Builds #page-container classes
*
* @param boolean $print True to print the classes and False to return them
*
* @return string Returns the classes if $print is set to false
*/
public function page_classes($print = true) {
// Build page classes
if ($this->cookies) {
$this->page_classes .= ' enable-cookies';
}
if ($this->l_sidebar_position == 'left') {
$this->page_classes .= ' sidebar-l';
} else if ($this->l_sidebar_position == 'right') {
$this->page_classes .= ' sidebar-r';
}
if ($this->l_sidebar_mini) {
$this->page_classes .= ' sidebar-mini';
}
if ($this->l_sidebar_visible_desktop) {
$this->page_classes .= ' sidebar-o';
}
if ($this->l_sidebar_visible_mobile) {
$this->page_classes .= ' sidebar-o-xs';
}
if ($this->l_side_overlay_hoverable) {
$this->page_classes .= ' side-overlay-hover';
}
if ($this->l_side_overlay_visible) {
$this->page_classes .= ' side-overlay-o';
}
if ($this->l_side_scroll) {
$this->page_classes .= ' side-scroll';
}
if ($this->l_header_fixed) {
$this->page_classes .= ' header-navbar-fixed';
}
if ($this->l_header_transparent) {
$this->page_classes .= ' header-navbar-transparent';
}
// Print or return page classes
if ($this->page_classes) {
if ($print) {
echo ' class="'. trim($this->page_classes) .'"';
} else {
return trim($this->page_classes);
}
} else {
return false;
}
}
/**
* Builds main navigation
*
* @param boolean $print True to print the navigation and False to return it
*
* @return string Returns the navigation if $print is set to false
*/
public function build_nav($print = true) {
// Build navigation
$this->build_nav_array($this->main_nav);
// Print or return navigation
if ($print) {
echo $this->nav_html;
} else {
return $this->nav_html;
}
}
/**
* Build navigation helper - Builds main navigation one level at a time
*
* @param string $nav_array A multi dimensional array with menu/submenus links
*/
private function build_nav_array($nav_array) {
foreach ($nav_array as $node) {
// Get all vital link info
$link_name = isset($node['name']) ? $node['name'] : '';
$link_icon = isset($node['icon']) ? '<i class="' . $node['icon'] . '"></i>' : '';
$link_url = isset($node['url']) ? $node['url'] : '#';
$link_sub = isset($node['sub']) && is_array($node['sub']) ? true : false;
$link_type = isset($node['type']) ? isset($node['type']) : '';
$sub_active = false;
$link_active = $link_url == $this->main_nav_active ? true : false;
// If link type is a header
if ($link_type == 'heading') {
$this->nav_html .= "<li class=\"nav-main-heading\">$link_name</li>\n";
} else {
// If it is a submenu search for an active link in all sub links
if ($link_sub) {
$sub_active = $this->build_nav_array_search($node['sub']) ? true : false;
}
// Set menu properties
$li_prop = $sub_active ? ' class="open"' : '';
$link_prop = $link_sub ? ' class="nav-submenu' . ($link_active ? ' active' : '') . '" data-toggle="nav-submenu"' : ($link_active ? ' class="active"' : '');
// Add the link
$this->nav_html .= "<li$li_prop>\n";
$this->nav_html .= "<a$link_prop href=\"$link_url\">$link_icon$link_name</a>\n";
// If it is a submenu, call the function again
if ($link_sub) {
$this->nav_html .= "<ul>\n";
$this->build_nav_array($node['sub']);
$this->nav_html .= "</ul>\n";
}
$this->nav_html .= "</li>\n";
}
}
}
/**
* Build navigation helper - Search navigation array for active menu links
*
* @param string $nav_array A multi dimensional array with menu/submenus links
*
* @return boolean Returns true if an active link is found
*/
private function build_nav_array_search($nav_array) {
foreach ($nav_array as $node) {
if (isset($node['url']) && ($node['url'] == $this->main_nav_active)) {
return true;
} else if (isset($node['sub']) && is_array($node['sub'])) {
if ($this->build_nav_array_search($node['sub'])) {
return true;
}
}
}
}
/**
* Prints random paragraphs
*
* @param string $size 'small', 'medium', 'large' available paragraph sizes
* @param int $num The number of paragraphs to be printed
*
*/
public function get_text($size = 'medium', $num = 0) {
if ($num > 0) {
for ($i = 0; $i < $num; $i++) {
echo '<p>' . $this->placeholder_text[$size] . '</p>'. "\n";
}
} else {
echo '<p>' . $this->placeholder_text[$size] . '</p>'. "\n";
}
}
/**
* Prints a random user name
*
* @param string $gender 'male' or 'female' for a specific name
*/
public function get_name($gender = '') {
$available = array('male', 'female');
$gender_f = ($gender ? $gender : $available[rand(0, 1)]);
echo $this->placeholder_names[$gender_f][rand(0, 19)];
}
/**
* Prints a random or a specific avatar from the avatars folder
*
* @param int $id A number for printing a specific avatar
* @param string $gender 'female' or 'male' for a specific gender
* @param int $size 32, 48, 96 or 128 pixels
* @param boolean $thumb Add avatar thumb class or not
*/
public function get_avatar($id = 0, $gender = '', $size = 0, $thumb = false) {
$id_f = ($id ? $id : ($gender ? ($gender == 'female' ? rand(1, 8) : rand(9, 16)) : rand(1, 16)));
$class_f = '';
if ($size == 16) {
$class_f = ' img-avatar16';
} else if ($size == 32) {
$class_f = ' img-avatar32';
} else if ($size == 48) {
$class_f = ' img-avatar48';
} else if ($size == 96) {
$class_f = ' img-avatar96';
} else if ($size == 128) {
$class_f = ' img-avatar128';
}
if ($thumb) {
$class_f .= ' img-avatar-thumb';
}
echo '<img class="img-avatar' . $class_f . '" src="' . $this->assets_folder . '/img/avatars/avatar' . $id_f . '.jpg" alt="">'. "\n";
}
/**
* Prints a random or a specific photo from the photos folder
*
* @param int $id A number for printing a specific image
* @param string $class CSS classes for the img tag
*/
public function get_photo($id = 0, $retina = false, $class = '') {
echo '<img' . ($class ? ' class="' . $class . '"' : '') . ' src="' . $this->assets_folder . '/img/photos/photo' . ($id ? $id : rand(1, 20)) . ($retina ? '@2x' : '') . '.jpg" alt="">'. "\n";
}
/**
* Prints a random label
*
* @param boolean $print True to print the generated label and False to return it
*
* @return string Returns the generated label if $print is set to false
*/
public function get_label($print = true) {
// Label seed data
$data = array(
'0' => array('class' => 'success', 'text' => 'Noticia'),
'1' => array('class' => 'info', 'text' => 'Evento')
// '2' => array('class' => 'primary', 'text' => 'Personal'),
// '3' => array('class' => 'warning', 'text' => 'Trial'),
// '4' => array('class' => 'danger', 'text' => 'Disabled')
);
// Generate label
$rand = rand(0, 4);
$label = '<span class="label label-' . $data[$rand]['class'] . '">' . $data[$rand]['text'] . '</span>'. "\n";
// Print or return generated label
if ($print) {
echo $label;
} else {
return $label;
}
}
}