add user view, better bootstrap
This commit is contained in:
parent
74647e16d3
commit
f5a094fd8b
|
@ -12,7 +12,7 @@ function user_angeltypes_unconfirmed_hint() {
|
|||
return '';
|
||||
if ($_REQUEST['p'] == 'angeltypes' && $_REQUEST['action'] == 'view' && $_REQUEST['angeltype_id'] == $unconfirmed_user_angeltypes[0]['angeltype_id'])
|
||||
return '';
|
||||
return error(sprintf(ngettext("There is %d unconfirmed angeltype.", "There are %d unconfirmed angeltypes.", count($unconfirmed_user_angeltypes)), count($unconfirmed_user_angeltypes)) . " " . sprintf(_("The first wants to join %s."), '<a href="' . page_link_to('angeltypes') . '&action=view&angeltype_id=' . $unconfirmed_user_angeltypes[0]['angeltype_id'] . '">' . $unconfirmed_user_angeltypes[0]['name'] . '</a>'), true);
|
||||
return error(sprintf(ngettext("There is %d unconfirmed angeltype.", "There are %d unconfirmed angeltypes.", count($unconfirmed_user_angeltypes)), count($unconfirmed_user_angeltypes)) . " " . sprintf(_("The first wants to join %s."), '<a href="' . page_link_to('angeltypes') . '&action=view&angeltype_id=' . $unconfirmed_user_angeltypes[0]['angeltype_id'] . '">' . $unconfirmed_user_angeltypes[0]['name'] . '</a>'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -35,9 +35,22 @@ function user_controller() {
|
|||
|
||||
$admin_user_privilege = in_array('admin_user', $privileges);
|
||||
|
||||
$shifts = Shifts_by_user($user_source);
|
||||
foreach ($shifts as &$shift) {
|
||||
$shift['needed_angeltypes'] = sql_select("SELECT DISTINCT `AngelTypes`.* FROM `ShiftEntry` JOIN `AngelTypes` ON `ShiftEntry`.`TID`=`AngelTypes`.`id` WHERE `ShiftEntry`.`SID`=" . sql_escape($shift['SID']) . " ORDER BY `AngelTypes`.`name`");
|
||||
foreach ($shift['needed_angeltypes'] as &$needed_angeltype) {
|
||||
$needed_angeltype['users'] = sql_select("
|
||||
SELECT `ShiftEntry`.`freeloaded`, `User`.*
|
||||
FROM `ShiftEntry`
|
||||
JOIN `User` ON `ShiftEntry`.`UID`=`User`.`UID`
|
||||
WHERE `ShiftEntry`.`SID`=" . sql_escape($shift['SID']) . "
|
||||
AND `ShiftEntry`.`TID`=" . sql_escape($needed_angeltype['id']));
|
||||
}
|
||||
}
|
||||
|
||||
return array(
|
||||
$user_source['Nick'],
|
||||
User_view($user_source)
|
||||
User_view($user_source, $admin_user_privilege, User_is_freeloader($user_source), User_shift_state($user_source), User_angeltypes($user_source), User_groups($user_source), $shifts, $user['UID'] == $user_source['UID'])
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
/**
|
||||
* Delete an Angeltype.
|
||||
*
|
||||
* @param Angeltype $angeltype
|
||||
*/
|
||||
function AngelType_delete($angeltype) {
|
||||
|
|
|
@ -1,7 +1,23 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Returns next (or current) shifts of given user.
|
||||
* @param User $user
|
||||
*/
|
||||
function ShiftEntries_upcoming_for_user($user) {
|
||||
return sql_select("
|
||||
SELECT *
|
||||
FROM `ShiftEntry`
|
||||
JOIN `Shifts` ON `Shifts`.`SID`=`ShiftEntry`.`SID`
|
||||
WHERE `ShiftEntry`.`UID`=" . sql_escape($user['UID']) . "
|
||||
AND `Shifts`.`end` > " . sql_escape(time()) . "
|
||||
ORDER BY `Shifts`.`end`
|
||||
");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all shift entries in given shift for given angeltype.
|
||||
*
|
||||
* @param int $shift_id
|
||||
* @param int $angeltype_id
|
||||
*/
|
||||
|
|
|
@ -1,79 +1,90 @@
|
|||
<?php
|
||||
function Shifts_by_user($user) {
|
||||
return sql_select("
|
||||
SELECT *
|
||||
FROM `ShiftEntry`
|
||||
JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`)
|
||||
JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`)
|
||||
WHERE `UID`=" . sql_escape($user['UID']) . "
|
||||
ORDER BY `start`
|
||||
");
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: $_REQUEST is not allowed in model!
|
||||
* Returns Shift id array
|
||||
*/
|
||||
function Shifts_filtered() {
|
||||
global $_REQUEST;
|
||||
$filter = "";
|
||||
global $_REQUEST;
|
||||
$filter = "";
|
||||
|
||||
// filterRoom (Array of integer) - Array of Room IDs (optional, for list request)
|
||||
if (isset($_REQUEST['filterRoom']) && is_array($_REQUEST['filterRoom']) ) {
|
||||
foreach ( $_REQUEST['filterRoom'] as $key => $value ) {
|
||||
$filter .= ", `RID`=" . sql_escape($value) . " ";
|
||||
}
|
||||
}
|
||||
// filterRoom (Array of integer) - Array of Room IDs (optional, for list request)
|
||||
if (isset($_REQUEST['filterRoom']) && is_array($_REQUEST['filterRoom'])) {
|
||||
foreach ($_REQUEST['filterRoom'] as $key => $value) {
|
||||
$filter .= ", `RID`=" . sql_escape($value) . " ";
|
||||
}
|
||||
}
|
||||
|
||||
//filterTask (Array of integer) - Array if Task (optional, for list request)
|
||||
if (isset($_REQUEST['filterTask']) && is_array($_REQUEST['filterTask']) ) {
|
||||
foreach ( $_REQUEST['filterTask'] as $key => $value ) {
|
||||
// TODO $filter .= ", `RID`=" . sql_escape($value) . " ";
|
||||
}
|
||||
}
|
||||
// filterTask (Array of integer) - Array if Task (optional, for list request)
|
||||
if (isset($_REQUEST['filterTask']) && is_array($_REQUEST['filterTask'])) {
|
||||
foreach ($_REQUEST['filterTask'] as $key => $value) {
|
||||
// TODO $filter .= ", `RID`=" . sql_escape($value) . " ";
|
||||
}
|
||||
}
|
||||
|
||||
// filterOccupancy (integer) - Occupancy state: (optional, for list request)
|
||||
// 1 occupied, 2 free, 3 occupied and free
|
||||
if (isset($_REQUEST['filterOccupancy']) && is_array($_REQUEST['filterOccupancy']) ) {
|
||||
foreach ( $_REQUEST['filterOccupancy'] as $key => $value ) {
|
||||
// TODO $filter .= ", `RID`=" . sql_escape($value) . " ";
|
||||
}
|
||||
}
|
||||
// filterOccupancy (integer) - Occupancy state: (optional, for list request)
|
||||
// 1 occupied, 2 free, 3 occupied and free
|
||||
if (isset($_REQUEST['filterOccupancy']) && is_array($_REQUEST['filterOccupancy'])) {
|
||||
foreach ($_REQUEST['filterOccupancy'] as $key => $value) {
|
||||
// TODO $filter .= ", `RID`=" . sql_escape($value) . " ";
|
||||
}
|
||||
}
|
||||
|
||||
// format filter
|
||||
if( $filter != "" ) {
|
||||
$filter = ' WHERE '. substr($filter, 1);
|
||||
}
|
||||
// format filter
|
||||
if ($filter != "") {
|
||||
$filter = ' WHERE ' . substr($filter, 1);
|
||||
}
|
||||
|
||||
// real request
|
||||
$shifts_source = sql_select("SELECT `SID` FROM `Shifts`". $filter);
|
||||
if ($shifts_source === false)
|
||||
return false;
|
||||
if (count($shifts_source) > 0) {
|
||||
return $shifts_source;
|
||||
}
|
||||
return null;
|
||||
// real request
|
||||
$shifts_source = sql_select("SELECT `SID` FROM `Shifts`" . $filter);
|
||||
if ($shifts_source === false)
|
||||
return false;
|
||||
if (count($shifts_source) > 0) {
|
||||
return $shifts_source;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns Shift by id.
|
||||
*
|
||||
* @param $id Shift ID
|
||||
* @param $id Shift
|
||||
* ID
|
||||
*/
|
||||
function Shift($id) {
|
||||
$shifts_source = sql_select("SELECT * FROM `Shifts` WHERE `SID`=" . sql_escape($id) . " LIMIT 1");
|
||||
$shiftsEntry_source = sql_select("SELECT `TID` , `UID` , `freeloaded` FROM `ShiftEntry` WHERE `SID`=" . sql_escape($id) );
|
||||
$shifts_source = sql_select("SELECT * FROM `Shifts` WHERE `SID`=" . sql_escape($id) . " LIMIT 1");
|
||||
$shiftsEntry_source = sql_select("SELECT `TID` , `UID` , `freeloaded` FROM `ShiftEntry` WHERE `SID`=" . sql_escape($id));
|
||||
|
||||
if ($shifts_source === false)
|
||||
return false;
|
||||
if (count($shifts_source) > 0) {
|
||||
$result = $shifts_source[0];
|
||||
if ($shifts_source === false)
|
||||
return false;
|
||||
if (count($shifts_source) > 0) {
|
||||
$result = $shifts_source[0];
|
||||
|
||||
$result['ShiftEntry'] = $shiftsEntry_source;
|
||||
$result['ShiftEntry'] = $shiftsEntry_source;
|
||||
|
||||
$temp = NeededAngelTypes_by_shift($id);
|
||||
foreach( $temp as $e)
|
||||
{
|
||||
$result['NeedAngels'][] = array (
|
||||
'TID' => $e['angel_type_id'],
|
||||
'count' => $e['count'],
|
||||
'restricted' => $e['restricted'],
|
||||
'taken' => $e['taken'] );
|
||||
}
|
||||
$temp = NeededAngelTypes_by_shift($id);
|
||||
foreach ($temp as $e) {
|
||||
$result['NeedAngels'][] = array(
|
||||
'TID' => $e['angel_type_id'],
|
||||
'count' => $e['count'],
|
||||
'restricted' => $e['restricted'],
|
||||
'taken' => $e['taken']
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
return null;
|
||||
return $result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -3,6 +3,15 @@
|
|||
* User angeltypes model
|
||||
*/
|
||||
|
||||
function User_angeltypes($user) {
|
||||
return sql_select("
|
||||
SELECT `AngelTypes`.*, `UserAngelTypes`.`confirm_user_id`, `UserAngelTypes`.`coordinator`
|
||||
FROM `UserAngelTypes`
|
||||
JOIN `AngelTypes` ON `UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`
|
||||
WHERE `UserAngelTypes`.`user_id`=" . sql_escape($user['UID']) . "
|
||||
");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets unconfirmed user angeltypes for angeltypes of which the given user is a coordinator.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Returns users groups
|
||||
* @param User $user
|
||||
*/
|
||||
function User_groups($user) {
|
||||
return sql_select("
|
||||
SELECT `Groups`.*
|
||||
FROM `UserGroups`
|
||||
JOIN `Groups` ON `Groups`.`UID`=`UserGroups`.`group_id`
|
||||
WHERE `UserGroups`.`uid`=" . sql_escape($user['UID']) . "
|
||||
ORDER BY `UserGroups`.`group_id`
|
||||
");
|
||||
}
|
||||
|
||||
?>
|
|
@ -3,6 +3,34 @@
|
|||
* User model
|
||||
*/
|
||||
|
||||
/**
|
||||
* Returns -seconds until free if user is busy or seconds until next shift.
|
||||
* 0 if there is an error or no upcoming shift.
|
||||
*
|
||||
* @param User $user
|
||||
*/
|
||||
function User_shift_state($user) {
|
||||
$shifts = ShiftEntries_upcoming_for_user($user);
|
||||
if ($shifts === false)
|
||||
return 0;
|
||||
if (count($shifts) == 0)
|
||||
return 0;
|
||||
if ($shifts[0]['start'] < time())
|
||||
return $shifts[0]['end'] - time();
|
||||
return $shifts[0]['start'] - time();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if user is freeloader
|
||||
*
|
||||
* @param User $user
|
||||
*/
|
||||
function User_is_freeloader($user) {
|
||||
global $max_freeloadable_shifts, $user;
|
||||
|
||||
return count(ShiftEntries_freeloaded_by_user($user)) >= $max_freeloadable_shifts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all users that are not member of given angeltype.
|
||||
*
|
||||
|
|
|
@ -10,7 +10,7 @@ function admin_new_questions() {
|
|||
$new_messages = sql_num_query("SELECT * FROM `Questions` WHERE `AID` IS NULL");
|
||||
|
||||
if ($new_messages > 0)
|
||||
return info('<a href="' . page_link_to("admin_questions") . '">Es gibt unbeantwortete Fragen!</a>', true);
|
||||
info('<a href="' . page_link_to("admin_questions") . '">Es gibt unbeantwortete Fragen!</a>');
|
||||
}
|
||||
|
||||
return "";
|
||||
|
|
|
@ -53,7 +53,7 @@ function user_messages() {
|
|||
return template_render('../templates/user_messages.html', array(
|
||||
'title' => messages_title(),
|
||||
'link' => page_link_to("user_messages"),
|
||||
'greeting' => sprintf(_("Hello %s, here can you leave messages for other angels"), User_Nick_render($user)) . '<br /><br />',
|
||||
'greeting' => msg() . sprintf(_("Hello %s, here can you leave messages for other angels"), User_Nick_render($user)) . '<br /><br />',
|
||||
'messages' => $messages_html,
|
||||
'new_label' => _("New"),
|
||||
'date_label' => _("Date"),
|
||||
|
|
|
@ -80,86 +80,8 @@ function user_myshifts() {
|
|||
} else
|
||||
redirect(page_link_to('user_myshifts'));
|
||||
}
|
||||
$shifts = sql_select("SELECT * FROM `ShiftEntry` JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `UID`=" . sql_escape($shifts_user['UID']) . " ORDER BY `start`");
|
||||
|
||||
$myshifts_table = array();
|
||||
$html = "";
|
||||
$timesum = 0;
|
||||
foreach ($shifts as $shift) {
|
||||
$shift_info = $shift['name'];
|
||||
$needed_angel_types_source = sql_select("SELECT DISTINCT `AngelTypes`.* FROM `ShiftEntry` JOIN `AngelTypes` ON `ShiftEntry`.`TID`=`AngelTypes`.`id` WHERE `ShiftEntry`.`SID`=" . sql_escape($shift['SID']) . " ORDER BY `AngelTypes`.`name`");
|
||||
foreach ($needed_angel_types_source as $needed_angel_type) {
|
||||
$shift_info .= '<br><b>' . $needed_angel_type['name'] . ':</b> ';
|
||||
|
||||
$users_source = sql_select("SELECT `ShiftEntry`.`freeloaded`, `User`.* FROM `ShiftEntry` JOIN `User` ON `ShiftEntry`.`UID`=`User`.`UID` WHERE `ShiftEntry`.`SID`=" . sql_escape($shift['SID']) . " AND `ShiftEntry`.`TID`=" . sql_escape($needed_angel_type['id']));
|
||||
$shift_entries = array();
|
||||
foreach ($users_source as $user_source) {
|
||||
if ($user['UID'] == $user_source['UID'])
|
||||
$member = '<b>' . $user_source['Nick'] . '</b>';
|
||||
else
|
||||
$member = User_Nick_render($user_source);
|
||||
if ($user_source['freeloaded'])
|
||||
$member = '<strike>' . $member . '</strike>';
|
||||
|
||||
$shift_entries[] = $member;
|
||||
}
|
||||
$shift_info .= join(", ", $shift_entries);
|
||||
}
|
||||
|
||||
$myshift = array(
|
||||
'date' => date("Y-m-d", $shift['start']),
|
||||
'time' => date("H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']),
|
||||
'room' => $shift['Name'],
|
||||
'shift_info' => $shift_info,
|
||||
'comment' => $shift['Comment']
|
||||
);
|
||||
|
||||
if ($shift['freeloaded']) {
|
||||
if (in_array("user_shifts_admin", $privileges))
|
||||
$myshift['comment'] .= '<br /><p class="error">' . _("Freeloaded") . ': ' . $shift['freeload_comment'] . '</p>';
|
||||
else
|
||||
$myshift['comment'] .= '<br /><p class="error">' . _("Freeloaded") . '</p>';
|
||||
}
|
||||
|
||||
$myshift['actions'] = "";
|
||||
if ($id == $user['UID'] || in_array('user_shifts_admin', $privileges))
|
||||
$myshift['actions'] .= img_button(page_link_to('user_myshifts') . '&edit=' . $shift['id'] . '&id=' . $id, 'pencil', _("edit"));
|
||||
if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges))
|
||||
$myshift['actions'] .= img_button(page_link_to('user_myshifts') . (($id != $user['UID']) ? '&id=' . $id : '') . '&cancel=' . $shift['id'], 'cross', _("sign off"));
|
||||
|
||||
if ($shift['freeloaded'])
|
||||
$timesum += - 2 * ($shift['end'] - $shift['start']);
|
||||
else
|
||||
$timesum += $shift['end'] - $shift['start'];
|
||||
$myshifts_table[] = $myshift;
|
||||
}
|
||||
if (count($myshifts_table) > 0)
|
||||
$myshifts_table[] = array(
|
||||
'date' => '<b>' . _("Sum:") . '</b>',
|
||||
'time' => "<b>" . round($timesum / (60 * 60), 1) . " h</b>",
|
||||
'room' => "",
|
||||
'shift_info' => "",
|
||||
'comment' => "",
|
||||
'actions' => ""
|
||||
);
|
||||
|
||||
return page_with_title(myshifts_title(), array(
|
||||
msg(),
|
||||
$id == $user['UID'] ? sprintf(_('These are your shifts.<br/>Please try to appear <b>15 minutes</b> before your shift begins!<br/>You can remove yourself from a shift up to %d hours before it starts.'), $LETZTES_AUSTRAGEN) : '',
|
||||
$id != $user['UID'] ? info(sprintf("You are viewing %s's shifts.", $shifts_user['Nick']), true) : '',
|
||||
$id != $user['UID'] ? buttons(array(
|
||||
button(page_link_to('admin_user') . '&id=' . $shifts_user['UID'], "Edit " . $shifts_user['Nick'], 'edit')
|
||||
)) : '',
|
||||
table(array(
|
||||
'date' => _("Day"),
|
||||
'time' => _("Time"),
|
||||
'room' => _("Location"),
|
||||
'shift_info' => _("Name & workmates"),
|
||||
'comment' => _("Comment"),
|
||||
'actions' => _("Action")
|
||||
), $myshifts_table),
|
||||
$id == $user['UID'] && count($shifts) == 0 ? error(sprintf(_("Go to the <a href=\"%s\">shifts table</a> to sign yourself up for some shifts."), page_link_to('user_shifts')), true) : '',
|
||||
'<h2>' . _("Exports") . '</h2>' . sprintf(_("Export of shown shifts. <a href=\"%s\">iCal format</a> or <a href=\"%s\">JSON format</a> available (please keep secret, otherwise <a href=\"%s\">reset the api key</a>)."), page_link_to_absolute('ical') . '&key=' . $shifts_user['api_key'], page_link_to_absolute('shifts_json_export') . '&key=' . $shifts_user['api_key'], page_link_to('user_myshifts') . '&reset')
|
||||
));
|
||||
msg();
|
||||
redirect(page_link_to('users') . '&action=view');
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -14,7 +14,7 @@ function meetings_title() {
|
|||
function user_meetings() {
|
||||
global $DISPLAY_NEWS, $privileges, $user;
|
||||
|
||||
$html = '<div class="col-md-10"><h1>' . meetings_title() . '</h1>';
|
||||
$html = '<div class="col-md-10"><h1>' . meetings_title() . '</h1>' . msg();
|
||||
|
||||
if (isset($_REQUEST['page']) && preg_match("/^[0-9]{1,}$/", $_REQUEST['page']))
|
||||
$page = $_REQUEST['page'];
|
||||
|
|
|
@ -6,7 +6,7 @@ function shifts_title() {
|
|||
function user_shifts() {
|
||||
global $user, $privileges, $max_freeloadable_shifts;
|
||||
|
||||
if (count(ShiftEntries_freeloaded_by_user($user)) >= $max_freeloadable_shifts)
|
||||
if (User_is_freeloader($user))
|
||||
redirect(page_link_to('user_myshifts'));
|
||||
|
||||
// Löschen einzelner Schicht-Einträge (Also Belegung einer Schicht von Engeln) durch Admins
|
||||
|
@ -743,7 +743,7 @@ function view_user_shifts() {
|
|||
'filled_select' => make_select($filled, $_SESSION['user_shifts']['filled'], "filled", _("Occupancy")),
|
||||
'task_notice' => '<sup>1</sup>' . _("The tasks shown here are influenced by the preferences you defined in your settings!") . " <a href=\"" . page_link_to('angeltypes') . '&action=about' . "\">" . _("Description of the jobs.") . "</a>",
|
||||
'new_style_checkbox' => '<label><input type="checkbox" name="new_style" value="1" ' . ($_SESSION['user_shifts']['new_style'] ? ' checked' : '') . '> ' . _("Use new style if possible") . '</label>',
|
||||
'shifts_table' => $shifts_table,
|
||||
'shifts_table' =>msg(). $shifts_table,
|
||||
'ical_text' => '<h2>' . _("iCal export") . '</h2><p>' . sprintf(_("Export of shown shifts. <a href=\"%s\">iCal format</a> or <a href=\"%s\">JSON format</a> available (please keep secret, otherwise <a href=\"%s\">reset the api key</a>)."), page_link_to_absolute('ical') . '&key=' . $user['api_key'], page_link_to_absolute('shifts_json_export') . '&key=' . $user['api_key'], page_link_to('user_myshifts') . '&reset') . '</p>',
|
||||
'filter' => _("Filter")
|
||||
)),
|
||||
|
|
|
@ -22,7 +22,7 @@ function header_toolbar() {
|
|||
$toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $p == 'register');
|
||||
|
||||
if (in_array('user_myshifts', $privileges))
|
||||
$toolbar_items[] = toolbar_item_link(page_link_to('user_myshifts'), ' icon-icon_angel', $user['Nick'], $p == 'user_myshifts');
|
||||
$toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', ' icon-icon_angel', $user['Nick'], $p == 'user_myshifts');
|
||||
|
||||
if (in_array('user_settings', $privileges))
|
||||
$toolbar_items[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $p == 'user_settings');
|
||||
|
|
|
@ -8,6 +8,11 @@ $themes = array(
|
|||
"1" => "Engelsystem dark"
|
||||
);
|
||||
|
||||
function div($class, $content = array(), $id = "") {
|
||||
$id = $id != '' ? ' id="' . $id . '"' : '';
|
||||
return '<div' . $id . ' class="' . $class . '">' . join("\n", $content) . '</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a toolbar.
|
||||
*
|
||||
|
@ -273,7 +278,7 @@ function button($href, $label, $class = "") {
|
|||
* Rendert eine Toolbar mit Knöpfen
|
||||
*/
|
||||
function buttons($buttons = array ()) {
|
||||
return '<div class="form-group">' . join(' ', $buttons) . '</div>';
|
||||
return '<div class="form-group"><div class="btn-group">' . join(' ', $buttons) . '</div></div>';
|
||||
}
|
||||
|
||||
// Load and render template
|
||||
|
|
|
@ -1,8 +1,126 @@
|
|||
<?php
|
||||
|
||||
function User_view($user_source) {
|
||||
function User_shift_mode_render($shift_mode) {
|
||||
if ($shift_mode == 0)
|
||||
return '<span class="text-success">' . _("Free") . '</span>';
|
||||
if ($shift_mode > 8 * 3600)
|
||||
return '<span class="text-success">' . sprintf(_("Next shift in %s min"), floor($shift_mode / 60)) . '</span>';
|
||||
if ($shift_mode > 0)
|
||||
return '<span class="text-warning">' . sprintf(_("Next shift in %s min"), floor($shift_mode / 60)) . '</span>';
|
||||
if ($shift_mode < 0)
|
||||
return '<span class="text-danger">' . sprintf(_("Current ends in %s min"), floor($shift_mode / 60)) . '</span>';
|
||||
}
|
||||
|
||||
function User_view($user_source, $admin_user_privilege, $freeloader, $user_shift_mode, $user_angeltypes, $user_groups, $shifts, $its_me) {
|
||||
global $LETZTES_AUSTRAGEN, $privileges;
|
||||
|
||||
$user_name = htmlspecialchars($user_source['Vorname']) . " " . htmlspecialchars($user_source['Name']);
|
||||
return page_with_title('<span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . ' <small>' . $user_name . '</small>', array());
|
||||
|
||||
$myshifts_table = array();
|
||||
$html = "";
|
||||
$timesum = 0;
|
||||
foreach ($shifts as $shift) {
|
||||
$shift_info = $shift['name'];
|
||||
foreach ($shift['needed_angeltypes'] as $needed_angel_type) {
|
||||
$shift_info .= '<br><b>' . $needed_angel_type['name'] . ':</b> ';
|
||||
|
||||
$shift_entries = array();
|
||||
foreach ($needed_angel_type['users'] as $user_source) {
|
||||
if ($its_me)
|
||||
$member = '<strong>' . User_Nick_render($user_source) . '</strong>';
|
||||
else
|
||||
$member = User_Nick_render($user_source);
|
||||
if ($user_source['freeloaded'])
|
||||
$member = '<strike>' . $member . '</strike>';
|
||||
|
||||
$shift_entries[] = $member;
|
||||
}
|
||||
$shift_info .= join(", ", $shift_entries);
|
||||
}
|
||||
|
||||
$myshift = array(
|
||||
'date' => date("Y-m-d", $shift['start']),
|
||||
'time' => date("H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']),
|
||||
'room' => $shift['Name'],
|
||||
'shift_info' => $shift_info,
|
||||
'comment' => $shift['Comment']
|
||||
);
|
||||
|
||||
if ($shift['freeloaded']) {
|
||||
if (in_array("user_shifts_admin", $privileges))
|
||||
$myshift['comment'] .= '<br /><p class="error">' . _("Freeloaded") . ': ' . $shift['freeload_comment'] . '</p>';
|
||||
else
|
||||
$myshift['comment'] .= '<br /><p class="error">' . _("Freeloaded") . '</p>';
|
||||
}
|
||||
|
||||
$myshift['actions'] = "";
|
||||
if ($its_me || in_array('user_shifts_admin', $privileges))
|
||||
$myshift['actions'] .= img_button(page_link_to('user_myshifts') . '&edit=' . $shift['id'] . '&id=' . $user_source['UID'], 'pencil', _("edit"));
|
||||
if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges))
|
||||
$myshift['actions'] .= img_button(page_link_to('user_myshifts') . ((! $its_me) ? '&id=' . $id : '') . '&cancel=' . $shift['id'], 'cross', _("sign off"));
|
||||
|
||||
if ($shift['freeloaded'])
|
||||
$timesum += - 2 * ($shift['end'] - $shift['start']);
|
||||
else
|
||||
$timesum += $shift['end'] - $shift['start'];
|
||||
$myshifts_table[] = $myshift;
|
||||
}
|
||||
if (count($myshifts_table) > 0)
|
||||
$myshifts_table[] = array(
|
||||
'date' => '<b>' . _("Sum:") . '</b>',
|
||||
'time' => "<b>" . round($timesum / (60 * 60), 1) . " h</b>",
|
||||
'room' => "",
|
||||
'shift_info' => "",
|
||||
'comment' => "",
|
||||
'actions' => ""
|
||||
);
|
||||
|
||||
return page_with_title('<span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . ' <small>' . $user_name . '</small>', array(
|
||||
msg(),
|
||||
div('row', array(
|
||||
div('col-md-3', array(
|
||||
'<h1>',
|
||||
'<span class="glyphicon glyphicon-phone"></span>',
|
||||
$user_source['DECT'],
|
||||
'</h1>'
|
||||
)),
|
||||
div('col-md-3', array(
|
||||
'<h4>' . _("User state") . '</h4>',
|
||||
($admin_user_privilege && $freeloader) ? '<span class="text-danger"><span class="glyphicon glyphicon-exclamation-sign"></span> ' . _("Freeloader") . '</span><br />' : '',
|
||||
$user_source['Gekommen'] ? User_shift_mode_render($user_shift_mode) . '<br />' : '',
|
||||
($user_source['Gekommen'] ? '<span class="text-success"><span class="glyphicon glyphicon-home"></span> ' . _("Arrived") . '</span>' : '<span class="text-danger">' . _("Not arrived") . '</span>'),
|
||||
($user_source['Gekommen'] && $admin_user_privilege && $user_source['Aktiv']) ? ' <span class="text-success">' . _("Active") . '</span>' : '',
|
||||
($user_source['Gekommen'] && $admin_user_privilege && $user_source['Tshirt']) ? ' <span class="text-success">' . _("T-Shirt") . '</span>' : ''
|
||||
)),
|
||||
div('col-md-3', array(
|
||||
'<h4>' . _("Angeltypes") . '</h4>',
|
||||
User_angeltypes_render($user_angeltypes)
|
||||
)),
|
||||
div('col-md-3', array(
|
||||
'<h4>' . _("Rights") . '</h4>',
|
||||
User_groups_render($user_groups)
|
||||
))
|
||||
)),
|
||||
$admin_user_privilege ? buttons(array(
|
||||
button(page_link_to('admin_user') . '&id=' . $user_source['UID'], '<span class="glyphicon glyphicon-edit"></span> ' . _("edit"))
|
||||
)) : '',
|
||||
($its_me || $admin_user_privilege) ? '<h2>' . _("Shifts") . '</h2>' : '',
|
||||
($its_me || $admin_user_privilege) ? table(array(
|
||||
'date' => _("Day"),
|
||||
'time' => _("Time"),
|
||||
'room' => _("Location"),
|
||||
'shift_info' => _("Name & workmates"),
|
||||
'comment' => _("Comment"),
|
||||
'actions' => _("Action")
|
||||
), $myshifts_table) : '',
|
||||
$its_me && count($shifts) == 0 ? error(sprintf(_("Go to the <a href=\"%s\">shifts table</a> to sign yourself up for some shifts."), page_link_to('user_shifts')), true) : '',
|
||||
($its_me || $admin_user_privilege) ? '<h2>' . _("Exports") . '</h2>' : '',
|
||||
$its_me ? (sprintf(_("Export of shown shifts. <a href=\"%s\">iCal format</a> or <a href=\"%s\">JSON format</a> available (please keep secret, otherwise <a href=\"%s\">reset the api key</a>)."), page_link_to_absolute('ical') . '&key=' . $user_source['api_key'], page_link_to_absolute('shifts_json_export') . '&key=' . $user_source['api_key'], page_link_to('user_myshifts') . '&reset')) : '',
|
||||
(! $its_me && $admin_user_privilege) ? buttons(array(
|
||||
button(page_link_to_absolute('ical') . '&key=' . $user_source['api_key'], '<span class="glyphicon glyphicon-calendar"></span> ' . _("iCal Export")),
|
||||
button(page_link_to_absolute('shifts_json_export') . '&key=' . $user_source['api_key'], '<span class="glyphicon glyphicon-export"></span> ' . _("JSON Export"))
|
||||
)) : ''
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,6 +171,30 @@ function User_password_set_view() {
|
|||
));
|
||||
}
|
||||
|
||||
function User_angeltypes_render($user_angeltypes) {
|
||||
$output = array();
|
||||
foreach ($user_angeltypes as $angeltype) {
|
||||
$class = "";
|
||||
if ($angeltype['restricted'] == 1)
|
||||
if ($angeltype['confirm_user_id'] != null)
|
||||
$class = 'text-success';
|
||||
else
|
||||
$class = 'text-warning';
|
||||
else
|
||||
$class = 'text-success';
|
||||
$output[] = '<span class="' . $class . '">' . ($angeltype['coordinator'] ? '<span class="glyphicon glyphicon-certificate"></span> ' : '') . $angeltype['name'] . '</span>';
|
||||
}
|
||||
return join('<br />', $output);
|
||||
}
|
||||
|
||||
function User_groups_render($user_groups) {
|
||||
$output = array();
|
||||
foreach ($user_groups as $group) {
|
||||
$output[] = substr($group['Name'], 2);
|
||||
}
|
||||
return join('<br />', $output);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a users avatar.
|
||||
*
|
||||
|
@ -72,7 +214,7 @@ function User_Avatar_render($user) {
|
|||
function User_Nick_render($user_source) {
|
||||
global $user, $privileges;
|
||||
if ($user['UID'] == $user_source['UID'] || in_array('user_shifts_admin', $privileges))
|
||||
return '<a href="' . page_link_to('user_myshifts') . '&id=' . $user_source['UID'] . '"><span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . '</a>';
|
||||
return '<a href="' . page_link_to('users') . '&action=view&user_id=' . $user_source['UID'] . '"><span class="icon-icon_angel"></span> ' . htmlspecialchars($user_source['Nick']) . '</a>';
|
||||
else
|
||||
return htmlspecialchars($user_source['Nick']);
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ require_once ('includes/model/Room_model.php');
|
|||
require_once ('includes/model/ShiftEntry_model.php');
|
||||
require_once ('includes/model/Shifts_model.php');
|
||||
require_once ('includes/model/UserAngelTypes_model.php');
|
||||
require_once ('includes/model/UserGroups_model.php');
|
||||
require_once ('includes/model/User_model.php');
|
||||
|
||||
require_once ('includes/view/AngelTypes_view.php');
|
||||
|
@ -84,11 +85,35 @@ $free_pages = array(
|
|||
);
|
||||
|
||||
// Gewünschte Seite/Funktion
|
||||
$p = "";
|
||||
if (! isset($_REQUEST['p']))
|
||||
$_REQUEST['p'] = isset($user) ? "news" : "login";
|
||||
if (isset($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && (in_array($_REQUEST['p'], $free_pages) || in_array($_REQUEST['p'], $privileges))) {
|
||||
$p = $_REQUEST['p'];
|
||||
|
||||
if (isset($user)) {
|
||||
$hints = "";
|
||||
|
||||
if (User_is_freeloader($user))
|
||||
error(sprintf(_("You freeloaded at least %s shifts. Shift signup is locked. Please go to heavens desk to be unlocked again."), $max_freeloadable_shifts));
|
||||
|
||||
// Hinweis für Engel, die noch nicht angekommen sind
|
||||
if ($user['Gekommen'] == 0)
|
||||
error(_("You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already."));
|
||||
|
||||
if ($enable_tshirt_size && $user['Size'] == "")
|
||||
error(_("You need to specify a tshirt size in your settings!"));
|
||||
|
||||
if ($user['DECT'] == "")
|
||||
error(_("You need to specify a DECT phone number in your settings! If you don't have a DECT phone, just enter \"-\"."));
|
||||
|
||||
// Erzengel Hinweis für unbeantwortete Fragen
|
||||
if ($p != "admin_questions")
|
||||
admin_new_questions();
|
||||
|
||||
user_angeltypes_unconfirmed_hint();
|
||||
}
|
||||
|
||||
$title = $p;
|
||||
$content = "";
|
||||
|
||||
|
@ -214,33 +239,6 @@ if (isset($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && (i
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($user)) {
|
||||
$hints = "";
|
||||
|
||||
$freeloaded_shifts_count = count(ShiftEntries_freeloaded_by_user($user));
|
||||
if ($freeloaded_shifts_count >= $max_freeloadable_shifts)
|
||||
$hints = error(sprintf(_("You freeloaded %s shifts. Shift signup is locked. Please go to heavens desk to be unlocked again."), $freeloaded_shifts_count), true);
|
||||
|
||||
// Hinweis für Engel, die noch nicht angekommen sind
|
||||
if ($user['Gekommen'] == 0)
|
||||
$hints = error(_("You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already."), true) . $hints;
|
||||
|
||||
if ($enable_tshirt_size && $user['Size'] == "")
|
||||
$hints = error(_("You need to specify a tshirt size in your settings!"), true) . $hints;
|
||||
|
||||
if ($user['DECT'] == "")
|
||||
$hints = error(_("You need to specify a DECT phone number in your settings! If you don't have a DECT phone, just enter \"-\"."), true) . $hints;
|
||||
|
||||
// Erzengel Hinweis für unbeantwortete Fragen
|
||||
if ($p != "admin_questions")
|
||||
$hints = admin_new_questions() . $hints;
|
||||
|
||||
$hints = user_angeltypes_unconfirmed_hint() . $hints;
|
||||
|
||||
if ($hints != "")
|
||||
$content = '<div class="col-md-10">' . $hints . '</div>' . $content;
|
||||
}
|
||||
|
||||
echo template_render('../templates/layout.html', array(
|
||||
'theme' => isset($user) ? $user['color'] : $default_theme,
|
||||
'title' => $title,
|
||||
|
|
|
@ -249,8 +249,8 @@ th {
|
|||
border: 1px solid #ddd !important; } }
|
||||
@font-face {
|
||||
font-family: 'Glyphicons Halflings';
|
||||
src: url("bootstrap/glyphicons-halflings-regular.eot");
|
||||
src: url("bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("bootstrap/glyphicons-halflings-regular.woff") format("woff"), url("bootstrap/glyphicons-halflings-regular.ttf") format("truetype"), url("bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); }
|
||||
src: url("../fonts/glyphicons-halflings-regular.eot");
|
||||
src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); }
|
||||
|
||||
.glyphicon {
|
||||
position: relative;
|
||||
|
@ -5294,3 +5294,6 @@ button.close {
|
|||
display: none !important; } }
|
||||
body {
|
||||
padding-top: 50px; }
|
||||
|
||||
.footer a {
|
||||
color: #777777; }
|
||||
|
|
|
@ -1,100 +1,26 @@
|
|||
@import url("//fonts.googleapis.com/css?family=Roboto:400,700");
|
||||
.text-primary,
|
||||
.text-primary:hover {
|
||||
color: #2a9fd6; }
|
||||
/*
|
||||
The MIT License (MIT)
|
||||
|
||||
.text-success,
|
||||
.text-success:hover {
|
||||
color: #77b300; }
|
||||
Copyright (c) 2013 Thomas Park
|
||||
|
||||
.text-danger,
|
||||
.text-danger:hover {
|
||||
color: #cc0000; }
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
.text-warning,
|
||||
.text-warning:hover {
|
||||
color: #ff8800; }
|
||||
|
||||
.text-info,
|
||||
.text-info:hover {
|
||||
color: #2a9fd6; }
|
||||
|
||||
table,
|
||||
.table {
|
||||
color: #fff; }
|
||||
table a:not(.btn),
|
||||
.table a:not(.btn) {
|
||||
color: #fff;
|
||||
text-decoration: underline; }
|
||||
table .text-muted,
|
||||
.table .text-muted {
|
||||
color: #888888; }
|
||||
|
||||
.table-responsive > .table {
|
||||
background-color: #181818; }
|
||||
|
||||
.has-warning .help-block,
|
||||
.has-warning .control-label,
|
||||
.has-warning .form-control-feedback {
|
||||
color: #ff8800; }
|
||||
.has-warning .form-control,
|
||||
.has-warning .form-control:focus,
|
||||
.has-warning .input-group-addon {
|
||||
border-color: #ff8800; }
|
||||
|
||||
.has-error .help-block,
|
||||
.has-error .control-label,
|
||||
.has-error .form-control-feedback {
|
||||
color: #cc0000; }
|
||||
.has-error .form-control,
|
||||
.has-error .form-control:focus,
|
||||
.has-error .input-group-addon {
|
||||
border-color: #cc0000; }
|
||||
|
||||
.has-success .help-block,
|
||||
.has-success .control-label,
|
||||
.has-success .form-control-feedback {
|
||||
color: #77b300; }
|
||||
.has-success .form-control,
|
||||
.has-success .form-control:focus,
|
||||
.has-success .input-group-addon {
|
||||
border-color: #77b300; }
|
||||
|
||||
legend {
|
||||
color: #fff; }
|
||||
|
||||
.input-group-addon {
|
||||
background-color: #424242; }
|
||||
|
||||
.nav-tabs a,
|
||||
.nav-pills a,
|
||||
.breadcrumb a,
|
||||
.pager a {
|
||||
color: #fff; }
|
||||
|
||||
.alert .alert-link,
|
||||
.alert a {
|
||||
color: white;
|
||||
text-decoration: underline; }
|
||||
.alert .close {
|
||||
text-decoration: none; }
|
||||
|
||||
.close {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
opacity: 0.4; }
|
||||
.close:hover, .close:focus {
|
||||
color: #fff;
|
||||
opacity: 1; }
|
||||
|
||||
a.thumbnail:hover,
|
||||
a.thumbnail:focus,
|
||||
a.thumbnail.active {
|
||||
border-color: #282828; }
|
||||
|
||||
.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6 {
|
||||
color: #fff; }
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
|
||||
html {
|
||||
font-family: sans-serif;
|
||||
|
@ -976,7 +902,7 @@ html {
|
|||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
|
||||
|
||||
body {
|
||||
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 1.42857;
|
||||
color: #888888;
|
||||
|
@ -991,10 +917,10 @@ textarea {
|
|||
line-height: inherit; }
|
||||
|
||||
a {
|
||||
color: #2a9fd6;
|
||||
color: #428bca;
|
||||
text-decoration: none; }
|
||||
a:hover, a:focus {
|
||||
color: #2a9fd6;
|
||||
color: #428bca;
|
||||
text-decoration: underline; }
|
||||
a:focus {
|
||||
outline: thin dotted;
|
||||
|
@ -1059,7 +985,7 @@ hr {
|
|||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.h1, .h2, .h3, .h4, .h5, .h6 {
|
||||
font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
font-weight: 500;
|
||||
line-height: 1.1;
|
||||
color: white; }
|
||||
|
@ -1114,17 +1040,17 @@ h6, .h6 {
|
|||
font-size: 75%; }
|
||||
|
||||
h1, .h1 {
|
||||
font-size: 56px; }
|
||||
|
||||
h2, .h2 {
|
||||
font-size: 45px; }
|
||||
|
||||
h3, .h3 {
|
||||
font-size: 34px; }
|
||||
|
||||
h4, .h4 {
|
||||
h2, .h2 {
|
||||
font-size: 24px; }
|
||||
|
||||
h3, .h3 {
|
||||
font-size: 20px; }
|
||||
|
||||
h4, .h4 {
|
||||
font-size: 20px; }
|
||||
|
||||
h5, .h5 {
|
||||
font-size: 20px; }
|
||||
|
||||
|
@ -1152,7 +1078,7 @@ cite {
|
|||
|
||||
mark,
|
||||
.mark {
|
||||
background-color: #ff8800;
|
||||
background-color: #f0ad4e;
|
||||
padding: .2em; }
|
||||
|
||||
.text-left {
|
||||
|
@ -1183,10 +1109,10 @@ mark,
|
|||
color: #888888; }
|
||||
|
||||
.text-primary {
|
||||
color: #2a9fd6; }
|
||||
color: #428bca; }
|
||||
|
||||
a.text-primary:hover {
|
||||
color: #2180ac; }
|
||||
color: #3071a9; }
|
||||
|
||||
.text-success {
|
||||
color: white; }
|
||||
|
@ -1216,34 +1142,34 @@ a.text-danger:hover {
|
|||
color: #fff; }
|
||||
|
||||
.bg-primary {
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #428bca; }
|
||||
|
||||
a.bg-primary:hover {
|
||||
background-color: #2180ac; }
|
||||
background-color: #3071a9; }
|
||||
|
||||
.bg-success {
|
||||
background-color: #77b300; }
|
||||
background-color: #5cb85c; }
|
||||
|
||||
a.bg-success:hover {
|
||||
background-color: #558000; }
|
||||
background-color: #449d44; }
|
||||
|
||||
.bg-info {
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #5bc0de; }
|
||||
|
||||
a.bg-info:hover {
|
||||
background-color: #2180ac; }
|
||||
background-color: #31b0d5; }
|
||||
|
||||
.bg-warning {
|
||||
background-color: #ff8800; }
|
||||
background-color: #f0ad4e; }
|
||||
|
||||
a.bg-warning:hover {
|
||||
background-color: #cc6d00; }
|
||||
background-color: #ec971f; }
|
||||
|
||||
.bg-danger {
|
||||
background-color: #cc0000; }
|
||||
background-color: #d9534f; }
|
||||
|
||||
a.bg-danger:hover {
|
||||
background-color: #990000; }
|
||||
background-color: #c9302c; }
|
||||
|
||||
.page-header {
|
||||
padding-bottom: 9px;
|
||||
|
@ -2183,11 +2109,11 @@ table th[class*="col-"] {
|
|||
.table > tfoot > tr > th.success,
|
||||
.table > tfoot > tr.success > td,
|
||||
.table > tfoot > tr.success > th {
|
||||
background-color: #77b300; }
|
||||
background-color: #5cb85c; }
|
||||
|
||||
.table-hover > tbody > tr > td.success:hover,
|
||||
.table-hover > tbody > tr > th.success:hover, .table-hover > tbody > tr.success:hover > td, .table-hover > tbody > tr:hover > .success, .table-hover > tbody > tr.success:hover > th {
|
||||
background-color: #669a00; }
|
||||
background-color: #4cae4c; }
|
||||
|
||||
.table > thead > tr > td.info,
|
||||
.table > thead > tr > th.info, .table > thead > tr.info > td, .table > thead > tr.info > th,
|
||||
|
@ -2199,11 +2125,11 @@ table th[class*="col-"] {
|
|||
.table > tfoot > tr > th.info,
|
||||
.table > tfoot > tr.info > td,
|
||||
.table > tfoot > tr.info > th {
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #5bc0de; }
|
||||
|
||||
.table-hover > tbody > tr > td.info:hover,
|
||||
.table-hover > tbody > tr > th.info:hover, .table-hover > tbody > tr.info:hover > td, .table-hover > tbody > tr:hover > .info, .table-hover > tbody > tr.info:hover > th {
|
||||
background-color: #258fc1; }
|
||||
background-color: #46b8da; }
|
||||
|
||||
.table > thead > tr > td.warning,
|
||||
.table > thead > tr > th.warning, .table > thead > tr.warning > td, .table > thead > tr.warning > th,
|
||||
|
@ -2215,11 +2141,11 @@ table th[class*="col-"] {
|
|||
.table > tfoot > tr > th.warning,
|
||||
.table > tfoot > tr.warning > td,
|
||||
.table > tfoot > tr.warning > th {
|
||||
background-color: #ff8800; }
|
||||
background-color: #f0ad4e; }
|
||||
|
||||
.table-hover > tbody > tr > td.warning:hover,
|
||||
.table-hover > tbody > tr > th.warning:hover, .table-hover > tbody > tr.warning:hover > td, .table-hover > tbody > tr:hover > .warning, .table-hover > tbody > tr.warning:hover > th {
|
||||
background-color: #e67a00; }
|
||||
background-color: #eea236; }
|
||||
|
||||
.table > thead > tr > td.danger,
|
||||
.table > thead > tr > th.danger, .table > thead > tr.danger > td, .table > thead > tr.danger > th,
|
||||
|
@ -2231,11 +2157,11 @@ table th[class*="col-"] {
|
|||
.table > tfoot > tr > th.danger,
|
||||
.table > tfoot > tr.danger > td,
|
||||
.table > tfoot > tr.danger > th {
|
||||
background-color: #cc0000; }
|
||||
background-color: #d9534f; }
|
||||
|
||||
.table-hover > tbody > tr > td.danger:hover,
|
||||
.table-hover > tbody > tr > th.danger:hover, .table-hover > tbody > tr.danger:hover > td, .table-hover > tbody > tr:hover > .danger, .table-hover > tbody > tr.danger:hover > th {
|
||||
background-color: #b30000; }
|
||||
background-color: #d43f3a; }
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.table-responsive {
|
||||
|
@ -2590,7 +2516,7 @@ select[multiple].input-lg,
|
|||
.has-success .input-group-addon {
|
||||
color: white;
|
||||
border-color: white;
|
||||
background-color: #77b300; }
|
||||
background-color: #5cb85c; }
|
||||
.has-success .form-control-feedback {
|
||||
color: white; }
|
||||
|
||||
|
@ -2612,7 +2538,7 @@ select[multiple].input-lg,
|
|||
.has-warning .input-group-addon {
|
||||
color: white;
|
||||
border-color: white;
|
||||
background-color: #ff8800; }
|
||||
background-color: #f0ad4e; }
|
||||
.has-warning .form-control-feedback {
|
||||
color: white; }
|
||||
|
||||
|
@ -2634,7 +2560,7 @@ select[multiple].input-lg,
|
|||
.has-error .input-group-addon {
|
||||
color: white;
|
||||
border-color: white;
|
||||
background-color: #cc0000; }
|
||||
background-color: #d9534f; }
|
||||
.has-error .form-control-feedback {
|
||||
color: white; }
|
||||
|
||||
|
@ -2779,91 +2705,91 @@ select[multiple].input-lg,
|
|||
|
||||
.btn-primary {
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2a9fd6; }
|
||||
background-color: #428bca;
|
||||
border-color: #428bca; }
|
||||
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle {
|
||||
color: white;
|
||||
background-color: #2180ac;
|
||||
border-color: #1f79a3; }
|
||||
background-color: #3071a9;
|
||||
border-color: #2d6ca2; }
|
||||
.btn-primary:active, .btn-primary.active, .open > .btn-primary.dropdown-toggle {
|
||||
background-image: none; }
|
||||
.btn-primary.disabled, .btn-primary.disabled:hover, .btn-primary.disabled:focus, .btn-primary.disabled:active, .btn-primary.disabled.active, .btn-primary[disabled], .btn-primary[disabled]:hover, .btn-primary[disabled]:focus, .btn-primary[disabled]:active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary, fieldset[disabled] .btn-primary:hover, fieldset[disabled] .btn-primary:focus, fieldset[disabled] .btn-primary:active, fieldset[disabled] .btn-primary.active {
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2a9fd6; }
|
||||
background-color: #428bca;
|
||||
border-color: #428bca; }
|
||||
.btn-primary .badge {
|
||||
color: #2a9fd6;
|
||||
color: #428bca;
|
||||
background-color: white; }
|
||||
|
||||
.btn-success {
|
||||
color: white;
|
||||
background-color: #77b300;
|
||||
border-color: #77b300; }
|
||||
background-color: #5cb85c;
|
||||
border-color: #5cb85c; }
|
||||
.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle {
|
||||
color: white;
|
||||
background-color: #558000;
|
||||
border-color: #4e7600; }
|
||||
background-color: #449d44;
|
||||
border-color: #419641; }
|
||||
.btn-success:active, .btn-success.active, .open > .btn-success.dropdown-toggle {
|
||||
background-image: none; }
|
||||
.btn-success.disabled, .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success[disabled], .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled]:active, .btn-success[disabled].active, fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success.active {
|
||||
background-color: #77b300;
|
||||
border-color: #77b300; }
|
||||
background-color: #5cb85c;
|
||||
border-color: #5cb85c; }
|
||||
.btn-success .badge {
|
||||
color: #77b300;
|
||||
color: #5cb85c;
|
||||
background-color: white; }
|
||||
|
||||
.btn-info {
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2a9fd6; }
|
||||
background-color: #5bc0de;
|
||||
border-color: #5bc0de; }
|
||||
.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle {
|
||||
color: white;
|
||||
background-color: #2180ac;
|
||||
border-color: #1f79a3; }
|
||||
background-color: #31b0d5;
|
||||
border-color: #2aabd2; }
|
||||
.btn-info:active, .btn-info.active, .open > .btn-info.dropdown-toggle {
|
||||
background-image: none; }
|
||||
.btn-info.disabled, .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info[disabled], .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled]:active, .btn-info[disabled].active, fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active {
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2a9fd6; }
|
||||
background-color: #5bc0de;
|
||||
border-color: #5bc0de; }
|
||||
.btn-info .badge {
|
||||
color: #2a9fd6;
|
||||
color: #5bc0de;
|
||||
background-color: white; }
|
||||
|
||||
.btn-warning {
|
||||
color: white;
|
||||
background-color: #ff8800;
|
||||
border-color: #ff8800; }
|
||||
background-color: #f0ad4e;
|
||||
border-color: #f0ad4e; }
|
||||
.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle {
|
||||
color: white;
|
||||
background-color: #cc6d00;
|
||||
border-color: #c26700; }
|
||||
background-color: #ec971f;
|
||||
border-color: #eb9316; }
|
||||
.btn-warning:active, .btn-warning.active, .open > .btn-warning.dropdown-toggle {
|
||||
background-image: none; }
|
||||
.btn-warning.disabled, .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning[disabled], .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled]:active, .btn-warning[disabled].active, fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning.active {
|
||||
background-color: #ff8800;
|
||||
border-color: #ff8800; }
|
||||
background-color: #f0ad4e;
|
||||
border-color: #f0ad4e; }
|
||||
.btn-warning .badge {
|
||||
color: #ff8800;
|
||||
color: #f0ad4e;
|
||||
background-color: white; }
|
||||
|
||||
.btn-danger {
|
||||
color: white;
|
||||
background-color: #cc0000;
|
||||
border-color: #cc0000; }
|
||||
background-color: #d9534f;
|
||||
border-color: #d9534f; }
|
||||
.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle {
|
||||
color: white;
|
||||
background-color: #990000;
|
||||
border-color: #8f0000; }
|
||||
background-color: #c9302c;
|
||||
border-color: #c12e2a; }
|
||||
.btn-danger:active, .btn-danger.active, .open > .btn-danger.dropdown-toggle {
|
||||
background-image: none; }
|
||||
.btn-danger.disabled, .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger[disabled], .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled]:active, .btn-danger[disabled].active, fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:hover, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger.active {
|
||||
background-color: #cc0000;
|
||||
border-color: #cc0000; }
|
||||
background-color: #d9534f;
|
||||
border-color: #d9534f; }
|
||||
.btn-danger .badge {
|
||||
color: #cc0000;
|
||||
color: #d9534f;
|
||||
background-color: white; }
|
||||
|
||||
.btn-link {
|
||||
color: #2a9fd6;
|
||||
color: #428bca;
|
||||
font-weight: normal;
|
||||
cursor: pointer;
|
||||
border-radius: 0; }
|
||||
|
@ -2874,7 +2800,7 @@ select[multiple].input-lg,
|
|||
.btn-link, .btn-link:hover, .btn-link:focus, .btn-link:active {
|
||||
border-color: transparent; }
|
||||
.btn-link:hover, .btn-link:focus {
|
||||
color: #2a9fd6;
|
||||
color: #428bca;
|
||||
text-decoration: underline;
|
||||
background-color: transparent; }
|
||||
.btn-link[disabled]:hover, .btn-link[disabled]:focus, fieldset[disabled] .btn-link:hover, fieldset[disabled] .btn-link:focus {
|
||||
|
@ -3000,7 +2926,7 @@ tbody.collapse.in {
|
|||
color: white;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #428bca; }
|
||||
|
||||
.dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus {
|
||||
color: #777777; }
|
||||
|
@ -3354,7 +3280,7 @@ tbody.collapse.in {
|
|||
cursor: not-allowed; }
|
||||
.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {
|
||||
background-color: #222222;
|
||||
border-color: #2a9fd6; }
|
||||
border-color: #428bca; }
|
||||
.nav .nav-divider {
|
||||
height: 1px;
|
||||
margin: 9px 0;
|
||||
|
@ -3377,7 +3303,7 @@ tbody.collapse.in {
|
|||
border-color: transparent transparent #282828; }
|
||||
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
background-color: #428bca;
|
||||
border: 1px solid #282828;
|
||||
border-bottom-color: transparent;
|
||||
cursor: default; }
|
||||
|
@ -3390,7 +3316,7 @@ tbody.collapse.in {
|
|||
margin-left: 2px; }
|
||||
.nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus {
|
||||
color: white;
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #428bca; }
|
||||
|
||||
.nav-stacked > li {
|
||||
float: none; }
|
||||
|
@ -3845,7 +3771,7 @@ tbody.collapse.in {
|
|||
.pagination > li > span:hover,
|
||||
.pagination > li > span:focus {
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
background-color: #428bca;
|
||||
border-color: transparent; }
|
||||
.pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus,
|
||||
.pagination > .active > span,
|
||||
|
@ -3853,7 +3779,7 @@ tbody.collapse.in {
|
|||
.pagination > .active > span:focus {
|
||||
z-index: 2;
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
background-color: #428bca;
|
||||
border-color: transparent;
|
||||
cursor: default; }
|
||||
.pagination > .disabled > span,
|
||||
|
@ -3915,7 +3841,7 @@ tbody.collapse.in {
|
|||
.pager li > a:hover,
|
||||
.pager li > a:focus {
|
||||
text-decoration: none;
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #428bca; }
|
||||
.pager .next > a,
|
||||
.pager .next > span {
|
||||
float: right; }
|
||||
|
@ -3958,29 +3884,29 @@ a.label:hover, a.label:focus {
|
|||
background-color: #282828; }
|
||||
|
||||
.label-primary {
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #428bca; }
|
||||
.label-primary[href]:hover, .label-primary[href]:focus {
|
||||
background-color: #2180ac; }
|
||||
background-color: #3071a9; }
|
||||
|
||||
.label-success {
|
||||
background-color: #77b300; }
|
||||
background-color: #5cb85c; }
|
||||
.label-success[href]:hover, .label-success[href]:focus {
|
||||
background-color: #558000; }
|
||||
background-color: #449d44; }
|
||||
|
||||
.label-info {
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #5bc0de; }
|
||||
.label-info[href]:hover, .label-info[href]:focus {
|
||||
background-color: #2180ac; }
|
||||
background-color: #31b0d5; }
|
||||
|
||||
.label-warning {
|
||||
background-color: #ff8800; }
|
||||
background-color: #f0ad4e; }
|
||||
.label-warning[href]:hover, .label-warning[href]:focus {
|
||||
background-color: #cc6d00; }
|
||||
background-color: #ec971f; }
|
||||
|
||||
.label-danger {
|
||||
background-color: #cc0000; }
|
||||
background-color: #d9534f; }
|
||||
.label-danger[href]:hover, .label-danger[href]:focus {
|
||||
background-color: #990000; }
|
||||
background-color: #c9302c; }
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
|
@ -3993,7 +3919,7 @@ a.label:hover, a.label:focus {
|
|||
vertical-align: baseline;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
background-color: #2a9fd6;
|
||||
background-color: #428bca;
|
||||
border-radius: 10px; }
|
||||
.badge:empty {
|
||||
display: none; }
|
||||
|
@ -4004,7 +3930,7 @@ a.label:hover, a.label:focus {
|
|||
top: 0;
|
||||
padding: 1px 5px; }
|
||||
a.list-group-item.active > .badge, .nav-pills > .active > a > .badge {
|
||||
color: #2a9fd6;
|
||||
color: #428bca;
|
||||
background-color: white; }
|
||||
.nav-pills > li > a > .badge {
|
||||
margin-left: 3px; }
|
||||
|
@ -4069,7 +3995,7 @@ a.badge:hover, a.badge:focus {
|
|||
a.thumbnail:hover,
|
||||
a.thumbnail:focus,
|
||||
a.thumbnail.active {
|
||||
border-color: #2a9fd6; }
|
||||
border-color: #428bca; }
|
||||
|
||||
.alert {
|
||||
padding: 15px;
|
||||
|
@ -4098,38 +4024,38 @@ a.thumbnail.active {
|
|||
color: inherit; }
|
||||
|
||||
.alert-success {
|
||||
background-color: #77b300;
|
||||
border-color: #669a00;
|
||||
background-color: #5cb85c;
|
||||
border-color: #4cae4c;
|
||||
color: white; }
|
||||
.alert-success hr {
|
||||
border-top-color: #558000; }
|
||||
border-top-color: #449d44; }
|
||||
.alert-success .alert-link {
|
||||
color: #e6e6e6; }
|
||||
|
||||
.alert-info {
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2489b9;
|
||||
background-color: #5bc0de;
|
||||
border-color: #3db5d8;
|
||||
color: white; }
|
||||
.alert-info hr {
|
||||
border-top-color: #1f79a3; }
|
||||
border-top-color: #2aabd2; }
|
||||
.alert-info .alert-link {
|
||||
color: #e6e6e6; }
|
||||
|
||||
.alert-warning {
|
||||
background-color: #ff8800;
|
||||
border-color: #f08000;
|
||||
background-color: #f0ad4e;
|
||||
border-color: #efa640;
|
||||
color: white; }
|
||||
.alert-warning hr {
|
||||
border-top-color: #d67200; }
|
||||
border-top-color: #ed9c28; }
|
||||
.alert-warning .alert-link {
|
||||
color: #e6e6e6; }
|
||||
|
||||
.alert-danger {
|
||||
background-color: #cc0000;
|
||||
border-color: #bd0000;
|
||||
background-color: #d9534f;
|
||||
border-color: #d64742;
|
||||
color: white; }
|
||||
.alert-danger hr {
|
||||
border-top-color: #a30000; }
|
||||
border-top-color: #d2322d; }
|
||||
.alert-danger .alert-link {
|
||||
color: #e6e6e6; }
|
||||
|
||||
|
@ -4164,7 +4090,7 @@ a.thumbnail.active {
|
|||
line-height: 20px;
|
||||
color: white;
|
||||
text-align: center;
|
||||
background-color: #2a9fd6;
|
||||
background-color: #428bca;
|
||||
-webkit-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-transition: width 0.6s ease;
|
||||
|
@ -4194,28 +4120,28 @@ a.thumbnail.active {
|
|||
box-shadow: none; }
|
||||
|
||||
.progress-bar-success {
|
||||
background-color: #77b300; }
|
||||
background-color: #5cb85c; }
|
||||
.progress-striped .progress-bar-success {
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); }
|
||||
|
||||
.progress-bar-info {
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #5bc0de; }
|
||||
.progress-striped .progress-bar-info {
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); }
|
||||
|
||||
.progress-bar-warning {
|
||||
background-color: #ff8800; }
|
||||
background-color: #f0ad4e; }
|
||||
.progress-striped .progress-bar-warning {
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); }
|
||||
|
||||
.progress-bar-danger {
|
||||
background-color: #cc0000; }
|
||||
background-color: #d9534f; }
|
||||
.progress-striped .progress-bar-danger {
|
||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
|
@ -4290,8 +4216,8 @@ a.list-group-item {
|
|||
.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
|
||||
z-index: 2;
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2a9fd6; }
|
||||
background-color: #428bca;
|
||||
border-color: #428bca; }
|
||||
.list-group-item.active .list-group-item-heading,
|
||||
.list-group-item.active .list-group-item-heading > small,
|
||||
.list-group-item.active .list-group-item-heading > .small, .list-group-item.active:hover .list-group-item-heading,
|
||||
|
@ -4301,11 +4227,11 @@ a.list-group-item {
|
|||
.list-group-item.active:focus .list-group-item-heading > .small {
|
||||
color: inherit; }
|
||||
.list-group-item.active .list-group-item-text, .list-group-item.active:hover .list-group-item-text, .list-group-item.active:focus .list-group-item-text {
|
||||
color: #d5ecf7; }
|
||||
color: #e1edf7; }
|
||||
|
||||
.list-group-item-success {
|
||||
color: white;
|
||||
background-color: #77b300; }
|
||||
background-color: #5cb85c; }
|
||||
|
||||
a.list-group-item-success {
|
||||
color: white; }
|
||||
|
@ -4313,7 +4239,7 @@ a.list-group-item-success {
|
|||
color: inherit; }
|
||||
a.list-group-item-success:hover, a.list-group-item-success:focus {
|
||||
color: white;
|
||||
background-color: #669a00; }
|
||||
background-color: #4cae4c; }
|
||||
a.list-group-item-success.active, a.list-group-item-success.active:hover, a.list-group-item-success.active:focus {
|
||||
color: #fff;
|
||||
background-color: white;
|
||||
|
@ -4321,7 +4247,7 @@ a.list-group-item-success {
|
|||
|
||||
.list-group-item-info {
|
||||
color: white;
|
||||
background-color: #2a9fd6; }
|
||||
background-color: #5bc0de; }
|
||||
|
||||
a.list-group-item-info {
|
||||
color: white; }
|
||||
|
@ -4329,7 +4255,7 @@ a.list-group-item-info {
|
|||
color: inherit; }
|
||||
a.list-group-item-info:hover, a.list-group-item-info:focus {
|
||||
color: white;
|
||||
background-color: #258fc1; }
|
||||
background-color: #46b8da; }
|
||||
a.list-group-item-info.active, a.list-group-item-info.active:hover, a.list-group-item-info.active:focus {
|
||||
color: #fff;
|
||||
background-color: white;
|
||||
|
@ -4337,7 +4263,7 @@ a.list-group-item-info {
|
|||
|
||||
.list-group-item-warning {
|
||||
color: white;
|
||||
background-color: #ff8800; }
|
||||
background-color: #f0ad4e; }
|
||||
|
||||
a.list-group-item-warning {
|
||||
color: white; }
|
||||
|
@ -4345,7 +4271,7 @@ a.list-group-item-warning {
|
|||
color: inherit; }
|
||||
a.list-group-item-warning:hover, a.list-group-item-warning:focus {
|
||||
color: white;
|
||||
background-color: #e67a00; }
|
||||
background-color: #eea236; }
|
||||
a.list-group-item-warning.active, a.list-group-item-warning.active:hover, a.list-group-item-warning.active:focus {
|
||||
color: #fff;
|
||||
background-color: white;
|
||||
|
@ -4353,7 +4279,7 @@ a.list-group-item-warning {
|
|||
|
||||
.list-group-item-danger {
|
||||
color: white;
|
||||
background-color: #cc0000; }
|
||||
background-color: #d9534f; }
|
||||
|
||||
a.list-group-item-danger {
|
||||
color: white; }
|
||||
|
@ -4361,7 +4287,7 @@ a.list-group-item-danger {
|
|||
color: inherit; }
|
||||
a.list-group-item-danger:hover, a.list-group-item-danger:focus {
|
||||
color: white;
|
||||
background-color: #b30000; }
|
||||
background-color: #d43f3a; }
|
||||
a.list-group-item-danger.active, a.list-group-item-danger.active:hover, a.list-group-item-danger.active:focus {
|
||||
color: #fff;
|
||||
background-color: white;
|
||||
|
@ -4570,74 +4496,74 @@ a.list-group-item-danger {
|
|||
border-bottom-color: #282828; }
|
||||
|
||||
.panel-primary {
|
||||
border-color: #2a9fd6; }
|
||||
border-color: #428bca; }
|
||||
.panel-primary > .panel-heading {
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2a9fd6; }
|
||||
background-color: #428bca;
|
||||
border-color: #428bca; }
|
||||
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #2a9fd6; }
|
||||
border-top-color: #428bca; }
|
||||
.panel-primary > .panel-heading .badge {
|
||||
color: #2a9fd6;
|
||||
color: #428bca;
|
||||
background-color: white; }
|
||||
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #2a9fd6; }
|
||||
border-bottom-color: #428bca; }
|
||||
|
||||
.panel-success {
|
||||
border-color: #669a00; }
|
||||
border-color: #4cae4c; }
|
||||
.panel-success > .panel-heading {
|
||||
color: white;
|
||||
background-color: #77b300;
|
||||
border-color: #669a00; }
|
||||
background-color: #5cb85c;
|
||||
border-color: #4cae4c; }
|
||||
.panel-success > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #669a00; }
|
||||
border-top-color: #4cae4c; }
|
||||
.panel-success > .panel-heading .badge {
|
||||
color: #77b300;
|
||||
color: #5cb85c;
|
||||
background-color: white; }
|
||||
.panel-success > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #669a00; }
|
||||
border-bottom-color: #4cae4c; }
|
||||
|
||||
.panel-info {
|
||||
border-color: #2489b9; }
|
||||
border-color: #3db5d8; }
|
||||
.panel-info > .panel-heading {
|
||||
color: white;
|
||||
background-color: #2a9fd6;
|
||||
border-color: #2489b9; }
|
||||
background-color: #5bc0de;
|
||||
border-color: #3db5d8; }
|
||||
.panel-info > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #2489b9; }
|
||||
border-top-color: #3db5d8; }
|
||||
.panel-info > .panel-heading .badge {
|
||||
color: #2a9fd6;
|
||||
color: #5bc0de;
|
||||
background-color: white; }
|
||||
.panel-info > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #2489b9; }
|
||||
border-bottom-color: #3db5d8; }
|
||||
|
||||
.panel-warning {
|
||||
border-color: #f08000; }
|
||||
border-color: #efa640; }
|
||||
.panel-warning > .panel-heading {
|
||||
color: white;
|
||||
background-color: #ff8800;
|
||||
border-color: #f08000; }
|
||||
background-color: #f0ad4e;
|
||||
border-color: #efa640; }
|
||||
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #f08000; }
|
||||
border-top-color: #efa640; }
|
||||
.panel-warning > .panel-heading .badge {
|
||||
color: #ff8800;
|
||||
color: #f0ad4e;
|
||||
background-color: white; }
|
||||
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #f08000; }
|
||||
border-bottom-color: #efa640; }
|
||||
|
||||
.panel-danger {
|
||||
border-color: #bd0000; }
|
||||
border-color: #d64742; }
|
||||
.panel-danger > .panel-heading {
|
||||
color: white;
|
||||
background-color: #cc0000;
|
||||
border-color: #bd0000; }
|
||||
background-color: #d9534f;
|
||||
border-color: #d64742; }
|
||||
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
|
||||
border-top-color: #bd0000; }
|
||||
border-top-color: #d64742; }
|
||||
.panel-danger > .panel-heading .badge {
|
||||
color: #cc0000;
|
||||
color: #d9534f;
|
||||
background-color: white; }
|
||||
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
|
||||
border-bottom-color: #bd0000; }
|
||||
border-bottom-color: #d64742; }
|
||||
|
||||
.embed-responsive {
|
||||
position: relative;
|
||||
|
@ -5391,3 +5317,102 @@ button.close {
|
|||
display: none !important; } }
|
||||
body {
|
||||
padding-top: 50px; }
|
||||
|
||||
.footer a {
|
||||
color: #888888; }
|
||||
|
||||
.text-primary,
|
||||
.text-primary:hover {
|
||||
color: #428bca; }
|
||||
|
||||
.text-success,
|
||||
.text-success:hover {
|
||||
color: #5cb85c; }
|
||||
|
||||
.text-danger,
|
||||
.text-danger:hover {
|
||||
color: #d9534f; }
|
||||
|
||||
.text-warning,
|
||||
.text-warning:hover {
|
||||
color: #f0ad4e; }
|
||||
|
||||
.text-info,
|
||||
.text-info:hover {
|
||||
color: #5bc0de; }
|
||||
|
||||
table,
|
||||
.table {
|
||||
color: #fff; }
|
||||
table a:not(.btn),
|
||||
.table a:not(.btn) {
|
||||
color: #fff;
|
||||
text-decoration: underline; }
|
||||
table .text-muted,
|
||||
.table .text-muted {
|
||||
color: #888888; }
|
||||
|
||||
.table-responsive > .table {
|
||||
background-color: #181818; }
|
||||
|
||||
.has-warning .help-block,
|
||||
.has-warning .control-label,
|
||||
.has-warning .form-control-feedback {
|
||||
color: #f0ad4e; }
|
||||
.has-warning .form-control,
|
||||
.has-warning .form-control:focus,
|
||||
.has-warning .input-group-addon {
|
||||
border-color: #f0ad4e; }
|
||||
|
||||
.has-error .help-block,
|
||||
.has-error .control-label,
|
||||
.has-error .form-control-feedback {
|
||||
color: #d9534f; }
|
||||
.has-error .form-control,
|
||||
.has-error .form-control:focus,
|
||||
.has-error .input-group-addon {
|
||||
border-color: #d9534f; }
|
||||
|
||||
.has-success .help-block,
|
||||
.has-success .control-label,
|
||||
.has-success .form-control-feedback {
|
||||
color: #5cb85c; }
|
||||
.has-success .form-control,
|
||||
.has-success .form-control:focus,
|
||||
.has-success .input-group-addon {
|
||||
border-color: #5cb85c; }
|
||||
|
||||
legend {
|
||||
color: #fff; }
|
||||
|
||||
.input-group-addon {
|
||||
background-color: #424242; }
|
||||
|
||||
.nav-tabs a,
|
||||
.nav-pills a,
|
||||
.breadcrumb a,
|
||||
.pager a {
|
||||
color: #fff; }
|
||||
|
||||
.alert .alert-link,
|
||||
.alert a {
|
||||
color: white;
|
||||
text-decoration: underline; }
|
||||
.alert .close {
|
||||
text-decoration: none; }
|
||||
|
||||
.close {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
opacity: 0.4; }
|
||||
.close:hover, .close:focus {
|
||||
color: #fff;
|
||||
opacity: 1; }
|
||||
|
||||
a.thumbnail:hover,
|
||||
a.thumbnail:focus,
|
||||
a.thumbnail.active {
|
||||
border-color: #282828; }
|
||||
|
||||
.jumbotron h1, .jumbotron h2, .jumbotron h3, .jumbotron h4, .jumbotron h5, .jumbotron h6 {
|
||||
color: #fff; }
|
||||
|
|
|
@ -24,17 +24,17 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-2" style="margin-top: 28px;">
|
||||
%menu%
|
||||
<ul>
|
||||
<li><a href="%faq_url%">FAQ</a></li>
|
||||
<li><a href="mailto:erzengel@lists.ccc.de">Contact <img src="pic/icons/email.png" alt="E-Mail"></a></li>
|
||||
<li><a href="mailto:bugs@engelsystem.de">Bugs / Features <img src="pic/icons/email.png" alt="E-Mail"></a></li>
|
||||
<li><a href="https://vcs.wybt.net/engelsystem/trac/">Development Platform</a></li>
|
||||
<li><a href="?p=credits">Credits</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-2" style="margin-top: 28px;">%menu%</div>
|
||||
%content%
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<hr />
|
||||
<div class="text-center footer">
|
||||
<a href="%faq_url%">FAQ</a> · <a href="mailto:erzengel@lists.ccc.de"><span class="glyphicon glyphicon-envelope"></span> Contact</a> · <a href="mailto:bugs@engelsystem.de"><span class="glyphicon glyphicon-envelope"></span> Bugs / Features</a> · <a
|
||||
href="https://vcs.wybt.net/engelsystem/trac/">Development Platform</a> · <a href="?p=credits">Credits</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -6,3 +6,7 @@ $icon-font-path: "../fonts/";
|
|||
body {
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
.footer a {
|
||||
color: $text-muted;
|
||||
}
|
|
@ -1,5 +1,29 @@
|
|||
@import "../vendor/bootstrap-3.2.0/_variables";
|
||||
|
||||
/*
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013 Thomas Park
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
// Cyborg 3.2.0
|
||||
// Variables
|
||||
// --------------------------------------------------
|
||||
|
@ -14,11 +38,11 @@ $gray: #555; // #555
|
|||
$gray-light: #888; // #999
|
||||
$gray-lighter: #ADAFAE; // #eee
|
||||
|
||||
$brand-primary: #2A9FD6;
|
||||
$brand-success: #77B300;
|
||||
$brand-info: $brand-primary;
|
||||
$brand-warning: #FF8800;
|
||||
$brand-danger: #CC0000;
|
||||
$brand-primary: #428bca;
|
||||
$brand-success: #5cb85c;
|
||||
$brand-info: #5bc0de;
|
||||
$brand-warning: #f0ad4e;
|
||||
$brand-danger: #d9534f;
|
||||
|
||||
|
||||
//== Scaffolding
|
||||
|
@ -40,7 +64,6 @@ $link-hover-color: $link-color;
|
|||
//
|
||||
//## Font, line-height, and color for body text, headings, and more.
|
||||
|
||||
$font-family-sans-serif: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
$font-family-serif: Georgia, "Times New Roman", Times, serif;
|
||||
//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
|
||||
$font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
|
@ -50,10 +73,10 @@ $font-size-base: 14px;
|
|||
$font-size-large: ceil(($font-size-base * 1.25)); // ~18px
|
||||
$font-size-small: ceil(($font-size-base * 0.85)); // ~12px
|
||||
|
||||
$font-size-h1: 56px;
|
||||
$font-size-h2: 45px;
|
||||
$font-size-h3: 34px;
|
||||
$font-size-h4: 24px;
|
||||
$font-size-h1: 34px;
|
||||
$font-size-h2: 24px;
|
||||
$font-size-h3: 20px;
|
||||
$font-size-h4: 20px;
|
||||
$font-size-h5: 20px;
|
||||
$font-size-h6: 16px;
|
||||
|
||||
|
@ -845,12 +868,12 @@ $dl-horizontal-offset: $component-offset-horizontal;
|
|||
//** Horizontal line color.
|
||||
$hr-border: $gray-dark;
|
||||
|
||||
@import "base";
|
||||
|
||||
// Cyborg 3.2.0
|
||||
// Bootswatch
|
||||
// -----------------------------------------------------
|
||||
|
||||
@import url("//fonts.googleapis.com/css?family=Roboto:400,700");
|
||||
|
||||
// Navbar =====================================================================
|
||||
|
||||
// Buttons ====================================================================
|
||||
|
@ -1009,5 +1032,3 @@ a.thumbnail.active {
|
|||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
@import "base";
|
Loading…
Reference in New Issue