Seite 108 von 130

Re: [0.6.0] Simple Calendar

Verfasst: 18.06.2009 20:33
von Dralor
Leider habe ich zu wenig Ahnung von dieser Materie, daher weiß ich auch nicht wie technisch schwierig solche Umsetzungen sind. Aber um nochmal auf diese Frage zurück zukommen. Könnte man es dahin vielleicht vereinfachen, dass sich nur eine Person anmelden könnte und diese nicht nur unter der Rubrik "Anmeldungen" sondern an der genannten anderen Stelle erscheinen könnte? sowas wie "Copy" "Paste" ?

Danke für die Hilfe!, Gruß Dralor

Re: [0.6.0] Simple Calendar

Verfasst: 20.06.2009 10:08
von dabsy
Hallo

ich bin auf der suche nach einen Kalender für phpbb 3. wo man Termine eintragen kann, also bei den Standart kalender geht das ja leider nicht!

Kann mir da jemand helfen bitte? habe schon alles durchsucht!

LG Dabsy

Re: [0.6.0] Simple Calendar

Verfasst: 20.06.2009 11:12
von BB-BF-BM
Hallo!

Versuch mal folgende Änderungen:
Sie sind allerdings alle ungetestet, sodass ein Backup der Dateien unbedingt notwendig ist!

/calendar/common.php

Code: Alles auswählen

    public $type = 'cal_date'; 
ersetzen gegen:

Code: Alles auswählen

    public $type = 'cal_date';
    
    public function get_attendant_user()
    {
        foreach ($this->user_data as $user_id => $user_data)
        {
            if ($user_data['attendance_mode'] > 0)
            {
                return $user_id;
            }
        }
        return false;
    } 

Code: Alles auswählen

        if ($this->user_data[$user->id]['notify'] == $notify
         && $this->user_data[$user->id]['attendance_mode'] == $attendance_mode
         && $this->user_data[$user->id]['attendance_comment'] == $attendance_comment)
        {
            return $this;
        } 
ersetzen gegen:

Code: Alles auswählen

        if (($user_id = $this->get_attendant_user()) && $user_id != $user->id)
        {
            $attendance_mode = 0;
            $attendance_comment = '';
        }
        if ($this->user_data[$user->id]['notify'] == $notify
         && $this->user_data[$user->id]['attendance_mode'] == $attendance_mode
         && $this->user_data[$user->id]['attendance_comment'] == $attendance_comment)
        {
            return $this;
        } 

/calendar/show_date.php

Code: Alles auswählen

foreach ($date->user_data as $user_id => $data)
{
    $_user = cal_users::get_user_by_id($user_id);
    if ($data['attendance_mode'] > 0)
    {
        $block_name = 'attendances_yes';
    }
    else if ($data['attendance_mode'] < 0)
    {
        $block_name = 'attendances_no';
    }
    else
    {
        if (!$data['attendance_comment'])
        {
            continue;
        }
        $block_name = 'attendances_other';
    }
    $template->assign_block_vars($block_name, array(
        'USER_ID'        =>    $_user->id,
        'USER_NAME'        =>    $_user->name,
        'USER_COLOUR'    =>    $_user->colour,
        'USER_URL'        =>    $_user->url->get_built(),
        'COMMENT'    =>    nl2br($data['attendance_comment'])
    ));
} 
ersetzen gegen:

Code: Alles auswählen

if ($user_id = $date->get_attendant_user())
{
    $_user = cal_users::get_user_by_id($user_id);
    $template->assign_block_vars('attendance_yes', array(
        'USER_ID'        =>    $_user->id,
        'USER_NAME'        =>    $_user->name,
        'USER_COLOUR'    =>    $_user->colour,
        'USER_URL'        =>    $_user->url->get_built(),
        'COMMENT'    =>    nl2br($date->user_data[$user_id]['attendance_comment'])
    ));
} 
/styles/prosilver/template/calendar/show_date.html

Code: Alles auswählen

	<dt class="attendance_mode">{L_ATTENDANCE}</dt>
	<dd class="attendance_mode"><select name="attendance_mode">
		<!-- IF ATTENDANCE_MODE > 0 -->
		<option value="0">---</option>
		<option value="1" selected="selected">{L_ATTENDANCE_YES}</option>
		<option value="-1">{L_ATTENDANCE_NO}</option>
		<!-- ELSEIF ATTENDANCE_MODE < 0 -->
		<option value="0">---</option>
		<option value="1">{L_ATTENDANCE_YES}</option>
		<option value="-1" selected="selected">{L_ATTENDANCE_NO}</option>
		<!-- ELSE -->
		<option value="0" selected="selected">---</option>
		<option value="1">{L_ATTENDANCE_YES}</option>
		<option value="-1">{L_ATTENDANCE_NO}</option>
		<!-- ENDIF -->
	</select></dd>
	
	<dt class="attendance_comment">{L_ATTENDANCE_COMMENT}:</dt>
	<dd class="attendance_comment"><textarea name="own_attendance_comment" rows="7" cols="15">{ATTENDANCE_COMMENT}</textarea></dd>
	
	<dd class="clear"><hr /></dd>
ersetzen gegen:

Code: Alles auswählen

	<!-- IF attendance_yes == 0 -->
	<dt class="attendance_mode">{L_ATTENDANCE}</dt>
	<dd class="attendance_mode"><select name="attendance_mode">
		<!-- IF ATTENDANCE_MODE > 0 -->
		<option value="0">---</option>
		<option value="1" selected="selected">{L_ATTENDANCE_YES}</option>
		<option value="-1">{L_ATTENDANCE_NO}</option>
		<!-- ELSEIF ATTENDANCE_MODE < 0 -->
		<option value="0">---</option>
		<option value="1">{L_ATTENDANCE_YES}</option>
		<option value="-1" selected="selected">{L_ATTENDANCE_NO}</option>
		<!-- ELSE -->
		<option value="0" selected="selected">---</option>
		<option value="1">{L_ATTENDANCE_YES}</option>
		<option value="-1">{L_ATTENDANCE_NO}</option>
		<!-- ENDIF -->
	</select></dd>
	
	<dt class="attendance_comment">{L_ATTENDANCE_COMMENT}:</dt>
	<dd class="attendance_comment"><textarea name="own_attendance_comment" rows="7" cols="15">{ATTENDANCE_COMMENT}</textarea></dd>
	
	<dd class="clear"><hr /></dd>
	<!-- ENDIF -->

Code: Alles auswählen

	<dt class="attendances">{L_ATTENDANCES}</dt>
	<dd class="attendances"><dl>
	<!-- BEGIN attendances_yes -->
		<dt class="attendance_yes" title="{L_ATTENDANCE_YES}" onmouseover="show_attendance_comment('{attendances_yes.USER_ID}');">
			<a href="{attendances_yes.USER_URL}" style="color: #{attendances_yes.USER_COLOUR};">{attendances_yes.USER_NAME}</a>
		</dt>
		<!-- IF attendances_yes.COMMENT -->
		<dd id="attendance_comment_{attendances_yes.USER_ID}">
			{attendances_yes.COMMENT}
		</dd>
		<!-- ENDIF -->
	<!-- END attendances_yes -->
		
	<!-- BEGIN attendances_no -->
		<dt class="attendance_no" title="{L_ATTENDANCE_NO}" onmouseover="show_attendance_comment('{attendances_no.USER_ID}');">
			<a href="{attendances_no.USER_URL}" style="color: #{attendances_no.USER_COLOUR};">{attendances_no.USER_NAME}</a>
		</dt>
		<!-- IF attendances_no.COMMENT -->
		<dd id="attendance_comment_{attendances_no.USER_ID}">
			{attendances_no.COMMENT}
		</dd>
		<!-- ENDIF -->
	<!-- END attendances_no -->
		
	<!-- BEGIN attendances_other -->
		<dt class="attendance_other" title="{L_ATTENDANCE_OTHER}" onmouseover="show_attendance_comment('{attendances_other.USER_ID}');">
			<a href="{attendances_other.USER_URL}" style="color: #{attendances_other.USER_COLOUR};">{attendances_other.USER_NAME}</a>
		</dt>
		<dd id="attendance_comment_{attendances_other.USER_ID}">
			{attendances_other.COMMENT}
		</dd>
	<!-- END attendances_other -->
	<!-- IF .attendances_yes == 0 && .attendances_no == 0 && .attendances_other == 0 -->
		<dt>{L_NONE}</dt>
	<!-- ENDIF -->
	</dl></dd>
	<dd id="attendance_comment" style="display: none;"><p>{L_ATTENDANCE_COMMENT}:</p><p>&nbsp;</p></dd>
ersetzen gegen:

Code: Alles auswählen

	<dt class="attendances">{L_ATTENDANCES}</dt>
	<dd class="attendances"><dl>
	<!-- BEGIN attendances_yes -->
		<dt class="attendance_yes" title="{L_ATTENDANCE_YES}" onmouseover="show_attendance_comment('{attendances_yes.USER_ID}');">
			<a href="{attendances_yes.USER_URL}" style="color: #{attendances_yes.USER_COLOUR};">{attendances_yes.USER_NAME}</a>
		</dt>
		<!-- IF attendances_yes.COMMENT -->
		<dd id="attendance_comment_{attendances_yes.USER_ID}">
			{attendances_yes.COMMENT}
		</dd>
		<!-- ENDIF -->
	<!-- BEGINELSE -->
		<dt>{L_NONE}</dt>
	<!-- ENDIF -->
	</dl></dd>
	<dd id="attendance_comment" style="display: none;"><p>{L_ATTENDANCE_COMMENT}:</p><p>&nbsp;</p></dd>


Nach diesen Änderungen sollte es nur für einen User möglich sein, sich anzumelden.
(Dies kannst du zunächst auch testen, um im Fehlerfall sagen zu können, wo der Fehler liegt.)


Nun kannst du in der Datei /styles/prosilver/template/calendar/show_date.html mit dem Code

Code: Alles auswählen

<!-- BEGIN attendances_yes -->
	<a href="{attendances_yes.USER_URL}" style="color: #{attendances_yes.USER_COLOUR};">{attendances_yes.USER_NAME}</a>
<!-- END attendance_yes -->
Um den Namen des zuerst angemeldeten Users also hinter dem Termin-Namen auszugeben, musst du

Code: Alles auswählen

		<!-- ENDIF --> {NAME}
	</h3>
	<div class="actions">
ersetzen gegen:

Code: Alles auswählen

		<!-- ENDIF --> {NAME} 
		<!-- BEGIN attendances_yes -->
			 (<a href="{attendances_yes.USER_URL}" style="color: #{attendances_yes.USER_COLOUR};">{attendances_yes.USER_NAME}</a>)
		<!-- END attendance_yes -->
	</h3>
	<div class="actions">

Um auch in der Terminübersicht den Usernamen hinter dem Terminnamen auszugeben, musst du in der Datei /calendar/common.php

Code: Alles auswählen

                $GLOBALS['template']->assign_block_vars('days.events', array(
                    'NAME'    =>    $_date->name,
                    'URL'    =>    $_date->url->get_built(),
                    'CLASSES'    =>    implode(' ', $classes),
                    'TYPE'        =>    $_date->type,
                    'IS_EQUAL'    =>    $_date->copy_name_and_desc,
                    'VISIBLE'    =>    $visible,
                    'INVITED'    =>    $current_user->is_invited_to_date($_date),
                    'ATTENDANCE_MODE'    =>    isset($_date->user_data[$current_user->id]) ? $_date->user_data[$current_user->id]['attendance_mode'] : 0,
                    'NOTIFY'    =>    $current_user->gets_notified_of_date($_date)
                )); 
ersetzen gegen:

Code: Alles auswählen

                if ($attendant_user_id = $_date->get_attendant_user())
                {
                    $attendant_user = cal_users::get_user_by_id($attendant_user_id);
                }
                $GLOBALS['template']->assign_block_vars('days.events', array(
                    'NAME'    =>    $_date->name,
                    'URL'    =>    $_date->url->get_built(),
                    'CLASSES'    =>    implode(' ', $classes),
                    'TYPE'        =>    $_date->type,
                    'IS_EQUAL'    =>    $_date->copy_name_and_desc,
                    'VISIBLE'    =>    $visible,
                    'INVITED'    =>    $current_user->is_invited_to_date($_date),
                    'ATTENDANCE_MODE'    =>    isset($_date->user_data[$current_user->id]) ? $_date->user_data[$current_user->id]['attendance_mode'] : 0,
                    'NOTIFY'    =>    $current_user->gets_notified_of_date($_date),
                    'ATTENDANT_USER'    =>    $attendant_user_id,
                    'ATTENDANT_USER_NAME'    =>    $attendant_user_id ? $attendant_user->name : '',
                    'ATTENDANT_USER_COLOUR'    =>    $attendant_user_id ? $attendant_user->colour : '',
                    'ATTENDANT_USER_URL'    =>    $attendant_user_id ? $attendant_user->url->get_built()
                )); 

/styles/prosilver/template/calendar/dates_list.html

Code: Alles auswählen

				<dt class="name"><a href="{days.events.URL}">{days.events.NAME}</a></dt>
ersetzen gegen:

Code: Alles auswählen

				<dt class="name"><a href="{days.events.URL}">{days.events.NAME}</a></dt>
				<!-- IF days.events.ATTENDANT_USER -->
					 (<a href="{days.events.ATTENDANT_USER_URL}" style="color: #{days.events.ATTENDANT_USER_COLOUR};">{days.events.ATTENDANT_USER_NAME}</a>)
				<!-- ENDIF -->


Wie gesagt: alle Änderungen sind ungetestet!



@Dabsy: was geht nicht mit welchem Kalender?

Re: [0.6.0] Simple Calendar

Verfasst: 20.06.2009 11:22
von dabsy
Hallo

na mir den normalen Kalender den man einstellen kann, kann man keine events eintragen! Zb. beim 10.8.2009 Börse in Dreieich um 10 Uhr usw.....

LG Dabsy

Re: [0.6.0] Simple Calendar

Verfasst: 20.06.2009 11:52
von BB-BF-BM
Hallo Dabsy!

Hast du ihn denn bereits irgendwo installiert?

Du musst angemeldet sein, um Termine erstellen zu können und die Berechtigung dazu besitzen (übers ACP einstellbar).

Re: [0.6.0] Simple Calendar

Verfasst: 20.06.2009 11:56
von dabsy
Hallo

nein ich habe es nicht installiert weil ja da steht: Der Kalender funktioniert NUR mit PHP 5.1.2 und höher!

und ich habe nur PHPBB 3.0.5!

Und genau dafür suche ich so ein Mod!

LG Dabsy

Re: [0.6.0] Simple Calendar

Verfasst: 20.06.2009 12:51
von BB-BF-BM
Hallo Dabsy!

PHP != phpBB

PHP ist eine Skriptsprache, die von phpBB verwendet wird.

Sie sind im Groben unabhängig voneinander.
Du kannst zum Beispiel phpBB 2 mit PHP 3, PHP 4 oder PHP 5 verwenden und phpBB 3 mit PHP 4 oder PHP 5.

Der Kalender ist für PHP 5 und phpBB 3 ausgelegt.

Re: [0.6.0] Simple Calendar

Verfasst: 20.06.2009 21:26
von dabsy
dankeschön......so, habe alles getan, aber wenn ich installieren will steht da ständig error da obwohl alles hochgeladen wurde,

wenn ich auf kalender gehe im Forum wird der mir komischerweise schon angezeigt, geht aber noch ned :oops:
Prüfe, ob Sprach-Dateien für "British English" hochgeladen wurden ERROR

Prüfe, ob Sprach-Dateien für "Deutsch (Sie)" hochgeladen wurden ERROR

Prüfe, ob Template-Dateien für "subsilver2" hochgeladen wurden ERROR

Prüfe, ob Template-Dateien für "Getaway Darkblue" hochgeladen wurden ERROR

Prüfe, ob Theme-Dateien für "subsilver2" hochgeladen wurden ERROR

Prüfe, ob Theme-Dateien für "SmoothBLUE" hochgeladen wurden ERROR

Prüfe, ob die Berechtigungsrollen für "Kann Ereignisse erstellen" aktualisiert wurden ERROR / Was muss da rein? Volle Funktionalität?

und von Schritt 10 gehts weiter auf: Allgemeiner Fehler Allgemeiner Fehler
Could not open ./../styles/prosilver/template/colour_swatch.html



Dabsy

Ps. Trotz diesen fehlern und das die installation nicht ausgeführt werden kann, ist der kalender mit allen funktionen erfolgreich online, das verstehe ich nicht :-?

Re: [0.6.0] Simple Calendar

Verfasst: 21.06.2009 12:45
von Dralor
Buenos Dias!

Änderungen vorgenommen:
/calendar/common.php - geändert OK
/calendar/show_date.php - geändert / nach Änderung keine Anmeldungen mehr sichtbar.
/styles/prosilver/template/calendar/show_date.html - geändert OK
---
/calendar/show_date.php
ohne Änderungen - nur noch ein Benutzer kann sich aktiv anmelden
---
/styles/prosilver/template/calendar/show_date.html - geändert OK
/calendar/common.php - geändert / Parse error
/styles/prosilver/template/calendar/dates_list.html - geändert OK
---
/calendar/common.php
ohne Änderungen - keine sichtbaren Veränderungen
mit Änderung - Parse error
---
Parse error
Parse error: syntax error, unexpected ')' in /var/www (...) calendar/common.php on line 2167

Code: Alles auswählen

                    $attendant_user = cal_users::get_user_by_id($attendant_user_id);
                }
2153             $GLOBALS['template']->assign_block_vars('days.events', array(
                    'NAME'    =>    $_date->name,
2155             'URL'    =>    $_date->url->get_built(),
                    'CLASSES'    =>    implode(' ', $classes),
                    'TYPE'        =>    $_date->type,
                    'IS_EQUAL'    =>    $_date->copy_name_and_desc,
                    'VISIBLE'    =>    $visible,
2160             'INVITED'    =>    $current_user->is_invited_to_date($_date),
                    'ATTENDANCE_MODE'    =>    isset($_date->user_data[$current_user->id]) ? $_date->user_data[$current_user->id]['attendance_mode'] : 0,
                    'NOTIFY'    =>    $current_user->gets_notified_of_date($_date),
                    'ATTENDANT_USER'    =>    $attendant_user_id,
                    'ATTENDANT_USER_NAME'    =>    $attendant_user_id ? $attendant_user->name : '',
2165             'ATTENDANT_USER_COLOUR'    =>    $attendant_user_id ? $attendant_user->colour : '',
                    'ATTENDANT_USER_URL'    =>    $attendant_user_id ? $attendant_user->url->get_built()
2167             ));
			}
		}
2170		if ($bdays)
		{
			foreach ($bdays as $bday)
			{
				$_user = cal_users::get_user_by_id($bday['user_id']);
				$age = cal_bdays::get_age($bday, $day);
				
				if ($age < 0)
Grüße Dralor !

Re: [0.6.0] Simple Calendar

Verfasst: 21.06.2009 16:39
von BB-BF-BM
Hallo!

dabsy, wenn alles funktioniert, ist alles in Ordnung, du kannst dann die Fehlermeldungen ignorieren.
"Volle Funktionalität" sollte auf jeden Fall Ereignisse erstellen dürfen.


@Dralor: Eine Ergänzung zu den oben genannten Änderungen

/calendar/show_date.php

Code: Alles auswählen

if ($user_id = $date->get_attendant_user())
{
    $_user = cal_users::get_user_by_id($user_id);
    $template->assign_block_vars('attendance_yes', array(
        'USER_ID'        =>    $_user->id,
        'USER_NAME'        =>    $_user->name,
        'USER_COLOUR'        =>    $_user->colour,
        'USER_URL'        =>    $_user->url->get_built(),
        'COMMENT'        =>    nl2br($date->user_data[$user_id]['attendance_comment'])
    ));
} 
ersetzen gegen:

Code: Alles auswählen

if ($user_id = $date->get_attendant_user())
{
    $_user = cal_users::get_user_by_id($user_id);
    $template->assign_block_vars('attendances_yes', array(
        'USER_ID'        =>    $_user->id,
        'USER_NAME'        =>    $_user->name,
        'USER_COLOUR'        =>    $_user->colour,
        'USER_URL'        =>    $_user->url->get_built(),
        'COMMENT'        =>    nl2br($date->user_data[$user_id]['attendance_comment'])
    ));
} 

/styles/prosilver/template/calendar/show_date.html

Code: Alles auswählen

       <!-- IF attendance_yes == 0 -->
       <dt class="attendance_mode">{L_ATTENDANCE}</dt>
       <dd class="attendance_mode"><select name="attendance_mode">
          <!-- IF ATTENDANCE_MODE > 0 -->
          <option value="0">---</option>
          <option value="1" selected="selected">{L_ATTENDANCE_YES}</option>
          <option value="-1">{L_ATTENDANCE_NO}</option>
          <!-- ELSEIF ATTENDANCE_MODE < 0 -->
          <option value="0">---</option>
          <option value="1">{L_ATTENDANCE_YES}</option>
          <option value="-1" selected="selected">{L_ATTENDANCE_NO}</option>
          <!-- ELSE -->
          <option value="0" selected="selected">---</option>
          <option value="1">{L_ATTENDANCE_YES}</option>
          <option value="-1">{L_ATTENDANCE_NO}</option>
          <!-- ENDIF -->
       </select></dd>
       
       <dt class="attendance_comment">{L_ATTENDANCE_COMMENT}:</dt>
       <dd class="attendance_comment"><textarea name="own_attendance_comment" rows="7" cols="15">{ATTENDANCE_COMMENT}</textarea></dd>
       
       <dd class="clear"><hr /></dd>
       <!-- ENDIF -->
ersetzen gegen:

Code: Alles auswählen

       <!-- IF attendances_yes == 0 -->
       <dt class="attendance_mode">{L_ATTENDANCE}</dt>
       <dd class="attendance_mode"><select name="attendance_mode">
          <!-- IF ATTENDANCE_MODE > 0 -->
          <option value="0">---</option>
          <option value="1" selected="selected">{L_ATTENDANCE_YES}</option>
          <option value="-1">{L_ATTENDANCE_NO}</option>
          <!-- ELSEIF ATTENDANCE_MODE < 0 -->
          <option value="0">---</option>
          <option value="1">{L_ATTENDANCE_YES}</option>
          <option value="-1" selected="selected">{L_ATTENDANCE_NO}</option>
          <!-- ELSE -->
          <option value="0" selected="selected">---</option>
          <option value="1">{L_ATTENDANCE_YES}</option>
          <option value="-1">{L_ATTENDANCE_NO}</option>
          <!-- ENDIF -->
       </select></dd>
       
       <dt class="attendance_comment">{L_ATTENDANCE_COMMENT}:</dt>
       <dd class="attendance_comment"><textarea name="own_attendance_comment" rows="7" cols="15">{ATTENDANCE_COMMENT}</textarea></dd>
       
       <dd class="clear"><hr /></dd>
       <!-- ENDIF -->
Alle Änderungen zusammen sollten jetzt eigentlich funktionieren.

Der Parse Error dürfte eigentlich nicht sein: kannst du noch einmal den entsprechenden Codeabschnitt aus der /calendar/common.php posten, wie du ihn geändert hast.
Benutz diesmal

Code: Alles auswählen

[code=php]
[/code]zum Darstellen des Codes!