Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

[gelöst] Calendar - Textfarbe ändern

Eingetragen von Exterior (2903)
am 07.03.2010 - 00:06 Uhr in
  • Module
  • Drupal 6.x

Hey Leute, ich habe mal eine Frage zum Calendar-Modul.

Mit diesem Modul kann man schön einen Calender erstellen, dann noch die View entsprechend einstellen und man bekommt Nodes als Termine im Kalender angezeigt.

Jetzt kommt aber die große Frage:

Weiß jemand von euch, wie ich die Schriftfarbe ändern kann?
Standardmäßig ist die Schriftfarbe der Termine im Kalender ja schwarz. Ich hätte aber gerne bestimmte Termine dort in rot. Und zwar sollen die Termine eine rote Schriftfarbe bekommen, wenn ein bestimmtes CCK-Feld ausgefüllt ist.

Ich möchte also einen Termin anlegen, lasse dort das CCK-Feld frei und der Termin wird ganz normal im Kalender angezeigt.
Danach lege ich noch einen Termin an und fülle das CCK-Feld aus - dieser Termin soll in roter Schrift im Kalender angezeigt werden. Aber eben nur dieser Termin, der andere nicht.

Weiß jemand, ob und wie das möglich ist?

mfg Exterior

‹ node_gallery template FCKeditor ICME ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Zwei Typen definieren

Eingetragen von kissmedve (254)
am 07.03.2010 - 00:38 Uhr

Das würde darauf hinauslaufen, dass Du ein class="wichtig" in das Terminfeld bringen musst, abhängig davon, ob das zweite CCK-Feld ausgefüllt ist. Das dürfte nur über eine preprocess-Funktion gehen.

Ein alternativer Ansatz wäre vielleicht, 2 verschiedene Terminfelder zu definieren, field_termin_normal und field_termin_wichtig. Die Erklärung, welches wann ausgefüllt werden soll, packst Du in die Beschreibung. Wenn Du im View unter Fields beide Felder angibst, landet auch nur ein Termin im Kalender, und zwar der, dessen Feld ausgefüllt ist. Aber Du hast jetzt eine Unterscheidung in den Klassen, an die Du die Schriftformatierung problemlos anknüpfen kannst.

Ob Du mit diesem Ansatz etwas anfangen kannst, hängt natürlich von Deiner Anwendung ab und was Du Deinen Endnutzern zumuten kannst oder willst. Unter zwei alternativen Terminfeldern das richtige auszuwählen kann etwas verwirrender sein als ein Terminfeld plus ein Kästchen abhaken oder eben nicht. Andererseits, so schlimm muss das nicht unbedingt sein - es kommt halt drauf an ...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Taxonomie könnte auch noch gehen

Eingetragen von r4s6 (1383)
am 07.03.2010 - 11:38 Uhr

Da Calendar bereits Out-of-the-Box eine farbliche Markierung über Taxonomien erlaubt, könnte ich mir vorstellen, dass du auch damit was erreichen kannst. Ich habe jetzt nicht nachgeschaut, wie das genau abläuft, aber eine Idee bzw. Lösungsansatz ist alle mal besser als nichts.

  • Anmelden oder Registrieren um Kommentare zu schreiben

So, mal kurz eine

Eingetragen von Exterior (2903)
am 09.03.2010 - 21:28 Uhr

So, mal kurz eine Statusmeldung meinerseits:

Ich habe hier (klick mich) den folgenden Code gefunden:

<div class="view-item view-item-<?php print $view->name ?>">
<?php
  $class
= 'calendar monthview type-' . $node->type;
  if (
module_load_include('inc', 'pathauto') !== FALSE) {
   
$full_node = node_load(array('nid'=>$node->nid));
    foreach (
$full_node->taxonomy as $term) {
     
$class .= ' taxonomy-' . drupal_strtolower(pathauto_cleanstring($term->name));
    }
  }
?>

  <div class="<?php print $class?>" id="<?php print $node->date_id ?>">
    <?php print theme('calendar_stripe_stripe', $node); ?>
    <?php foreach ($fields as $field): ?>
      <div id="<?php print $field['id']; ?>" class="view-field view-data-<?php print $field['id'] ?>">
        <?php if ($field['label']): ?>
          <div class="view-label-<?php print $field['id'] ?>"><?php print $field['label'] ?></div>
        <?php endif; ?> 
        <?php print $field['data']; ?>
      </div> 
    <?php endforeach; ?>
  </div>   
</div>

Da ich allerdings nicht mit den Taxonomy-Terms arbeiten wollte, sondern mit einem Feld namens "field_checkmeldung", habe ich das ganze mal folgendermaßen geändert:

<div class="view-item view-item-<?php print $view->name ?>">
<?php
  $full_node
= node_load(array('nid'=>$node->nid));
  if (
$full_node->field_checkmeldung[0]['value'] == 'aktivieren')
    {
     
$class = 'termin_meldung';
    }
  else
    {
     
$class = 'termin_normal';
    } 

?>

  <div class="<?php print $class?>" id="<?php print $node->date_id ?>">
    <?php print theme('calendar_stripe_stripe', $node); ?>
    <?php foreach ($fields as $field): ?>
      <div id="<?php print $field['id']; ?>" class="view-field view-data-<?php print $field['id'] ?>">
        <?php if ($field['label']): ?>
          <div class="view-label-<?php print $field['id'] ?>"><?php print $field['label'] ?></div>
        <?php endif; ?> 
        <?php print $field['data']; ?>
      </div> 
    <?php endforeach; ?>
  </div>   
</div>

Das ganze habe ich in die calendar-month-node.tpl.php kopiert (und das alte damit ersetzt) und habe diese Datei dann in mein Theme-Verzeichnis verschoben.

Mmmh, soweit, so gut, wenn ich jetzt den Kalender aufrufe und mir den Quelltext ansehe, dann finde ich dort auch richtiger Weise 2 mal "termin_normal" und einmal "termin_meldung" vor. Diese Klassen stehen auch bei den richtigen Terminen.

Aber erstens habe jetzt ein Darstellungsproblem... Vorher sah das ganze so aus:
Vorher

Und jetzt sieht es so aus:
Nachher

Aber das eigentliche Problem ist, dass ich das ganze ja über die Klassen "termin_normal" und "termin_wichtig" stylen wollte und das klappt nicht. Meine CSS-Kentnisse sind leider noch nicht ganz so ausgefeilt, vielleicht mache ich etwas falsch?! Ich habe folgenden Code in die calendar.css eingefügt (ziemlich weit oben, hinter den zweiten Eintrag) und diese dann in den Modul-Ordner von Calendar geladen:

.termin_meldung {
  background-color:#e7ffcf;

}

Leider passiert da überhaupt nichts =( Habt ihr da Tipps für mich, was ich bei diesem Lösungsansatz falsch mache? Stimmt was beim CSS nicht oder schon wo anders? Würde mich über eure Hilfe sehr freuen =)

mfg Exterior

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es kann sein, dass die

Eingetragen von kissmedve (254)
am 09.03.2010 - 22:01 Uhr

Es kann sein, dass die CSS-Definition weiter unten durch eine andere Klasse wieder überschrieben wird. Es gilt jeweils die spezifischere oder bei gleichwertigen überschreibt die spätere die frühere. Ich kann Dir hier leider nur den Tipp geben, nochmal per Firebug zu schauen, welche Klasse ggf. noch beteiligt ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also ich habe das ganze jetzt

Eingetragen von Exterior (2903)
am 10.03.2010 - 00:52 Uhr

Also ich habe das ganze jetzt noch ein wenig geändert, sieht jetzt so aus:

<?php
  $full_node
= node_load(array('nid'=>$node->nid));
  if (
$full_node->field_checkmeldung[0]['value'] == 'aktivieren')
    {
     
$class = 'event_type_termin_meldung';
    }
  else
    {
     
$class = 'event_type_termin_normal';
    }

?>

     
<div class="view-item view-item-<?php print $view->name ?>">

  <div class="calendar monthview" id="<?php print $node->date_id ?>">

    <?php print theme('calendar_stripe_stripe', $node); ?>

    <div class="<?php print $class; ?>">

      <?php foreach ($fields as $field): ?>

        <div id="<?php print $field['id']; ?>" class="view-field view-data-<?php print $field['id'] ?>">

          <?php if ($field['label']): ?>

            <div class="view-label-<?php print $field['id'] ?>"><?php print $field['label'] ?></div>

          <?php endif; ?>

          <?php print $field['data']; ?>

        </div>

      <?php endforeach; ?>

    </div>

  </div>

</div>

Und in die calendar.css habe ich noch folgendes eingefügt:
.event_type_termin_meldung {
  background-color:#ffa07a !important;

}


.event_type_termin_normal {
  background-color:#e7ffcf !important;

}

(Wenn ich das !important nicht setze, wird der Hintergrund grau...)

Außerdem habe ich in der calendar.css noch ab Zeile 344 folgendes geändert:

.calendar-calendar td .inner div.calendar div,
.calendar-calendar td .inner div.calendar div a {
  border:none;
  background:inherit;
  padding:0 2px;
}

Ich habe dort die Hintergrundfarbe durch "background:inherit;" ersetzt, weil sonst zwar der Hintergrund die Farbe ändert, aber die Items (Datum und Titel) behalten ihre gesetzte Farbe. Dann hätte ich nur zwei farbige Balken links und rechts. Daher lasse ich dort die Farbe erben.

Das Ende vom Lied: es hat im Grunde so geklappt, wie ich mir das gedacht habe und sieht jetzt (vorerst) so aus:
So sieht's aus

Aber dabei ist ein neues Problem aufgetaucht, welches man auf dem Bild auch schon sehen kann:
Ich verwende das Modul DatePopup, das heißt, man klickt im Kalender auf einen Node und es öffnet sich ein Popup, in dem man den Node nachlesen kann.

Aber seit meiner Änderung in der calendar-month-node.tpl.php ist dieses Popup leer =( ich habe mal mit Firebug nachgeschaut: Wenn ich in einem funktionierenden Kalender auf einen Node klicke und das Popup erscheint, erscheint im Firebug ganz unten ein neuer Div mnit der ID "calpopup". Darin ist ein weiterer Div mit der ID "calpopup-body" und darin verschachtelt wird in weiteren Divs der Inhalt des Nodes ausgegeben.

Nachdem ich die calendar-month-node.tpl.php geändert habe, erscheint der Div "calpopup" zwar noch, aber der Div "calpopup-body" ist komplett leer, keine weiteren Divs, kein Inhalt =(

Die calendar-month-node.tpl.php unterscheidet sich ja eigentlich nur durch diese Zeile:
<div class="<?php print $class?>">
(Und durch die PHP-Anweisung, um $class zu bestimmen)

Hat also irgendjemand eine Ahnung, warum das Popup auf einmal leer ist?
Ich würde das Modul nur ungern deaktivieren =( Helft mir bitte =(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hat keiner eine Ahnung, woran

Eingetragen von Exterior (2903)
am 10.03.2010 - 19:08 Uhr

Hat keiner eine Ahnung, woran das liegen könnte? =(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nur mal ganz vage gemutmaßt,

Eingetragen von kissmedve (254)
am 10.03.2010 - 19:38 Uhr

Nur mal ganz vage gemutmaßt, ohne dass ich in Deinen Code oder den Code der beteiligten Module tiefer eingestiegen wäre:

Diese Popup-Dinger sind ja Jquery bzw. Javascript und setzen daher auf irgendwelchen CSS-IDs bzw. -Klassen der zugrunde liegenden Seite auf. Könnte es sein, dass durch die Änderung die vom DatePopup benötigten Klassen/IDs nicht mehr da sind?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Entfernt habe ich ja nichts,

Eingetragen von Exterior (2903)
am 10.03.2010 - 20:10 Uhr

Entfernt habe ich ja nichts, lediglich einen weiteren Div drumrum gebaut.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also, ich habe etwas

Eingetragen von Exterior (2903)
am 11.03.2010 - 14:34 Uhr

Also, ich habe etwas herausgefunden, nämlich, dass das Problem im Modul jcalendar (welches mit im Ordner von Calendar liegt) steckt.
Um genau zu sein in diesem Bereich in der jcalendar.module:

<?phpfunction get_calendar_node($nid, $id) {
 
$GLOBALS['devel_shutdown'] = FALSE;
  if (
is_numeric($nid)) {
    if (
$node = node_load($nid)) {
      if (
node_access("view", $node)) {
       
$node->date_id = $id;
       
$node->date_repeat_show = FALSE;
        print
theme('jcalendar_view', $node);
      }
    }
  }}
?>

Wenn ich dort $nid mit einer Zahl bzw. einer existenten Node-ID belege, dann funktioniert's und ich bekomme Inhalt angezeigt (dann eben immer den Inhalt der hardcodet ID).
Also kann das Modul an dieser Stelle die Node-ID nicht korrekt ermitteln und übergeben.

Die Node-ID wird (soweit ich das erkennen konnte) in der jcalendar.js ab Zeile 47 ermittelt:

// Get NodeID and ItemID
var ids = $(this).parent().parent().attr('id');
var arr = ids.split(":");
var nid = arr[1];
var id = arr[4];

Leider kann ich damit noch nicht besonders viel anfangen =( Weiß jemand, was man da ändern müsste, damit es wieder klappt?


Edit:

Hab's hinbekommen. Habe in der Zeile
var ids = $(this).parent().parent().attr('id');
noch ein .parent() eingefügt und "var id = arr[4];" in "var id = arr[5];" geändert. Und schon klappt's =)

Habe jetzt also einen Kalender mit unterschiedlichen Hintergrundfarben und das Kalender-PopUp funktioniert noch (Außerdem habe ich bei der Gelegenheit das Popup größer gemacht, war mir zu klein ^^)
Alles wunderbar =)

Vielen Dank für eure Denk-Anstöße =)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 18 Stunden
  • Hey danke
    vor 3 Tagen 13 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 7 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 6 Tagen
  • In der entsprechenden View
    vor 1 Woche 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 6 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association