Jump to content
InvisionCommunity.de - Der Deutsche Invision Community Support
Sign in to follow this  
chris5000

[Archiv] [MOD] Calendar Timeline

Recommended Posts

Meine erste Mod-Veröffentlichung (das bedeutet: Dateien vor der Änderung unbedingt sichern) :D

post-23-1084473295.jpg

Nichts anderes als die Monatsansicht des Kalenders so zu ändern wie auf dem Bild zu sehen, bewirkt die Modifikation (oben die Standarddarstellung, unten die Darstellung nach Einbau des Mods)

Ranged Events werden einfach ein gutes Stück übersichtlicher. Vor Allem wenn's viele sind.

Ist entwickelt und getestet auf Version 1.3.1 und IPB Standardskin, sollte aber auch mit vielen anderen Skins und (fast) sicher auch 1.3 funktionieren.

Im Anhang die Einbauanleitung. Ich hoffe, es ist für jemanden nützlich und Bug-Reports sowie Kritik bitte in diesen Thread :)

Gruß,

Chris

EDIT: zip nach V1.0.1 upgedatet. (Bugfix) Anleitung für Upgrade von 1.0 im zip enthalten.

WICHTIG:

Der neue Download befindet sich hier.

Das Hilfe Thema zu diesem Mod findest Du hier.

Edited by Rigo

Share this post


Link to post

Zudem ist es ein geringer Aufwand und klappt sogar wenn man nicht mehr so ganz nüchtern ist ;) Also echt einfach.

Aber was ich eigentlich schreiben wollte: Es werden natürlich auch bereits vorhandene Einträge entsprechend angezeigt, also nicht nur neu erstellte :)

Share this post


Link to post

Hey chris5000,

Danke das Du Dich daran beteiligst, daß Modifikationsforum zu füllen :D

Werde mir den Mod die Tage auch mal anschauen, und ggf. hier einbauen, sozusagen als "Live Demo" :)

Share this post


Link to post

Hey chris5000,

Danke das Du Dich daran beteiligst, daß Modifikationsforum zu füllen :D

Irgendwann muss man der Skin/Mod/Support-Community auch mal was zurückgeben, denke ich :)

Hey chris5000,

Werde mir den Mod die Tage auch mal anschauen, und ggf. hier einbauen, sozusagen als "Live Demo" :)

Anschauen und gegebenfalls installieren kannst Du ihn natürlich. Allerdings sind im ipbsupport.de-Kalender überhaupt keine ranged events eingetragen. Insofern dürfte der hiesige Kalender als "Live Demo" eher ungeeignet sein ;)

Wie gesagt macht die Modifikation vor Allem dann Sinn, wenn viele - vor Allem überlappende - ranged events existieren.

Gruß,

Chris

Share this post


Link to post

naja, dann müssen wir eben mal ein paar ranged events eintragen, dies sollte ja dann das kleinste problem sein :D

Share this post


Link to post

Hab noch einen sporadisch in der jeweils ersten Monatswoche auftretenden Darstellungsfehler gefunden und gefixt. (einen Tag zu kurze Darstellung der Eventdauer)

zip-file ist upgedatet auf v1.0.1 und enthält unter "Upgrade von 1.0" auch die Anleitung zum fixen bereits installierter 1.0er Versionen.

Gruß,

Chris

Share this post


Link to post

also der mod gefällt mir

was mir noch abgeht (so jemand sowas bekannt ist) wäre eine darstellung des kalenders aussehrhalb des forums.

so ne art minikalender, wie man ihn auf vielen portalen oder auch meiner seite (der kann aber nix) finden kann. und meiner kanns chon gar keine timeline *g*, und die schaut mit verlaub gsagt: echt geil aus.

Share this post


Link to post

und die schaut mit verlaub gsagt: echt geil aus.

:blush::D

was mir noch abgeht [...]

und was mir noch abgeht sind Uhrzeiten für single day- und recurring events, sowie eine Wochen und Tagesansicht. Diese Ansichten dann mit "Timelines" pro Tag entlang der Uhrzeit von 0-24 Uhr...

In Richtung Mini-Kalender auf der Website hab' ich keine direkten Ambitionen.

Gruß,

Chris

Edited by chris5000

Share this post


Link to post

minikalender gäbs schon fertige, die "nur" angepasst werden müssten.

wennst auf meine site guckst, - den kannst ruhig vergewaltigen. is n fertiger mod von ibplanet.com , der aber nie ganz gefunzt hat (nächstes monat usw. wollt nie gehen)

Share this post


Link to post

hallo,

danke für den mod, er klappt wunderbar. ich finde es großartig, dass sich einmal jemand des kalenders annimmt. es wundert mich warum beim ipb nicht so nette funktionen wie beim xcalendar ( http://ibf.hingis.org/ ), welcher leider gottes nicht mehr weiter entwickelt wurde, von natur aus schon drin sind.

danke nochmals

gruß, pulp

Edited by pulp

Share this post


Link to post

danke für den mod, er klappt wunderbar.

Lustig, dass der Mod anscheinend grundsätzlich am liebsten so um halb drei morgens installiert wird. Vielleicht funktioniert er nur dann? :lol:

...

Was ich noch bemerken wollte: Wer den Code als Basis für weitere Kalender Hacks verwenden möchte: Nur zu :D

Gruß,

Chris

Share this post


Link to post

dei mir funktioniert er nicht (IPB 1.2)

Fatal error: Call to undefined function: cal_event_cell() in /srv/www/htdocs/web4/html/d-b/bastardclub/sources/calendar.php on line 1124

Share this post


Link to post

@timo:

2. Schritt: Datei Skin/s1/skin_calendar.php öffnen ("s1" ist das IPB Standard Skin. Sollte aber auch mit den meisten anderen Skins funktionieren)

Ich nehme stark an, dass Du die Änderung unter Schritt 2 nur für's Standardskin im Ordner "s1" durchgeführt hast, Dein IPB, bzw. Du, wenn Du die Fehlermeldung bekommst aber ein anderes Skin benutzt.

Du musst aber für alle Skinordner (s1 bis sX), die von Dir benutzt werden, die Änderung in Schritt 2 durchführen.

(Aber vergiss nicht die jeweiligen skin_calendar.php Dateien vorher zu sichern, falls dann doch irgendwas schieflaufen sollte)

Gruß,

Chris

Edited by chris5000

Share this post


Link to post

nein ich hab die änderung nur in dem ordner von dem einzigen skin der genutzt wird vorgenommen. daran kann es nicht liegen.

Share this post


Link to post

Hello

Habe ein Problem:

Ich habe den Mod installiert, und er funktioniert wunderbar, das einzige Problem das ich habe ist ...

... das ich die zeilen

// Start Modifikation Mod_Calendarview


/* Start originaler Quelltext


if ( ($c < $this->first_day_array['wday']) or ($day_array['mon'] != $this->chosen_month) )


Ende originaler Quelltext */


$this->first_day_array['wday'] = $this->first_day_array['wday'] == 0 ? 7 : $this->first_day_array['wday'];


if ( ($c+1 < $this->first_day_array['wday']) or ($day_array['mon'] != $this->chosen_month) )


// Ende Modifikation Mod_Calendarview

//+++++++++++++++++++++++++++++++++++++

wieder irgendwo brauche, da sonst das Samstag als Sonntag angezeigt wird, weil ich einen Mod installiert hab der den Montag als 1. Wochentag einttägt ...

plz HELP

Edited by Z3R0

Share this post


Link to post

plz, plz, plz, plz ....

Ich komm wirklich nicht auf den fehler ...

Screen vom Problem: --> klick <--

Die Datei die normal geändert werden müsste befindet sich im Anhang ..

Könnte sich die bitte jemand mal anschaun?? Wäre echt dankbar ...

Share this post


Link to post

@timo:

"Call to undefined function: cal_event_cell()" bedeutet, dass die Funktion cal_event_cell() nicht gefunden wurde. Sie befindet sich aber in skin_calendar.php , wenn richtig eingebaut wurde.

Durchsuch die Datei, doch mal nach:

function cal_event_cell

Du wirst es nicht finden, weils bei dir fälschlicherweise nicht drin ist.

@ZR30:

Sorry. Mit Montag beginnende Wochen hab ich absolut nicht vorgesehen, die Änderung wäre vermutlich nicht trivial. Zugegebenermaßen vielleicht auch weil mein Code nicht gerade die Quintessenz von Modularität und Eleganz darstellt ;)

Share this post


Link to post

@ZR30:

Sorry. Mit Montag beginnende Wochen hab ich absolut nicht vorgesehen, die Änderung wäre vermutlich nicht trivial. Zugegebenermaßen vielleicht auch weil mein Code nicht gerade die Quintessenz von Modularität und Eleganz darstellt ;)

Die Änderungen sind relativ einfach gehalten, damit der Kalender mit dem Montag anfängt. Der Mod fliegt hier auch irgendwo im Forum von mir rum, kannst ihn dir ja mal anschauen. Da du dich besser mit deinem Mod auskennst, sollte es kein Problem sein, die entsprechenden Änderungen durch meinen Mod einfließen zu lassen. :)

Share this post


Link to post

Jo, ich hatte dem Mod jo schon installiert, aber mit der Änderung von chris5000 finde ich die passende Zeile nicht ... :(

Share this post


Link to post

Irgendwo da muss die Verschiebung eingebaut werden, aber wo weiß ich nicht :(

function show_month() {

        global $ibforums, $DB, $std, $print;

        

        //-----------------------------------------

        // Get the birthdays from the database

        //-----------------------------------------

  $birthdays = $this->get_month_birthdays();

  

  //-----------------------------------------

        // Get recurring events

        //-----------------------------------------

  $recurring = $this->get_month_recurring();

  

  //-----------------------------------------

        // Get the single day events

        //-----------------------------------------

        $events = $this->get_events('single');

  

  //-----------------------------------------

        // Get the ranged events

        //-----------------------------------------

        $r_events = $this->get_events('ranged');


        //-----------------------------------------

        // Figure out the next / previous links

        //-----------------------------------------

        

        $prev_month = array();

        $next_month = array();

        

        $prev_month['year_id']    = $this->chosen_year;

        $next_month['year_id']    = $this->chosen_year;

        

        $prev_month['month_id']   = $this->chosen_month - 1;

        $prev_month['month_name'] = $this->month_words[$this->chosen_month - 2];

        

        $next_month['month_name'] = $this->month_words[$this->chosen_month];

        $next_month['month_id']   = $this->chosen_month + 1;

        

        if ($this->chosen_month == 1)

        {

       	 $prev_month['month_name'] = $this->month_words[11];

       	 $prev_month['month_id']   = 12;

       	 $prev_month['year_id']    = $this->chosen_year - 1;

       	 

        }

        else if ($this->chosen_month == 12)

        {

       	 $next_month['month_name'] = $this->month_words[0];

            $next_month['month_id']   = 1;

            $next_month['year_id']    = $this->chosen_year + 1;

        }

        

        $this->output .= $this->html->cal_main_content($this->month_words[$this->chosen_month - 1], $this->chosen_year, $prev_month, $next_month);

        

        //-----------------------------------------

        // Print the days table top row

        //-----------------------------------------

        

        $day_output = "";

        $cal_output = "";

        

        foreach ($this->day_words as $day)

        {

       	 $day_output .= $this->html->cal_day_bit($day);

        }

  $day_output .= $this->html->cal_new_row();

        //-----------------------------------------

        // Print the main calendar body

        //-----------------------------------------

        

        $seen_days = array(); // Holds yday

        $seen_ids  = array();

  

  $weekinfo=$this->helper_get_week_info();

  

  //do weeks

  for( $c = 1; $c <= $weekinfo['num_weeks']; $c++ )

  {

 	 

 	 $r_week_events = $this->get_events('ranged',$weekinfo[$c]);

 	 

 	 //do we have starting blank days in this week? -> do blank cells on date cell row

 	 for( $i = 0; $i <$weekinfo[$c]['start_blank']; $i++ )

 	 {

    $cal_output .= $this->html->cal_blank_cell();

 	 }

 	 

 	 //do weeks date cells

 	 for( $i = 0; $i <count($weekinfo[$c]['days']); $i++ )

 	 {

    $cal_date = "<a class='caldatelink' href='{$ibforums->base_url}&act=calendar&code=showday&y=".$this->chosen_year."&m=".$this->chosen_month."&d=".$weekinfo[$c]['days'][$i]."'>{$weekinfo[$c]['days'][$i]}</a>";

    if ( ($weekinfo[$c]['days'][$i] == $this->now_date['mday']) and ($this->now_date['mon'] == $this->chosen_month) and ($this->now_date['year'] == $this->chosen_year))

          {

         	 $cal_output .= $this->html->cal_date_cell_today($cal_date);

          }else{

   	 $cal_output .= $this->html->cal_date_cell($cal_date);

    }

    

    

 	 }


 	 //do we have ending blank days in this week? -> do blank cells on date cell row

 	 for( $i = 0; $i <$weekinfo[$c]['blank_end']; $i++ )

 	 {

    $cal_output .= $this->html->cal_blank_cell();

 	 }


 	 $cal_output .= $this->html->cal_new_row();

 	 //do this weeks ranged event rows + one row for all other events

 	 for( $rwe = 1; $rwe <= max(count($r_week_events),4)+1; $rwe++ )

 	 {

    

    //do we have starting blank days in this week?

    for( $i = 0; $i <$weekinfo[$c]['start_blank']; $i++ )

    {

   	 $cal_output .= $this->html->cal_blank_cell();

    }

    //first do a row for each ranged event in this week

    if($rwe<max(count($r_week_events),4)+1)

    {

   	 //add the non-blank days of this week. With and without events

   	 $shown=0;

   	 for( $i = 0; $i <(count($weekinfo[$c]['days'])-max(1,$r_week_events[$rwe-1]['week_duration'])+1); $i++ )

   	 {

      if($shown==0 AND $r_week_events[$rwe-1]['unix_stamp'] < ($weekinfo[$c]['daystamps'][$i]+86399) AND $r_week_events[$rwe-1]['end_unix_stamp'] > ($weekinfo[$c]['daystamps'][$i]))

      {

     	 $event_title=$this->html->cal_events_wrap_range( "code=showevent&eventid=".$r_week_events[$rwe-1]['eventid'], $r_week_events[$rwe-1]['title'], $r_week_events[$rwe-1]['event_color'], $r_week_events[$rwe-1]['event_bgcolor']);

     	 $cal_output .= $this->html->cal_event_cell($event_title,$r_week_events[$rwe-1]['week_duration']);

     	 $shown=1;

      }else{

     	 $cal_output .= $this->html->cal_event_cell("",1);

      }

   	 }

    //now do the row for the single day events of this week

    }else{

   	 for( $i = 0; $i <(count($weekinfo[$c]['days'])-max(1,$r_week_events[$rwe-1]['week_duration'])+1); $i++ )

   	 {

      $this_day_events="";

      $day_array = getdate($this->our_datestamp);

      //----------------------------------------

          // Recurring Events...

          //----------------------------------------

      $this_day_events.=$this->html_month_recurring($recurring, $day_array);

      //----------------------------------------

      // Normal Events...

      //----------------------------------------

      $this_day_events.=$this->html_month_normal($events, $day_array);

      //----------------------------------------

      // Birthdays

      //----------------------------------------

      $this_day_events.=$this->html_month_birthdays($birthdays, $day_array);

     	 

      $cal_output .= $this->html->cal_event_cell($this_day_events,1);

     	 

      $this->our_datestamp += 86400;

   	 }

    }

    //do we have ending blank days in this week?

    for( $i = 0; $i <$weekinfo[$c]['blank_end']; $i++ )

    {

      $cal_output .= $this->html->cal_blank_cell();

    }

    $cal_output .= $this->html->cal_new_row();

    

 	 }

  }

        

        //-----------------------------------------

        // Switch the HTML tags...

        //-----------------------------------------

       

        if ( $this->chosen_year < 1500 )

        {

       	 $this->month_words[$this->chosen_month - 1] = str_replace(",", ';&#', "Y,101,32,111,108,100,32,99,97,108,101,110,100,97,114,32,111,102;").' '.$this->month_words[$this->chosen_month - 1];

        }

        

        $this->output = str_replace( "<!--IBF.DAYS_TITLE_ROW-->", $day_output, $this->output );

        $this->output = str_replace( "<!--IBF.DAYS_CONTENT-->"  , $cal_output, $this->output );

        

        $this->output = str_replace( "<!--IBF.MONTH_BOX-->"     , $this->get_month_dropdown(), $this->output );

        $this->output = str_replace( "<!--IBF.YEAR_BOX-->"      , $this->get_year_dropdown() , $this->output );

        

        $this->nav[] = "<a href='{$ibforums->base_url}&act=calendar'>{$ibforums->lang['page_title']}</a>";

        $this->nav[] = $this->month_words[$this->chosen_month - 1]." ".$this->chosen_year;

        

    }

Bitte kann sich das mal wer anschaun *ganzliebguck*

Share this post


Link to post

Deswegen hatte ich ja gesagt, chris500 solle sich mal die Sache ansehen, da er seinen Mod besser kennt und die kleine Änderung bezüglich der Verschiebung bestimmt schneller da einbauen kann. ;)

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  

×