Created
October 29, 2015 08:21
-
-
Save Teino1978-Corp/f05109a6060582afb69c to your computer and use it in GitHub Desktop.
This gist exceeds the recommended number of files (~10).
To access all files, please clone this gist.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class AnythingButPhpFilterSimple extends FilterIterator { | |
protected $exclude = array( | |
'.svn', | |
'_lib', | |
'test', | |
// 'client', | |
'components' | |
); | |
protected $limit = 1000; | |
public function __construct( $recursiveIter) { | |
parent::__construct($recursiveIter); | |
} | |
public function accept() { | |
return $this->isValid(); | |
} | |
/** | |
* True when the current element is valid | |
* @return boolean | |
*/ | |
public function isValid(){ | |
if(parent::valid()){ | |
$current = $this->current(); | |
$no = array('all-wcprops','svn-base'); | |
$c1 = (strpos($current->getPathname(),$no[0])===false); | |
$c2 = (strpos($current->getPathname(),'svn')===false); | |
$c3 = (strpos($current->getPathname(),'php')!==false); | |
return $c1 && $c2 && $c3; | |
} else { | |
return false; | |
} | |
} | |
/** | |
* | |
* @return RecursiveDirectoryIterator | |
*/ | |
public function current(){ | |
return parent::current(); | |
} | |
} | |
/** | |
* Autoloader Handler. | |
* - cache file real path indexing by filename | |
* - load all atf php folders as SPL Iterators. | |
* - allow .class.php extension | |
* | |
* @author Andrés Serrón <[email protected]> | |
*/ | |
class AutoLoader { | |
private static $_instance; | |
/** | |
* @return AutoLoader | |
*/ | |
public static function &getInstance() { | |
if(!(self::$_instance instanceof self) ) { | |
self::$_instance = new self(); | |
self::$_instance->initialize(); | |
return self::$_instance; | |
} else { | |
return self::$_instance; | |
} | |
} | |
//////////////////////////////////////////////////////////////////////////// | |
// isntance | |
public $debug = false; | |
/** | |
* | |
* @var AnythingButPhpFilterSimple | |
*/ | |
private $recDirItr = null; | |
public $cache = array(); | |
/** | |
* Create a new AutoLoader instance. | |
*/ | |
public function __construct() { | |
if($this->debug){ | |
fb(__METHOD__." created"); | |
fb($this->cache,__METHOD__.": cached at constructor"); | |
} | |
} | |
/** | |
* @todo Persist across session | |
*/ | |
public function __destruct() { | |
$this->cache = array(); | |
} | |
private function initialize() { | |
if($this->debug) { | |
FB::group(__METHOD__,array('Collapsed'=>true)); | |
fb(__METHOD__,"INFO"); | |
} | |
$this->initClassPathCache(); | |
if($this->debug) FB::groupEnd(); | |
} | |
private function initClassPathCache() { | |
$dir = $this->getDirectoryList(); | |
$count = 0; | |
$max = 100; | |
if($this->debug) FB::group(__METHOD__,array('Collapsed'=>true)); | |
if($this->debug) fb("Walk the itereator: keys are full paths!","WARN"); | |
foreach ($dir as $key => $fileInfo) { | |
if($this->debug) fb($fileInfo->getRealPath(),"key = $key"); | |
$this->cache[$key] = $fileInfo->getRealPath(); | |
} | |
if($this->debug) FB::groupEnd(); | |
} | |
/** | |
* Register autoloader method. | |
*/ | |
public function register() { | |
fb(__METHOD__." > Installing autoloader","WARN"); | |
if(false === spl_autoload_register(array($this, 'loader'))){ | |
fb("SPL ERROR","ERROR"); | |
die("can't register autoloader"); | |
}; | |
} | |
/** | |
* Try to include the file for the Class Name passed. | |
* @param string $className Class Name to be included. | |
*/ | |
public function loader($className) { | |
$path = $this->findClassRealPathByName($className); | |
if($path!==false){ | |
if($this->debug) fb(__METHOD__." > Loading class='$className' realpath='$path'","WARN"); | |
$this->cache[] = $className; | |
include_once $path; | |
} else { | |
throw new LogicException("Can't find the real path for class name ='$className'"); | |
} | |
} | |
/** | |
* Get the autoloader base directory | |
* @return string | |
*/ | |
public function getBaseDirectoryRealPath() { | |
$path[] = realpath('.'); | |
$path[] = 'classes'; | |
$fullpath = implode(DIRECTORY_SEPARATOR,$path); | |
return $fullpath; | |
} | |
/** | |
* Get the recursive directory iterator with only php file into it. | |
* The method create the object if needed. | |
* The iterator is filtered with an AnythingButPhpFilter instance. | |
* @param boolean $force Force rebuild. | |
* @return AnythingButPhpFilterSimple | |
*/ | |
public function getDirectoryList($force=false){ | |
if(($this->recDirItr==null) || $force){ | |
$directoryPath = $this->getBaseDirectoryRealPath(); | |
if($this->debug) fb(realpath($directoryPath),__METHOD__.": Creando dir=$directoryPath","INFO"); | |
// /* | |
$directory = new RecursiveDirectoryIterator($directoryPath, | |
RecursiveDirectoryIterator::NEW_CURRENT_AND_KEY | |
); | |
// $directory->setFlags(RecursiveDirectoryIterator::NEW_CURRENT_AND_KEY); | |
$recursive = new RecursiveIteratorIterator($directory,RecursiveIteratorIterator::SELF_FIRST); | |
$filtered = new AnythingButPhpFilterSimple($recursive); | |
$itr = $filtered; | |
// */ | |
$this->recDirItr = $itr; | |
}; | |
return $this->recDirItr; | |
} | |
/** | |
* Try to find the real path of the class name passed. | |
* | |
* The file must be named after the class name with optional .class | |
* sufix | |
* | |
* throw LogicException if nothing found. | |
* | |
* @param string $className Real path to class file. | |
*/ | |
private function findClassRealPathByName($className){ | |
if($this->debug) fb(__METHOD__." > find class ='$className'","INFO"); | |
$fileName1 = $className.".php"; | |
$fileName2 = $className.".class.php"; | |
foreach ($this->cache as $fileName => $fileRealPath) { | |
if(($fileName == $fileName1)||($fileName == $fileName2)){ | |
return $fileRealPath; | |
} else { | |
continue; | |
} | |
} | |
return false; | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
/** | |
* Description of Action | |
* | |
* @author Andrés Serrón <[email protected]> | |
*/ | |
class ActionController { | |
/** | |
* | |
* @var Request | |
*/ | |
public $request; | |
/** | |
* | |
* @var Response | |
*/ | |
public $response; | |
//put your code here | |
public function __construct(Request $request=null,Response $response=null, $invokeArgs=array()) { | |
if($request!=null) $this->setRequest($request); | |
if($response!=null) $this->setResponse($response); | |
} | |
/** | |
* Push a new action into the action stack. | |
* Set dispatched to false; | |
* @param string $action | |
* @param string $controller | |
* @param type $invodeArgs | |
*/ | |
public function _queue ( $action, $controller=null,$invodeArgs=array()) { | |
$request = new Request(); | |
$request->action = $action; | |
$request->controller = $controller."Controller"; | |
$request->params = $invodeArgs; | |
ActionStack::getInstance()->push($request); | |
} | |
/** | |
* Forward a new action. | |
* Set dispatched to false; | |
* @param string $action | |
* @param string $controller | |
* @param type $invodeArgs | |
*/ | |
public function _forward( $action, $controller=null,$invodeArgs=array()) { | |
$this->request->action = $action; | |
$this->request->controller = $controller."Controller"; | |
$this->request->args = $invodeArgs; | |
$this->request->setDispatched(false); | |
} | |
public function dispatch(Request $request=null,Response $response=null){ | |
if($request) $this->setRequest($request); | |
if($response) $this->setResponse($response); | |
$this->preDispatch(); | |
$request->setDispatched(true); | |
$this->{$request->action}($request->data); | |
$this->postDispatch(); | |
} | |
/** | |
* Override to gain pre dispatch logic. | |
* Note: | |
* The action could be skipped by fowarding from here based on some | |
* test. | |
*/ | |
protected function preDispatch(){ | |
$stack = ActionStack::getInstance(); | |
} | |
/** | |
* Override to add post dispatch functionallity | |
*/ | |
protected function postDispatch(){ | |
} | |
public function setRequest($request){ | |
$this->request = $request; | |
} | |
public function getRequest(){ | |
return $this->request; | |
} | |
public function setResponse($response){ | |
$this->response = $response; | |
} | |
public function getResponse(){ | |
return $this->response; | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* | |
* Front Controller | |
* | |
* @todo implement view to handle headers and other kind of outputs | |
* | |
*/ | |
class FrontController { | |
static private $_instance; | |
/** | |
* @static | |
* @return FrontController | |
*/ | |
public static function getInstance() | |
{ | |
if (null === self::$_instance) { | |
self::$_instance = new self(); | |
} | |
return self::$_instance; | |
} | |
private $_response; | |
private $_request; | |
private $_returnResponse = true; | |
/** | |
* | |
* @var ActionController[] | |
*/ | |
private $_controllers = array(); | |
/** | |
* @constructor | |
* @return FrontController | |
*/ | |
public function __construct() { | |
// install filters and plug ins | |
} | |
private function route (Request $request){ | |
$arr = explode('.',$request->action); | |
if (count($arr)>1){ | |
$request->controller = $arr[0]."Controller"; | |
$request->action = $arr[1]; | |
} | |
} | |
/** | |
* Dispatch an action based on the request passed. | |
* @param Request $request | |
* @param Response $response | |
* @return type | |
*/ | |
public function dispatch (Request $request,Response $response=null){ | |
// FB::group("[".__METHOD__."] dispatch: $request->action"); | |
$this->route($request); | |
if($response==null) $response = new Response(); | |
// register request and response here and at plugs | |
$this->setRequest($request); | |
$this->setResponse($response); | |
do { | |
$request->setDispatched(true); | |
$this->preDispatch($request); | |
/** | |
* Skip requested action if preDispatch() has reset it | |
*/ | |
if(!$this->getRequest()->isDispatched()){ | |
continue; | |
}; | |
fb($request,__METHOD__); | |
fb($response,__METHOD__); | |
try { | |
$controller = $this->getController($request,$response); | |
$controller->dispatch($request,$response); | |
} catch (Exception $exc) { | |
// FB::groupEnd(); | |
// FB::groupEnd(); | |
fb($exc); | |
fb($controller); | |
$o = DataRecord::createErrorOutSt(); | |
$o['data'] = $exc; | |
$response->loadData($exc); | |
}; | |
/** | |
* zend post dispatch with the plugin broker. | |
*/ | |
$this->postDispatch($request); | |
} | |
while (!$request->isDispatched()); | |
if ($this->returnResponse()) { | |
return $this->getResponse(); | |
} | |
$this->getResponse()->sendResponse(); | |
// FB::groupEnd(); | |
} | |
/** | |
* | |
* @param Request $request | |
* @internal | |
* Both pre and post should be done by the plug in broker. | |
*/ | |
private function preDispatch (Request $request){ | |
ActionStack::getInstance()->preDispatch($request); | |
} | |
private function postDispatch(Request $request){ | |
ActionStack::getInstance()->postDispatch($request); | |
} | |
/** | |
* | |
* @param Request $request | |
* @param Response $response | |
* @return ActionController | |
*/ | |
private function createControllerInstance(/*Request*/ $request,/*Response*/ $response){ | |
$class = $request->controller; | |
$c1 = class_exists($class); | |
if($c1===false){ | |
throw new RuntimeException("class = '$class' can't be found by autoloader"); | |
} else { | |
$request = $this->getRequest(); | |
$response = $this->getResponse(); | |
$controller = new $class($request,$response); | |
return $controller; | |
} | |
} | |
/** | |
* @internal This is work for the Dispacher class | |
* @param Request $request | |
* @return ActionController | |
*/ | |
public function getController(Request $request,Response $response) { | |
if(!array_key_exists($request->controller,$this->_controllers)){ | |
try { | |
$controller = $this->createControllerInstance($request, $response); | |
$this->_controllers[$request->controller] = $controller; | |
} catch (Exception $exc) { | |
fb($exc); | |
} | |
} | |
return $this->_controllers[$request->controller]; | |
} | |
/** | |
* Set request here and at plug ins. | |
* @todo review helper broker at zend | |
* @param Request $request | |
*/ | |
public function setRequest (Request $request){ | |
$this->_request = $request; | |
ActionStack::getInstance()->setRequest($request); | |
} | |
public function setResponse(Response $response){ | |
$this->_response = $response; | |
ActionStack::getInstance()->setResponse($response); | |
} | |
/** | |
* Pass Boolean to set. | |
* Otherwise get. | |
* @param boolean $flag | |
* @return FrontController||boolean front as setter, boolean as getter. | |
*/ | |
public function returnResponse($flag = null) { | |
if (true === $flag) { | |
$this->_returnResponse = true; | |
return $this; | |
} elseif (false === $flag) { | |
$this->_returnResponse = false; | |
return $this; | |
} | |
return $this->_returnResponse; | |
} | |
/** | |
* | |
* @return Request | |
*/ | |
public function getRequest(){ | |
return $this->_request; | |
} | |
/** | |
* | |
* @return Response | |
*/ | |
public function getResponse(){ | |
return $this->_response; | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
/** | |
* Description of ActionStack | |
* | |
* @author Andrés Serrón <[email protected]> | |
*/ | |
class ActionStack { | |
/** | |
* @var ActionStack | |
*/ | |
static $_instance; | |
/** | |
* | |
* @return ActionStack | |
*/ | |
public static function getInstance() | |
{ | |
if (null === self::$_instance) { | |
self::$_instance = new self(); | |
} | |
return self::$_instance; | |
} | |
/** | |
* | |
* @var FrontController | |
*/ | |
private $_front; | |
/** | |
* | |
* @var ActionController | |
*/ | |
private $_current; | |
private $_request; | |
private $_response; | |
/** | |
* @var Request[] | |
*/ | |
private $_stack = array(); | |
public function __construct() { | |
$this->_front = FrontController::getInstance(); | |
} | |
/** | |
* | |
* @param Request $request | |
* @return integer The new stack count | |
*/ | |
public function push(Request $request){ | |
return array_unshift($this->_stack,$request); | |
} | |
/** | |
* Pop the last request | |
* @return Request | |
*/ | |
public function pop(){ | |
return array_pop($this->_stack); | |
} | |
public function &getStack(){ | |
return $this->_stack; | |
} | |
public function getCount(){ | |
return count($this->_stack); | |
} | |
/////////////////////////////////////////////////////////////////////////// | |
// should match current exucted | |
public function setRequest(Request $request){ | |
$this->_request = $request; | |
} | |
public function setResponse(Response $response){ | |
$this->_response = $response; | |
} | |
/** | |
* | |
* @return Request | |
*/ | |
public function getRequest(){ | |
return $this->_request; | |
} | |
/** | |
* | |
* @return Response | |
*/ | |
public function getResponse(){ | |
return $this->_response; | |
} | |
/////////////////////////////////////////////////////////////////////////// | |
// controller workflow | |
public function setActionController(ActionController $ctrl){ | |
$this->_current = $ctrl; | |
} | |
public function preDispatch(Request $request){ | |
$this->setRequest($request); | |
} | |
public function postDispatch(Request $request){ | |
if (!$request->isDispatched()) { | |
return false; | |
} | |
$this->setRequest($request); | |
$stack = $this->getStack(); | |
if ($this->getCount()==0) { | |
return; | |
} | |
$next = $this->pop(); | |
if (!$next||($next===null)) { | |
return; | |
} | |
$this->forward($next); | |
} | |
/** | |
* @param Request $next | |
* @return void | |
*/ | |
public function forward(Request $next) | |
{ | |
$request = $this->getRequest(); | |
if ($this->getClearRequestParams()) { | |
// $request->clearParams(); | |
} | |
$request->action = $next->action; | |
$request->controller = $next->controller; | |
$request->params = $next->params; | |
$request->setDispatched(false); | |
// continue dispatch loop >>> | |
} | |
public function getClearRequestParams($value=null){ | |
return false; | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
/** | |
* Description of PlugInBroker | |
* @property ActionStack actionStack | |
* @author Andrés Serrón <[email protected]> | |
*/ | |
class HelperBroker { | |
protected $_helpersByPriority = array(); | |
protected $_helpersByNameRef = array(); | |
protected $_nextDefaultPriority = 1; | |
/** | |
* Magic property overloading for returning helper by name | |
* | |
* @param string $helperName The helper name | |
* @return Zend_Controller_Action_Helper_Abstract | |
*/ | |
public function __get($helperName) { | |
if (!array_key_exists($helperName, $this->_helpersByNameRef)) { | |
return false; | |
} | |
return $this->_helpersByNameRef[$helperName]; | |
} | |
/** | |
* Magic property overloading for returning if helper is set by name | |
* | |
* @param string $helperName The helper name | |
* @return Zend_Controller_Action_Helper_Abstract | |
*/ | |
public function __isset($helperName) { | |
return array_key_exists($helperName, $this->_helpersByNameRef); | |
} | |
/** | |
* Magic property overloading for unsetting if helper is exists by name | |
* | |
* @param string $helperName The helper name | |
* @return Zend_Controller_Action_Helper_Abstract | |
*/ | |
public function __unset($helperName) { | |
return $this->offsetUnset($helperName); | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class InputSanitize { | |
// sanitization | |
static function sanitizeArray($value) { | |
$value = is_array($value) ? | |
array_map(array('InputSanitize', 'sanitizeArray'), $value) : | |
stripslashes($value); | |
return $value; | |
} | |
static function sanitizeVariables($item, $key) | |
{ | |
if (!is_array($item)) | |
{ | |
$item = stripslashes($item); | |
//$item = self::sanitizeText($item); | |
} | |
return $item; | |
} | |
// does the actual 'html' and 'sql' sanitization. customize if you want. | |
static function sanitizeText($text) | |
{ | |
$text = str_replace("<", "<", $text); | |
$text = str_replace(">", ">", $text); | |
$text = str_replace("\"", """, $text); | |
$text = str_replace("'", "'", $text); | |
// it is recommended to replace 'addslashes' with 'mysql_real_escape_string' or whatever db specific fucntion used for escaping. However 'mysql_real_escape_string' is slower because it has to connect to mysql. | |
$text = addslashes($text); | |
return $text; | |
} | |
} | |
/** | |
* Description of Request | |
* | |
* @author Andrés Serrón <[email protected]> | |
*/ | |
class Request { | |
public $action = 'Default'; | |
public $controller = 'App'; | |
public $data = array(); | |
private $_get = array(); | |
private $_post = array(); | |
/** | |
* Internal controller parameters | |
* @var array | |
*/ | |
public $params = array(); | |
private $_dispatched = false; | |
public function __construct($config=null) { | |
if($config===null){ | |
$config = $_POST; | |
} | |
$this->sanitize(); | |
$this->action = $config['action']; | |
$this->data = json_decode($config['data']); | |
// handler ext.pagin settings. | |
$this->pager = new stdClass(); | |
$this->pager->start = isset ($config['start']) ? $config['start'] : 0; | |
$this->pager->limit = isset ($config['limit']) ? $config['limit'] : 10; | |
} | |
/** | |
* Sanitize POST and GET arrays | |
*/ | |
public function sanitize(){ | |
if((function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) || (ini_get('magic_quotes_sybase') && (strtolower(ini_get('magic_quotes_sybase'))!="off")) ){ | |
foreach ($_POST as $key => &$value) { | |
$value = InputSanitize::sanitizeVariables($value, $key); | |
} | |
foreach ($_GET as $key => &$value) { | |
$value = InputSanitize::sanitizeVariables($value, $key); | |
} | |
} | |
} | |
public function isDispatched() { | |
return ($this->_dispatched === true); | |
} | |
public function setDispatched($v){ | |
$this->_dispatched = $v; | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Description of Response | |
* | |
* @author Andrés Serrón <[email protected]> | |
*/ | |
class Response { | |
//put your code here | |
public $success = false; | |
public $total = 0; | |
public $data = array(); | |
public $error = ''; | |
public function loadData($o){ | |
$o = (array) $o; | |
foreach ($o as $key => $value) { | |
if(property_exists($this, $key)){ | |
$this->{$key} = $value; | |
} | |
} | |
} | |
/** | |
* @todo Implement view out from inside the Front controller calling this function | |
*/ | |
public function sendResponse(){ | |
// implemenet based on the zend framework implementation. | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.app-loader { | |
height: 187px; | |
width: 300px; | |
left: 50%; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@charset "utf-8"; | |
/* CSS Document */ | |
body,h1,h2,h3,p,span { | |
font-family: Verdana; | |
} | |
#loading-mask{ | |
background-color:white; | |
height:100%; | |
position:absolute; | |
left:0; | |
top:0; | |
width:100%; | |
z-index:20000; | |
} | |
#loading{ | |
height:auto; | |
position:absolute; | |
left:45%; | |
top:40%; | |
padding:2px; | |
z-index:20001; | |
} | |
#loading a { | |
color:#225588; | |
} | |
#loading .loading-indicator{ | |
background:white; | |
color:#444; | |
font:bold 13px Helvetica, Arial, sans-serif; | |
height:auto; | |
margin:0; | |
padding:10px; | |
} | |
#loading-msg { | |
font-size: 12px; | |
font-weight: normal; | |
padding: 10px 0px; | |
clear: both; | |
text-align: center; | |
float: left; | |
} | |
.flickrlist { | |
font-family : Verdana; | |
min-width : 938px | |
} | |
.flickrlist .dataview-list { | |
width:100%; | |
height: 100%; | |
} | |
.flickrlist .items { | |
font-family: fantasy; | |
} | |
.flickrlist .items h1,h2,h3{ | |
clear: both; | |
font-size: 0.6em; | |
} | |
.flickrlist .items .item { | |
margin : 20px 32px; | |
float : left; | |
clear : none; | |
background-image: url('../images/list/image_bkg.gif'); | |
background-repeat: no-repeat; | |
background-position: 0px 0px; | |
} | |
.flickrlist .items .x-view-over { | |
background: url("../images/list/image_over_bkg.gif") no-repeat; | |
} | |
.flickrlist .items .item .thumb-wrap { | |
float: left; | |
clear: both; | |
width: 228px; | |
height: 146px; | |
padding:8px; | |
} | |
.flickrlist .item-over { | |
display : none; | |
position : absolute; | |
left :-100px; | |
top :-100px; | |
float : left; | |
background-image: url('../images/list/icon_detail.png'); | |
width : 50px; | |
height : 50px; | |
z-index: 30000; | |
} | |
.app-list .x-grid3-scroller { | |
overflow: visible !important; | |
} | |
.app-list .x-grid3 { | |
background-color: black; | |
color:grey; | |
} | |
.app-list .x-grid3 .x-grid3-row { | |
border: 0px none; | |
cursor: pointer; | |
} | |
.app-list .x-grid3 .x-grid3-header { | |
display: none; | |
} | |
.app-list .x-grid3 .x-grid3-row-over { | |
border : 0px; | |
background-color : #8c8c8c !important; | |
background-image : url('../images/list/list_over_bkg.png'); | |
background-position : left; | |
background-repeat : no-repeat; | |
color : black; | |
} | |
.app-list .x-grid3 .x-grid3-body .x-grid3-row-nostyle { | |
background-image: none !important; | |
background-color: white !important; | |
} | |
.x-grid3-row-body .x-grid3-row-nostyle { | |
background-image: none !important; | |
background-color: white !important; | |
} | |
.app-list .x-grid3 .x-grid3-col-list-title { | |
font-size : 16px; | |
line-height : 30px; | |
padding-left : 30px; | |
} | |
/* row first, cell first*/ | |
.app-list .x-grid3-row-first { | |
background-color : white !important; | |
background : none !important; | |
} | |
.app-list .x-grid3-row-first .x-grid3-cell-first { | |
color : #ffa340; | |
font-weight : bold; | |
background-color : black !important; | |
border-radius : 10px 10px 0px 0px; | |
-moz-border-radius : 10px 10px 0px 0px; | |
} | |
.x-grid3-row-first .x-grid3-cell-first div { | |
border-bottom : solid 1px #ffa340; | |
padding: 0px !important; | |
margin : 5px 30px 5px 30px; | |
} | |
/* row sel, cell*/ | |
.app-list .x-grid3 .x-grid3-row-selected { | |
border : 0px; | |
background-color : black !important; | |
background-image : url('../images/list/list_sel_bkg.png'); | |
background-position : left; | |
background-repeat : no-repeat; | |
color :black; | |
} | |
.app-list .x-grid3-row-selected .x-grid3-cell-first{ | |
background-color : white !important; | |
background-image : url('../images/list/list_sel_bkg.png'); | |
background-position : left; | |
background-repeat : no-repeat; | |
color :black; | |
border-color : red; | |
border-radius : 10px 0px 0px 0px; | |
-moz-border-radius : 10px 0px 0px 0px; | |
} | |
.app-topbar { | |
background-color: black; | |
} | |
.app-topbar .x-panel-body { | |
min-width: 1054 px; | |
overflow: hidden; | |
} | |
.menu-button { | |
width: 50px; | |
height: 50px; | |
display: block; | |
float: left; | |
} | |
/** Custom btn*/ | |
.main-nav-button{ | |
background:#ffffff; | |
/* margin : 10px 0;*/ | |
width : 46px !important; | |
height : 46px !important; | |
border : 1px solid rgba(0, 0, 0, 0.2); | |
-moz-border-radius : 5px; | |
-webkit-border-radius : 5px; | |
-moz-box-shadow : 0px 0px 5px rgba(255, 255, 255, 0.25); | |
} | |
.main-nav-button button{ | |
position :absolute; | |
top :0; | |
left :0; | |
width :100%; | |
height :100%; | |
border :none; | |
opacity :0; | |
cursor :pointer; | |
} | |
.main-nav-button .main-nav-icon{ | |
width :36px; | |
height :36px; | |
top :5px; | |
left :5px; | |
position :relative; | |
zoom :100%; | |
opacity :0.8 | |
} | |
.main-nav-button .main-nav-button-overlay{ | |
background : -moz-linear-gradient(top, rgba(0,0,0,0) 20%, rgba(0,0,0,0.1)); | |
position :absolute; | |
top :0; | |
left :0; | |
width :100%; | |
height :100%; | |
-moz-border-radius :3px 3px 3px 3px; | |
} | |
.x-btn-over .main-nav-button-overlay{ | |
background: -moz-linear-gradient(top, rgba(0,0,0,0) 20%, rgba(0,0,0,0)); | |
} | |
.x-btn-click .main-nav-button-overlay, .x-btn-menu-active .main-nav-button-overlay{ | |
background: -moz-linear-gradient(top, rgba(0,0,0,0.1) 80%, rgba(0,0,0,0)); | |
} | |
.x-btn-menu-active.main-nav-button, .x-btn-menu-click.main-nav-button{ | |
-moz-box-shadow:inset 0px 0px 5px rgba(0, 0, 0, 0.25); | |
} | |
.main-nav-button .contacts_large { | |
background: url('../images/list/icon_detail_36.png') no-repeat left center; | |
} | |
/* search */ | |
.app-topbar { | |
font-size : 24px !important; | |
} | |
input.app-searchfield { | |
color : #8c8c8c; | |
font-size : 20px !important; | |
line-height : 30px; | |
height : 44px !important; | |
} | |
.app-topbar .app-topbar-searchlabel { | |
line-height : 30px; | |
} | |
/* footer */ | |
.app-footer { | |
background-color: black; | |
color : #E5872C; | |
overflow: hidden; | |
} | |
.app-footer .footer { | |
padding : 20px 40px 20px 40px; | |
overflow: hidden; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
�PNG | |