Bei neuer Abstimmung in einer Umfrage Thread als ungelesen?

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Shorty1968 »

Hallo Miriam,
Ich habe mir den Snippet eben mal eingebaut und leider geht er nicht so wie er soll,ich konnte als Admin ohne ein posting zu erstellen eine Abstimmung machen und als ich mich dann mit anderen TestUser angemeldet habe,war es so das diese die Umfrage so angezeigt bekommen haben,als hätten sie schon abgestimmt.
Ich möchte es hier noch mal ansprechen,weil es mal wider so aussieht als hätte ich das Problem alleine,das Post hier bezieht sich nur auf diesen Code:
Miriam hat geschrieben: finde in der viewtopic.php

Code: Alles auswählen

    // Can not vote at all if no vote permission
    $s_can_vote = ($auth->acl_get('f_vote', $forum_id) &&
        (($topic_data['poll_length'] != 0 && $topic_data['poll_start'] + $topic_data['poll_length'] > time()) || $topic_data['poll_length'] == 0) &&
        $topic_data['topic_status'] != ITEM_LOCKED &&
        $topic_data['forum_status'] != ITEM_LOCKED &&
        (!sizeof($cur_voted_id) ||
        ($auth->acl_get('f_votechg', $forum_id) && $topic_data['poll_vote_change']))) ? true : false;
tausche aus gegen:

Code: Alles auswählen

    //did user vote yet?
    if ($user->data['is_registered'])
    {
        $sql = 'SELECT count(post_id) AS posted
            FROM ' . POSTS_TABLE . '
            WHERE topic_id = ' . $topic_id . '
                AND poster_id = ' . $user->data['user_id'] . '
                AND post_approved = 1';
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrow($result);
        $s_did_post = (bool) $row['posted'];
        $db->sql_freeresult($result);
    }
    // Can not vote at all if no vote permission
    $s_can_vote = ($auth->acl_get('f_vote', $forum_id) &&
        (($topic_data['poll_length'] != 0 && $topic_data['poll_start'] + $topic_data['poll_length'] > time()) || $topic_data['poll_length'] == 0) &&
        $topic_data['topic_status'] != ITEM_LOCKED &&
        $topic_data['forum_status'] != ITEM_LOCKED &&
        $s_did_post &&
        (!sizeof($cur_voted_id) ||
        ($auth->acl_get('f_votechg', $forum_id) && $topic_data['poll_vote_change']))) ? true : false;
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Miriam »

Danke für den Hinweis, Shorty.

Alles nochmal auf Null.

Die Umsetzung sieht dann folgendermaßen aus:
Finde in der viewtopic.php

Code: Alles auswählen

    // Can not vote at all if no vote permission    
davor setze ein:

Code: Alles auswählen

    // did user vote yet?
    if ($user->data['is_registered'])
    {
        $sql = 'SELECT count(post_id) AS posted
            FROM ' . POSTS_TABLE . '
            WHERE topic_id = ' . $topic_id . '
                AND poster_id = ' . $user->data['user_id'] . '
                AND post_approved = 1';
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrow($result);
        $s_did_post = (bool) $row['posted'];
        $db->sql_freeresult($result);
    }
finde:

Code: Alles auswählen

        'S_DISPLAY_RESULTS'    => $s_display_results,
danach füge ein:

Code: Alles auswählen

        'S_DID_POST'        => $s_did_post,
In allen language/<sprache>/viewtiopic.php finde

Code: Alles auswählen

    'POLL_ENDED_AT'            => 'Umfrage endete am %s',
danach füge ein:

Code: Alles auswählen

    'POLL_INFO'                => 'Beitragserstellung in diesem Thema berechtigt zur Abstimmung',
In allen styles/<deine_styles>/template/viewtopic_body.html finde:

Code: Alles auswählen

            <!-- IF S_CAN_VOTE -->
                <dl style="border-top: none;">
                    <dt>&nbsp;</dt>
                    <dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
                </dl>
            <!-- ENDIF -->
tausche aus gegen:

Code: Alles auswählen

            <!-- IF S_CAN_VOTE -->
                <dl style="border-top: none;">
                    <dt>&nbsp;</dt>
                    <!-- IF not S_DID_POST -->
                    <dd class="resultbar"><a href="{U_POST_REPLY_TOPIC}" class="button1" />{L_POLL_INFO}</a></dd>
                    <!-- ELSE -->
                    <dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
                    <!-- ENDIF -->
                </dl>
            <!-- ENDIF -->
Leere den Cache und beachte auch: KB:tippstyles sowie KB:utf8bom.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Shorty1968 »

Danke Miriam nun scheint es zu Funktionieren,dann gebe ich auch noch eine Erweiterung zum besten. :wink:

*EDIT*
Musste meine Portal erweiterung zurück ziehen,den im Portal wurde nur der Info Text angezeigt und nicht der Abstimmungs Button,obwohl ein Beitrag durch den themen Start erstellt wurde und ich weiss noch nicht woran es liegt.

*EDIT2*
Ich bekomme es nicht in der Portal Box,kann mir dabei bitte jemand helfen.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Miriam »

Du solltest auch dazu sagen, dass es sich um die Board3portal Mod handelt.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Shorty1968 »

Ja sorry hast recht,aber leider bekomme ich es nicht hin.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Miriam »

Wo klemmt's denn, Shorty?

Pack mal auf den Tisch, was Du schon hast.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Shorty1968 »

OPTIONAL Board3 Portal Version 2.0.0b1,2.0.0 und 2.0.1

Öffne styles/prosilver/template/portal/modules/poll_center.html suche:

Code: Alles auswählen

<!-- IF poll.S_CAN_VOTE -->
						<dl style="border-top: none;">
							<dt>&nbsp;</dt>
							<dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
						</dl>
					<!-- ENDIF -->
Ersetze es mit:

Code: Alles auswählen

<!-- IF poll.S_CAN_VOTE -->
                    <dl style="border-top: none;">
                    <dt>&nbsp;</dt>
                    <!-- IF not S_DID_POST -->
                    <dd class="resultbar"><a href="{U_POST_REPLY_TOPIC}" class="button1" />{L_POLL_INFO_PORTAL}</a></dd>
                    <!-- ELSE -->
                    <dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
                    <!-- ENDIF -->
                    </dl>
                    <!-- ENDIF -->
Öffne portal/modules/portal_poll.php und suche:

Code: Alles auswählen

$s_can_vote = (((!sizeof($cur_voted_id) && $auth->acl_get('f_vote', $forum_id)) ||
                            ($auth->acl_get('f_votechg', $forum_id) && $data['poll_vote_change'])) &&
                            (($data['poll_length'] != 0 && $data['poll_start'] + $data['poll_length'] > time()) || $data['poll_length'] == 0) &&
                            $data['topic_status'] != ITEM_LOCKED &&
                            $data['forum_status'] != ITEM_LOCKED) ? true : false; 
Füge darüber ein:

Code: Alles auswählen

// did user vote yet?
    if ($user->data['is_registered'])
    {
        $sql = 'SELECT count(post_id) AS posted
            FROM ' . POSTS_TABLE . '
            WHERE topic_id = ' . $topic_id . '
                AND poster_id = ' . $user->data['user_id'] . '
                AND post_approved = 1';
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrow($result);
        $s_did_post = (bool) $row['posted'];
        $db->sql_freeresult($result);
    } 
In allen language/<sprache>/viewtiopic.php finde:

Code: Alles auswählen

'POLL_INFO'                => 'Beitragserstellung in diesem Thema berechtigt zur Abstimmung', 
Füge darunter ein:

Code: Alles auswählen

'POLL_INFO_PORTAL'      => 'Beitrag in diesem Thema berechtigt zur Abstimmung', 
Und klemmen denke ich tut es hier an diesem Code:

Code: Alles auswählen

// did user vote yet?
    if ($user->data['is_registered'])
    {
        $sql = 'SELECT count(post_id) AS posted
            FROM ' . POSTS_TABLE . '
            WHERE topic_id = ' . $topic_id . '
                AND poster_id = ' . $user->data['user_id'] . '
                AND post_approved = 1';
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrow($result);
        $s_did_post = (bool) $row['posted'];
        $db->sql_freeresult($result);
    } 
Es ist endweder an der Falschen stelle oder Passt nicht?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Miriam »

Hast Du vergessen, die Template Variable S_DID_POST zu definieren? Jedenfalls verwendest Du sie; sie ist aber nirgends in irgendeiner Weise mit einem Wert belegt worden.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Shorty1968
Mitglied
Beiträge: 1894
Registriert: 08.09.2011 17:37

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Shorty1968 »

Jetzt wo du es sagst,nein habe ich nicht versuche es gleich mal melde mich dann wider danke.

*EDIT*
Ich habe die Variable nun Definiert aber es ist immer noch so das der Info Text zu sehen ist und nicht der Abstimmungs Button.

Variable wurde wie Folgt definiert:
Öffne portal/modules/portal_poll.php finde:

Code: Alles auswählen

'S_POLL_ACTION'            => $portalvote_url, 
Füge darunter ein:

Code: Alles auswählen

'S_DID_POST'            => $s_did_post, 
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Bei neuer Abstimmung in einer Umfrage Thread als ungeles

Beitrag von Miriam »

Ich möchte Dein Augenmerk auf ein Detail lenken, das Dir evtl. entgangen ist:
<!-- IF poll.S_CAN_VOTE -->

Also wird S_CAN_VOTE in einer "Template-Schleife" aufgerufen / verarbeitet (diese heißt hier poll). Das sollte dann also auch mit S_DID_POST passieren.

Zum Bsp. so:
Finde in /portal/modules/portal_poll.php

Code: Alles auswählen

                    $template->assign_block_vars('poll', array(
                        'S_POLL_HAS_OPTIONS'    => $poll_has_options,
                        'POLL_QUESTION'            => $data['poll_title'],
                        'U_POLL_TOPIC'            => append_sid($phpbb_root_path . 'viewtopic.' . $phpEx . '?t=' . $topic_id . '&f=' . $forum_id),
                        'POLL_LENGTH'            => $data['poll_length'],
                        'TOPIC_ID'                => $topic_id,
                        'TOTAL_VOTES'            => $poll_total_votes,
                        'L_MAX_VOTES'            => ($data['poll_max_options'] == 1) ? $user->lang['MAX_OPTION_SELECT'] : sprintf($user->lang['MAX_OPTIONS_SELECT'], $data['poll_max_options']),
                        'L_POLL_LENGTH'            => ($data['poll_length']) ? sprintf($user->lang[($poll_end > time()) ? 'POLL_RUN_TILL' : 'POLL_ENDED_AT'], $user->format_date($poll_end)) : '',
                        'S_CAN_VOTE'            => $s_can_vote,
davor füge ein:

Code: Alles auswählen

                    // did user vote yet?
                    if ($user->data['is_registered'])
                    {
                        $sql = 'SELECT count(post_id) AS posted
                            FROM ' . POSTS_TABLE . '
                            WHERE topic_id = ' . $topic_id . '
                                AND poster_id = ' . $user->data['user_id'] . '
                                AND post_approved = 1';
                        $result = $db->sql_query($sql);
                        $row = $db->sql_fetchrow($result);
                        $s_did_post = (bool) $row['posted'];
                        $db->sql_freeresult($result);
                    }
danach füge ein:

Code: Alles auswählen

                        'S_DID_POST'            => $s_did_post,
                        'U_POST_REPLY_TOPIC'     => ($auth->acl_get('f_reply', $forum_id) || $user->data['user_id'] == ANONYMOUS) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=reply&f=$forum_id&t=$topic_id") : '',
(Ich habe mich mal hier nicht an die alphabetische Anordung gehalten; das solltest Du aber tun.)

In der styles/<deine styles/template/portal/modules/poll_center.html finde:

Code: Alles auswählen

                    <!-- IF poll.S_CAN_VOTE -->
                        <dl style="border-top: none;">
                            <dt>&nbsp;</dt>
                            <dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
                        </dl>
                    <!-- ENDIF -->
tausche aus gegen:

Code: Alles auswählen

                    <!-- IF poll.S_CAN_VOTE -->
                        <dl style="border-top: none;">
                        <dt>&nbsp;</dt>
                        <!-- IF not poll.S_DID_POST -->
                        <dd class="resultbar"><a href="{poll.U_POST_REPLY_TOPIC}" class="button1" />{L_POLL_INFO}</a></dd>
                        <!-- ELSE -->
                        <dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd>
                        <!-- ENDIF -->
                        </dl>
                    <!-- ENDIF -->

Diese Vorgehensweise funktioniert nur für das "Mittelmodul" des Portals. Für das "Side-Modul" mußt Du es noch etwas weiter "aufbohren".

Cache leeren, Template auffrischen... Naja, weißt Du ja alles schon. 8)
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“