Skip to content

Commit

Permalink
Merge branch 'hotfix/1.2.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
abrain committed Mar 25, 2016
2 parents 74852ea + cc5ccbd commit ba9682e
Show file tree
Hide file tree
Showing 12 changed files with 218 additions and 18 deletions.
36 changes: 34 additions & 2 deletions src/Frontend/ReportList.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ class ReportList
*/
private $options;

/**
* @var ReportListSettings
*/
private static $settings;

/**
* Gibt an, ob nach jedem Monat eine Trennung eingefügt werden soll
*
Expand Down Expand Up @@ -129,7 +134,7 @@ private function constructList($reports, $args)
return;
}

// Arguemnte auswerten
// Argumente auswerten
$defaults = array(
'splitMonths' => false,
'columns' => array(),
Expand Down Expand Up @@ -157,6 +162,7 @@ private function constructList($reports, $args)
$currentMonth = null;
$previousYear = null;
$previousMonth = null;
$monthlyCounter = 0;
/** @var IncidentReport $report */
foreach ($reports as $report) {
$timeOfAlerting = $report->getTimeOfAlerting();
Expand All @@ -174,17 +180,25 @@ private function constructList($reports, $args)
$this->beginTable($currentYear);
if (!$this->splitMonths) {
$this->insertTableHeader();
$this->insertZebraCorrection();
}

$monthlyCounter = 0;
}

// Monatswechsel bei aktivierter Monatstrennung
if ($this->splitMonths && $currentMonth != $previousMonth) {
if ($monthlyCounter > 0 && $monthlyCounter % 2 != 0) {
$this->insertZebraCorrection();
}
$this->insertMonthSeparator($timeOfAlerting);
$this->insertTableHeader();
$monthlyCounter = 0;
}

// Zeile für den aktuellen Bericht ausgeben
$this->insertRow($report);
$monthlyCounter++;

// Variablen für den nächsten Durchgang setzen
$previousYear = $currentYear;
Expand Down Expand Up @@ -267,7 +281,7 @@ private function insertMonthSeparator($date)
*/
private function insertRow($report)
{
$this->string .= '<tr>';
$this->string .= '<tr class="report">';
foreach ($this->columns as $colId) {
$this->string .= '<td class="einsatz-column-' . $colId . '">';
$linkToReport = $this->linkEmptyReports || $report->hasContent();
Expand All @@ -285,6 +299,14 @@ private function insertRow($report)
$this->string .= '</tr>';
}

/**
* Fügt eine unsichtbare Zeile ein, um das Zebramuster in bestimmten Fällen zu erhalten
*/
private function insertZebraCorrection()
{
$this->string .= '<tr class="zebracorrection"><td colspan="'.$this->numberOfColumns.'">&nbsp;</td></tr>';
}

/**
* Gibt den Inhalt der Tabellenzelle einer bestimmten Spalte für einen bestimmten Einsatzbericht zurück
*
Expand Down Expand Up @@ -428,8 +450,18 @@ public static function getListColumns()
*/
public static function getDynamicCss()
{
if (empty(self::$settings)) {
self::$settings = new ReportListSettings();
}

$string = '';

// Sollen Zebrastreifen angezeigt werden?
if (self::$settings->isZebraTable()) {
$string .= '.einsatzverwaltung-reportlist tr.report:nth-child(' . self::$settings->getZebraNthChildArg() . ') {';
$string .= 'background-color: ' . self::$settings->getZebraColor() . '; }';
}

// Bei der responsiven Ansicht die selben Begriffe voranstellen wie im Tabellenkopf
$string .= '@media (max-width: 767px) {';
foreach (self::getListColumns() as $colId => $colInfo) {
Expand Down
61 changes: 61 additions & 0 deletions src/Frontend/ReportListSettings.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php
namespace abrain\Einsatzverwaltung\Frontend;

/**
* Einstellungsobjekt für die ReportList
*
* @author Andreas Brain
* @package abrain\Einsatzverwaltung\Frontend
*/
class ReportListSettings
{
const DEFAULT_NTHCHILD = 'even';
const DEFAULT_ZEBRACOLOR = '#eee';

/**
* Eine Farbe der Zebrastreifen, die nicht vom Theme vorgegeben wird
*
* @return string
*/
public function getZebraColor()
{
return get_option('einsatzvw_list_zebracolor', self::DEFAULT_ZEBRACOLOR);
}

/**
* Gibt das Argument für den :nth-child()-Selektor für die Zebrastreifen zurück
*
* @return string
*/
public function getZebraNthChildArg()
{
$option = get_option('einsatzvw_list_zebra_nth', self::DEFAULT_NTHCHILD);
return $this->sanitizeZebraNthChildArg($option);
}

/**
* Gibt an, ob die Zeilen der Tabelle abwechselnd eingefärbt werden sollen
*
* @return boolean
*/
public function isZebraTable()
{
return (bool) get_option('einsatzvw_list_zebra', true);
}

/**
* Stellt sicher, dass das Argument für den :nth-child()-Selektor für die Zebrastreifen gültig ist
*
* @param string $input Der zu prüfende Wert
*
* @return string
*/
public function sanitizeZebraNthChildArg($input)
{
if (!in_array($input, array('odd', 'even'))) {
return self::DEFAULT_NTHCHILD;
}

return $input;
}
}
18 changes: 10 additions & 8 deletions src/Widgets/RecentIncidents.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
use abrain\Einsatzverwaltung\Util\Formatter;
use abrain\Einsatzverwaltung\Utilities;
use WP_Widget;
use WP_Query;

/**
* WordPress-Widget für die letzten X Einsätze
Expand Down Expand Up @@ -78,14 +77,17 @@ public function widget($args, $instance)
}

$letzteEinsaetze = "";
$query = new WP_Query('&post_type=einsatz&post_status=publish&posts_per_page='.$anzahl);
while ($query->have_posts()) {
$nextPost = $query->next_post();
$report = new IncidentReport($nextPost);
$posts = get_posts(array(
'post_type' => 'einsatz',
'post_status' => 'publish',
'posts_per_page' => $anzahl
));
foreach ($posts as $post) {
$report = new IncidentReport($post);
$letzteEinsaetze .= '<li class="einsatzbericht">';

$letzteEinsaetze .= "<a href=\"".get_permalink($nextPost->ID)."\" rel=\"bookmark\" class=\"einsatzmeldung\">";
$meldung = get_the_title($nextPost->ID);
$letzteEinsaetze .= "<a href=\"".get_permalink($post->ID)."\" rel=\"bookmark\" class=\"einsatzmeldung\">";
$meldung = get_the_title($post->ID);
if (!empty($meldung)) {
$letzteEinsaetze .= $meldung;
} else {
Expand All @@ -94,7 +96,7 @@ public function widget($args, $instance)
$letzteEinsaetze .= "</a>";

if ($zeigeDatum) {
$timestamp = strtotime($nextPost->post_date);
$timestamp = strtotime($post->post_date);
$datumsformat = self::$options->getDateFormat();
$letzteEinsaetze .= "<br><span class=\"einsatzdatum\">".date_i18n($datumsformat, $timestamp)."</span>";
if ($zeigeZeit) {
Expand Down
8 changes: 5 additions & 3 deletions src/css/style-frontend.css
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
}

.einsatzverwaltung-reportlist .einsatz-header {
background: #eee;
background-color: #eee;
border-bottom: 2px solid #ddd;
}
.einsatzverwaltung-reportlist tr:nth-child(even) {
background: #eee;

.einsatzverwaltung-reportlist .zebracorrection {
visibility: hidden;
display: none;
}

.einsatzverwaltung-reportlist .einsatz-title-month td {
Expand Down
2 changes: 1 addition & 1 deletion src/einsatzverwaltung-admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public function enqueueEditScripts($hook)
wp_enqueue_script(
'einsatzverwaltung-settings-script',
$this->core->scriptUrl . 'einsatzverwaltung-settings.js',
array('jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-sortable'),
array('jquery-ui-draggable', 'jquery-ui-droppable', 'jquery-ui-sortable', 'iris'),
Core::VERSION
);
}
Expand Down
3 changes: 2 additions & 1 deletion src/einsatzverwaltung-core.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
require_once dirname(__FILE__) . '/Import/Tool.php';
require_once dirname(__FILE__) . '/einsatzverwaltung-taxonomies.php';
require_once dirname(__FILE__) . '/Frontend/ReportList.php';
require_once dirname(__FILE__) . '/Frontend/ReportListSettings.php';
require_once dirname(__FILE__) . '/ReportQuery.php';

use abrain\Einsatzverwaltung\Import\Tool as ImportTool;
Expand All @@ -30,7 +31,7 @@
*/
class Core
{
const VERSION = '1.2.0';
const VERSION = '1.2.1';
const DB_VERSION = 10;

public $pluginFile;
Expand Down
2 changes: 2 additions & 0 deletions src/einsatzverwaltung-data.php
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,8 @@ public function onPublish($postId, $post)
if ($category != -1) {
if (!($this->options->isOnlySpecialInLoop()) || $report->isSpecial()) {
$this->utilities->addPostToCategory($postId, $category);
} else {
$this->utilities->removePostFromCategory($postId, $category);
}
}
}
Expand Down
67 changes: 66 additions & 1 deletion src/einsatzverwaltung-settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
namespace abrain\Einsatzverwaltung;

use abrain\Einsatzverwaltung\Frontend\ReportList;
use abrain\Einsatzverwaltung\Frontend\ReportListSettings;
use abrain\Einsatzverwaltung\Model\IncidentReport;

/**
Expand Down Expand Up @@ -32,6 +33,11 @@ class Settings
*/
private $data;

/**
* @var ReportListSettings
*/
private $reportListSettings;

/**
* Konstruktor
*
Expand All @@ -46,6 +52,10 @@ public function __construct($core, $options, $utilities, $data)
$this->options = $options;
$this->utilities = $utilities;
$this->data = $data;

// Einstellungsobjekte laden
$this->reportListSettings = new ReportListSettings();

$this->addHooks();
}

Expand Down Expand Up @@ -172,6 +182,21 @@ public function registerSettings()
'einsatzvw_list_ext_link',
array($this->utilities, 'sanitizeCheckbox')
);
register_setting(
'einsatzvw_settings',
'einsatzvw_list_zebra',
array($this->utilities, 'sanitizeCheckbox')
);
register_setting(
'einsatzvw_settings',
'einsatzvw_list_zebracolor',
array($this, 'sanitizeZebraColor')
);
register_setting(
'einsatzvw_settings',
'einsatzvw_list_zebra_nth',
array($this->reportListSettings, 'sanitizeZebraNthChildArg')
);

$roles = get_editable_roles();
if (!empty($roles)) {
Expand Down Expand Up @@ -297,6 +322,13 @@ private function addSettingsFields()
self::EVW_SETTINGS_SLUG,
'einsatzvw_settings_einsatzliste'
);
add_settings_field(
'einsatzvw_settings_zebralist',
'Zebrastreifen',
array($this, 'echoEinsatzlisteZebraSettings'),
self::EVW_SETTINGS_SLUG,
'einsatzvw_settings_einsatzliste'
);
add_settings_field(
'einsatzvw_settings_caps_roles',
'Rollen',
Expand All @@ -312,11 +344,13 @@ private function addSettingsFields()
*
* @param string $checkboxId Id der Option
* @param string $text Beschriftung der Checkbox
* @internal param bool $state Optional, gibt den Zustand der Checkbox an.
*/
private function echoSettingsCheckbox($checkboxId, $text)
{
echo '<input type="checkbox" value="1" id="' . $checkboxId . '" name="' . $checkboxId . '" ';
echo $this->utilities->checked($this->options->getBoolOption($checkboxId)) . '/><label for="' . $checkboxId . '">';
$state = (func_num_args() > 2 ? func_get_arg(2) : $this->options->getBoolOption($checkboxId));
echo $this->utilities->checked($state) . '/><label for="' . $checkboxId . '">';
echo $text . '</label>';
}

Expand Down Expand Up @@ -552,6 +586,25 @@ public function echoEinsatzlisteColumnSettings()
);
}

public function echoEinsatzlisteZebraSettings()
{
$this->echoSettingsCheckbox(
'einsatzvw_list_zebra',
'Zebrastreifen anzeigen',
$this->reportListSettings->isZebraTable()
);
echo '<p class="description">Die Zeilen der Tabelle werden abwechselnd eingef&auml;rbt, um die Lesbarkeit zu verbessern. Wenn das Theme das ebenfalls tut, sollte diese Option deaktiviert werden, um Probleme bei der Darstellung zu vermeiden.</p>';

echo '<p>Farbe f&uuml;r Zebrastreifen: <input type="text" size="7" id="zebra-color-picker" name="einsatzvw_list_zebracolor" value="' . $this->reportListSettings->getZebraColor() . '" /></p>';
echo '<p class="description">Diese Farbe wird f&uuml;r jede zweite Zeile verwendet, die jeweils andere Zeile wird vom Theme eingef&auml;rbt. Anzugeben ist der Farbwert in Hexadezimalschreibweise (3- oder 6-stellig) mit f&uuml;hrendem #-Zeichen.</p>';

echo '<p><fieldset><label><input type="radio" name="einsatzvw_list_zebra_nth" value="even" ';
checked($this->reportListSettings->getZebraNthChildArg(), 'even');
echo '>Gerade Zeilen einf&auml;rben</label> <label><input type="radio" name="einsatzvw_list_zebra_nth" value="odd" ';
checked($this->reportListSettings->getZebraNthChildArg(), 'odd');
echo '>Ungerade Zeilen einf&auml;rben</label></fieldset></p>';
}

/**
* Gibt die Einstellmöglichkeiten für die Berechtigungen aus
*/
Expand Down Expand Up @@ -730,4 +783,16 @@ public function maybeCategorySpecialChanged($newValue, $oldValue)

return $newValue;
}

/**
* Stellt sicher, dass die Farbe für die Zebrastreifen gültig ist
*
* @param string $input Der zu prüfende Farbwert
*
* @return string Der übergebene Farbwert, wenn er gültig ist, ansonsten die Standardeinstellung
*/
public function sanitizeZebraColor($input)
{
return $this->utilities->sanitizeHexColor($input, ReportListSettings::DEFAULT_ZEBRACOLOR);
}
}
Loading

0 comments on commit ba9682e

Please sign in to comment.