maximilian 0 Report post Posted January 21, 2005 Hallo, freu mich, auch bei euch dabei zu sein. Zur Frage: Ist es möglich, eine Umfrage mit Zeitlimit zu starten. Im Klartext: Ich starte eine Umfrage bzgl eines Mitgliedertreffens, Deathline ist heute um 16 Uhr. Ist es möglich, dass man, ohne um 16 Uhr online zu sein, die Umfrage um 16 Uhr stoppen lässt, sie aber trotzdem noch im Thread bleibt, und man auch das Ergebnis ansehen kann? Nur voten kann man halt nach 16 Uhr nimmer? Ist das machbar? Das mit dem Treffen ist keine Geschichte, das machen wir wirklich so. Weil es so schwer ist, es allen recht zu machen. Das letzte mal hat ein Member nach der Deathline abgestimmt, und es war Gleichstand... uiii, da war was beinander *rofl*. Vielen Dank schon mal im Voraus, l maximilian :) Share this post Link to post
Chaote 0 Report post Posted January 21, 2005 Jep sowas wäre schon was feines... ich suche so nen Mod auch... Share this post Link to post
Blackman 0 Report post Posted January 22, 2005 (edited) Ich ändere verdammt ungerne was an dem Poll-System ... Aber die Idee ist verdammt gut, deswegen probier ich sie mal ganz langsam, Schritt-für-Schritt umzusetzen ! Punkt 1: Wir brauchen ein neues Datenbankfeld, welches angibt wann ein Poll denn ungültigt wird. Das nennen wir expires, geben ihm die Vorgabe das es einen 10 stelligen Zahlenwert beinhalten kann (Unix-Timestamp, die Zeit in Sekunden seit dem 1.1.1970, ziemlich genau ). Also, ab in PHPMyAdmin, oder ins ACP, und folgenden Mysql-Befehl ausgeführt: ALTER TABLE `ibf_polls` ADD `expires` INT( 10 ) DEFAULT '-1' AFTER `poll_question` ; Punkt 2: Nun gehen wir in die Skin, beim Poll erstellen, oder Poll editieren soll man nämlich den Wert eintragen können. Unterpunkt 1: skin_post.php (in allen Skin-Ordnern verändern !) Suchen nach: <td class='pformright'><input type='text' size='40' maxlength='250' name='pollq' value='{$ibforums->input['pollq']}' class='textinput' /></td> </tr> und drunter kommt das: <tr> <td class='pformleft'><strong>{$ibforums->lang['poll_expires']}</strong></td> <td class='pformright'> <select name='expire_days' class='forminput'>{$expire_days}</select> </td> </tr> Suchen nach: function poll_box($data, $extra="") Daraus machen wir das hier: function poll_box($data, $expire_days, $extra="") { Nun die nötige Lang-Datei anpassen: lang_post.php (in allen nötigen Lang-Dateien verändern) einfügen, entweder $lang['poll_expires'] = "In wievielen Tagen läuft die Umfrage aus ?<br>-- für nie"; oder: poll_expires => "In wievielen Tagen läuft die Umfrage aus ?<br>-- für nie", Punkt 3: Nun müssen wir noch sicher gehen, das in die Felder auch etwas eingefüllt wird: Also ab in die post_poll.php Suchen nach: $poll_box = $class->html->poll_box($poll, $extra); Ändern durch: // Poll-Expire MOD $expire_days = "<option value='0'>--</option>"; for ( $i = 1 ; $i < 32 ; $i++ ) { $expire_days .= "<option value='$i'"; $expire_days .= ">$i</option>"; } // Ende Poll-Expire MOD $poll_box = $class->html->poll_box( $poll, $expire_days, $extra); Über dieses: Punkt 4: Um sicherzugehen das man das auch noch ändern kann, wenn man nachträglich einen Post in ein Theme einfügt, gehen wir jetzt in die post_poll_after.php. Suchen nach: $poll_box = $class->html->poll_box($poll, $extra); Ändern durch: // Poll-Expire MOD $expire_days = "<option value='0'>--</option>"; for ( $i = 1 ; $i < 32 ; $i++ ) { $expire_days .= "<option value='$i'"; $expire_days .= ">$i</option>"; } // Ende Poll-Expire MOD $poll_box = $class->html->poll_box( $poll, $expire_days, $extra); Punkt 5: Nun sorgen wir dafür, das unsere Werte auch richtig in die Datenbank geschrieben werden. Datei post_poll.php: Suchen 'poll_question' => $class->parser->bad_words($ibforums->input['pollq']), drunter: 'expires' => ($ibforums->input['expire_days'] > 0) ? strtotime("+".$ibforums->input['expire_days']." days") : -1, das gleiche in der post_poll_after.php ! Punkt 6: Nun soll er noch anzeigen, wann ein Poll ausläuft, also ab in die Topics.php Suchen nach: if (! $poll_data['pid']) { return; } drunter: // Expire MOD Start if ($poll_data["expires"] != -1) { $expire_text = "<br>".$ibforums->lang['this_poll_expires'].$std->get_date( $ poll_data[" expires" ], 'SHORT' ); } else { $expire_text = ""; } // Expire MOD Ende Suchen nach: $html .= $this->poll_html->ShowPoll_footer(); Ändern durch: $html .= $this->poll_html->ShowPoll_footer($expire_text); Und nicht vergessen die Lang-Datei anzupassen, hier die lang_post.php $lang['this_poll_expires'] = "Ende der Umfrage: "; Nun die Skin skin_poll.php Suchen nach: function ShowPoll_footer() { ändern durch: function ShowPoll_footer($expire_text) { Suchen nach: <!--IBF.SHOW--></div> ersetzen durch: <!--IBF.SHOW-->$expire_text</div> So, nun aber die letzte Phase. Datei lang_error.php hinzufügen von: poll_expired => "Diese Umfrage ist schon abgelaufen, es können keine Stimmen mehr hinzugefügt werden !", (Auf richtiges Format achten !) Nun die Datei add_poll.php: Suchen nach: $DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id"); ändern durch: $DB->query("SELECT f.allow_pollbump, t.*, p.pid as poll_id,p.choices,p.starter_id,p.votes,p.expires from ibf_polls p, ibf_topics t, ibf_forums f WHERE t.tid='".$ibforums->input['t']."' and p.tid=t.tid and t.forum_id=f.id"); Suchen nach: if ($this->topic['state'] != 'open') { $std->Error( array( LEVEL => 1, MSG => 'locked_topic') ); } drunter bitte: if ($this->topic['expires'] != -1 AND time() > $this->topic['expires']) { $std->Error( array( LEVEL => 1, MSG => 'poll_expired') ); } So, nun sollte alles gehen, sorry ich hab das hier ein bisschen mit der heißen Nadel gestrickt, und wurde oft abgelenkt, aber ich hoffe es passt, wenn nicht dann kriegen wir das hier schon wieder hin, bis jeder Fehler ausgemerzt ist ! BLACK Edited January 23, 2005 by Blackman Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Ach ja, noch ein Mini-Update, einfach weil ich der Funktion strtotime von php nicht so unbedingt vertraue ... In der post_poll.php mal nach // Add the poll to the forum_polls table // if we are moderating this post //------------------------------------------------- suchen, und drunter das hier einfügen: $ibforums->input['expire_days'] = intval($ibforums->input['expire_days']); Damit gehen wir sicher das die Tage die eingegeben werden, auch sicher nur Zahlen sind, und nicht irgendwelche Befehle die unser Programm verwirren würden ! BLACK Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 Hab den Mod eingebaut... nur sehen tue ich jetzt von ihm leider nix... Wenn ich aber eine neue Umfrage aufmache bleibt alles normal nur das jetzt rechts von dem Feld wo man die Antwortein einfügt "12345678910111213141516171819202122232425262728293031" das eingefügt wird. Unten ein Screenshot davon Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Zeig mir mal bitte deine Skin_post.php, da ist was falsch eingefügt, aber sonst scheint alles ganz gut zu sein ... BLACK Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 Hab se angehängt... wenn ich 2 Skins installiert habe aber nur einen Skinn nutze... muss ich das trotzdem bei beiden dann machen? Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Nee, wenn der zweite 100 pro nicht genutzt wird, nicht ... Eigentlich scheint die Skin einwandfrei zu passen, schick mir mal bitte per PM nen Probeaccount, dann schau ich's mir online an ... Ach ja, das da die Zahlen stehen, ist schon richtig so, nur eigentlich sollten sie im Select-Feld stehen, ist das hier // Poll-Expire MOD $expire_days = "<option value='0'>--</option>"; for ( $i = 1 ; $i < 32 ; $i++ ) { $expire_days .= "<option value='$i'"; $expire_days .= ">$i</option>"; } // Ende Poll-Expire MOD $poll_box = $class->html->poll_box( $poll, $expire_days, $extra); in der post_poll.php auch richtig ? BLACK Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 Was brauchstn für rechte? hab dir hier mal die post_poll angehängt Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Aah, also ich hab deine skin, und dein php datei genommen, und es geht ... Haben wir vielleicht nen Skin-Resync vergessen ? Bist du sicher das du alles so, wie du's hier hochgeladen hast, eingebaut und gesynct hast ? PS: Rechte brauch ich nur welche um nen Poll zu erstellen, wo ist mir wurst BLACK Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 (edited) An das Skin resinze.. hab ich auch schon gedacht.. aber kann ja eigentlich nicht sein da der Safemode vom hoster abgeschaltet wurde... er war zwar beim installieren des boardes an ist aber jetzt aus... pm ist raus.. ich vermute fast das ich irgendwas verplant habe... ich hab nur kein plan was... Edited January 23, 2005 by Chaote Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Sicherheitshalber mal doch syncen ... Die Skin die du mir gegeben hast, hat u.a. die Auswahlmöglichkeit für "offenen Poll" und für "expire Poll" ... aber keines davon ist in der Skin von deinem Forum drin ! Guckst du: Dein Forum: <tr> <td colspan="2" class="pformstrip">Umfrage Einstellungen</td> </tr> <tr> <td class="pformleft"><strong>Frage</strong></td> <td class="pformright"><input size="40" maxlength="250" name="pollq" value="" class="textinput" type="text"></td> </tr> <tr> <td class="pformleft"><b>Wahl der Antworten</b><br>Bitte jeweils nur eine Antwort pro Zeile angeben. [ Maximal 10 Antworten ]<br><br>--12345678910111213141516171819202122232425262728293031</td> <td class="pformright"><textarea cols="60" rows="12" name="PollAnswers" class="textinput"></textarea><!--TEMPLATE: skin_post, Template Part: poll_options--> <br><input size="40" value="1" name="allow_disc" class="forminput" type="checkbox"> <b>Nur Umfrage erstellen</b><br>(Keine Antworten möglich) </td> </tr> und so sollte es aussehen: <tr> <td colspan="2" class='pformstrip'>{$ibforums->lang['tt_poll_settings']}</td> </tr> <tr> <td class='pformleft'><strong>{$ibforums->lang['poll_question']}</strong></td> <td class='pformright'><input type='text' size='40' maxlength='250' name='pollq' value='{$ibforums->input['pollq']}' class='textinput' /></td> </tr> <tr> <td class='pformleft'><strong>{$ibforums->lang['poll_expires']}</strong></td> <td class='pformright'> <select name='expire_days' class='forminput'>{$expire_days}</select> </td> </tr> <!-- Start Mod Public Poll --> <tr> <td class='pformleft'><strong>{$ibforums->lang['options']}</strong></td> <td class='pformright'><input type='checkbox' size='40' value='1' name='open_poll' class='forminput' /> <b>{$ibforums->lang[mod_public_poll]}</b><br/>{$ibforums->lang[mod_public_poll_info]} </tr> <!-- End Mod Public Poll --> <tr> <td class='pformleft'>{$ibforums->lang['poll_choices']}<br /><br />$extra</td> <td class='pformright'><textarea cols='60' rows='12' name='PollAnswers' class='textinput'>$data</textarea><!--IBF.POLL_OPTIONS--></td> </tr> nicht gleich )) Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 (edited) jep den offenen pol wollte ich noch einbauen... das kommt als nächstes... hatte da schon mal angefangen... Halt... Kommando zurück... ich hab gerecynt (<-- oder wie immer das auch heißt) Nun hauts einwandfrei hin... Blackman du bist nen Genie... vielen Dank dir... Edited January 23, 2005 by Chaote Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Danke, aber ein genie bin ich leider noch nicht, sonst wäre ich nicht arbeitslos Trotzdem Danke, helfe doch gerne ! PS: Den Account kannste löschen, oder pw ändern, ich brauch ihn logischerweise nich mehr BLACK Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 (edited) Sowas versteh ich nicht... ends der checker und no work... Nochne Frage zum Tool.. wärs möglich das du das noch so ergänzt das man nicht nur die anzahl Tage sondern auch die Uhrzeit auswählen kann? Sprich die Umfrage starte ich am 12. Januar um 14 Uhr und sie Soll dann genau am 15. Januar um 19 Uhr ablaufen... geht das? --- Fehlermeldung entdeckt: Diese kommt wenn ich ne schon bestehende Umfrage anschaue: Warning: Missing argument 1 for showpoll_footer() in /srv/www/htdocs/web291/html/forum/sources/functions.php(644) : eval()'d code on line 211 Edited January 23, 2005 by Chaote Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Erstmal zur Fehlermeldung ... Da wird eine Skin-Funktion aufgerufen, und es wird ein Argument nicht übergeben... Fehler sollte in der Topics.php liegen, nicht in der functions.php wie php hier angibt. Überprüfe ob in der Topics.php erstmal das hier drin steht: // Expire MOD Start if ($poll_data["expires"] != -1) { $expire_text = "<br>".$ibforums->lang['this_poll_expires'].$std->get_date( $poll_data["expires"], 'SHORT' );; } else { $expire_text = ""; } // Expire MOD Ende und zwar hier drunter: if (! $poll_data['pid']) { return; } und ob das hier: $html .= $this->poll_html->ShowPoll_footer($expire_text); hier drunter steht: $html .= $this->poll_html->Render_row_form($votes, $id, $choice); } } Hmmm, zur Frage ob man ne Uhrzeit angeben kann, im Notfall gehts natürlich immer, indem du als Admin den Wert auf Sekunde genau in der Datenbank einträgst ... Das einzige was ich mir vorstellen kann, wäre das man statt Tagen in denen der Post endet, einfach stunden in denen der Post endet eingibt, das wäre in 2 minuten umgeändert. da müsste man einfach in der strtotime-function statt "days", "hours" schreiben, dann nimmt er die anzahl die man einträgt als stunden ... oder man gibt "seconds" ein, das wäre natürlich noch genauer. Nicht zu vergessen in der lang-datei das reinzuschreiben Ich hab mich dagegen entschieden einen genauen Zeitpuntk angeben zu können, denn wie sieht das aus, gib bitte die Endzeit ein: TAG MONAT JAHR STUNDE MINUTE SEKUNDE ... Und die Penislänge gleich dazu ... Ich wollte möglichst nur ein einfaches Eingabefeld haben, um die nicht so erfahrenen User nicht unnötig zu verwirren, am Ende kommen wir noch beim PhpBB an BLACK Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 (edited) noch gehts... wieder Fände ich halt praktisch wenn man beim erstellen der Umfrage auswählen könnte wann se genau enden soll... aber so gehts auch nochmal danke dir Edited January 23, 2005 by Chaote Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Business as usual, zeig mal bitte deine functions.php )) BLACK Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Da scheint der Fehler nicht zu sein ... Meine Fresse, das ärgert mich aber, aber ich schätze ich brauch die Topics.php auch noch, und wenns geht das lang-file dazu lang_post.php auch noch, ich weiß, ich fordere heute viel BLACK Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 ^^ mhm... hast ne mail addy? weil dann schick ich dir das zeugs per mail zu... alles hier hochladen dauert ja doch ewig Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 (edited) PS: Schreib bitte wenn die Mail draußen ist, damit ich meine Addy hier wieder löschen kann BLACK Edited January 23, 2005 by Blackman Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 kannste löschen geht gleich raus Share this post Link to post
Blackman 0 Report post Posted January 23, 2005 Auf eins wäre ich mal gekommen $expire_text = "<br>".$ibforums->lang['this_poll_expires'].$std->get_date( $poll_data["expires"], 'SHORT' );; hier ist ein ; zuviel ! Share this post Link to post
Chaote 0 Report post Posted January 23, 2005 Der Mod haut einwandfrei hin... wenn es dir mal gaaaaannnnnnnzzzzzz langweilig sein sollte könntest ja nen proggi machen wo man dann genau die Start- und die Endzeit auswählen kann. Aber bis dahin bin ch jetzt mal glücklich.... Thx dir... :) Share this post Link to post