Compare commits

...

15 commits

Author SHA1 Message Date
Dan Cryer e3f08f0ee7 Making times in the time plugin human readable. 2014-12-03 15:22:20 +00:00
Dan Cryer 808fd9851a Fixing JS errors in PHP Spec plugin. 2014-12-03 15:22:01 +00:00
Dan Cryer 8a1824830b Updating header dropdowns to actually link to builds. 2014-12-03 13:56:01 +00:00
Dan Cryer 598ee706ae Cleaning up pagination. 2014-12-03 13:51:06 +00:00
Dan Cryer 4511ba9d60 Updates to the daemon / run commands 2014-12-03 13:28:40 +00:00
Dan Cryer b91dafab41 Fixing commit links 2014-12-03 13:15:33 +00:00
Dan Cryer 1999231ec3 Updated dashboard timeline, also fixes box colours. 2014-12-03 13:10:25 +00:00
Dan Cryer 1b1a90c1d7 Merge branch 'master' into dc/new-ui 2014-12-03 13:05:10 +00:00
Dan Cryer d6a700da59 Updating controllers to a cleaner way of requiring the current user to be an administrator.
Closes #654
2014-12-03 10:28:44 +00:00
Dan Cryer 951e3b4827 Making big project title a link 2014-12-03 10:12:33 +00:00
Dan Cryer 92a5078225 Display short commit link and email address 2014-12-03 10:10:39 +00:00
Dan Cryer 06aa165160 Updated dashboard 2014-12-03 10:01:26 +00:00
Dan Cryer b356f59206 New Github Webhook text 2014-12-02 16:47:53 +00:00
Dan Cryer 1b28d43b7f Fixing database stuff 2014-12-02 16:41:07 +00:00
Dan Cryer 3eac0b0c23 New UI based on Admin LTE 2014-12-02 16:26:55 +00:00
364 changed files with 51736 additions and 1001 deletions

View file

@ -14,6 +14,7 @@ use b8\Exception\HttpException;
use b8\Http\Response; use b8\Http\Response;
use b8\Http\Response\RedirectResponse; use b8\Http\Response\RedirectResponse;
use b8\View; use b8\View;
use PHPCI\Model\Build;
/** /**
* PHPCI Front Controller * PHPCI Front Controller
@ -91,18 +92,30 @@ class Application extends b8\Application
$this->response->setContent($view->render()); $this->response->setContent($view->render());
} }
if (View::exists('layout') && $this->response->hasLayout()) { if ($this->response->hasLayout()) {
$view = new View('layout'); $this->setLayoutVariables($this->controller->layout);
$pageTitle = $this->config->get('page_title', null);
if (!is_null($pageTitle)) { $this->controller->layout->content = $this->response->getContent();
$view->title = $pageTitle; $this->response->setContent($this->controller->layout->render());
}
$view->content = $this->response->getContent();
$this->response->setContent($view->render());
} }
return $this->response; return $this->response;
} }
protected function loadController($class)
{
$controller = parent::loadController($class);
$controller->layout = new View('layout');
$controller->layout->title = 'PHPCI';
$controller->layout->breadcrumb = array();
return $controller;
}
protected function setLayoutVariables(View &$layout)
{
/** @var \PHPCI\Store\ProjectStore $projectStore */
$projectStore = b8\Store\Factory::getStore('Project');
$layout->projects = $projectStore->getAll();
}
} }

View file

@ -76,6 +76,7 @@ class DaemoniseCommand extends Command
$this->sleep = 0; $this->sleep = 0;
$runner = new RunCommand($this->logger); $runner = new RunCommand($this->logger);
$runner->setMaxBuilds(1); $runner->setMaxBuilds(1);
$runner->setIsDaemon(true);
$emptyInput = new ArgvInput(array()); $emptyInput = new ArgvInput(array());

View file

@ -48,6 +48,11 @@ class RunCommand extends Command
*/ */
protected $maxBuilds = null; protected $maxBuilds = null;
/**
* @var bool
*/
protected $isFromDaemon = false;
/** /**
* @param \Monolog\Logger $logger * @param \Monolog\Logger $logger
* @param string $name * @param string $name
@ -62,8 +67,7 @@ class RunCommand extends Command
{ {
$this $this
->setName('phpci:run-builds') ->setName('phpci:run-builds')
->setDescription('Run all pending PHPCI builds.') ->setDescription('Run all pending PHPCI builds.');
->addOption('verbose', 'v', InputOption::VALUE_NONE);
} }
/** /**
@ -75,7 +79,7 @@ class RunCommand extends Command
// For verbose mode we want to output all informational and above // For verbose mode we want to output all informational and above
// messages to the symphony output interface. // messages to the symphony output interface.
if ($input->getOption('verbose')) { if ($input->hasOption('verbose') && $input->getOption('verbose')) {
$this->logger->pushHandler( $this->logger->pushHandler(
new OutputLogHandler($this->output, Logger::INFO) new OutputLogHandler($this->output, Logger::INFO)
); );
@ -91,13 +95,17 @@ class RunCommand extends Command
$builds = 0; $builds = 0;
foreach ($result['items'] as $build) { while (count($result['items'])) {
$build = array_shift($result['items']);
$build = BuildFactory::getBuild($build); $build = BuildFactory::getBuild($build);
// Skip build (for now) if there's already a build running in that project: // Skip build (for now) if there's already a build running in that project:
if (in_array($build->getProjectId(), $running)) { if (!$this->isFromDaemon && in_array($build->getProjectId(), $running)) {
$this->logger->addInfo('Skipping Build #'.$build->getId() . ' - Project build already in progress.'); $this->logger->addInfo('Skipping Build #'.$build->getId() . ' - Project build already in progress.');
$result['items'][] = $build;
// Re-run build validator:
$running = $this->validateRunningBuilds();
continue; continue;
} }
@ -117,6 +125,7 @@ class RunCommand extends Command
$this->logger->popHandler($buildDbLog); $this->logger->popHandler($buildDbLog);
} catch (\Exception $ex) { } catch (\Exception $ex) {
$build->setStatus(Build::STATUS_FAILED); $build->setStatus(Build::STATUS_FAILED);
$build->setFinished(new \DateTime());
$build->setLog($build->getLog() . PHP_EOL . PHP_EOL . $ex->getMessage()); $build->setLog($build->getLog() . PHP_EOL . PHP_EOL . $ex->getMessage());
$store->save($build); $store->save($build);
} }
@ -133,6 +142,11 @@ class RunCommand extends Command
$this->maxBuilds = (int)$numBuilds; $this->maxBuilds = (int)$numBuilds;
} }
public function setIsDaemon($fromDaemon)
{
$this->isFromDaemon = (bool)$fromDaemon;
}
protected function validateRunningBuilds() protected function validateRunningBuilds()
{ {
/** @var \PHPCI\Store\BuildStore $store */ /** @var \PHPCI\Store\BuildStore $store */
@ -152,6 +166,7 @@ class RunCommand extends Command
if (($now - $start) > $timeout) { if (($now - $start) > $timeout) {
$this->logger->addInfo('Build #'.$build->getId().' marked as failed due to timeout.'); $this->logger->addInfo('Build #'.$build->getId().' marked as failed due to timeout.');
$build->setStatus(Build::STATUS_FAILED); $build->setStatus(Build::STATUS_FAILED);
$build->setFinished(new \DateTime());
$store->save($build); $store->save($build);
$this->removeBuildDirectory($build); $this->removeBuildDirectory($build);
continue; continue;

View file

@ -72,10 +72,23 @@ class Controller extends \b8\Controller
return $this->response; return $this->response;
} }
/**
* Require that the currently logged in user is an administrator.
* @throws ForbiddenException
*/
protected function requireAdmin() protected function requireAdmin()
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { if (!$this->currentUserIsAdmin()) {
throw new ForbiddenException('You do not have permission to do that.'); throw new ForbiddenException('You do not have permission to do that.');
} }
} }
/**
* Check if the currently logged in user is an administrator.
* @return bool
*/
protected function currentUserIsAdmin()
{
return $_SESSION['phpci_user']->getIsAdmin();
}
} }

View file

@ -13,6 +13,7 @@ use b8;
use b8\Exception\HttpException\NotFoundException; use b8\Exception\HttpException\NotFoundException;
use PHPCI\BuildFactory; use PHPCI\BuildFactory;
use PHPCI\Model\Build; use PHPCI\Model\Build;
use PHPCI\Model\Project;
use PHPCI\Service\BuildService; use PHPCI\Service\BuildService;
/** /**
@ -58,8 +59,22 @@ class BuildController extends \PHPCI\Controller
$this->view->build = $build; $this->view->build = $build;
$this->view->data = $this->getBuildData($build); $this->view->data = $this->getBuildData($build);
$title = 'Build #' . $build->getId() . ' - ' . $build->getProjectTitle(); $this->layout->title = 'Build #' . $build->getId();
$this->config->set('page_title', $title); $this->layout->subtitle = $build->getProjectTitle();
$nav = array(
'title' => 'Build '.$build->getId(),
'icon' => 'cog',
'links' => array(
'build/rebuild/' . $build->getId() => 'Rebuild Now',
),
);
if ($this->currentUserIsAdmin()) {
$nav['links']['build/delete/' . $build->getId()] = 'Delete Build';
}
$this->layout->nav = $nav;
} }
protected function getUiPlugins() protected function getUiPlugins()
@ -141,9 +156,7 @@ class BuildController extends \PHPCI\Controller
*/ */
public function delete($buildId) public function delete($buildId)
{ {
if (empty($_SESSION['phpci_user']) || !$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new \Exception('You do not have permission to do that.');
}
$build = BuildFactory::getBuildById($buildId); $build = BuildFactory::getBuildById($buildId);
@ -168,4 +181,36 @@ class BuildController extends \PHPCI\Controller
return $log; return $log;
} }
public function latest()
{
$rtn = array(
'pending' => $this->formatBuilds($this->buildStore->getByStatus(Build::STATUS_NEW)),
'running' => $this->formatBuilds($this->buildStore->getByStatus(Build::STATUS_RUNNING)),
);
if ($this->request->isAjax()) {
die(json_encode($rtn));
}
}
protected function formatBuilds($builds)
{
Project::$sleepable = array('id', 'title', 'reference', 'type');
$rtn = array('count' => $builds['count'], 'items' => array());
foreach ($builds['items'] as $build) {
$item = $build->toArray(1);
$header = new b8\View('Build/header-row');
$header->build = $build;
$item['header_row'] = $header->render();
$rtn['items'][$item['id']] = $item;
}
ksort($rtn['items']);
return $rtn;
}
} }

View file

@ -11,6 +11,7 @@ namespace PHPCI\Controller;
use b8; use b8;
use PHPCI\BuildFactory; use PHPCI\BuildFactory;
use PHPCI\Model\Build;
/** /**
* Home Controller - Displays the PHPCI Dashboard. * Home Controller - Displays the PHPCI Dashboard.
@ -41,14 +42,20 @@ class HomeController extends \PHPCI\Controller
*/ */
public function index() public function index()
{ {
$this->layout->title = 'Dashboard';
$projects = $this->projectStore->getWhere(array(), 50, 0, array(), array('title' => 'ASC')); $projects = $this->projectStore->getWhere(array(), 50, 0, array(), array('title' => 'ASC'));
$this->view->builds = $this->getLatestBuildsHtml(); $builds = $this->buildStore->getLatestBuilds(null, 10);
foreach ($builds as &$build) {
$build = BuildFactory::getBuild($build);
}
$this->view->builds = $builds;
$this->view->projects = $projects['items']; $this->view->projects = $projects['items'];
$this->view->summary = $this->getSummaryHtml($projects); $this->view->summary = $this->getSummaryHtml($projects);
$this->config->set('page_title', 'Dashboard');
return $this->view->render(); return $this->view->render();
} }
@ -69,13 +76,24 @@ class HomeController extends \PHPCI\Controller
protected function getSummaryHtml($projects) protected function getSummaryHtml($projects)
{ {
$summaryBuilds = array(); $summaryBuilds = array();
$successes = array();
$failures = array();
foreach ($projects['items'] as $project) { foreach ($projects['items'] as $project) {
$summaryBuilds[$project->getId()] = $this->buildStore->getLatestBuilds($project->getId()); $summaryBuilds[$project->getId()] = $this->buildStore->getLatestBuilds($project->getId());
$success = $this->buildStore->getLastBuildByStatus($project->getId(), Build::STATUS_SUCCESS);
$failure = $this->buildStore->getLastBuildByStatus($project->getId(), Build::STATUS_FAILED);
$successes[$project->getId()] = $success;
$failures[$project->getId()] = $failure;
} }
$summaryView = new b8\View('SummaryTable'); $summaryView = new b8\View('SummaryTable');
$summaryView->projects = $projects['items']; $summaryView->projects = $projects['items'];
$summaryView->builds = $summaryBuilds; $summaryView->builds = $summaryBuilds;
$summaryView->successful = $successes;
$summaryView->failed = $failures;
return $summaryView->render(); return $summaryView->render();
} }

View file

@ -24,6 +24,10 @@ use PHPCI\Plugin\Util\PluginInformationCollection;
class PluginController extends \PHPCI\Controller class PluginController extends \PHPCI\Controller
{ {
protected $required = array( protected $required = array(
'php',
'ext-mcrypt',
'ext-pdo',
'ext-pdo_mysql',
'block8/b8framework', 'block8/b8framework',
'ircmaxell/password-compat', 'ircmaxell/password-compat',
'swiftmailer/swiftmailer', 'swiftmailer/swiftmailer',
@ -31,7 +35,8 @@ class PluginController extends \PHPCI\Controller
'symfony/console', 'symfony/console',
'psr/log', 'psr/log',
'monolog/monolog', 'monolog/monolog',
'pimple/pimple' 'pimple/pimple',
'robmorgan/phinx',
); );
protected $canInstall; protected $canInstall;
@ -39,9 +44,7 @@ class PluginController extends \PHPCI\Controller
public function index() public function index()
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new \Exception('You do not have permission to do that.');
}
$this->view->canWrite = is_writable(APPLICATION_PATH . 'composer.json'); $this->view->canWrite = is_writable(APPLICATION_PATH . 'composer.json');
$this->view->required = $this->required; $this->view->required = $this->required;
@ -60,16 +63,14 @@ class PluginController extends \PHPCI\Controller
$this->view->plugins = $pluginInfo->getInstalledPlugins(); $this->view->plugins = $pluginInfo->getInstalledPlugins();
$this->config->set('page_title', 'Plugins'); $this->layout->title = 'Plugins';
return $this->view->render(); return $this->view->render();
} }
public function remove() public function remove()
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new \Exception('You do not have permission to do that.');
}
$package = $this->getParam('package', null); $package = $this->getParam('package', null);
$json = $this->getComposerJson(); $json = $this->getComposerJson();
@ -88,9 +89,7 @@ class PluginController extends \PHPCI\Controller
public function install() public function install()
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new \Exception('You do not have permission to do that.');
}
$package = $this->getParam('package', null); $package = $this->getParam('package', null);
$version = $this->getParam('version', '*'); $version = $this->getParam('version', '*');

View file

@ -62,8 +62,9 @@ class ProjectController extends \PHPCI\Controller
/** /**
* View a specific project. * View a specific project.
*/ */
public function view($projectId, $branch = '') public function view($projectId)
{ {
$branch = $this->getParam('branch', '');
$project = $this->projectStore->getById($projectId); $project = $this->projectStore->getById($projectId);
if (empty($project)) { if (empty($project)) {
@ -87,7 +88,8 @@ class ProjectController extends \PHPCI\Controller
$this->view->page = $page; $this->view->page = $page;
$this->view->pages = $pages; $this->view->pages = $pages;
$this->config->set('page_title', $project->getTitle()); $this->layout->title = $project->getTitle();
$this->layout->subtitle = $this->view->branch;
return $this->view->render(); return $this->view->render();
} }
@ -120,9 +122,7 @@ class ProjectController extends \PHPCI\Controller
*/ */
public function delete($projectId) public function delete($projectId)
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new ForbiddenException('You do not have permission to do that.');
}
$project = $this->projectStore->getById($projectId); $project = $this->projectStore->getById($projectId);
$this->projectService->deleteProject($project); $this->projectService->deleteProject($project);
@ -134,8 +134,9 @@ class ProjectController extends \PHPCI\Controller
/** /**
* AJAX get latest builds. * AJAX get latest builds.
*/ */
public function builds($projectId, $branch = '') public function builds($projectId)
{ {
$branch = $this->getParam('branch', '');
$builds = $this->getLatestBuildsHtml($projectId, urldecode($branch)); $builds = $this->getLatestBuildsHtml($projectId, urldecode($branch));
die($builds[0]); die($builds[0]);
} }
@ -173,7 +174,7 @@ class ProjectController extends \PHPCI\Controller
*/ */
public function add() public function add()
{ {
$this->config->set('page_title', 'Add Project'); $this->layout->title = 'Add Project';
$this->requireAdmin(); $this->requireAdmin();
$method = $this->request->getMethod(); $method = $this->request->getMethod();
@ -224,9 +225,7 @@ class ProjectController extends \PHPCI\Controller
*/ */
public function edit($projectId) public function edit($projectId)
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new ForbiddenException('You do not have permission to do that.');
}
$method = $this->request->getMethod(); $method = $this->request->getMethod();
$project = $this->projectStore->getById($projectId); $project = $this->projectStore->getById($projectId);

View file

@ -38,6 +38,9 @@ class SettingsController extends Controller
public function index() public function index()
{ {
$this->requireAdmin();
$this->layout->title = 'Settings';
$this->view->settings = $this->settings; $this->view->settings = $this->settings;
$emailSettings = array(); $emailSettings = array();
@ -64,6 +67,8 @@ class SettingsController extends Controller
public function github() public function github()
{ {
$this->requireAdmin();
$this->settings['phpci']['github']['id'] = $this->getParam('githubid', ''); $this->settings['phpci']['github']['id'] = $this->getParam('githubid', '');
$this->settings['phpci']['github']['secret'] = $this->getParam('githubsecret', ''); $this->settings['phpci']['github']['secret'] = $this->getParam('githubsecret', '');
$error = $this->storeSettings(); $error = $this->storeSettings();
@ -79,6 +84,8 @@ class SettingsController extends Controller
public function email() public function email()
{ {
$this->requireAdmin();
$this->settings['phpci']['email_settings'] = $this->getParams(); $this->settings['phpci']['email_settings'] = $this->getParams();
$this->settings['phpci']['email_settings']['smtp_encryption'] = $this->getParam('smtp_encryption', 0); $this->settings['phpci']['email_settings']['smtp_encryption'] = $this->getParam('smtp_encryption', 0);
@ -95,6 +102,8 @@ class SettingsController extends Controller
public function build() public function build()
{ {
$this->requireAdmin();
$this->settings['phpci']['build'] = $this->getParams(); $this->settings['phpci']['build'] = $this->getParams();
$error = $this->storeSettings(); $error = $this->storeSettings();

View file

@ -49,7 +49,7 @@ class UserController extends Controller
$users = $this->userStore->getWhere(array(), 1000, 0, array(), array('email' => 'ASC')); $users = $this->userStore->getWhere(array(), 1000, 0, array(), array('email' => 'ASC'));
$this->view->users = $users; $this->view->users = $users;
$this->config->set('page_title', 'Users'); $this->layout->title = 'Users';
return $this->view->render(); return $this->view->render();
} }
@ -58,6 +58,8 @@ class UserController extends Controller
{ {
$user = $_SESSION['phpci_user']; $user = $_SESSION['phpci_user'];
$this->layout->title = 'Edit Profile';
if ($this->request->getMethod() == 'POST') { if ($this->request->getMethod() == 'POST') {
$name = $this->getParam('name', null); $name = $this->getParam('name', null);
$email = $this->getParam('email', null); $email = $this->getParam('email', null);
@ -65,6 +67,8 @@ class UserController extends Controller
$_SESSION['phpci_user'] = $this->userService->updateUser($user, $name, $email, $password); $_SESSION['phpci_user'] = $this->userService->updateUser($user, $name, $email, $password);
$user = $_SESSION['phpci_user']; $user = $_SESSION['phpci_user'];
$this->view->updated = 1;
} }
$values = $user->getDataArray(); $values = $user->getDataArray();
@ -111,11 +115,9 @@ class UserController extends Controller
*/ */
public function add() public function add()
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new ForbiddenException('You do not have permission to do that.');
}
$this->config->set('page_title', 'Add User'); $this->layout->title = 'Add User';
$method = $this->request->getMethod(); $method = $this->request->getMethod();
@ -153,9 +155,7 @@ class UserController extends Controller
*/ */
public function edit($userId) public function edit($userId)
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new ForbiddenException('You do not have permission to do that.');
}
$method = $this->request->getMethod(); $method = $this->request->getMethod();
$user = $this->userStore->getById($userId); $user = $this->userStore->getById($userId);
@ -164,6 +164,9 @@ class UserController extends Controller
throw new NotFoundException('User with ID: ' . $userId . ' does not exist.'); throw new NotFoundException('User with ID: ' . $userId . ' does not exist.');
} }
$this->layout->title = $user->getName();
$this->layout->subtitle = 'Edit User';
$values = array_merge($user->getDataArray(), $this->getParams()); $values = array_merge($user->getDataArray(), $this->getParams());
$form = $this->userForm($values, 'edit/' . $userId); $form = $this->userForm($values, 'edit/' . $userId);
@ -246,9 +249,7 @@ class UserController extends Controller
*/ */
public function delete($userId) public function delete($userId)
{ {
if (!$_SESSION['phpci_user']->getIsAdmin()) { $this->requireAdmin();
throw new ForbiddenException('You do not have permission to do that.');
}
$user = $this->userStore->getById($userId); $user = $this->userStore->getById($userId);

View file

@ -9,6 +9,13 @@ class FixDatabaseColumns extends AbstractMigration
*/ */
public function up() public function up()
{ {
$dbAdapter = $this->getAdapter();
if ($dbAdapter instanceof \Phinx\Db\Adapter\PdoAdapter) {
$pdo = $dbAdapter->getConnection();
$pdo->exec('SET foreign_key_checks = 0');
}
$build = $this->table('build'); $build = $this->table('build');
$build->changeColumn('project_id', 'integer', array('null' => false)); $build->changeColumn('project_id', 'integer', array('null' => false));
$build->changeColumn('commit_id', 'string', array('limit' => 50, 'null' => false)); $build->changeColumn('commit_id', 'string', array('limit' => 50, 'null' => false));
@ -45,5 +52,10 @@ class FixDatabaseColumns extends AbstractMigration
$user->changeColumn('hash', 'string', array('limit' => 250, 'null' => false)); $user->changeColumn('hash', 'string', array('limit' => 250, 'null' => false));
$user->changeColumn('is_admin', 'integer', array('null' => false, 'default' => 0)); $user->changeColumn('is_admin', 'integer', array('null' => false, 'default' => 0));
$user->changeColumn('name', 'string', array('limit' => 250, 'null' => false)); $user->changeColumn('name', 'string', array('limit' => 250, 'null' => false));
if ($dbAdapter instanceof \Phinx\Db\Adapter\PdoAdapter) {
$pdo = $dbAdapter->getConnection();
$pdo->exec('SET foreign_key_checks = 1');
}
} }
} }

View file

@ -110,16 +110,15 @@ class BuildBase extends Model
'commit_id' => array( 'commit_id' => array(
'type' => 'varchar', 'type' => 'varchar',
'length' => 50, 'length' => 50,
'nullable' => true,
'default' => null, 'default' => null,
), ),
'status' => array( 'status' => array(
'type' => 'tinyint', 'type' => 'int',
'length' => 4, 'length' => 11,
'default' => null, 'default' => null,
), ),
'log' => array( 'log' => array(
'type' => 'longtext', 'type' => 'text',
'nullable' => true, 'nullable' => true,
'default' => null, 'default' => null,
), ),
@ -155,7 +154,7 @@ class BuildBase extends Model
'default' => null, 'default' => null,
), ),
'extra' => array( 'extra' => array(
'type' => 'longtext', 'type' => 'text',
'nullable' => true, 'nullable' => true,
'default' => null, 'default' => null,
), ),
@ -382,10 +381,12 @@ class BuildBase extends Model
/** /**
* Set the value of CommitId / commit_id. * Set the value of CommitId / commit_id.
* *
* Must not be null.
* @param $value string * @param $value string
*/ */
public function setCommitId($value) public function setCommitId($value)
{ {
$this->_validateNotNull('CommitId', $value);
$this->_validateString('CommitId', $value); $this->_validateString('CommitId', $value);
if ($this->data['commit_id'] === $value) { if ($this->data['commit_id'] === $value) {

View file

@ -91,17 +91,15 @@ class BuildMetaBase extends Model
'build_id' => array( 'build_id' => array(
'type' => 'int', 'type' => 'int',
'length' => 11, 'length' => 11,
'nullable' => true,
'default' => null, 'default' => null,
), ),
'meta_key' => array( 'meta_key' => array(
'type' => 'varchar', 'type' => 'varchar',
'length' => 255, 'length' => 250,
'default' => null, 'default' => null,
), ),
'meta_value' => array( 'meta_value' => array(
'type' => 'longtext', 'type' => 'text',
'nullable' => true,
'default' => null, 'default' => null,
), ),
); );
@ -238,10 +236,12 @@ class BuildMetaBase extends Model
/** /**
* Set the value of BuildId / build_id. * Set the value of BuildId / build_id.
* *
* Must not be null.
* @param $value int * @param $value int
*/ */
public function setBuildId($value) public function setBuildId($value)
{ {
$this->_validateNotNull('BuildId', $value);
$this->_validateInt('BuildId', $value); $this->_validateInt('BuildId', $value);
if ($this->data['build_id'] === $value) { if ($this->data['build_id'] === $value) {
@ -276,10 +276,12 @@ class BuildMetaBase extends Model
/** /**
* Set the value of MetaValue / meta_value. * Set the value of MetaValue / meta_value.
* *
* Must not be null.
* @param $value string * @param $value string
*/ */
public function setMetaValue($value) public function setMetaValue($value)
{ {
$this->_validateNotNull('MetaValue', $value);
$this->_validateString('MetaValue', $value); $this->_validateString('MetaValue', $value);
if ($this->data['meta_value'] === $value) { if ($this->data['meta_value'] === $value) {

View file

@ -38,11 +38,11 @@ class ProjectBase extends Model
'reference' => null, 'reference' => null,
'branch' => null, 'branch' => null,
'ssh_private_key' => null, 'ssh_private_key' => null,
'ssh_public_key' => null,
'type' => null, 'type' => null,
'access_information' => null, 'access_information' => null,
'last_commit' => null, 'last_commit' => null,
'build_config' => null, 'build_config' => null,
'ssh_public_key' => null,
'allow_public_status' => null, 'allow_public_status' => null,
); );
@ -56,11 +56,11 @@ class ProjectBase extends Model
'reference' => 'getReference', 'reference' => 'getReference',
'branch' => 'getBranch', 'branch' => 'getBranch',
'ssh_private_key' => 'getSshPrivateKey', 'ssh_private_key' => 'getSshPrivateKey',
'ssh_public_key' => 'getSshPublicKey',
'type' => 'getType', 'type' => 'getType',
'access_information' => 'getAccessInformation', 'access_information' => 'getAccessInformation',
'last_commit' => 'getLastCommit', 'last_commit' => 'getLastCommit',
'build_config' => 'getBuildConfig', 'build_config' => 'getBuildConfig',
'ssh_public_key' => 'getSshPublicKey',
'allow_public_status' => 'getAllowPublicStatus', 'allow_public_status' => 'getAllowPublicStatus',
// Foreign key getters: // Foreign key getters:
@ -76,11 +76,11 @@ class ProjectBase extends Model
'reference' => 'setReference', 'reference' => 'setReference',
'branch' => 'setBranch', 'branch' => 'setBranch',
'ssh_private_key' => 'setSshPrivateKey', 'ssh_private_key' => 'setSshPrivateKey',
'ssh_public_key' => 'setSshPublicKey',
'type' => 'setType', 'type' => 'setType',
'access_information' => 'setAccessInformation', 'access_information' => 'setAccessInformation',
'last_commit' => 'setLastCommit', 'last_commit' => 'setLastCommit',
'build_config' => 'setBuildConfig', 'build_config' => 'setBuildConfig',
'ssh_public_key' => 'setSshPublicKey',
'allow_public_status' => 'setAllowPublicStatus', 'allow_public_status' => 'setAllowPublicStatus',
// Foreign key setters: // Foreign key setters:
@ -109,23 +109,18 @@ class ProjectBase extends Model
), ),
'branch' => array( 'branch' => array(
'type' => 'varchar', 'type' => 'varchar',
'length' => 250, 'length' => 50,
'default' => null, 'default' => 'master',
), ),
'ssh_private_key' => array( 'ssh_private_key' => array(
'type' => 'text', 'type' => 'text',
'nullable' => true, 'nullable' => true,
'default' => null, 'default' => null,
), ),
'ssh_public_key' => array(
'type' => 'text',
'nullable' => true,
'default' => null,
),
'type' => array( 'type' => array(
'type' => 'varchar', 'type' => 'varchar',
'length' => 50, 'length' => 50,
'default' => 1, 'default' => null,
), ),
'access_information' => array( 'access_information' => array(
'type' => 'varchar', 'type' => 'varchar',
@ -144,9 +139,14 @@ class ProjectBase extends Model
'nullable' => true, 'nullable' => true,
'default' => null, 'default' => null,
), ),
'ssh_public_key' => array(
'type' => 'text',
'nullable' => true,
'default' => null,
),
'allow_public_status' => array( 'allow_public_status' => array(
'type' => 'tinyint', 'type' => 'int',
'length' => 4, 'length' => 11,
), ),
); );
@ -224,18 +224,6 @@ class ProjectBase extends Model
return $rtn; return $rtn;
} }
/**
* Get the value of SshPublicKey / ssh_public_key.
*
* @return string
*/
public function getSshPublicKey()
{
$rtn = $this->data['ssh_public_key'];
return $rtn;
}
/** /**
* Get the value of Type / type. * Get the value of Type / type.
* *
@ -284,6 +272,18 @@ class ProjectBase extends Model
return $rtn; return $rtn;
} }
/**
* Get the value of SshPublicKey / ssh_public_key.
*
* @return string
*/
public function getSshPublicKey()
{
$rtn = $this->data['ssh_public_key'];
return $rtn;
}
/** /**
* Get the value of AllowPublicStatus / allow_public_status. * Get the value of AllowPublicStatus / allow_public_status.
* *
@ -394,24 +394,6 @@ class ProjectBase extends Model
$this->_setModified('ssh_private_key'); $this->_setModified('ssh_private_key');
} }
/**
* Set the value of SshPublicKey / ssh_public_key.
*
* @param $value string
*/
public function setSshPublicKey($value)
{
$this->_validateString('SshPublicKey', $value);
if ($this->data['ssh_public_key'] === $value) {
return;
}
$this->data['ssh_public_key'] = $value;
$this->_setModified('ssh_public_key');
}
/** /**
* Set the value of Type / type. * Set the value of Type / type.
* *
@ -486,6 +468,24 @@ class ProjectBase extends Model
$this->_setModified('build_config'); $this->_setModified('build_config');
} }
/**
* Set the value of SshPublicKey / ssh_public_key.
*
* @param $value string
*/
public function setSshPublicKey($value)
{
$this->_validateString('SshPublicKey', $value);
if ($this->data['ssh_public_key'] === $value) {
return;
}
$this->data['ssh_public_key'] = $value;
$this->_setModified('ssh_public_key');
}
/** /**
* Set the value of AllowPublicStatus / allow_public_status. * Set the value of AllowPublicStatus / allow_public_status.
* *

View file

@ -90,14 +90,12 @@ class UserBase extends Model
'default' => null, 'default' => null,
), ),
'is_admin' => array( 'is_admin' => array(
'type' => 'tinyint', 'type' => 'int',
'length' => 1, 'length' => 11,
'default' => null,
), ),
'name' => array( 'name' => array(
'type' => 'varchar', 'type' => 'varchar',
'length' => 250, 'length' => 250,
'nullable' => true,
'default' => null, 'default' => null,
), ),
); );
@ -259,10 +257,12 @@ class UserBase extends Model
/** /**
* Set the value of Name / name. * Set the value of Name / name.
* *
* Must not be null.
* @param $value string * @param $value string
*/ */
public function setName($value) public function setName($value)
{ {
$this->_validateNotNull('Name', $value);
$this->_validateString('Name', $value); $this->_validateString('Name', $value);
if ($this->data['name'] === $value) { if ($this->data['name'] === $value) {

View file

@ -88,4 +88,28 @@ class Project extends ProjectBase
return $this->data['branch']; return $this->data['branch'];
} }
} }
public function getIcon()
{
switch ($this->getType()) {
case 'github':
$icon = 'github';
break;
case 'bitbucket':
$icon = 'bitbucket';
break;
case 'git':
case 'gitlab':
$icon = 'git';
break;
default:
$icon = 'cog';
break;
}
return $icon;
}
} }

View file

@ -56,7 +56,6 @@ class BuildMetaStoreBase extends Store
$add .= ' LIMIT ' . $limit; $add .= ' LIMIT ' . $limit;
} }
$count = null;
$query = 'SELECT * FROM `build_meta` WHERE `project_id` = :project_id' . $add; $query = 'SELECT * FROM `build_meta` WHERE `project_id` = :project_id' . $add;
$stmt = Database::getConnection($useConnection)->prepare($query); $stmt = Database::getConnection($useConnection)->prepare($query);
@ -70,6 +69,9 @@ class BuildMetaStoreBase extends Store
}; };
$rtn = array_map($map, $res); $rtn = array_map($map, $res);
$count = count($rtn);
return array('items' => $rtn, 'count' => $count); return array('items' => $rtn, 'count' => $count);
} else { } else {
return array('items' => array(), 'count' => 0); return array('items' => array(), 'count' => 0);
@ -88,7 +90,6 @@ class BuildMetaStoreBase extends Store
$add .= ' LIMIT ' . $limit; $add .= ' LIMIT ' . $limit;
} }
$count = null;
$query = 'SELECT * FROM `build_meta` WHERE `build_id` = :build_id' . $add; $query = 'SELECT * FROM `build_meta` WHERE `build_id` = :build_id' . $add;
$stmt = Database::getConnection($useConnection)->prepare($query); $stmt = Database::getConnection($useConnection)->prepare($query);
@ -102,6 +103,9 @@ class BuildMetaStoreBase extends Store
}; };
$rtn = array_map($map, $res); $rtn = array_map($map, $res);
$count = count($rtn);
return array('items' => $rtn, 'count' => $count); return array('items' => $rtn, 'count' => $count);
} else { } else {
return array('items' => array(), 'count' => 0); return array('items' => array(), 'count' => 0);

View file

@ -56,7 +56,6 @@ class BuildStoreBase extends Store
$add .= ' LIMIT ' . $limit; $add .= ' LIMIT ' . $limit;
} }
$count = null;
$query = 'SELECT * FROM `build` WHERE `project_id` = :project_id' . $add; $query = 'SELECT * FROM `build` WHERE `project_id` = :project_id' . $add;
$stmt = Database::getConnection($useConnection)->prepare($query); $stmt = Database::getConnection($useConnection)->prepare($query);
@ -70,6 +69,9 @@ class BuildStoreBase extends Store
}; };
$rtn = array_map($map, $res); $rtn = array_map($map, $res);
$count = count($rtn);
return array('items' => $rtn, 'count' => $count); return array('items' => $rtn, 'count' => $count);
} else { } else {
return array('items' => array(), 'count' => 0); return array('items' => array(), 'count' => 0);
@ -88,7 +90,6 @@ class BuildStoreBase extends Store
$add .= ' LIMIT ' . $limit; $add .= ' LIMIT ' . $limit;
} }
$count = null;
$query = 'SELECT * FROM `build` WHERE `status` = :status' . $add; $query = 'SELECT * FROM `build` WHERE `status` = :status' . $add;
$stmt = Database::getConnection($useConnection)->prepare($query); $stmt = Database::getConnection($useConnection)->prepare($query);
@ -102,6 +103,9 @@ class BuildStoreBase extends Store
}; };
$rtn = array_map($map, $res); $rtn = array_map($map, $res);
$count = count($rtn);
return array('items' => $rtn, 'count' => $count); return array('items' => $rtn, 'count' => $count);
} else { } else {
return array('items' => array(), 'count' => 0); return array('items' => array(), 'count' => 0);

View file

@ -56,7 +56,6 @@ class ProjectStoreBase extends Store
$add .= ' LIMIT ' . $limit; $add .= ' LIMIT ' . $limit;
} }
$count = null;
$query = 'SELECT * FROM `project` WHERE `title` = :title' . $add; $query = 'SELECT * FROM `project` WHERE `title` = :title' . $add;
$stmt = Database::getConnection($useConnection)->prepare($query); $stmt = Database::getConnection($useConnection)->prepare($query);
@ -70,6 +69,9 @@ class ProjectStoreBase extends Store
}; };
$rtn = array_map($map, $res); $rtn = array_map($map, $res);
$count = count($rtn);
return array('items' => $rtn, 'count' => $count); return array('items' => $rtn, 'count' => $count);
} else { } else {
return array('items' => array(), 'count' => 0); return array('items' => array(), 'count' => 0);

View file

@ -10,6 +10,7 @@
namespace PHPCI\Store; namespace PHPCI\Store;
use b8\Database; use b8\Database;
use PHPCI\BuildFactory;
use PHPCI\Model\Build; use PHPCI\Model\Build;
use PHPCI\Store\Base\BuildStoreBase; use PHPCI\Store\Base\BuildStoreBase;
@ -21,11 +22,22 @@ use PHPCI\Store\Base\BuildStoreBase;
*/ */
class BuildStore extends BuildStoreBase class BuildStore extends BuildStoreBase
{ {
public function getLatestBuilds($projectId) public function getLatestBuilds($projectId = null, $limit = 5)
{ {
$query = 'SELECT * FROM build WHERE project_id = :pid ORDER BY id DESC LIMIT 5'; $where = '';
if (!is_null($projectId)) {
$where = ' WHERE `project_id` = :pid ';
}
$query = 'SELECT * FROM build '.$where.' ORDER BY id DESC LIMIT :limit';
$stmt = Database::getConnection('read')->prepare($query); $stmt = Database::getConnection('read')->prepare($query);
if (!is_null($projectId)) {
$stmt->bindValue(':pid', $projectId); $stmt->bindValue(':pid', $projectId);
}
$stmt->bindValue(':limit', $limit, \PDO::PARAM_INT);
if ($stmt->execute()) { if ($stmt->execute()) {
$res = $stmt->fetchAll(\PDO::FETCH_ASSOC); $res = $stmt->fetchAll(\PDO::FETCH_ASSOC);
@ -41,6 +53,21 @@ class BuildStore extends BuildStoreBase
} }
} }
public function getLastBuildByStatus($projectId = null, $status = Build::STATUS_SUCCESS)
{
$query = 'SELECT * FROM build WHERE project_id = :pid AND status = :status ORDER BY id DESC LIMIT 1';
$stmt = Database::getConnection('read')->prepare($query);
$stmt->bindValue(':pid', $projectId);
$stmt->bindValue(':status', $status);
if ($stmt->execute()) {
$res = $stmt->fetch(\PDO::FETCH_ASSOC);
return new Build($res);
} else {
return array();
}
}
public function getByProjectAndCommit($projectId, $commitId) public function getByProjectAndCommit($projectId, $commitId)
{ {
$query = 'SELECT * FROM `build` WHERE `project_id` = :project_id AND `commit_id` = :commit_id'; $query = 'SELECT * FROM `build` WHERE `project_id` = :project_id AND `commit_id` = :commit_id';

View file

@ -10,6 +10,7 @@
namespace PHPCI\Store; namespace PHPCI\Store;
use b8\Database; use b8\Database;
use PHPCI\Model\Project;
use PHPCI\Store\Base\ProjectStoreBase; use PHPCI\Store\Base\ProjectStoreBase;
/** /**
@ -39,4 +40,26 @@ class ProjectStore extends ProjectStoreBase
return array(); return array();
} }
} }
public function getAll()
{
$query = 'SELECT * FROM `project` ORDER BY `title` ASC';
$stmt = Database::getConnection('read')->prepare($query);
if ($stmt->execute()) {
$res = $stmt->fetchAll(\PDO::FETCH_ASSOC);
$map = function ($item) {
return new Project($item);
};
$rtn = array_map($map, $res);
$count = count($rtn);
return array('items' => $rtn, 'count' => $count);
} else {
return array('items' => array(), 'count' => 0);
}
}
} }

View file

@ -0,0 +1,20 @@
<li>
<a href="<?php print PHPCI_URL; ?>build/view/<?php print $build->getId(); ?>">
<?php if ($build->getCommitterEmail()): ?>
<div class="pull-left">
<img src="https://www.gravatar.com/avatar/<?php print md5($build->getCommitterEmail()); ?>?d=mm&s=40" class="img-circle" alt="">
</div>
<?php endif; ?>
<h4>
<?php print $build->getProject()->getTitle(); ?>
<?php if ($build->getStatus() == \PHPCI\Model\Build::STATUS_NEW): ?>
<small class="pull-right">Created <?php print $build->getCreated()->format('g:ia'); ?></small>
<?php elseif ($build->getStatus() == \PHPCI\Model\Build::STATUS_RUNNING): ?>
<small class="pull-right">Started <?php print $build->getStarted()->format('g:ia'); ?></small>
<?php endif; ?>
</h4>
<p>Branch: <?php print $build->getBranch(); ?></p>
</a>
</li>

View file

@ -1,17 +1,15 @@
<div class="build-info-panel panel panel-default"> <div class="build-info-panel box box-solid">
<img class="pull-left" src="//www.gravatar.com/avatar/<?php print md5($build->getCommitterEmail()); ?>?d=mm">
<div class="panel-heading">
<h1 class="panel-title">
<a href="<?php print PHPCI_URL; ?>project/view/<?php print $build->getProjectId(); ?>">
<?php print $build->getProject()->getTitle(); ?></a>
<span>#<?php print $build->getId(); ?></span>
<div class="box-header">
<h1 class="box-title">
Committed by <?php print $build->getCommitterEmail(); ?>
<label class="pull-right label"></label> <label class="pull-right label"></label>
</h1> </h1>
</div> </div>
<div class="panel-body"> <div class="box-body">
<img class="pull-left" src="//www.gravatar.com/avatar/<?php print md5($build->getCommitterEmail()); ?>?d=mm">
<div id="build-info"> <div id="build-info">
<?php if ($build->getCommitMessage()): ?> <?php if ($build->getCommitMessage()): ?>
<div class="commit-message"> <div class="commit-message">
@ -19,8 +17,7 @@
</div> </div>
<?php endif; ?> <?php endif; ?>
<strong>Branch: </strong> <?php print $build->getBranch(); ?><br> <strong>Branch: </strong> <?php print $build->getBranch(); ?>
<strong>Committer: </strong> <?php print $build->getCommitterEmail(); ?>
<?php if ($build->getCommitId() != 'Manual'): ?> <?php if ($build->getCommitId() != 'Manual'): ?>
<br><strong>Commit ID: </strong> <?php print $build->getCommitId(); ?><br> <br><strong>Commit ID: </strong> <?php print $build->getCommitId(); ?><br>
@ -30,35 +27,19 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-3"> <div class="col-lg-12">
<div class="panel panel-default affix">
<div class="panel-heading">
<h4 class="panel-title">Options</h4>
</div>
<ul class="list-group">
<a class="list-group-item" href="<?php echo PHPCI_URL ?>build/rebuild/<?php print $build->getId(); ?>"><i class="icon-cog"></i> Rebuild</a>
<?php if($this->User()->getIsAdmin()): ?>
<a class="list-group-item" href="<?php echo PHPCI_URL ?>build/delete/<?php print $build->getId(); ?>" id="delete-build"><i class="icon-trash"></i> Delete Build</a>
<?php endif; ?>
</ul>
<div class="panel-heading">
<h4 class="panel-title">Quick links</h4>
</div>
<ul class="list-group" id="anchorPlugins"></ul>
</div>
</div>
<div class="col-lg-9">
<div id="status"></div> <div id="status"></div>
<div id="plugins" class="row"></div> <div id="plugins" class="row"></div>
</div> </div>
</div> </div>
<script src="<?php print PHPCI_URL; ?>assets/js/build.js"></script>
<script> <script>
var PHPCI = new PHPCIObject(<?php print $build->getId() ?>);
PHPCI.buildData = <?php print $data; ?>; var ActiveBuild = new Build(<?php print $build->getId() ?>);
PHPCI.fileLinkTemplate = <?php print json_encode($build->getFileLinkTemplate()); ?>; ActiveBuild.buildData = <?php print $data; ?>;
ActiveBuild.fileLinkTemplate = <?php print json_encode($build->getFileLinkTemplate()); ?>;
</script> </script>
<?php <?php
@ -69,7 +50,7 @@ foreach ($plugins as $plugin) {
<script> <script>
$(document).ready(function() { $(document).ready(function() {
PHPCI.renderPlugins(); ActiveBuild.renderPlugins();
$('#delete-build').on('click', function (e) { $('#delete-build').on('click', function (e) {
e.preventDefault(); e.preventDefault();
@ -86,41 +67,38 @@ foreach ($plugins as $plugin) {
}); });
function updateBuildStatus(status) { function updateBuildStatus(status) {
var statusClass = null;
var statusText = null;
switch (status) { switch (status) {
case 0: case 0:
statusClass = 'info'; $('.build-info-panel')
statusText = 'Pending'; .removeClass('bg-yellow')
.removeClass('bg-green')
.removeClass('bg-red')
.addClass('bg-blue');
break; break;
case 1: case 1:
statusClass = 'warning'; $('.build-info-panel')
statusText = 'Running'; .removeClass('bg-green')
.removeClass('bg-red')
.removeClass('bg-blue')
.addClass('bg-yellow');
break; break;
case 2: case 2:
statusClass = 'success'; $('.build-info-panel')
statusText = 'Success'; .removeClass('bg-yellow')
.removeClass('bg-red')
.removeClass('bg-blue')
.addClass('bg-green');
break; break;
case 3: case 3:
statusClass = 'danger'; $('.build-info-panel')
statusText = 'Failed'; .removeClass('bg-yellow')
.removeClass('bg-green')
.removeClass('bg-blue')
.addClass('bg-red');
break; break;
} }
$('.build-info-panel')
.removeClass('panel-info')
.removeClass('panel-warning')
.removeClass('panel-success')
.removeClass('panel-danger')
.addClass('panel-' + statusClass);
$('.build-info-panel .label')
.removeClass('label-info')
.removeClass('label-warning')
.removeClass('label-success')
.removeClass('label-danger')
.addClass('label-' + statusClass)
.text(statusText);
} }
</script> </script>

View file

@ -66,8 +66,8 @@
<div class="build-info-panel panel panel-<?php print $statusClass; ?>"> <div class="build-info-panel panel panel-<?php print $statusClass; ?>">
<img class="pull-left" src="//www.gravatar.com/avatar/<?php print md5($latest->getCommitterEmail()); ?>?d=mm"> <img class="pull-left" src="//www.gravatar.com/avatar/<?php print md5($latest->getCommitterEmail()); ?>?d=mm">
<div class="panel-heading"> <div class="box-header">
<h1 class="panel-title"> <h1 class="box-title">
<a href="/project/view/<?php print $latest->getProjectId(); ?>"> <a href="/project/view/<?php print $latest->getProjectId(); ?>">
<?php print $latest->getProject()->getTitle(); ?></a> <?php print $latest->getProject()->getTitle(); ?></a>
<span>#<?php print $latest->getId(); ?></span> <span>#<?php print $latest->getId(); ?></span>
@ -76,7 +76,7 @@
</h1> </h1>
</div> </div>
<div class="panel-body"> <div class="box-body">
<div id="build-info"> <div id="build-info">
<?php if ($latest->getCommitMessage()): ?> <?php if ($latest->getCommitMessage()): ?>
<div class="commit-message"> <div class="commit-message">
@ -97,8 +97,8 @@
<!-- Recent builds: --> <!-- Recent builds: -->
<div class="panel panel-default"> <div class="box box-primary">
<div class="panel-heading"><h3 class="panel-title">Builds</h3></div> <div class="box-header"><h3 class="box-title">Builds</h3></div>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>

View file

@ -47,19 +47,22 @@ switch($build->getStatus())
} }
?></a></td> ?></a></td>
<td> <td class="hidden-md hidden-sm hidden-xs">
<?php <?php
if ($build->getCommitId() !== 'Manual') { if ($build->getCommitId() !== 'Manual') {
print '<a href="' . $build->getCommitLink() . '">'; print sprintf(
} '<a href="%s" target="_blank">%s (%s)</a>',
print $build->getCommitId(); $build->getCommitLink(),
if ($build->getCommitId() !== 'Manual') { substr($build->getCommitId(), 0, 7),
print '</a>'; $build->getCommitterEmail()
);
} else {
print 'Manual Build';
} }
?> ?>
</td> </td>
<td><a href="<?php print $build->getBranchLink(); ?>"><?php print $build->getBranch(); ?></a></td> <td><a href="<?php print $build->getBranchLink(); ?>" target="_blank"><?php print $build->getBranch(); ?></a></td>
<td> <td>
<span class='label label-<?php echo $subcls ?>'><?php echo $status ?></span> <span class='label label-<?php echo $subcls ?>'><?php echo $status ?></span>
</td> </td>

View file

@ -1,93 +1,102 @@
<div id="title">
<h1><i class="glyphicon glyphicon-home"></i> Dashboard</h1>
</div>
<div class="row"> <div class="row">
<div class="col-lg-3">
<?php if (count($projects)): ?>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">Projects</h4>
</div>
<div class="list-group">
<?php foreach($projects as $project): ?>
<a class="list-group-item" href="<?php echo PHPCI_URL ?>project/view/<?php print $project->getId(); ?>"><?php print htmlspecialchars($project->getTitle()); ?></a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?> <div class="col-sm-5">
</div>
<div class="col-lg-9">
<div class="panel panel-default">
<div class="panel-heading"><h3 class="panel-title">Project Overview</h3></div>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Health</th>
<th>Project</th>
<th>Last Success</th>
<th>Last Failure</th>
<th>Success/Failures</th>
<th style="width: 100px"></th>
</tr>
</thead>
<tbody id="project-overview">
<?php print $summary; ?> <?php print $summary; ?>
</tbody>
</table>
</div> </div>
<div class="panel panel-default"> <div class="col-sm-7 pull-left">
<div class="panel-heading"> <div class="box box-primary">
<h3 class="panel-title">Last 5 Builds</h3> <div class="box-header">
<h3 class="box-title">Latest Builds</h3>
</div> </div>
<table class="table table-striped table-bordered"> <div class="box-body">
<thead> <ul class="timeline">
<tr> <?php $last = new \DateTime('-1 Year'); ?>
<th>ID</th>
<th>Project</th> <?php
<th>Commit</th> foreach ($builds as $build):
<th>Branch</th>
<th>Status</th> switch ($build->getStatus()) {
<th style="width: 100px"></th> case \PHPCI\Model\Build::STATUS_NEW:
</tr> $updated = $build->getCreated();
</thead> $label = 'Created';
<tbody id="latest-builds"> $color = 'blue';
<?php print $builds; ?> break;
</tbody>
</table> case \PHPCI\Model\Build::STATUS_RUNNING:
$updated = $build->getStarted();
$label = 'Started';
$color = 'yellow';
break;
case \PHPCI\Model\Build::STATUS_SUCCESS:
$updated = $build->getFinished();
$label = 'Successful';
$color = 'green';
break;
case \PHPCI\Model\Build::STATUS_FAILED:
$updated = $build->getFinished();
$label = 'Failed';
$color = 'red';
break;
}
if ($updated->format('Y-m-d') != $last->format('Y-m-d')): $last = $updated;
?>
<li class="time-label">
<span class="bg-gray">
<?php print $last->format('M j Y'); ?>
</span>
</li>
<?php endif; ?>
<!-- /.timeline-label -->
<!-- timeline item -->
<li>
<i class="fa fa-<?php print $build->getProject()->getIcon(); ?> bg-<?php print $color; ?>"></i>
<div class="timeline-item">
<span class="time"><i class="fa fa-clock-o"></i> <?php print $updated->format('g:ia'); ?></span>
<h3 class="timeline-header">
<a href="<?php print PHPCI_URL; ?>project/view/<?php print $build->getProjectId(); ?>">
<?php print $build->getProject()->getTitle(); ?>
</a>
-
<a href="<?php print PHPCI_URL; ?>build/view/<?php print $build->getId(); ?>">
Build #<?php print $build->getId(); ?>
</a>
-
<?php print $label; ?>
</h3>
<div class="timeline-body">
<?php
if ($build->getCommitId() !== 'Manual') {
print sprintf(
'<a href="%s" target="_blank">%s (%s)</a>',
$build->getCommitLink(),
substr($build->getCommitId(), 0, 7),
$build->getCommitterEmail()
);
} else {
print 'Manual Build';
}
?>
- <?php print $build->getCommitMessage(); ?>
</div>
</div>
</li>
<!-- END timeline item -->
<?php endforeach; ?>
<li>
<i class="fa fa-clock-o"></i>
</li>
</ul>
</div> </div>
</div> </div>
</div> </div>
<script> </div>
var refreshProjectData = function()
{
$.ajax({
url: '<?php echo PHPCI_URL ?>home/latest',
success: function (data) {
$('#latest-builds').html(data);
$('#latest-builds').trigger('latest-builds:reload');
},
error: handleFailedAjax
});
$.ajax({
url: '<?php echo PHPCI_URL ?>home/summary',
success: function (data) {
$('#project-overview').html(data);
$('#project-overview').trigger('project-overview:reload');
},
error: handleFailedAjax
});
};
setInterval(refreshProjectData, 10000);
</script>

View file

@ -1,5 +1,3 @@
<h1 id="title">Packages and Provided Plugins</h1>
<?php if (!$canWrite): ?> <?php if (!$canWrite): ?>
<p class="alert alert-danger">PHPCI cannot update composer.json for you as it is not writable.</p> <p class="alert alert-danger">PHPCI cannot update composer.json for you as it is not writable.</p>
<?php endif; ?> <?php endif; ?>
@ -12,10 +10,12 @@
<p class="alert alert-success"><strong><?php echo $_GET['w']; ?></strong> has been added to composer.json for you and will be installed next time you run composer update.</p> <p class="alert alert-success"><strong><?php echo $_GET['w']; ?></strong> has been added to composer.json for you and will be installed next time you run composer update.</p>
<?php endif; ?> <?php endif; ?>
<div class="box"> <div class="box box-primary">
<h3 class="title">Available Plugins</h3> <div class="box-header">
<h3 class="box-title">Enabled Plugins</h3>
</div>
<table class="table-striped table-bordered table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>Name</th> <th>Name</th>
@ -35,10 +35,16 @@
</table> </table>
</div> </div>
<div class="box">
<h3 class="title">Installed Packages</h3>
<table class="table-striped table-bordered table">
<div class="row">
<div class="col-lg-6">
<div class="box box-primary">
<div class="box-header">
<h3 class="box-title">Installed Packages</h3>
</div>
<table class="table">
<thead> <thead>
<tr> <tr>
<th>Title</th> <th>Title</th>
@ -62,10 +68,15 @@
</table> </table>
</div> </div>
<div class="box"> </div>
<h3 class="title">Suggested Packages</h3>
<table class="table-striped table-bordered table"> <div class="col-lg-6">
<div class="box box-primary">
<div class="box-header">
<h3 class="box-title">Suggested Packages</h3>
</div>
<table class="table">
<thead> <thead>
<tr> <tr>
<th>Title</th> <th>Title</th>
@ -90,9 +101,15 @@
</table> </table>
</div> </div>
<div class="box"> </div>
<h3 class="title">Search Packagist for More Packages</h3> </div>
<div class="box box-primary">
<div class="box-header">
<h3 class="box-title">Search Packagist for More Packages</h3>
</div>
<div class="box-body">
<div class="input-group"> <div class="input-group">
<input id="search-query" type="text" class="form-control"> <input id="search-query" type="text" class="form-control">
<span class="input-group-btn"> <span class="input-group-btn">
@ -101,7 +118,7 @@
</div> </div>
<div id="results" style="margin-top: 15px; display: none;"> <div id="results" style="margin-top: 15px; display: none;">
<table class="table-striped table-bordered table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>Title</th> <th>Title</th>
@ -116,6 +133,8 @@
</div> </div>
</div> </div>
</div>
<script> <script>
var canWrite = <?php print $canWrite ? 'true' : 'false'; ?>; var canWrite = <?php print $canWrite ? 'true' : 'false'; ?>;

View file

@ -1,52 +1,68 @@
<h1> <script>
<i class="glyphicon glyphicon-th-list"></i> <?php print htmlspecialchars($project->getTitle()); ?> var PHPCI_PROJECT_ID = <?php print $project->getId(); ?>;
<small><?php echo $branch ?></small> var PHPCI_PROJECT_BRANCH = '<?php print $branch; ?>';
<div class="btn-group pull-right branch-btn"> </script>
<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown">
Branch&nbsp;&nbsp;<span class="caret"></span> <div class="clearfix" style="margin-bottom: 20px;">
<div class="pull-right btn-group">
<a class="btn btn-success" href="<?php print PHPCI_URL . 'project/build/' . $project->getId(); ?>">Build Now</a>
<div class="btn-group branch-btn pull-right">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
Branch<?php print !empty($branch) ? ': ' . $branch : ''; ?>&nbsp;&nbsp;<span class="caret"></span>
</button> </button>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
<?php foreach ($branches as $curbranch) : ?> <?php foreach ($branches as $curbranch) : ?>
<li <?php echo ($curbranch == $branch) ? 'class="active"' : ''?>> <li <?php echo ($curbranch == $branch) ? 'class="active"' : ''?>>
<a href="<?php echo PHPCI_URL ?>project/view/<?php print $project->getId(); ?>/<?php echo urlencode($curbranch) ?>"> <a href="<?php echo PHPCI_URL ?>project/view/<?php print $project->getId(); ?>?branch=<?php echo urlencode($curbranch) ?>">
<?php echo $curbranch ?> <?php echo $curbranch ?>
</a> </a>
</li> </li>
<?php endforeach; ?> <?php endforeach; ?>
<li class="divider"></li> <li class="divider"></li>
<li><a href="<?php echo PHPCI_URL ?>project/view/<?php print $project->getId(); ?>">All</a></li> <li><a href="<?php echo PHPCI_URL ?>project/view/<?php print $project->getId(); ?>">All</a></li>
</ul> </ul>
</div> </div>
</h1> </div>
</div>
<div class="row"> <div class="row">
<div class="col-lg-3"> <div class="col-lg-9 col-md-8 col-sm-8">
<div class="panel panel-default"> <div class="box box-primary">
<div class="panel-heading"> <div class="box-header">
<h3 class="panel-title">Options</h3>
<h3 class="box-title">Builds</h3>
</div>
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Project</th>
<th class="hidden-md hidden-sm hidden-xs">Commit</th>
<th>Branch</th>
<th>Status</th>
<th style="width: 100px"></th>
</tr>
</thead>
<tbody id="latest-builds">
<?php print $builds; ?>
</tbody>
</table>
</div>
</div> </div>
<div class="list-group"> <div class="col-lg-3 col-md-4 col-sm-4">
<a class="list-group-item"
href="<?php echo PHPCI_URL ?>project/build/<?php print $project->getId() . ((!empty($branch)) ? '/' . urlencode($branch) : ''); ?>">
<i class="glyphicon glyphicon-cog"></i> Build <?php print (!empty($branch)) ? 'Branch' : ''; ?> Now
</a>
<?php if($this->User()->getIsAdmin()): ?>
<a class="list-group-item" href="<?php echo PHPCI_URL ?>project/edit/<?php print $project->getId(); ?>"><i class="glyphicon glyphicon-edit"></i> Edit Project</a>
<a class="list-group-item" href="#" id="delete-project"><i class="glyphicon glyphicon-trash"></i> Delete Project</a>
<?php endif; ?>
</div>
</div>
<?php if (in_array($project->getType(), array('github', 'gitlab', 'bitbucket'))): ?> <?php if (in_array($project->getType(), array('github', 'gitlab', 'bitbucket'))): ?>
<div class="panel panel-info"> <div class="box box-info">
<div class="panel-heading"> <div class="box-header">
<h4 class="panel-title">Webhooks</h4> <h4 class="box-title">Webhooks</h4>
</div> </div>
<div class="panel-body"> <div class="box-body">
To automatically build this project when new commits are pushed, add the URL below To automatically build this project when new commits are pushed, add the URL below
<?php <?php
@ -54,7 +70,7 @@
{ {
case 'github': case 'github':
$url = PHPCI_URL . 'webhook/github/' . $project->getId(); $url = PHPCI_URL . 'webhook/github/' . $project->getId();
print ' as a "WebHook URL" in the <a href="https://github.com/' . $project->getReference() . '/settings/hooks">Service Hooks</a> section of your Github repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>'; print ' as a new "Webhook" in the <a href="https://github.com/' . $project->getReference() . '/settings/hooks">Webhooks and Services</a> section of your Github repository.<br><br><strong style="word-wrap: break-word;">' . $url . '</strong>';
break; break;
case 'gitlab': case 'gitlab':
@ -73,39 +89,12 @@
<?php endif; ?> <?php endif; ?>
<?php if ($project->getSshPublicKey()): ?> <?php if ($project->getSshPublicKey()): ?>
<div class="panel panel-info"> <div class="box box-info">
<div class="panel-heading"><h3 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#publicCollapse">Public Key</a></h3></div> <div class="box-header"><h3 class="box-title"><a data-toggle="collapse" data-parent="#accordion" href="#publicCollapse">Public Key</a></h3></div>
<div id="publicCollapse" class="panel-collapse collapse out"> <div class="box-body" style="word-break: break-word;"><?php print $project->getSshPublicKey(); ?></div>
<div class="panel-body word-wrap"><?php print $project->getSshPublicKey(); ?></div>
</div>
</div> </div>
<?php endif; ?> <?php endif; ?>
</div> </div>
<div class="col-lg-9">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Builds</h3>
</div>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Project</th>
<th>Commit</th>
<th>Branch</th>
<th>Status</th>
<th style="width: 100px"></th>
</tr>
</thead>
<tbody id="latest-builds">
<?php print $builds; ?>
</tbody>
</table>
</div> </div>
<?php <?php
@ -119,51 +108,47 @@
} }
if ($pages > 1) { if ($pages > 1) {
for($i = 1; $i <= $pages; $i++)
$start = $page - 3;
if ($start <= 0) {
$start = 1;
}
$end = $page + 3;
if ($end > $pages) {
$end = $pages;
}
if ($start > 1) {
print '<li><a href="' . $project_url . '">1...</a></li>';
}
for($i = $start; $i <= $end; $i++)
{ {
if ($pages > $end && $i == $pages) continue;
if ($i == $page) { if ($i == $page) {
print '<li><span>' . $i . '</span></li>'; print '<li class="bg-blue"><span>' . $i . '</span></li>';
} else { } else {
print '<li><a href="' . $project_url . '?p=' . $i . '">' . $i . '</a></li>'; print '<li><a href="' . $project_url . '?p=' . $i . '">' . $i . '</a></li>';
} }
} }
if ($pages > $end) {
print '<li><a href="' . $project_url . '?p='.$pages.'">...'.$pages.'</a></li>';
}
} }
if ($page < $pages) {
if ($page < $pages - 1) {
print '<li><a href="' . $project_url . '?p='.($page == $pages ? $pages : $page + 1).'">Next &raquo;</a></li>'; print '<li><a href="' . $project_url . '?p='.($page == $pages ? $pages : $page + 1).'">Next &raquo;</a></li>';
} }
print '</ul></div>'; print '</ul></div>';
?> ?>
</div>
</div>
<?php if($page == 1): ?>
<script>
setInterval(function()
{
$.ajax({
url: '<?php echo PHPCI_URL ?>project/builds/<?php print $project->getId() . ((!empty($branch)) ? '/' . urlencode($branch) : ''); ?>',
success: function (data) {
$('#latest-builds').html(data);
$('#latest-builds').trigger('latest-builds:reload');
},
error: handleFailedAjax
});
}, 10000);
$(function() {
$('#delete-project').on('click', function (e) {
e.preventDefault();
confirmDelete(
"<?php echo PHPCI_URL ?>project/delete/<?php print $project->getId(); ?>", "Project"
).onCloseConfirmed = function () {window.location = '/'};
});
})
</script>
<?php endif; ?>

View file

@ -1,34 +1,29 @@
<div id="title">
<h1><?php print $type == 'add' ? 'Add Project' : 'Edit Project' ?></h1>
</div>
<div class="row"> <div class="row">
<div class="col-lg-4">
<div class="panel panel-info">
<div class="panel-body">
<?php if(!is_null($key)): ?>
<p>To make it easier to get started, we've generated a public / private key pair for you to use for this project. To use it, just add the following public key to the "deploy keys" section of your repository settings on Github / Bitbucket.</p>
<textarea style="width: 90%; height: 150px;"><?php print $key ?></textarea> <div class="col-sm-8">
<?php elseif($type == 'add'): ?> <div class="box box-primary">
<p style="margin-bottom:0;">Fill in the form to the right to add your new project.</p> <div class="box-header">
<?php else: ?> <h3 class="box-title">Project Details</h3>
<p style="margin-bottom:0;">Edit your project details using the form to the right.</p>
<?php endif; ?>
</div>
</div>
</div>
<div class="col-lg-8">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Project Details</h3>
</div> </div>
<div class="panel-body"> <div class="box-body">
<?php print $form; ?> <?php print $form; ?>
</div> </div>
</div> </div>
</div> </div>
<?php if(!is_null($key)): ?>
<div class="col-sm-4">
<div class="box box-info">
<div class="box-body">
<p>To make it easier to get started, we've generated a public / private key pair for you to use for this project. To use it, just add the following public key to the "deploy keys" section of your repository settings on Github / Bitbucket.</p>
<textarea style="width: 90%; height: 150px;"><?php print $key ?></textarea>
</div>
</div>
</div>
<?php endif; ?>
</div> </div>
<script> <script>

View file

@ -5,17 +5,17 @@
<?php else: ?> <?php else: ?>
<?php if (empty($error)): ?> <?php if (empty($error)): ?>
<div class="panel panel-success" style="margin-bottom: 0"> <div class="panel panel-success" style="margin-bottom: 0">
<div class="panel-heading"> <div class="box-header">
<strong>Don't worry!</strong><br>Just enter your email address below and we'll email you a link to reset your password. <strong>Don't worry!</strong><br>Just enter your email address below and we'll email you a link to reset your password.
</div> </div>
<?php else: ?> <?php else: ?>
<div class="panel panel-danger" style="margin-bottom: 0"> <div class="panel panel-danger" style="margin-bottom: 0">
<div class="panel-heading"> <div class="box-header">
<?php print $error; ?> <?php print $error; ?>
</div> </div>
<?php endif; ?> <?php endif; ?>
<div class="panel-body"> <div class="box-body">
<form class="form" action="<?php print PHPCI_URL; ?>session/forgot-password" method="POST"> <form class="form" action="<?php print PHPCI_URL; ?>session/forgot-password" method="POST">
<div class="form-group"> <div class="form-group">
<label for="email">Enter your email address:</label> <label for="email">Enter your email address:</label>

View file

@ -1,11 +1,11 @@
<?php if (empty($error)): ?> <?php if (empty($error)): ?>
<div class="panel panel-success" style="margin-bottom: 0"> <div class="panel panel-success" style="margin-bottom: 0">
<div class="panel-heading"> <div class="box-header">
Please enter a new password Please enter a new password
</div> </div>
<div class="panel-body"> <div class="box-body">
<form class="form" action="<?php print PHPCI_URL; ?>session/reset-password/<?php print $id; ?>/<?php print $key; ?>" method="POST"> <form class="form" action="<?php print PHPCI_URL; ?>session/reset-password/<?php print $id; ?>/<?php print $key; ?>" method="POST">
<div class="form-group"> <div class="form-group">
<label for="password">New password:</label> <label for="password">New password:</label>

View file

@ -28,16 +28,16 @@
</p> </p>
<?php endif; ?> <?php endif; ?>
<div class="panel panel-default"> <div class="box box-primary">
<div class="panel-heading"><h3 class="panel-title">Build Settings</h3></div> <div class="box-header"><h3 class="box-title">Build Settings</h3></div>
<div class="panel-body"> <div class="box-body clearfix">
<?php print $buildSettings; ?> <?php print $buildSettings; ?>
</div> </div>
</div> </div>
<div class="panel panel-default"> <div class="box box-primary">
<div class="panel-heading"><h3 class="panel-title">Github Application</h3></div> <div class="box-header"><h3 class="box-title">Github Application</h3></div>
<div class="panel-body"> <div class="box-body clearfix">
<div class="row"> <div class="row">
<div class="col-lg-12"> <div class="col-lg-12">
@ -72,12 +72,12 @@
</div> </div>
<div class="col-lg-4"> <div class="col-lg-4">
<div class="panel panel-info"> <div class="box box-info">
<div class="panel-heading"> <div class="box-header">
<h3 class="panel-title">Where to find these...</h3> <h3 class="box-title">Where to find these...</h3>
</div> </div>
<div class="panel-body"> <div class="box-body">
<p>If you own the application you would like to use, you can find this information within your <p>If you own the application you would like to use, you can find this information within your
<a href="https://github.com/settings/applications">applications</a> settings area.</p> <a href="https://github.com/settings/applications">applications</a> settings area.</p>
</div> </div>
@ -89,12 +89,12 @@
</div> </div>
<div class="panel panel-default"> <div class="box box-primary">
<div class="panel-heading"> <div class="box-header">
<h3 class="panel-title">Email Settings</h3> <h3 class="box-title">Email Settings</h3>
</div> </div>
<div class="panel-body"> <div class="box-body clearfix">
<?php if (!isset($settings['phpci']['email_settings'])): ?> <?php if (!isset($settings['phpci']['email_settings'])): ?>
<p class="alert alert-warning clearfix"> <p class="alert alert-warning clearfix">
Before PHPCI can send build status emails, you need to configure your SMTP settings below. Before PHPCI can send build status emails, you need to configure your SMTP settings below.

View file

@ -53,12 +53,12 @@ foreach($projects as $project):
case 2: case 2:
$successes++; $successes++;
$statuses[] = 'ok'; $statuses[] = 'ok';
$success = is_null($success) && !is_null($build->getFinished()) ? $build->getFinished()->format('Y-m-d H:i:s') : $success; $success = is_null($success) && !is_null($build->getFinished()) ? $build->getFinished()->format('M j Y g:ia') : $success;
break; break;
case 3: case 3:
$failures++; $failures++;
$statuses[] = 'failed'; $statuses[] = 'failed';
$failure = is_null($failure) && !is_null($build->getFinished()) ? $build->getFinished()->format('Y-m-d H:i:s') : $failure; $failure = is_null($failure) && !is_null($build->getFinished()) ? $build->getFinished()->format('M j Y g:ia') : $failure;
break; break;
} }
} }
@ -66,32 +66,53 @@ foreach($projects as $project):
if ($failures == 0) { if ($failures == 0) {
$health = 'Good'; $health = 'Good';
$subcls = 'success'; $subcls = 'green';
} elseif ($failures > $successes) { } elseif ($successes == 0) {
$health = 'Bad'; $health = 'Bad';
$subcls = 'danger'; $subcls = 'red';
} else { } else {
$health = 'Warning'; $health = 'Warning';
$subcls = 'warning'; $subcls = 'yellow';
} }
?> ?>
<tr class="<?php print $cls; ?>">
<td> <div class="small-box bg-<?php print $subcls; ?>">
<span class='label label-<?php echo $subcls ?>'> <div class="inner">
<?php echo $health ?> <h3>
</span> <a href="<?php print PHPCI_URL; ?>project/view/<?php print $project->getId(); ?>">
</td> <?php print $project->getTitle(); ?>
<td><a href='<?php echo PHPCI_URL ?>project/view/<?php echo $project->getId() ?>'><?php echo htmlspecialchars($project->getTitle()) ?></a></td> </a>
<td><?php print is_null($success) ? 'Never' : $success; ?></td> </h3>
<td><?php print is_null($failure) ? 'Never' : $failure; ?></td> <p>
<td> <?php if ($failures > 0): ?>
<?php <?php print $failures; ?> out of the last
foreach ($statuses as $status) { <?php print count($builds[$project->getId()]); ?> builds have failed.
print '<img alt="'.$status.'" src="' . PHPCI_URL . 'assets/img/icon-build-' . $status . '.png">';
} <?php if (!is_null($successful[$project->getId()])): ?>
?> The last successful build was
</td> <?php print $successful[$project->getId()]->getFinished()->format('M j Y'); ?>
<td><a class="btn btn-default btn-sm" href='<?php echo PHPCI_URL ?>project/build/<?php echo $project->getId(); ?>'>build now &raquo;</a></td> <?php else: ?>
</tr> This project has never built successfully.
<?php endif; ?>
<?php else: ?>
All of the last <?php print count($builds[$project->getId()]); ?> builds passed.
<?php if (!is_null($failed[$project->getId()])): ?>
The last failed build was
<?php print $failed[$project->getId()]->getFinished()->format('M j Y'); ?>
<?php else: ?>
This project has never failed to build.
<?php endif; ?>
<?php endif; ?>
</p>
</div>
<div class="icon">
<i class="fa fa-<?php print $project->getIcon(); ?>"></i>
</div>
<a href="<?php print PHPCI_URL; ?>project/view/<?php print $project->getId(); ?>" class="small-box-footer">
View Project <i class="fa fa-arrow-circle-right"></i>
</a>
</div>
<?php endforeach; ?> <?php endforeach; ?>

View file

@ -1,23 +1,14 @@
<div id="title"> <div class="clearfix" style="margin-bottom: 20px;">
<h1>Users</h1> <div class="pull-right btn-group">
<a class="btn btn-primary" href="<?php print PHPCI_URL; ?>user/add">Add User</a>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-3"> <div class="col-xs-12">
<div class="panel panel-default"> <div class="box box-primary">
<div class="panel-heading">
<h4 class="panel-title">Options</h4>
</div>
<div class="list-group"> <table class="table">
<?php if($this->User()->getIsAdmin()): ?>
<a class="list-group-item" href="<?php echo PHPCI_URL ?>user/add"><i class="icon-plus-sign"></i> Add User</a>
<?php endif; ?>
</div>
</div>
</div>
<div class="col-lg-9">
<table class="table table-striped table-bordered">
<thead> <thead>
<tr> <tr>
<th>Email Address</th> <th>Email Address</th>
@ -64,4 +55,6 @@
</tbody> </tbody>
</table> </table>
</div> </div>
</div>
</div> </div>

View file

@ -1,14 +1,12 @@
<h1><?php print $this->User()->getName(); ?></h1>
<?php if (isset($updated)): ?> <?php if (isset($updated)): ?>
<p class="alert alert-success">Your details have been updated.</p> <p class="alert alert-success">Your details have been updated.</p>
<?php endif; ?> <?php endif; ?>
<div class="panel panel-default"> <div class="box box-primary">
<div class="panel-heading"> <div class="box-header">
<h3 class="panel-title">Update your details</h3> <h3 class="box-title">Update your details</h3>
</div> </div>
<div class="panel-body"> <div class="box-body">
<?php print $form; ?> <?php print $form; ?>
</div> </div>
</div> </div>

View file

@ -1,20 +1,9 @@
<div id="title">
<h1><?php print $type == 'add' ? 'Add User' : 'Edit ' . htmlspecialchars($user->getName()) ?></h1>
</div>
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-sm-12">
<div class="well" style=""> <div class="box box-primary">
<?php if($type == 'add'): ?> <div class="box-body">
<p style="margin-bottom:0;">Fill in the form to the right to add a new user.</p>
<?php else: ?>
<p style="margin-bottom:0;">Edit user details using the form to the right.</p>
<?php endif; ?>
</div>
</div>
<div class="col-lg-8">
<div class="box">
<?php print $form; ?> <?php print $form; ?>
</div> </div>
</div> </div>
</div> </div>
</div>

View file

@ -1,9 +1,9 @@
<div class="panel panel-danger"> <div class="panel panel-danger">
<div class="panel-heading"> <div class="box-header">
<h2 class="panel-title">Sorry, there was a problem</h2> <h2 class="box-title">Sorry, there was a problem</h2>
</div> </div>
<div class="panel-body"> <div class="box-body">
<?php print $exception->getMessage(); ?> <?php print $exception->getMessage(); ?>
</div> </div>
</div> </div>

View file

@ -1,86 +1,312 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title><?php if (!empty($title)) { print $title . ' - '; } ?>PHPCI</title> <meta charset="UTF-8">
<title><?php print $title; ?><?php print !empty($subtitle) ? ' - ' . $subtitle : ''; ?></title>
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />
<link href="//cdnjs.cloudflare.com/ajax/libs/ionicons/1.5.2/css/ionicons.min.css" rel="stylesheet" type="text/css" />
<link href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css" rel="stylesheet" type="text/css" />
<link href='//fonts.googleapis.com/css?family=Roboto:300,500&subset=latin,latin-ext' rel='stylesheet' type='text/css'> <link href="<?php print PHPCI_URL; ?>assets/css/datepicker/datepicker3.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="<?php echo PHPCI_URL ?>assets/css/bootstrap.min.css"> <link href="<?php print PHPCI_URL; ?>assets/css/daterangepicker/daterangepicker-bs3.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" href="<?php echo PHPCI_URL ?>assets/css/phpci.css">
<link rel="shortcut icon" type="image/x-icon" href="<?php echo PHPCI_URL ?>favicon.ico"> <!-- Theme style -->
<link rel="shortcut icon" type="image/png" href="<?php echo PHPCI_URL ?>assets/img/favicon.png"> <link href="<?php print PHPCI_URL; ?>assets/css/AdminLTE.css" rel="stylesheet" type="text/css" />
<script>window.PHPCI_URL = <?php print json_encode(PHPCI_URL) ?></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
<script src="<?php print PHPCI_URL; ?>assets/js/class.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="<?php print PHPCI_URL; ?>assets/js/phpci.js" type="text/javascript"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script src="<?php echo PHPCI_URL ?>assets/js/bootstrap.min.js"></script> <!--[if lt IE 9]>
<script src="<?php echo PHPCI_URL ?>assets/js/jqueryui.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="<?php echo PHPCI_URL ?>assets/js/class.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
<script src="<?php echo PHPCI_URL ?>assets/js/phpci.js"></script> <![endif]-->
<script src="<?php echo PHPCI_URL ?>assets/js/init.js"></script>
<script>var PHPCI_URL = '<?php print PHPCI_URL; ?>';</script>
<style>
.skin-blue .logo, .skin-blue .logo:hover {
background-image: url('/assets/img/logo-large.png');
background-repeat: no-repeat;
background-size: 40%;
background-position: 65px;
text-indent: -5000px;
}
.build-info-panel {
}
.build-info-panel .box-header h1.box-title {
border: 0;
font-size: 1.5em;
font-weight: bold;
margin-left: 110px;
}
.build-info-panel h1.box-title span {
font-weight: normal;
}
.build-info-panel img {
border: 2px solid #fff;
border-radius: 50%;
margin-top: -40px;
}
.build-info-panel #build-info {
margin-left: 110px;
min-height: 50px;
}
.build-info-panel .commit-message {
margin-bottom: 20px;
}
.small-box h3 a {
color: #fff;
}
.pagination>li>span {
font-weight: bold;
background: #337ab7;
color: #fff;
}
</style>
</head> </head>
<body> <body class="skin-blue">
<div class="navbar navbar-fixed-top"> <!-- header logo: style can be found in header.less -->
<div class="container"> <header class="header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse"> <a href="<?php print PHPCI_URL; ?>" class="logo">PHPCI</a>
<!-- Header Navbar: style can be found in header.less -->
<nav class="navbar navbar-static-top" role="navigation">
<!-- Sidebar toggle button-->
<a href="#" class="navbar-btn sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="<?php echo PHPCI_URL ?>"><img src="<?php echo PHPCI_URL ?>/assets/img/logo.png"></a>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<img class="pull-left" style="margin-right: 7px; margin-top: -5px; border-radius: 50%" src="//www.gravatar.com/avatar/<?php print md5($this->User()->getEmail()); ?>?d=mm&amp;s=30">
<strong><?php print htmlspecialchars($this->User()->getName()); ?></strong> <b class="caret"></b>
</a> </a>
<ul class="dropdown-menu" role="menu"> <div class="navbar-right">
<li><a href="<?php print PHPCI_URL ?>user/profile">Edit Profile</a></li> <ul class="nav navbar-nav">
<li class="divider"></li>
<li><a href="<?php print PHPCI_URL ?>session/logout">Log out</a></li> <li class="dropdown messages-menu phpci-pending">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-clock-o"></i>
<span class="label label-info phpci-pending-count"></span>
</a>
<ul class="dropdown-menu">
<li class="header"><span class="phpci-pending-count"></span> builds pending</li>
<li>
<ul class="menu phpci-pending-list">
</ul> </ul>
</li> </li>
</ul>
</li>
<li class="dropdown messages-menu phpci-running">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="fa fa-cogs"></i>
<span class="label label-warning phpci-running-count"></span>
</a>
<ul class="dropdown-menu">
<li class="header"><span class="phpci-running-count"></span> builds running</li>
<li>
<ul class="menu phpci-running-list">
</ul>
</li>
</ul>
</li>
<!-- User Account: style can be found in dropdown.less -->
<li class="dropdown user user-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<i class="glyphicon glyphicon-user"></i>
<span><?php print $this->User()->getName(); ?> <i class="caret"></i></span>
</a>
<ul class="dropdown-menu">
<!-- User image -->
<li class="user-header bg-light-blue">
<img src="https://www.gravatar.com/avatar/<?php print md5($this->User()->getEmail()); ?>?d=mm" class="img-circle" alt="<?php print $this->User()->getName(); ?>" />
<p>
<?php print $this->User()->getName(); ?>
</p>
</li>
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
<a href="<?php print PHPCI_URL ?>user/profile" class="btn btn-default btn-flat">Edit Profile</a>
</div>
<div class="pull-right">
<a href="<?php print PHPCI_URL ?>session/logout" class="btn btn-default btn-flat">Sign out</a>
</div>
</li>
</ul>
</li>
</ul>
</div>
</nav>
</header>
<div class="wrapper row-offcanvas row-offcanvas-left">
<!-- Left side column. contains the logo and sidebar -->
<aside class="left-side sidebar-offcanvas">
<!-- sidebar: style can be found in sidebar.less -->
<section class="sidebar">
<!-- Sidebar user panel -->
<div class="user-panel">
<div class="pull-left image">
<img src="https://www.gravatar.com/avatar/<?php print md5($this->User()->getEmail()); ?>?d=mm" class="img-circle" alt="<?php print $this->User()->getName(); ?>" />
</div>
<div class="pull-left info">
<p>Hello, <?php print $this->User()->getName(); ?></p>
<a href="#"><i class="fa fa-circle text-success"></i> Online</a>
</div>
</div>
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu">
<li class="active">
<a href="<?php print PHPCI_URL; ?>">
<i class="fa fa-dashboard"></i> <span>Dashboard</span>
</a>
</li>
<?php if ($this->User()->getIsAdmin()): ?>
<li class="treeview">
<a href="#">
<i class="fa fa-edit"></i>
<span>Admin Options</span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
<li>
<a href="<?php print PHPCI_URL; ?>project/add">
<i class="fa fa-angle-double-right"></i> Add Project
</a>
</li>
<li>
<a href="<?php print PHPCI_URL; ?>settings">
<i class="fa fa-angle-double-right"></i> Settings
</a>
</li>
<li>
<a href="<?php print PHPCI_URL; ?>user">
<i class="fa fa-angle-double-right"></i> Manage Users
</a>
</li>
<li>
<a href="<?php print PHPCI_URL; ?>plugin">
<i class="fa fa-angle-double-right"></i> Plugins
</a>
</li>
</ul>
</li>
<?php endif; ?>
<?php foreach ($projects['items'] as $project): ?>
<li class="treeview">
<a href="#">
<i class="fa fa-<?php print $project->getIcon(); ?>"></i>
<span><?php print $project->getTitle(); ?></span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
<li>
<a href="<?php print PHPCI_URL; ?>project/view/<?php print $project->getId(); ?>">
<i class="fa fa-angle-double-right"></i> View
</a>
</li>
<li>
<a href="<?php print PHPCI_URL; ?>project/build/<?php print $project->getId(); ?>">
<i class="fa fa-angle-double-right"></i> Build Now
</a>
</li>
<?php if ($this->User()->getIsAdmin()): ?> <?php if ($this->User()->getIsAdmin()): ?>
<li> <li>
<div class="btn-group"> <a href="<?php print PHPCI_URL; ?>project/edit/<?php print $project->getId(); ?>">
<a class="btn btn-success navbar-btn" href="<?php echo PHPCI_URL ?>project/add">Add Project</a> <i class="fa fa-angle-double-right"></i> Edit Project
</div> </a>
</li>
<div class="btn-group"> <li>
<button type="button" class="btn navbar-btn btn-default dropdown-toggle" data-toggle="dropdown"> <a href="<?php print PHPCI_URL; ?>project/delete/<?php print $project->getId(); ?>">
Admin <span class="caret"></span> <i class="fa fa-angle-double-right"></i> Delete Project
</button> </a>
<ul class="dropdown-menu" role="menu">
<li><a href="<?php echo PHPCI_URL ?>settings">Settings</a></li>
<li><a href="<?php echo PHPCI_URL ?>plugin">Manage Plugins</a></li>
<li><a href="<?php echo PHPCI_URL ?>user">Manage Users</a></li>
</ul>
</div>
</li> </li>
<?php endif; ?> <?php endif; ?>
</ul> </ul>
</div> </li>
<?php endforeach; ?>
<?php if (isset($nav)): ?>
<li class="treeview">
<a href="#">
<i class="fa fa-<?php print $nav['icon']; ?>"></i>
<span><?php print $nav['title']; ?></span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
<?php foreach ($nav['links'] as $link => $linkTitle): ?>
<li>
<a href="<?php print PHPCI_URL . $link; ?>">
<i class="fa fa-angle-double-right"></i> <?php print $linkTitle; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</li>
<?php endif; ?>
</div> </ul>
</div> </section>
<!-- /.sidebar -->
</aside>
<div id="content" class="container"> <!-- Right side column. Contains the navbar and content of the page -->
<aside class="right-side">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
<?php print !empty($title) ? $title : 'PHPCI'; ?>
<?php if (!empty($subtitle)): ?>
<small><?php print $subtitle; ?></small>
<?php endif; ?>
</h1>
</section>
<!-- Main content -->
<section class="content">
<?php print $content; ?> <?php print $content; ?>
</div> </section><!-- /.content -->
</aside><!-- /.right-side -->
</div><!-- ./wrapper -->
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js" type="text/javascript"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js" type="text/javascript"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js" type="text/javascript"></script>
<script src="<?php print PHPCI_URL; ?>assets/js/plugins/daterangepicker/daterangepicker.js" type="text/javascript"></script>
<script src="<?php print PHPCI_URL; ?>assets/js/plugins/datepicker/bootstrap-datepicker.js" type="text/javascript"></script>
<script src="<?php print PHPCI_URL; ?>assets/js/AdminLTE/app.js" type="text/javascript"></script>
<div id="loading">Loading...</div>
</body> </body>
</html> </html>

View file

@ -33,7 +33,7 @@
"ext-mcrypt": "*", "ext-mcrypt": "*",
"ext-pdo": "*", "ext-pdo": "*",
"ext-pdo_mysql": "*", "ext-pdo_mysql": "*",
"block8/b8framework": "~1.1", "block8/b8framework": "~1.0",
"ircmaxell/password-compat": "~1.0", "ircmaxell/password-compat": "~1.0",
"swiftmailer/swiftmailer": "~5.0", "swiftmailer/swiftmailer": "~5.0",
"symfony/yaml": "~2.1", "symfony/yaml": "~2.1",

12
composer.lock generated
View file

@ -4,20 +4,20 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "d97c4373b84222bb233cb510044650b4", "hash": "650fe5576922dea4ac3b1be72d882a58",
"packages": [ "packages": [
{ {
"name": "block8/b8framework", "name": "block8/b8framework",
"version": "1.1.8", "version": "1.1.9",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Block8/b8framework.git", "url": "https://github.com/Block8/b8framework.git",
"reference": "cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0" "reference": "3952dabee84cbf5be3dd8d20eadd13b6219e7a6a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Block8/b8framework/zipball/cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0", "url": "https://api.github.com/repos/Block8/b8framework/zipball/3952dabee84cbf5be3dd8d20eadd13b6219e7a6a",
"reference": "cfb0bbd87a2ff71f9ebdfa53fca139d50407e0e0", "reference": "3952dabee84cbf5be3dd8d20eadd13b6219e7a6a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -51,7 +51,7 @@
"mvc", "mvc",
"php" "php"
], ],
"time": "2014-07-29 15:49:02" "time": "2014-12-01 21:02:58"
}, },
{ {
"name": "ircmaxell/password-compat", "name": "ircmaxell/password-compat",

3539
public/assets/css/AdminLTE.css Executable file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,169 @@
/*!
* Slider for Bootstrap
*
* Copyright 2012 Stefan Petre
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.slider {
display: block;
vertical-align: middle;
position: relative;
}
.slider.slider-horizontal {
width: 100%;
height: 20px;
margin-bottom: 20px;
}
.slider.slider-horizontal:last-of-type {
margin-bottom: 0;
}
.slider.slider-horizontal .slider-track {
height: 10px;
width: 100%;
margin-top: -5px;
top: 50%;
left: 0;
}
.slider.slider-horizontal .slider-selection {
height: 100%;
top: 0;
bottom: 0;
}
.slider.slider-horizontal .slider-handle {
margin-left: -10px;
margin-top: -5px;
}
.slider.slider-horizontal .slider-handle.triangle {
border-width: 0 10px 10px 10px;
width: 0;
height: 0;
border-bottom-color: #0480be;
margin-top: 0;
}
.slider.slider-vertical {
height: 230px;
width: 20px;
margin-right: 20px;
display: inline-block;
}
.slider.slider-vertical:last-of-type {
margin-right: 0;
}
.slider.slider-vertical .slider-track {
width: 10px;
height: 100%;
margin-left: -5px;
left: 50%;
top: 0;
}
.slider.slider-vertical .slider-selection {
width: 100%;
left: 0;
top: 0;
bottom: 0;
}
.slider.slider-vertical .slider-handle {
margin-left: -5px;
margin-top: -10px;
}
.slider.slider-vertical .slider-handle.triangle {
border-width: 10px 0 10px 10px;
width: 1px;
height: 1px;
border-left-color: #0480be;
margin-left: 0;
}
.slider input {
display: none;
}
.slider .tooltip-inner {
white-space: nowrap;
}
.slider-track {
position: absolute;
cursor: pointer;
background-color: #f7f7f7;
background-image: -moz-linear-gradient(top, #f0f0f0, #f9f9f9);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f0f0), to(#f9f9f9));
background-image: -webkit-linear-gradient(top, #f0f0f0, #f9f9f9);
background-image: -o-linear-gradient(top, #f0f0f0, #f9f9f9);
background-image: linear-gradient(to bottom, #f0f0f0, #f9f9f9);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0f0f0', endColorstr='#fff9f9f9', GradientType=0);
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.slider-selection {
position: absolute;
background-color: #f7f7f7;
background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5);
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5));
background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5);
background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5);
background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.slider-handle {
position: absolute;
width: 20px;
height: 20px;
background-color: #444;
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
opacity: 1;
border: 0px solid transparent;
}
.slider-handle.round {
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
border-radius: 20px;
}
.slider-handle.triangle {
background: transparent none;
}
.slider-disabled .slider-selection {
opacity: 0.5;
}
#red .slider-selection {
background: #f56954;
}
#blue .slider-selection {
background: #3c8dbc;
}
#green .slider-selection {
background: #00a65a;
}
#yellow .slider-selection {
background: #f39c12;
}
#aqua .slider-selection {
background: #00c0ef;
}
#purple .slider-selection {
background: #932ab6;
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,102 @@
ul.wysihtml5-toolbar {
margin: 0;
padding: 0;
display: block;
}
ul.wysihtml5-toolbar::after {
clear: both;
display: table;
content: "";
}
ul.wysihtml5-toolbar > li {
float: left;
display: list-item;
list-style: none;
margin: 0 5px 10px 0;
}
ul.wysihtml5-toolbar a[data-wysihtml5-command=bold] {
font-weight: bold;
}
ul.wysihtml5-toolbar a[data-wysihtml5-command=italic] {
font-style: italic;
}
ul.wysihtml5-toolbar a[data-wysihtml5-command=underline] {
text-decoration: underline;
}
ul.wysihtml5-toolbar a.btn.wysihtml5-command-active {
background-image: none;
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);
background-color: #E6E6E6;
background-color: #D9D9D9;
outline: 0;
}
ul.wysihtml5-commands-disabled .dropdown-menu {
display: none !important;
}
ul.wysihtml5-toolbar div.wysihtml5-colors {
display:block;
width: 50px;
height: 20px;
margin-top: 2px;
margin-left: 5px;
position: absolute;
pointer-events: none;
}
ul.wysihtml5-toolbar a.wysihtml5-colors-title {
padding-left: 70px;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="black"] {
background: black !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="silver"] {
background: silver !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="gray"] {
background: gray !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="maroon"] {
background: maroon !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="red"] {
background: red !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="purple"] {
background: purple !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="green"] {
background: green !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="olive"] {
background: olive !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="navy"] {
background: navy !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="blue"] {
background: blue !important;
}
ul.wysihtml5-toolbar div[data-wysihtml5-command-value="orange"] {
background: orange !important;
}

View file

@ -0,0 +1,3 @@
/*! bootstrap3-wysihtml5-bower 2013-11-22 */
ul.wysihtml5-toolbar{margin:0;padding:0;display:block}ul.wysihtml5-toolbar::after{clear:both;display:table;content:""}ul.wysihtml5-toolbar>li{float:left;display:list-item;list-style:none;margin:0 5px 10px 0}ul.wysihtml5-toolbar a[data-wysihtml5-command=bold]{font-weight:700}ul.wysihtml5-toolbar a[data-wysihtml5-command=italic]{font-style:italic}ul.wysihtml5-toolbar a[data-wysihtml5-command=underline]{text-decoration:underline}ul.wysihtml5-toolbar a.btn.wysihtml5-command-active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);background-color:#E6E6E6;background-color:#D9D9D9;outline:0}ul.wysihtml5-commands-disabled .dropdown-menu{display:none!important}ul.wysihtml5-toolbar div.wysihtml5-colors{display:block;width:50px;height:20px;margin-top:2px;margin-left:5px;position:absolute;pointer-events:none}ul.wysihtml5-toolbar a.wysihtml5-colors-title{padding-left:70px}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=black]{background:#000!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=silver]{background:silver!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=gray]{background:gray!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=maroon]{background:maroon!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=red]{background:red!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=purple]{background:purple!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=green]{background:green!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=olive]{background:olive!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=navy]{background:navy!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=blue]{background:#00f!important}ul.wysihtml5-toolbar div[data-wysihtml5-command-value=orange]{background:orange!important}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,214 @@
/*!
* Bootstrap Colorpicker
* http://mjolnic.github.io/bootstrap-colorpicker/
*
* Originally written by (c) 2012 Stefan Petre
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
*/
.colorpicker-saturation {
float: left;
width: 100px;
height: 100px;
cursor: crosshair;
background-image: url("../../img/bootstrap-colorpicker/saturation.png");
}
.colorpicker-saturation i {
position: absolute;
top: 0;
left: 0;
display: block;
width: 5px;
height: 5px;
margin: -4px 0 0 -4px;
border: 1px solid #000;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
.colorpicker-saturation i b {
display: block;
width: 5px;
height: 5px;
border: 1px solid #fff;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
.colorpicker-hue,
.colorpicker-alpha {
float: left;
width: 15px;
height: 100px;
margin-bottom: 4px;
margin-left: 4px;
cursor: row-resize;
}
.colorpicker-hue i,
.colorpicker-alpha i {
position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
height: 1px;
margin-top: -1px;
background: #000;
border-top: 1px solid #fff;
}
.colorpicker-hue {
background-image: url("../../img/bootstrap-colorpicker/hue.png");
}
.colorpicker-alpha {
display: none;
background-image: url("../../img/bootstrap-colorpicker/alpha.png");
}
.colorpicker {
top: 0;
left: 0;
z-index: 2500;
min-width: 130px;
padding: 4px;
margin-top: 1px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
*zoom: 1;
}
.colorpicker:before,
.colorpicker:after {
display: table;
line-height: 0;
content: "";
}
.colorpicker:after {
clear: both;
}
.colorpicker:before {
position: absolute;
top: -7px;
left: 6px;
display: inline-block;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-left: 7px solid transparent;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: '';
}
.colorpicker:after {
position: absolute;
top: -6px;
left: 7px;
display: inline-block;
border-right: 6px solid transparent;
border-bottom: 6px solid #ffffff;
border-left: 6px solid transparent;
content: '';
}
.colorpicker div {
position: relative;
}
.colorpicker.colorpicker-with-alpha {
min-width: 140px;
}
.colorpicker.colorpicker-with-alpha .colorpicker-alpha {
display: block;
}
.colorpicker-color {
height: 10px;
margin-top: 5px;
clear: both;
background-image: url("../../img/bootstrap-colorpicker/alpha.png");
background-position: 0 100%;
}
.colorpicker-color div {
height: 10px;
}
.colorpicker-element .input-group-addon i {
display: block;
width: 16px;
height: 16px;
cursor: pointer;
}
.colorpicker.colorpicker-inline {
position: relative;
display: inline-block;
float: none;
}
.colorpicker.colorpicker-horizontal {
width: 110px;
height: auto;
min-width: 110px;
}
.colorpicker.colorpicker-horizontal .colorpicker-saturation {
margin-bottom: 4px;
}
.colorpicker.colorpicker-horizontal .colorpicker-color {
width: 100px;
}
.colorpicker.colorpicker-horizontal .colorpicker-hue,
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
float: left;
width: 100px;
height: 15px;
margin-bottom: 4px;
margin-left: 0;
cursor: col-resize;
}
.colorpicker.colorpicker-horizontal .colorpicker-hue i,
.colorpicker.colorpicker-horizontal .colorpicker-alpha i {
position: absolute;
top: 0;
left: 0;
display: block;
width: 1px;
height: 15px;
margin-top: 0;
background: #ffffff;
border: none;
}
.colorpicker.colorpicker-horizontal .colorpicker-hue {
background-image: url("../../img/bootstrap-colorpicker/hue-horizontal.png");
}
.colorpicker.colorpicker-horizontal .colorpicker-alpha {
background-image: url("../../img/bootstrap-colorpicker/alpha-horizontal.png");
}
.colorpicker.colorpicker-hidden {
display: none;
}
.colorpicker.colorpicker-visible {
display: block;
}
.colorpicker-inline.colorpicker-visible {
display: inline-block;
}

View file

@ -0,0 +1,9 @@
/*!
* Bootstrap Colorpicker
* http://mjolnic.github.io/bootstrap-colorpicker/
*
* Originally written by (c) 2012 Stefan Petre
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
*/.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("../../img/bootstrap-colorpicker/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("../../img/bootstrap-colorpicker/hue.png")}.colorpicker-alpha{display:none;background-image:url("../../img/bootstrap-colorpicker/alpha.png")}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("../../img/bootstrap-colorpicker/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-element .input-group-addon i{display:block;width:16px;height:16px;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("../../img/bootstrap-colorpicker/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("../../img/bootstrap-colorpicker/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block}

View file

@ -0,0 +1,223 @@
div.dataTables_length label {
font-weight: normal;
float: left;
text-align: left;
}
div.dataTables_length select {
width: 75px;
}
div.dataTables_filter label {
font-weight: normal;
float: right;
}
div.dataTables_filter input {
width: 16em;
}
div.dataTables_info {
padding-top: 8px;
}
div.dataTables_paginate {
float: right;
margin: 0;
}
div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap;
}
table.dataTable,
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
}
table.dataTable {
clear: both;
margin-top: 6px !important;
margin-bottom: 6px !important;
max-width: none !important;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
}
table.dataTable thead .sorting { background: url('images/sort_both.png') no-repeat center right; }
table.dataTable thead .sorting_asc { background: url('images/sort_asc.png') no-repeat center right; }
table.dataTable thead .sorting_desc { background: url('images/sort_desc.png') no-repeat center right; }
table.dataTable thead .sorting_asc_disabled { background: url('images/sort_asc_disabled.png') no-repeat center right; }
table.dataTable thead .sorting_desc_disabled { background: url('images/sort_desc_disabled.png') no-repeat center right; }
table.dataTable th:active {
outline: none;
}
/* Scrolling */
div.dataTables_scrollHead table {
margin-bottom: 0 !important;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
div.dataTables_scrollHead table thead tr:last-child th:first-child,
div.dataTables_scrollHead table thead tr:last-child td:first-child {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody tbody tr:first-child th,
div.dataTables_scrollBody tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot table {
margin-top: 0 !important;
border-top: none;
}
/*
* TableTools styles
*/
.table tbody tr.active td,
.table tbody tr.active th {
background-color: #08C;
color: white;
}
.table tbody tr.active:hover td,
.table tbody tr.active:hover th {
background-color: #0075b0 !important;
}
.table tbody tr.active a {
color: white;
}
.table-striped tbody tr.active:nth-child(odd) td,
.table-striped tbody tr.active:nth-child(odd) th {
background-color: #017ebc;
}
table.DTTT_selectable tbody tr {
cursor: pointer;
}
div.DTTT .btn {
color: #333 !important;
font-size: 12px;
}
div.DTTT .btn:hover {
text-decoration: none !important;
}
ul.DTTT_dropdown.dropdown-menu {
z-index: 2003;
}
ul.DTTT_dropdown.dropdown-menu a {
color: #333 !important; /* needed only when demo_page.css is included */
}
ul.DTTT_dropdown.dropdown-menu li {
position: relative;
}
ul.DTTT_dropdown.dropdown-menu li:hover a {
background-color: #0088cc;
color: white !important;
}
div.DTTT_collection_background {
z-index: 2002;
}
/* TableTools information display */
div.DTTT_print_info.modal {
height: 150px;
margin-top: -75px;
text-align: center;
}
div.DTTT_print_info h6 {
font-weight: normal;
font-size: 28px;
line-height: 28px;
margin: 1em;
}
div.DTTT_print_info p {
font-size: 14px;
line-height: 20px;
}
/*
* FixedColumns styles
*/
div.DTFC_LeftHeadWrapper table,
div.DTFC_LeftFootWrapper table,
div.DTFC_RightHeadWrapper table,
div.DTFC_RightFootWrapper table,
table.DTFC_Cloned tr.even {
background-color: white;
}
div.DTFC_RightHeadWrapper table ,
div.DTFC_LeftHeadWrapper table {
margin-bottom: 0 !important;
border-top-right-radius: 0 !important;
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
border-bottom-left-radius: 0 !important;
border-bottom-right-radius: 0 !important;
}
div.DTFC_RightBodyWrapper table,
div.DTFC_LeftBodyWrapper table {
border-top: none;
margin-bottom: 0 !important;
}
div.DTFC_RightBodyWrapper tbody tr:first-child th,
div.DTFC_RightBodyWrapper tbody tr:first-child td,
div.DTFC_LeftBodyWrapper tbody tr:first-child th,
div.DTFC_LeftBodyWrapper tbody tr:first-child td {
border-top: none;
}
div.DTFC_RightFootWrapper table,
div.DTFC_LeftFootWrapper table {
border-top: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1,790 @@
/*!
* Datepicker for Bootstrap
*
* Copyright 2012 Stefan Petre
* Improvements by Andrew Rowls
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*/
.datepicker {
padding: 4px;
border-radius: 4px;
direction: ltr;
/*.dow {
border-top: 1px solid #ddd !important;
}*/
}
.datepicker-inline {
width: 100%;
}
.datepicker.datepicker-rtl {
direction: rtl;
}
.datepicker.datepicker-rtl table tr td span {
float: right;
}
.datepicker-dropdown {
top: 0;
left: 0;
}
.datepicker-dropdown:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-top: 0;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute;
}
.datepicker-dropdown:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-top: 0;
position: absolute;
}
.datepicker-dropdown.datepicker-orient-left:before {
left: 6px;
}
.datepicker-dropdown.datepicker-orient-left:after {
left: 7px;
}
.datepicker-dropdown.datepicker-orient-right:before {
right: 6px;
}
.datepicker-dropdown.datepicker-orient-right:after {
right: 7px;
}
.datepicker-dropdown.datepicker-orient-top:before {
top: -7px;
}
.datepicker-dropdown.datepicker-orient-top:after {
top: -6px;
}
.datepicker-dropdown.datepicker-orient-bottom:before {
bottom: -7px;
border-bottom: 0;
border-top: 7px solid #999;
}
.datepicker-dropdown.datepicker-orient-bottom:after {
bottom: -6px;
border-bottom: 0;
border-top: 6px solid #fff;
}
.datepicker > div {
display: none;
}
.datepicker.days div.datepicker-days {
display: block;
}
.datepicker.months div.datepicker-months {
display: block;
}
.datepicker.years div.datepicker-years {
display: block;
}
.datepicker table {
margin: 0;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.datepicker table tr td,
.datepicker table tr th {
text-align: center;
width: 30px;
height: 30px;
border-radius: 4px;
border: none;
}
.table-striped .datepicker table tr td,
.table-striped .datepicker table tr th {
background-color: transparent;
}
.datepicker table tr td.day:hover,
.datepicker table tr td.day.focused {
background: rgba(0,0,0,0.2);
cursor: pointer;
}
.datepicker table tr td.old,
.datepicker table tr td.new {
color: #777;
}
.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover {
background: none;
color: #444;
cursor: default;
}
.datepicker table tr td.today,
.datepicker table tr td.today:hover,
.datepicker table tr td.today.disabled,
.datepicker table tr td.today.disabled:hover {
color: #000000;
background: rgba(0,0,0,0.2);
border-color: #ffb733;
}
.datepicker table tr td.today:hover,
.datepicker table tr td.today:hover:hover,
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today.disabled:hover:hover,
.datepicker table tr td.today:focus,
.datepicker table tr td.today:hover:focus,
.datepicker table tr td.today.disabled:focus,
.datepicker table tr td.today.disabled:hover:focus,
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.today,
.open .dropdown-toggle.datepicker table tr td.today:hover,
.open .dropdown-toggle.datepicker table tr td.today.disabled,
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
color: #000000;
background: rgba(0,0,0,0.2);
border-color: #f59e00;
}
.datepicker table tr td.today:active,
.datepicker table tr td.today:hover:active,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.active,
.datepicker table tr td.today:hover.active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.today,
.open .dropdown-toggle.datepicker table tr td.today:hover,
.open .dropdown-toggle.datepicker table tr td.today.disabled,
.open .dropdown-toggle.datepicker table tr td.today.disabled:hover {
background-image: none;
}
.datepicker table tr td.today.disabled,
.datepicker table tr td.today:hover.disabled,
.datepicker table tr td.today.disabled.disabled,
.datepicker table tr td.today.disabled:hover.disabled,
.datepicker table tr td.today[disabled],
.datepicker table tr td.today:hover[disabled],
.datepicker table tr td.today.disabled[disabled],
.datepicker table tr td.today.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.today,
fieldset[disabled] .datepicker table tr td.today:hover,
fieldset[disabled] .datepicker table tr td.today.disabled,
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today:hover.disabled:hover,
.datepicker table tr td.today.disabled.disabled:hover,
.datepicker table tr td.today.disabled:hover.disabled:hover,
.datepicker table tr td.today[disabled]:hover,
.datepicker table tr td.today:hover[disabled]:hover,
.datepicker table tr td.today.disabled[disabled]:hover,
.datepicker table tr td.today.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.today:hover,
fieldset[disabled] .datepicker table tr td.today:hover:hover,
fieldset[disabled] .datepicker table tr td.today.disabled:hover,
fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,
.datepicker table tr td.today.disabled:focus,
.datepicker table tr td.today:hover.disabled:focus,
.datepicker table tr td.today.disabled.disabled:focus,
.datepicker table tr td.today.disabled:hover.disabled:focus,
.datepicker table tr td.today[disabled]:focus,
.datepicker table tr td.today:hover[disabled]:focus,
.datepicker table tr td.today.disabled[disabled]:focus,
.datepicker table tr td.today.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.today:focus,
fieldset[disabled] .datepicker table tr td.today:hover:focus,
fieldset[disabled] .datepicker table tr td.today.disabled:focus,
fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,
.datepicker table tr td.today.disabled:active,
.datepicker table tr td.today:hover.disabled:active,
.datepicker table tr td.today.disabled.disabled:active,
.datepicker table tr td.today.disabled:hover.disabled:active,
.datepicker table tr td.today[disabled]:active,
.datepicker table tr td.today:hover[disabled]:active,
.datepicker table tr td.today.disabled[disabled]:active,
.datepicker table tr td.today.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.today:active,
fieldset[disabled] .datepicker table tr td.today:hover:active,
fieldset[disabled] .datepicker table tr td.today.disabled:active,
fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,
.datepicker table tr td.today.disabled.active,
.datepicker table tr td.today:hover.disabled.active,
.datepicker table tr td.today.disabled.disabled.active,
.datepicker table tr td.today.disabled:hover.disabled.active,
.datepicker table tr td.today[disabled].active,
.datepicker table tr td.today:hover[disabled].active,
.datepicker table tr td.today.disabled[disabled].active,
.datepicker table tr td.today.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.today.active,
fieldset[disabled] .datepicker table tr td.today:hover.active,
fieldset[disabled] .datepicker table tr td.today.disabled.active,
fieldset[disabled] .datepicker table tr td.today.disabled:hover.active {
background: rgba(0,0,0,0.2);
border-color: #ffb733;
}
.datepicker table tr td.today:hover:hover {
color: #000;
}
.datepicker table tr td.today.active:hover {
color: #fff;
}
.datepicker table tr td.range,
.datepicker table tr td.range:hover,
.datepicker table tr td.range.disabled,
.datepicker table tr td.range.disabled:hover {
background: rgba(0,0,0,0.2);
border-radius: 0;
}
.datepicker table tr td.range.today,
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today.disabled:hover {
color: #000000;
background: rgba(0,0,0,0.2);
border-color: #f1a417;
border-radius: 0;
}
.datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today:hover:hover,
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today.disabled:hover:hover,
.datepicker table tr td.range.today:focus,
.datepicker table tr td.range.today:hover:focus,
.datepicker table tr td.range.today.disabled:focus,
.datepicker table tr td.range.today.disabled:hover:focus,
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.range.today,
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
color: #000000;
background: rgba(0,0,0,0.2);
border-color: #bf800c;
}
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today:hover:active,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.active,
.datepicker table tr td.range.today:hover.active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.range.today,
.open .dropdown-toggle.datepicker table tr td.range.today:hover,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled,
.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover {
background-image: none;
}
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today:hover.disabled,
.datepicker table tr td.range.today.disabled.disabled,
.datepicker table tr td.range.today.disabled:hover.disabled,
.datepicker table tr td.range.today[disabled],
.datepicker table tr td.range.today:hover[disabled],
.datepicker table tr td.range.today.disabled[disabled],
.datepicker table tr td.range.today.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.range.today,
fieldset[disabled] .datepicker table tr td.range.today:hover,
fieldset[disabled] .datepicker table tr td.range.today.disabled,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today:hover.disabled:hover,
.datepicker table tr td.range.today.disabled.disabled:hover,
.datepicker table tr td.range.today.disabled:hover.disabled:hover,
.datepicker table tr td.range.today[disabled]:hover,
.datepicker table tr td.range.today:hover[disabled]:hover,
.datepicker table tr td.range.today.disabled[disabled]:hover,
.datepicker table tr td.range.today.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.range.today:hover,
fieldset[disabled] .datepicker table tr td.range.today:hover:hover,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,
.datepicker table tr td.range.today.disabled:focus,
.datepicker table tr td.range.today:hover.disabled:focus,
.datepicker table tr td.range.today.disabled.disabled:focus,
.datepicker table tr td.range.today.disabled:hover.disabled:focus,
.datepicker table tr td.range.today[disabled]:focus,
.datepicker table tr td.range.today:hover[disabled]:focus,
.datepicker table tr td.range.today.disabled[disabled]:focus,
.datepicker table tr td.range.today.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.range.today:focus,
fieldset[disabled] .datepicker table tr td.range.today:hover:focus,
fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,
.datepicker table tr td.range.today.disabled:active,
.datepicker table tr td.range.today:hover.disabled:active,
.datepicker table tr td.range.today.disabled.disabled:active,
.datepicker table tr td.range.today.disabled:hover.disabled:active,
.datepicker table tr td.range.today[disabled]:active,
.datepicker table tr td.range.today:hover[disabled]:active,
.datepicker table tr td.range.today.disabled[disabled]:active,
.datepicker table tr td.range.today.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.range.today:active,
fieldset[disabled] .datepicker table tr td.range.today:hover:active,
fieldset[disabled] .datepicker table tr td.range.today.disabled:active,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,
.datepicker table tr td.range.today.disabled.active,
.datepicker table tr td.range.today:hover.disabled.active,
.datepicker table tr td.range.today.disabled.disabled.active,
.datepicker table tr td.range.today.disabled:hover.disabled.active,
.datepicker table tr td.range.today[disabled].active,
.datepicker table tr td.range.today:hover[disabled].active,
.datepicker table tr td.range.today.disabled[disabled].active,
.datepicker table tr td.range.today.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.range.today.active,
fieldset[disabled] .datepicker table tr td.range.today:hover.active,
fieldset[disabled] .datepicker table tr td.range.today.disabled.active,
fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active {
background: rgba(0,0,0,0.2);
border-color: #f1a417;
}
.datepicker table tr td.selected,
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected.disabled:hover {
color: #ffffff;
background: rgba(0,0,0,0.2);
border-color: #555555;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected:hover:hover,
.datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected.disabled:hover:hover,
.datepicker table tr td.selected:focus,
.datepicker table tr td.selected:hover:focus,
.datepicker table tr td.selected.disabled:focus,
.datepicker table tr td.selected.disabled:hover:focus,
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.selected,
.open .dropdown-toggle.datepicker table tr td.selected:hover,
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
color: #ffffff;
background: rgba(0,0,0,0.2);
border-color: #373737;
}
.datepicker table tr td.selected:active,
.datepicker table tr td.selected:hover:active,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected:hover.active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.selected,
.open .dropdown-toggle.datepicker table tr td.selected:hover,
.open .dropdown-toggle.datepicker table tr td.selected.disabled,
.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover {
background-image: none;
}
.datepicker table tr td.selected.disabled,
.datepicker table tr td.selected:hover.disabled,
.datepicker table tr td.selected.disabled.disabled,
.datepicker table tr td.selected.disabled:hover.disabled,
.datepicker table tr td.selected[disabled],
.datepicker table tr td.selected:hover[disabled],
.datepicker table tr td.selected.disabled[disabled],
.datepicker table tr td.selected.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.selected,
fieldset[disabled] .datepicker table tr td.selected:hover,
fieldset[disabled] .datepicker table tr td.selected.disabled,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected:hover.disabled:hover,
.datepicker table tr td.selected.disabled.disabled:hover,
.datepicker table tr td.selected.disabled:hover.disabled:hover,
.datepicker table tr td.selected[disabled]:hover,
.datepicker table tr td.selected:hover[disabled]:hover,
.datepicker table tr td.selected.disabled[disabled]:hover,
.datepicker table tr td.selected.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.selected:hover,
fieldset[disabled] .datepicker table tr td.selected:hover:hover,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,
.datepicker table tr td.selected.disabled:focus,
.datepicker table tr td.selected:hover.disabled:focus,
.datepicker table tr td.selected.disabled.disabled:focus,
.datepicker table tr td.selected.disabled:hover.disabled:focus,
.datepicker table tr td.selected[disabled]:focus,
.datepicker table tr td.selected:hover[disabled]:focus,
.datepicker table tr td.selected.disabled[disabled]:focus,
.datepicker table tr td.selected.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.selected:focus,
fieldset[disabled] .datepicker table tr td.selected:hover:focus,
fieldset[disabled] .datepicker table tr td.selected.disabled:focus,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,
.datepicker table tr td.selected.disabled:active,
.datepicker table tr td.selected:hover.disabled:active,
.datepicker table tr td.selected.disabled.disabled:active,
.datepicker table tr td.selected.disabled:hover.disabled:active,
.datepicker table tr td.selected[disabled]:active,
.datepicker table tr td.selected:hover[disabled]:active,
.datepicker table tr td.selected.disabled[disabled]:active,
.datepicker table tr td.selected.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.selected:active,
fieldset[disabled] .datepicker table tr td.selected:hover:active,
fieldset[disabled] .datepicker table tr td.selected.disabled:active,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,
.datepicker table tr td.selected.disabled.active,
.datepicker table tr td.selected:hover.disabled.active,
.datepicker table tr td.selected.disabled.disabled.active,
.datepicker table tr td.selected.disabled:hover.disabled.active,
.datepicker table tr td.selected[disabled].active,
.datepicker table tr td.selected:hover[disabled].active,
.datepicker table tr td.selected.disabled[disabled].active,
.datepicker table tr td.selected.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.selected.active,
fieldset[disabled] .datepicker table tr td.selected:hover.active,
fieldset[disabled] .datepicker table tr td.selected.disabled.active,
fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active {
background: rgba(0,0,0,0.2);
border-color: #555555;
}
.datepicker table tr td.active,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.disabled,
.datepicker table tr td.active.disabled:hover {
color: #ffffff;
background: rgba(0,0,0,0.2);
border-color: #357ebd;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.active:hover,
.datepicker table tr td.active:hover:hover,
.datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active.disabled:hover:hover,
.datepicker table tr td.active:focus,
.datepicker table tr td.active:hover:focus,
.datepicker table tr td.active.disabled:focus,
.datepicker table tr td.active.disabled:hover:focus,
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.active,
.open .dropdown-toggle.datepicker table tr td.active:hover,
.open .dropdown-toggle.datepicker table tr td.active.disabled,
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
color: #ffffff;
background: rgba(0,0,0,0.5);
border-color: #285e8e;
}
.datepicker table tr td.active:active,
.datepicker table tr td.active:hover:active,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active:hover.active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td.active,
.open .dropdown-toggle.datepicker table tr td.active:hover,
.open .dropdown-toggle.datepicker table tr td.active.disabled,
.open .dropdown-toggle.datepicker table tr td.active.disabled:hover {
background-image: none;
}
.datepicker table tr td.active.disabled,
.datepicker table tr td.active:hover.disabled,
.datepicker table tr td.active.disabled.disabled,
.datepicker table tr td.active.disabled:hover.disabled,
.datepicker table tr td.active[disabled],
.datepicker table tr td.active:hover[disabled],
.datepicker table tr td.active.disabled[disabled],
.datepicker table tr td.active.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td.active,
fieldset[disabled] .datepicker table tr td.active:hover,
fieldset[disabled] .datepicker table tr td.active.disabled,
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active:hover.disabled:hover,
.datepicker table tr td.active.disabled.disabled:hover,
.datepicker table tr td.active.disabled:hover.disabled:hover,
.datepicker table tr td.active[disabled]:hover,
.datepicker table tr td.active:hover[disabled]:hover,
.datepicker table tr td.active.disabled[disabled]:hover,
.datepicker table tr td.active.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td.active:hover,
fieldset[disabled] .datepicker table tr td.active:hover:hover,
fieldset[disabled] .datepicker table tr td.active.disabled:hover,
fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,
.datepicker table tr td.active.disabled:focus,
.datepicker table tr td.active:hover.disabled:focus,
.datepicker table tr td.active.disabled.disabled:focus,
.datepicker table tr td.active.disabled:hover.disabled:focus,
.datepicker table tr td.active[disabled]:focus,
.datepicker table tr td.active:hover[disabled]:focus,
.datepicker table tr td.active.disabled[disabled]:focus,
.datepicker table tr td.active.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td.active:focus,
fieldset[disabled] .datepicker table tr td.active:hover:focus,
fieldset[disabled] .datepicker table tr td.active.disabled:focus,
fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,
.datepicker table tr td.active.disabled:active,
.datepicker table tr td.active:hover.disabled:active,
.datepicker table tr td.active.disabled.disabled:active,
.datepicker table tr td.active.disabled:hover.disabled:active,
.datepicker table tr td.active[disabled]:active,
.datepicker table tr td.active:hover[disabled]:active,
.datepicker table tr td.active.disabled[disabled]:active,
.datepicker table tr td.active.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td.active:active,
fieldset[disabled] .datepicker table tr td.active:hover:active,
fieldset[disabled] .datepicker table tr td.active.disabled:active,
fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,
.datepicker table tr td.active.disabled.active,
.datepicker table tr td.active:hover.disabled.active,
.datepicker table tr td.active.disabled.disabled.active,
.datepicker table tr td.active.disabled:hover.disabled.active,
.datepicker table tr td.active[disabled].active,
.datepicker table tr td.active:hover[disabled].active,
.datepicker table tr td.active.disabled[disabled].active,
.datepicker table tr td.active.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td.active.active,
fieldset[disabled] .datepicker table tr td.active:hover.active,
fieldset[disabled] .datepicker table tr td.active.disabled.active,
fieldset[disabled] .datepicker table tr td.active.disabled:hover.active {
background-color: #428bca;
border-color: #357ebd;
}
.datepicker table tr td span {
display: block;
width: 23%;
height: 54px;
line-height: 54px;
float: left;
margin: 1%;
cursor: pointer;
border-radius: 4px;
}
.datepicker table tr td span:hover {
background: rgba(0,0,0,0.2);
}
.datepicker table tr td span.disabled,
.datepicker table tr td span.disabled:hover {
background: none;
color: #444;
cursor: default;
}
.datepicker table tr td span.active,
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active.disabled:hover {
color: #ffffff;
background-color: #428bca;
border-color: #357ebd;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active:hover:hover,
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active.disabled:hover:hover,
.datepicker table tr td span.active:focus,
.datepicker table tr td span.active:hover:focus,
.datepicker table tr td span.active.disabled:focus,
.datepicker table tr td span.active.disabled:hover:focus,
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td span.active,
.open .dropdown-toggle.datepicker table tr td span.active:hover,
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
color: #ffffff;
background-color: #3276b1;
border-color: #285e8e;
}
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active,
.open .dropdown-toggle.datepicker table tr td span.active,
.open .dropdown-toggle.datepicker table tr td span.active:hover,
.open .dropdown-toggle.datepicker table tr td span.active.disabled,
.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover {
background-image: none;
}
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active:hover.disabled,
.datepicker table tr td span.active.disabled.disabled,
.datepicker table tr td span.active.disabled:hover.disabled,
.datepicker table tr td span.active[disabled],
.datepicker table tr td span.active:hover[disabled],
.datepicker table tr td span.active.disabled[disabled],
.datepicker table tr td span.active.disabled:hover[disabled],
fieldset[disabled] .datepicker table tr td span.active,
fieldset[disabled] .datepicker table tr td span.active:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active:hover.disabled:hover,
.datepicker table tr td span.active.disabled.disabled:hover,
.datepicker table tr td span.active.disabled:hover.disabled:hover,
.datepicker table tr td span.active[disabled]:hover,
.datepicker table tr td span.active:hover[disabled]:hover,
.datepicker table tr td span.active.disabled[disabled]:hover,
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td span.active:hover,
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
.datepicker table tr td span.active.disabled:focus,
.datepicker table tr td span.active:hover.disabled:focus,
.datepicker table tr td span.active.disabled.disabled:focus,
.datepicker table tr td span.active.disabled:hover.disabled:focus,
.datepicker table tr td span.active[disabled]:focus,
.datepicker table tr td span.active:hover[disabled]:focus,
.datepicker table tr td span.active.disabled[disabled]:focus,
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td span.active:focus,
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active:hover.disabled:active,
.datepicker table tr td span.active.disabled.disabled:active,
.datepicker table tr td span.active.disabled:hover.disabled:active,
.datepicker table tr td span.active[disabled]:active,
.datepicker table tr td span.active:hover[disabled]:active,
.datepicker table tr td span.active.disabled[disabled]:active,
.datepicker table tr td span.active.disabled:hover[disabled]:active,
fieldset[disabled] .datepicker table tr td span.active:active,
fieldset[disabled] .datepicker table tr td span.active:hover:active,
fieldset[disabled] .datepicker table tr td span.active.disabled:active,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active:hover.disabled.active,
.datepicker table tr td span.active.disabled.disabled.active,
.datepicker table tr td span.active.disabled:hover.disabled.active,
.datepicker table tr td span.active[disabled].active,
.datepicker table tr td span.active:hover[disabled].active,
.datepicker table tr td span.active.disabled[disabled].active,
.datepicker table tr td span.active.disabled:hover[disabled].active,
fieldset[disabled] .datepicker table tr td span.active.active,
fieldset[disabled] .datepicker table tr td span.active:hover.active,
fieldset[disabled] .datepicker table tr td span.active.disabled.active,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active {
background-color: #428bca;
border-color: #357ebd;
}
.datepicker table tr td span.old,
.datepicker table tr td span.new {
color: #444;
}
.datepicker th.datepicker-switch {
width: 145px;
}
.datepicker thead tr:first-child th,
.datepicker tfoot tr th {
cursor: pointer;
}
.datepicker thead tr:first-child th:hover,
.datepicker tfoot tr th:hover {
background: rgba(0,0,0,0.2);
}
.datepicker .cw {
font-size: 10px;
width: 12px;
padding: 0 2px 0 5px;
vertical-align: middle;
}
.datepicker thead tr:first-child th.cw {
cursor: default;
background-color: transparent;
}
.input-group.date .input-group-addon i {
cursor: pointer;
width: 16px;
height: 16px;
}
.input-daterange input {
text-align: center;
}
.input-daterange input:first-child {
border-radius: 3px 0 0 3px;
}
.input-daterange input:last-child {
border-radius: 0 3px 3px 0;
}
.input-daterange .input-group-addon {
width: auto;
min-width: 16px;
padding: 4px 5px;
font-weight: normal;
line-height: 1.428571429;
text-align: center;
text-shadow: 0 1px 0 #fff;
vertical-align: middle;
background-color: #eeeeee;
border: solid #cccccc;
border-width: 1px 0;
margin-left: -5px;
margin-right: -5px;
}
.datepicker.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
float: left;
display: none;
min-width: 160px;
list-style: none;
background-color: #ffffff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 5px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
*border-right-width: 2px;
*border-bottom-width: 2px;
color: #333333;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
line-height: 1.428571429;
}
.datepicker.dropdown-menu th,
.datepicker.dropdown-menu td {
padding: 4px 5px;
}

View file

@ -0,0 +1,245 @@
/*!
* Stylesheet for the Date Range Picker, for use with Bootstrap 3.x
*
* Copyright 2013 Dan Grossman ( http://www.dangrossman.info )
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Built for http://www.improvely.com
*/
.daterangepicker.dropdown-menu {
max-width: none;
z-index: 3000;
}
.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar {
float: left;
margin: 4px;
}
.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar {
float: right;
margin: 4px;
}
.daterangepicker .ranges {
width: 160px;
text-align: left;
}
.daterangepicker .ranges .range_inputs>div {
float: left;
}
.daterangepicker .ranges .range_inputs>div:nth-child(2) {
padding-left: 11px;
}
.daterangepicker .calendar {
display: none;
max-width: 270px;
}
.daterangepicker .calendar th, .daterangepicker .calendar td {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
white-space: nowrap;
text-align: center;
min-width: 32px;
}
.daterangepicker .ranges label {
color: #333;
display: block;
font-size: 11px;
font-weight: normal;
height: 20px;
line-height: 20px;
margin-bottom: 2px;
text-shadow: #fff 1px 1px 0px;
text-transform: uppercase;
width: 74px;
}
.daterangepicker .ranges input {
font-size: 11px;
}
.daterangepicker .ranges .input-mini {
background-color: #eee;
border: 1px solid #ccc;
border-radius: 4px;
color: #555;
display: block;
font-size: 11px;
height: 30px;
line-height: 30px;
vertical-align: middle;
margin: 0 0 10px 0;
padding: 0 6px;
width: 74px;
}
.daterangepicker .ranges ul {
list-style: none;
margin: 0;
padding: 0;
}
.daterangepicker .ranges li {
font-size: 13px;
background: #f5f5f5;
border: 1px solid #f5f5f5;
color: #08c;
padding: 3px 12px;
margin-bottom: 8px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
cursor: pointer;
}
.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover {
background: #08c;
border: 1px solid #08c;
color: #fff;
}
.daterangepicker .calendar-date {
border: 1px solid #ddd;
padding: 4px;
border-radius: 4px;
background: #fff;
}
.daterangepicker .calendar-time {
text-align: center;
margin: 8px auto 0 auto;
line-height: 30px;
}
.daterangepicker {
position: absolute;
background: #fff;
top: 100px;
left: 20px;
padding: 4px;
margin-top: 1px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.daterangepicker.opensleft:before {
position: absolute;
top: -7px;
right: 9px;
display: inline-block;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-left: 7px solid transparent;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: '';
}
.daterangepicker.opensleft:after {
position: absolute;
top: -6px;
right: 10px;
display: inline-block;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-left: 6px solid transparent;
content: '';
}
.daterangepicker.opensright:before {
position: absolute;
top: -7px;
left: 9px;
display: inline-block;
border-right: 7px solid transparent;
border-bottom: 7px solid #ccc;
border-left: 7px solid transparent;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: '';
}
.daterangepicker.opensright:after {
position: absolute;
top: -6px;
left: 10px;
display: inline-block;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-left: 6px solid transparent;
content: '';
}
.daterangepicker table {
width: 100%;
margin: 0;
}
.daterangepicker td, .daterangepicker th {
text-align: center;
width: 20px;
height: 20px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
cursor: pointer;
white-space: nowrap;
}
.daterangepicker td.off {
color: #999;
}
.daterangepicker td.disabled {
color: #999;
}
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background: #eee;
}
.daterangepicker td.in-range {
background: #ebf4f8;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #357ebd;
border-color: #3071a9;
color: #fff;
}
.daterangepicker td.week, .daterangepicker th.week {
font-size: 80%;
color: #ccc;
}
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
font-size: 12px;
padding: 1px;
height: auto;
margin: 0;
cursor: default;
}
.daterangepicker select.monthselect {
margin-right: 2%;
width: 56%;
}
.daterangepicker select.yearselect {
width: 40%;
}
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.ampmselect {
width: 50px;
margin-bottom: 0;
}

View file

@ -0,0 +1,61 @@
/* iCheck plugin skins
----------------------------------- */
@import url("minimal/_all.css");
/*
@import url("minimal/minimal.css");
@import url("minimal/red.css");
@import url("minimal/green.css");
@import url("minimal/blue.css");
@import url("minimal/aero.css");
@import url("minimal/grey.css");
@import url("minimal/orange.css");
@import url("minimal/yellow.css");
@import url("minimal/pink.css");
@import url("minimal/purple.css");
*/
@import url("square/_all.css");
/*
@import url("square/square.css");
@import url("square/red.css");
@import url("square/green.css");
@import url("square/blue.css");
@import url("square/aero.css");
@import url("square/grey.css");
@import url("square/orange.css");
@import url("square/yellow.css");
@import url("square/pink.css");
@import url("square/purple.css");
*/
@import url("flat/_all.css");
/*
@import url("flat/flat.css");
@import url("flat/red.css");
@import url("flat/green.css");
@import url("flat/blue.css");
@import url("flat/aero.css");
@import url("flat/grey.css");
@import url("flat/orange.css");
@import url("flat/yellow.css");
@import url("flat/pink.css");
@import url("flat/purple.css");
*/
@import url("line/_all.css");
/*
@import url("line/line.css");
@import url("line/red.css");
@import url("line/green.css");
@import url("line/blue.css");
@import url("line/aero.css");
@import url("line/grey.css");
@import url("line/orange.css");
@import url("line/yellow.css");
@import url("line/pink.css");
@import url("line/purple.css");
*/
@import url("polaris/polaris.css");
@import url("futurico/futurico.css");

View file

@ -0,0 +1,560 @@
/* iCheck plugin Flat skin
----------------------------------- */
.icheckbox_flat,
.iradio_flat {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(flat.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat {
background-position: 0 0;
}
.icheckbox_flat.checked {
background-position: -22px 0;
}
.icheckbox_flat.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat.checked.disabled {
background-position: -66px 0;
}
.iradio_flat {
background-position: -88px 0;
}
.iradio_flat.checked {
background-position: -110px 0;
}
.iradio_flat.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat,
.iradio_flat {
background-image: url(flat@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* red */
.icheckbox_flat-red,
.iradio_flat-red {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(red.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-red {
background-position: 0 0;
}
.icheckbox_flat-red.checked {
background-position: -22px 0;
}
.icheckbox_flat-red.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-red.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-red {
background-position: -88px 0;
}
.iradio_flat-red.checked {
background-position: -110px 0;
}
.iradio_flat-red.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-red.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-red,
.iradio_flat-red {
background-image: url(red@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* green */
.icheckbox_flat-green,
.iradio_flat-green {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(green.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-green {
background-position: 0 0;
}
.icheckbox_flat-green.checked {
background-position: -22px 0;
}
.icheckbox_flat-green.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-green.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-green {
background-position: -88px 0;
}
.iradio_flat-green.checked {
background-position: -110px 0;
}
.iradio_flat-green.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-green.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-green,
.iradio_flat-green {
background-image: url(green@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* blue */
.icheckbox_flat-blue,
.iradio_flat-blue {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(blue.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-blue {
background-position: 0 0;
}
.icheckbox_flat-blue.checked {
background-position: -22px 0;
}
.icheckbox_flat-blue.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-blue.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-blue {
background-position: -88px 0;
}
.iradio_flat-blue.checked {
background-position: -110px 0;
}
.iradio_flat-blue.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-blue.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-blue,
.iradio_flat-blue {
background-image: url(blue@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* aero */
.icheckbox_flat-aero,
.iradio_flat-aero {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(aero.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-aero {
background-position: 0 0;
}
.icheckbox_flat-aero.checked {
background-position: -22px 0;
}
.icheckbox_flat-aero.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-aero.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-aero {
background-position: -88px 0;
}
.iradio_flat-aero.checked {
background-position: -110px 0;
}
.iradio_flat-aero.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-aero.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-aero,
.iradio_flat-aero {
background-image: url(aero@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* grey */
.icheckbox_flat-grey,
.iradio_flat-grey {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(grey.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-grey {
background-position: 0 0;
}
.icheckbox_flat-grey.checked {
background-position: -22px 0;
}
.icheckbox_flat-grey.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-grey.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-grey {
background-position: -88px 0;
}
.iradio_flat-grey.checked {
background-position: -110px 0;
}
.iradio_flat-grey.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-grey.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-grey,
.iradio_flat-grey {
background-image: url(grey@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* orange */
.icheckbox_flat-orange,
.iradio_flat-orange {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(orange.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-orange {
background-position: 0 0;
}
.icheckbox_flat-orange.checked {
background-position: -22px 0;
}
.icheckbox_flat-orange.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-orange.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-orange {
background-position: -88px 0;
}
.iradio_flat-orange.checked {
background-position: -110px 0;
}
.iradio_flat-orange.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-orange.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-orange,
.iradio_flat-orange {
background-image: url(orange@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* yellow */
.icheckbox_flat-yellow,
.iradio_flat-yellow {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(yellow.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-yellow {
background-position: 0 0;
}
.icheckbox_flat-yellow.checked {
background-position: -22px 0;
}
.icheckbox_flat-yellow.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-yellow.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-yellow {
background-position: -88px 0;
}
.iradio_flat-yellow.checked {
background-position: -110px 0;
}
.iradio_flat-yellow.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-yellow.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-yellow,
.iradio_flat-yellow {
background-image: url(yellow@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* pink */
.icheckbox_flat-pink,
.iradio_flat-pink {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(pink.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-pink {
background-position: 0 0;
}
.icheckbox_flat-pink.checked {
background-position: -22px 0;
}
.icheckbox_flat-pink.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-pink.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-pink {
background-position: -88px 0;
}
.iradio_flat-pink.checked {
background-position: -110px 0;
}
.iradio_flat-pink.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-pink.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-pink,
.iradio_flat-pink {
background-image: url(pink@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}
/* purple */
.icheckbox_flat-purple,
.iradio_flat-purple {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(purple.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-purple {
background-position: 0 0;
}
.icheckbox_flat-purple.checked {
background-position: -22px 0;
}
.icheckbox_flat-purple.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-purple.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-purple {
background-position: -88px 0;
}
.iradio_flat-purple.checked {
background-position: -110px 0;
}
.iradio_flat-purple.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-purple.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-purple,
.iradio_flat-purple {
background-image: url(purple@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, aero
----------------------------------- */
.icheckbox_flat-aero,
.iradio_flat-aero {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(aero.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-aero {
background-position: 0 0;
}
.icheckbox_flat-aero.checked {
background-position: -22px 0;
}
.icheckbox_flat-aero.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-aero.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-aero {
background-position: -88px 0;
}
.iradio_flat-aero.checked {
background-position: -110px 0;
}
.iradio_flat-aero.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-aero.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-aero,
.iradio_flat-aero {
background-image: url(aero@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, blue
----------------------------------- */
.icheckbox_flat-blue,
.iradio_flat-blue {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(blue.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-blue {
background-position: 0 0;
}
.icheckbox_flat-blue.checked {
background-position: -22px 0;
}
.icheckbox_flat-blue.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-blue.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-blue {
background-position: -88px 0;
}
.iradio_flat-blue.checked {
background-position: -110px 0;
}
.iradio_flat-blue.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-blue.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-blue,
.iradio_flat-blue {
background-image: url(blue@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin flat skin, black
----------------------------------- */
.icheckbox_flat,
.iradio_flat {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(flat.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat {
background-position: 0 0;
}
.icheckbox_flat.checked {
background-position: -22px 0;
}
.icheckbox_flat.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat.checked.disabled {
background-position: -66px 0;
}
.iradio_flat {
background-position: -88px 0;
}
.iradio_flat.checked {
background-position: -110px 0;
}
.iradio_flat.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat,
.iradio_flat {
background-image: url(flat@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, green
----------------------------------- */
.icheckbox_flat-green,
.iradio_flat-green {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(green.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-green {
background-position: 0 0;
}
.icheckbox_flat-green.checked {
background-position: -22px 0;
}
.icheckbox_flat-green.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-green.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-green {
background-position: -88px 0;
}
.iradio_flat-green.checked {
background-position: -110px 0;
}
.iradio_flat-green.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-green.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-green,
.iradio_flat-green {
background-image: url(green@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, grey
----------------------------------- */
.icheckbox_flat-grey,
.iradio_flat-grey {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(grey.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-grey {
background-position: 0 0;
}
.icheckbox_flat-grey.checked {
background-position: -22px 0;
}
.icheckbox_flat-grey.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-grey.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-grey {
background-position: -88px 0;
}
.iradio_flat-grey.checked {
background-position: -110px 0;
}
.iradio_flat-grey.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-grey.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-grey,
.iradio_flat-grey {
background-image: url(grey@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, orange
----------------------------------- */
.icheckbox_flat-orange,
.iradio_flat-orange {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(orange.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-orange {
background-position: 0 0;
}
.icheckbox_flat-orange.checked {
background-position: -22px 0;
}
.icheckbox_flat-orange.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-orange.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-orange {
background-position: -88px 0;
}
.iradio_flat-orange.checked {
background-position: -110px 0;
}
.iradio_flat-orange.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-orange.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-orange,
.iradio_flat-orange {
background-image: url(orange@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, pink
----------------------------------- */
.icheckbox_flat-pink,
.iradio_flat-pink {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(pink.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-pink {
background-position: 0 0;
}
.icheckbox_flat-pink.checked {
background-position: -22px 0;
}
.icheckbox_flat-pink.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-pink.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-pink {
background-position: -88px 0;
}
.iradio_flat-pink.checked {
background-position: -110px 0;
}
.iradio_flat-pink.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-pink.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-pink,
.iradio_flat-pink {
background-image: url(pink@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, purple
----------------------------------- */
.icheckbox_flat-purple,
.iradio_flat-purple {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(purple.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-purple {
background-position: 0 0;
}
.icheckbox_flat-purple.checked {
background-position: -22px 0;
}
.icheckbox_flat-purple.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-purple.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-purple {
background-position: -88px 0;
}
.iradio_flat-purple.checked {
background-position: -110px 0;
}
.iradio_flat-purple.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-purple.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-purple,
.iradio_flat-purple {
background-image: url(purple@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, red
----------------------------------- */
.icheckbox_flat-red,
.iradio_flat-red {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(red.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-red {
background-position: 0 0;
}
.icheckbox_flat-red.checked {
background-position: -22px 0;
}
.icheckbox_flat-red.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-red.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-red {
background-position: -88px 0;
}
.iradio_flat-red.checked {
background-position: -110px 0;
}
.iradio_flat-red.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-red.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-red,
.iradio_flat-red {
background-image: url(red@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Flat skin, yellow
----------------------------------- */
.icheckbox_flat-yellow,
.iradio_flat-yellow {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 20px;
height: 20px;
background: url(yellow.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_flat-yellow {
background-position: 0 0;
}
.icheckbox_flat-yellow.checked {
background-position: -22px 0;
}
.icheckbox_flat-yellow.disabled {
background-position: -44px 0;
cursor: default;
}
.icheckbox_flat-yellow.checked.disabled {
background-position: -66px 0;
}
.iradio_flat-yellow {
background-position: -88px 0;
}
.iradio_flat-yellow.checked {
background-position: -110px 0;
}
.iradio_flat-yellow.disabled {
background-position: -132px 0;
cursor: default;
}
.iradio_flat-yellow.checked.disabled {
background-position: -154px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_flat-yellow,
.iradio_flat-yellow {
background-image: url(yellow@2x.png);
-webkit-background-size: 176px 22px;
background-size: 176px 22px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,56 @@
/* iCheck plugin Futurico skin
----------------------------------- */
.icheckbox_futurico,
.iradio_futurico {
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 16px;
height: 17px;
background: url(futurico.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_futurico {
background-position: 0 0;
}
.icheckbox_futurico.checked {
background-position: -18px 0;
}
.icheckbox_futurico.disabled {
background-position: -36px 0;
cursor: default;
}
.icheckbox_futurico.checked.disabled {
background-position: -54px 0;
}
.iradio_futurico {
background-position: -72px 0;
}
.iradio_futurico.checked {
background-position: -90px 0;
}
.iradio_futurico.disabled {
background-position: -108px 0;
cursor: default;
}
.iradio_futurico.checked.disabled {
background-position: -126px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_futurico,
.iradio_futurico {
background-image: url(futurico@2x.png);
-webkit-background-size: 144px 19px;
background-size: 144px 19px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,740 @@
/* iCheck plugin Line skin
----------------------------------- */
.icheckbox_line,
.iradio_line {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #000;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line .icheck_line-icon,
.iradio_line .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line.hover,
.icheckbox_line.checked.hover,
.iradio_line.hover {
background: #444;
}
.icheckbox_line.checked,
.iradio_line.checked {
background: #000;
}
.icheckbox_line.checked .icheck_line-icon,
.iradio_line.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line.disabled,
.iradio_line.disabled {
background: #ccc;
cursor: default;
}
.icheckbox_line.disabled .icheck_line-icon,
.iradio_line.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line.checked.disabled,
.iradio_line.checked.disabled {
background: #ccc;
}
.icheckbox_line.checked.disabled .icheck_line-icon,
.iradio_line.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line .icheck_line-icon,
.iradio_line .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* red */
.icheckbox_line-red,
.iradio_line-red {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #e56c69;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-red .icheck_line-icon,
.iradio_line-red .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-red.hover,
.icheckbox_line-red.checked.hover,
.iradio_line-red.hover {
background: #E98582;
}
.icheckbox_line-red.checked,
.iradio_line-red.checked {
background: #e56c69;
}
.icheckbox_line-red.checked .icheck_line-icon,
.iradio_line-red.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-red.disabled,
.iradio_line-red.disabled {
background: #F7D3D2;
cursor: default;
}
.icheckbox_line-red.disabled .icheck_line-icon,
.iradio_line-red.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-red.checked.disabled,
.iradio_line-red.checked.disabled {
background: #F7D3D2;
}
.icheckbox_line-red.checked.disabled .icheck_line-icon,
.iradio_line-red.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-red .icheck_line-icon,
.iradio_line-red .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* green */
.icheckbox_line-green,
.iradio_line-green {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #1b7e5a;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-green .icheck_line-icon,
.iradio_line-green .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-green.hover,
.icheckbox_line-green.checked.hover,
.iradio_line-green.hover {
background: #24AA7A;
}
.icheckbox_line-green.checked,
.iradio_line-green.checked {
background: #1b7e5a;
}
.icheckbox_line-green.checked .icheck_line-icon,
.iradio_line-green.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-green.disabled,
.iradio_line-green.disabled {
background: #89E6C4;
cursor: default;
}
.icheckbox_line-green.disabled .icheck_line-icon,
.iradio_line-green.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-green.checked.disabled,
.iradio_line-green.checked.disabled {
background: #89E6C4;
}
.icheckbox_line-green.checked.disabled .icheck_line-icon,
.iradio_line-green.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-green .icheck_line-icon,
.iradio_line-green .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* blue */
.icheckbox_line-blue,
.iradio_line-blue {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #2489c5;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-blue .icheck_line-icon,
.iradio_line-blue .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-blue.hover,
.icheckbox_line-blue.checked.hover,
.iradio_line-blue.hover {
background: #3DA0DB;
}
.icheckbox_line-blue.checked,
.iradio_line-blue.checked {
background: #2489c5;
}
.icheckbox_line-blue.checked .icheck_line-icon,
.iradio_line-blue.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-blue.disabled,
.iradio_line-blue.disabled {
background: #ADD7F0;
cursor: default;
}
.icheckbox_line-blue.disabled .icheck_line-icon,
.iradio_line-blue.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-blue.checked.disabled,
.iradio_line-blue.checked.disabled {
background: #ADD7F0;
}
.icheckbox_line-blue.checked.disabled .icheck_line-icon,
.iradio_line-blue.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-blue .icheck_line-icon,
.iradio_line-blue .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* aero */
.icheckbox_line-aero,
.iradio_line-aero {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #9cc2cb;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-aero .icheck_line-icon,
.iradio_line-aero .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-aero.hover,
.icheckbox_line-aero.checked.hover,
.iradio_line-aero.hover {
background: #B5D1D8;
}
.icheckbox_line-aero.checked,
.iradio_line-aero.checked {
background: #9cc2cb;
}
.icheckbox_line-aero.checked .icheck_line-icon,
.iradio_line-aero.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-aero.disabled,
.iradio_line-aero.disabled {
background: #D2E4E8;
cursor: default;
}
.icheckbox_line-aero.disabled .icheck_line-icon,
.iradio_line-aero.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-aero.checked.disabled,
.iradio_line-aero.checked.disabled {
background: #D2E4E8;
}
.icheckbox_line-aero.checked.disabled .icheck_line-icon,
.iradio_line-aero.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-aero .icheck_line-icon,
.iradio_line-aero .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* grey */
.icheckbox_line-grey,
.iradio_line-grey {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #73716e;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-grey .icheck_line-icon,
.iradio_line-grey .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-grey.hover,
.icheckbox_line-grey.checked.hover,
.iradio_line-grey.hover {
background: #8B8986;
}
.icheckbox_line-grey.checked,
.iradio_line-grey.checked {
background: #73716e;
}
.icheckbox_line-grey.checked .icheck_line-icon,
.iradio_line-grey.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-grey.disabled,
.iradio_line-grey.disabled {
background: #D5D4D3;
cursor: default;
}
.icheckbox_line-grey.disabled .icheck_line-icon,
.iradio_line-grey.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-grey.checked.disabled,
.iradio_line-grey.checked.disabled {
background: #D5D4D3;
}
.icheckbox_line-grey.checked.disabled .icheck_line-icon,
.iradio_line-grey.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-grey .icheck_line-icon,
.iradio_line-grey .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* orange */
.icheckbox_line-orange,
.iradio_line-orange {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #f70;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-orange .icheck_line-icon,
.iradio_line-orange .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-orange.hover,
.icheckbox_line-orange.checked.hover,
.iradio_line-orange.hover {
background: #FF9233;
}
.icheckbox_line-orange.checked,
.iradio_line-orange.checked {
background: #f70;
}
.icheckbox_line-orange.checked .icheck_line-icon,
.iradio_line-orange.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-orange.disabled,
.iradio_line-orange.disabled {
background: #FFD6B3;
cursor: default;
}
.icheckbox_line-orange.disabled .icheck_line-icon,
.iradio_line-orange.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-orange.checked.disabled,
.iradio_line-orange.checked.disabled {
background: #FFD6B3;
}
.icheckbox_line-orange.checked.disabled .icheck_line-icon,
.iradio_line-orange.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-orange .icheck_line-icon,
.iradio_line-orange .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* yellow */
.icheckbox_line-yellow,
.iradio_line-yellow {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #FFC414;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-yellow .icheck_line-icon,
.iradio_line-yellow .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-yellow.hover,
.icheckbox_line-yellow.checked.hover,
.iradio_line-yellow.hover {
background: #FFD34F;
}
.icheckbox_line-yellow.checked,
.iradio_line-yellow.checked {
background: #FFC414;
}
.icheckbox_line-yellow.checked .icheck_line-icon,
.iradio_line-yellow.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-yellow.disabled,
.iradio_line-yellow.disabled {
background: #FFE495;
cursor: default;
}
.icheckbox_line-yellow.disabled .icheck_line-icon,
.iradio_line-yellow.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-yellow.checked.disabled,
.iradio_line-yellow.checked.disabled {
background: #FFE495;
}
.icheckbox_line-yellow.checked.disabled .icheck_line-icon,
.iradio_line-yellow.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-yellow .icheck_line-icon,
.iradio_line-yellow .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* pink */
.icheckbox_line-pink,
.iradio_line-pink {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #a77a94;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-pink .icheck_line-icon,
.iradio_line-pink .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-pink.hover,
.icheckbox_line-pink.checked.hover,
.iradio_line-pink.hover {
background: #B995A9;
}
.icheckbox_line-pink.checked,
.iradio_line-pink.checked {
background: #a77a94;
}
.icheckbox_line-pink.checked .icheck_line-icon,
.iradio_line-pink.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-pink.disabled,
.iradio_line-pink.disabled {
background: #E0D0DA;
cursor: default;
}
.icheckbox_line-pink.disabled .icheck_line-icon,
.iradio_line-pink.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-pink.checked.disabled,
.iradio_line-pink.checked.disabled {
background: #E0D0DA;
}
.icheckbox_line-pink.checked.disabled .icheck_line-icon,
.iradio_line-pink.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-pink .icheck_line-icon,
.iradio_line-pink .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}
/* purple */
.icheckbox_line-purple,
.iradio_line-purple {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #6a5a8c;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-purple .icheck_line-icon,
.iradio_line-purple .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-purple.hover,
.icheckbox_line-purple.checked.hover,
.iradio_line-purple.hover {
background: #8677A7;
}
.icheckbox_line-purple.checked,
.iradio_line-purple.checked {
background: #6a5a8c;
}
.icheckbox_line-purple.checked .icheck_line-icon,
.iradio_line-purple.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-purple.disabled,
.iradio_line-purple.disabled {
background: #D2CCDE;
cursor: default;
}
.icheckbox_line-purple.disabled .icheck_line-icon,
.iradio_line-purple.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-purple.checked.disabled,
.iradio_line-purple.checked.disabled {
background: #D2CCDE;
}
.icheckbox_line-purple.checked.disabled .icheck_line-icon,
.iradio_line-purple.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-purple .icheck_line-icon,
.iradio_line-purple .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}

View file

@ -0,0 +1,74 @@
/* iCheck plugin Line skin, aero
----------------------------------- */
.icheckbox_line-aero,
.iradio_line-aero {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #9cc2cb;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-aero .icheck_line-icon,
.iradio_line-aero .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-aero.hover,
.icheckbox_line-aero.checked.hover,
.iradio_line-aero.hover {
background: #B5D1D8;
}
.icheckbox_line-aero.checked,
.iradio_line-aero.checked {
background: #9cc2cb;
}
.icheckbox_line-aero.checked .icheck_line-icon,
.iradio_line-aero.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-aero.disabled,
.iradio_line-aero.disabled {
background: #D2E4E8;
cursor: default;
}
.icheckbox_line-aero.disabled .icheck_line-icon,
.iradio_line-aero.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-aero.checked.disabled,
.iradio_line-aero.checked.disabled {
background: #D2E4E8;
}
.icheckbox_line-aero.checked.disabled .icheck_line-icon,
.iradio_line-aero.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-aero .icheck_line-icon,
.iradio_line-aero .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}

View file

@ -0,0 +1,74 @@
/* iCheck plugin Line skin, blue
----------------------------------- */
.icheckbox_line-blue,
.iradio_line-blue {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #2489c5;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-blue .icheck_line-icon,
.iradio_line-blue .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-blue.hover,
.icheckbox_line-blue.checked.hover,
.iradio_line-blue.hover {
background: #3DA0DB;
}
.icheckbox_line-blue.checked,
.iradio_line-blue.checked {
background: #2489c5;
}
.icheckbox_line-blue.checked .icheck_line-icon,
.iradio_line-blue.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-blue.disabled,
.iradio_line-blue.disabled {
background: #ADD7F0;
cursor: default;
}
.icheckbox_line-blue.disabled .icheck_line-icon,
.iradio_line-blue.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-blue.checked.disabled,
.iradio_line-blue.checked.disabled {
background: #ADD7F0;
}
.icheckbox_line-blue.checked.disabled .icheck_line-icon,
.iradio_line-blue.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-blue .icheck_line-icon,
.iradio_line-blue .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}

View file

@ -0,0 +1,74 @@
/* iCheck plugin Line skin, green
----------------------------------- */
.icheckbox_line-green,
.iradio_line-green {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #1b7e5a;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-green .icheck_line-icon,
.iradio_line-green .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-green.hover,
.icheckbox_line-green.checked.hover,
.iradio_line-green.hover {
background: #24AA7A;
}
.icheckbox_line-green.checked,
.iradio_line-green.checked {
background: #1b7e5a;
}
.icheckbox_line-green.checked .icheck_line-icon,
.iradio_line-green.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-green.disabled,
.iradio_line-green.disabled {
background: #89E6C4;
cursor: default;
}
.icheckbox_line-green.disabled .icheck_line-icon,
.iradio_line-green.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-green.checked.disabled,
.iradio_line-green.checked.disabled {
background: #89E6C4;
}
.icheckbox_line-green.checked.disabled .icheck_line-icon,
.iradio_line-green.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-green .icheck_line-icon,
.iradio_line-green .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}

View file

@ -0,0 +1,74 @@
/* iCheck plugin Line skin, grey
----------------------------------- */
.icheckbox_line-grey,
.iradio_line-grey {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #73716e;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-grey .icheck_line-icon,
.iradio_line-grey .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-grey.hover,
.icheckbox_line-grey.checked.hover,
.iradio_line-grey.hover {
background: #8B8986;
}
.icheckbox_line-grey.checked,
.iradio_line-grey.checked {
background: #73716e;
}
.icheckbox_line-grey.checked .icheck_line-icon,
.iradio_line-grey.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-grey.disabled,
.iradio_line-grey.disabled {
background: #D5D4D3;
cursor: default;
}
.icheckbox_line-grey.disabled .icheck_line-icon,
.iradio_line-grey.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-grey.checked.disabled,
.iradio_line-grey.checked.disabled {
background: #D5D4D3;
}
.icheckbox_line-grey.checked.disabled .icheck_line-icon,
.iradio_line-grey.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-grey .icheck_line-icon,
.iradio_line-grey .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}

View file

@ -0,0 +1,74 @@
/* iCheck plugin Line skin, black
----------------------------------- */
.icheckbox_line,
.iradio_line {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #000;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line .icheck_line-icon,
.iradio_line .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line.hover,
.icheckbox_line.checked.hover,
.iradio_line.hover {
background: #444;
}
.icheckbox_line.checked,
.iradio_line.checked {
background: #000;
}
.icheckbox_line.checked .icheck_line-icon,
.iradio_line.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line.disabled,
.iradio_line.disabled {
background: #ccc;
cursor: default;
}
.icheckbox_line.disabled .icheck_line-icon,
.iradio_line.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line.checked.disabled,
.iradio_line.checked.disabled {
background: #ccc;
}
.icheckbox_line.checked.disabled .icheck_line-icon,
.iradio_line.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line .icheck_line-icon,
.iradio_line .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -0,0 +1,74 @@
/* iCheck plugin Line skin, orange
----------------------------------- */
.icheckbox_line-orange,
.iradio_line-orange {
position: relative;
display: block;
margin: 0;
padding: 5px 15px 5px 38px;
font-size: 13px;
line-height: 17px;
color: #fff;
background: #f70;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
cursor: pointer;
}
.icheckbox_line-orange .icheck_line-icon,
.iradio_line-orange .icheck_line-icon {
position: absolute;
top: 50%;
left: 13px;
width: 13px;
height: 11px;
margin: -5px 0 0 0;
padding: 0;
overflow: hidden;
background: url(line.png) no-repeat;
border: none;
}
.icheckbox_line-orange.hover,
.icheckbox_line-orange.checked.hover,
.iradio_line-orange.hover {
background: #FF9233;
}
.icheckbox_line-orange.checked,
.iradio_line-orange.checked {
background: #f70;
}
.icheckbox_line-orange.checked .icheck_line-icon,
.iradio_line-orange.checked .icheck_line-icon {
background-position: -15px 0;
}
.icheckbox_line-orange.disabled,
.iradio_line-orange.disabled {
background: #FFD6B3;
cursor: default;
}
.icheckbox_line-orange.disabled .icheck_line-icon,
.iradio_line-orange.disabled .icheck_line-icon {
background-position: -30px 0;
}
.icheckbox_line-orange.checked.disabled,
.iradio_line-orange.checked.disabled {
background: #FFD6B3;
}
.icheckbox_line-orange.checked.disabled .icheck_line-icon,
.iradio_line-orange.checked.disabled .icheck_line-icon {
background-position: -45px 0;
}
/* Retina support */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-moz-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min-device-pixel-ratio: 1.5) {
.icheckbox_line-orange .icheck_line-icon,
.iradio_line-orange .icheck_line-icon {
background-image: url(line@2x.png);
-webkit-background-size: 60px 13px;
background-size: 60px 13px;
}
}

Some files were not shown because too many files have changed in this diff Show more