Artikelfilter

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Antworten
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Artikelfilter

Beitrag von MarkusR »

Dateien und Bilder lassen sich ja wunderbar filtern, was aufgrund der möglichen hohen Anzahl auch sinnvoll ist.

Leider existiert sowas nicht für die Artikel. Da ich aber Rubriken mit fast 600(!) Artikeln habe ist das Klicken durch mehrere Seiten echt nervig.

Aber glücklicherweise hatte mich ein Kunde mit einem sog. Artikelfilter beauftragt und stellt diesen auch der "ConPresso-Gemeinde" zur Verfügung.

In der Anlage ist die modifizierte articles.php.

Wer in dieser noch andere Änderungen vorgenommen hat, modifiziert diese von Hand folgendermaßen:

SUCHE (ab Zeile 800)

Code: Alles auswählen

        $_q = "FROM ".CPO_NEWS." "
             ."WHERE artikel_archiv=0 "
             ."AND rubric_id='".addslashes($_SESSION['SID_rubric_id'])."' ";
ERSETZEN MIT

Code: Alles auswählen

		// Start Artikelfilter Teil 1 *****************
		switch ($_REQUEST['action']) {
		case 'togglefilter':
			$_SESSION['filter_files']['enabled'] = !$_SESSION['filter_files']['enabled'];
			break;
		case 'setfilter':
			$_SESSION['SID_pagers'][$pager] = 0;

			$_SESSION['filter_files']['phrase'] = $_POST['phrase'];
			break;
		}
		if (!$_SESSION['filter_files']['enabled']) {
			$_SESSION['filter_files']['phrase'] = '';
		}

		$join_phrase = '';
		$q_phrase = '';
		if ($_SESSION['filter_files']['phrase']) {
			$join_phrase .= "LEFT JOIN ".CPO_CONTENT_TEXT." t ON ".CPO_NEWS.".nr = t.article_id "
							."LEFT JOIN ".CPO_CONTENT_HTML." h ON ".CPO_NEWS.".nr = h.article_id "
							."LEFT JOIN ".CPO_CONTENT_URLS." u ON ".CPO_NEWS.".nr = u.article_id ";

			$q_phrase .= "AND (titel LIKE '%".addslashes($_SESSION['filter_files']['phrase'])."%' "
						."OR commentary LIKE '%".addslashes($_SESSION['filter_files']['phrase'])."%' "
						."OR keywords LIKE '%".addslashes($_SESSION['filter_files']['phrase'])."%' "
						."OR t.text LIKE '%".addslashes($_SESSION['filter_files']['phrase'])."%' "
						."OR h.html LIKE '%".addslashes($_SESSION['filter_files']['phrase'])."%' "
						."OR u.urltext LIKE '%".addslashes($_SESSION['filter_files']['phrase'])."%') "
						."GROUP BY ".CPO_NEWS.".nr ";
		}

        $_q = "FROM ".CPO_NEWS." "
			 .$join_phrase
             ."WHERE artikel_archiv=0 "
             ."AND rubric_id='".addslashes($_SESSION['SID_rubric_id'])."' "
			 .$q_phrase;
		// Ende Artikelfilter Teil 1 *****************
SUCHE

Code: Alles auswählen

        printPageHeader(
            __('Work on articles'),
            __('In this view you can choose the article you want to manage.')
        );
DANACH EINFÜGEN

Code: Alles auswählen

		// Start Artikelfilter Teil 2 *****************
		if (!$_SESSION['filter_files']['enabled']) {
			print('<table style="width: 100%;" class="colored filter"><thead>');
			print('<tr>');
			printf('<th><span><a href="%1$s">'
				  .'<img src="'.SKIN_URL.'sym_filteron.gif" width="13" height="13" style="vertical-align: text-bottom;" alt="%2$s" title="%2$s" ></a>'
				  .'&nbsp;<a href="%1$s">%2$s</a>'.help('').'</span></th>',
				$_SERVER['PHP_SELF'].'?action=togglefilter',
				htmlspecialchars(__('Enable filter')));
			print('</tr></table>');
		} else {
			print('<table style="width: 100%;" class="colored"><thead>');
			print('<tr>');
			printf('<th colspan="3"><span><a href="%1$s">'
				  .'<img src="'.SKIN_URL.'sym_filteroff.gif" width="13" height="13" style="vertical-align: text-bottom;" alt="%2$s" title="%2$s" ></a>'
				  .'&nbsp;<a href="%1$s">%2$s</a>'.help('').'</span></th>',
				$_SERVER['PHP_SELF'].'?action=togglefilter',
				htmlspecialchars(__('Disable filter')));
			print('</tr></thead><tbody><tr>');

			print('<form method="post" action="'.$_SERVER["PHP_SELF"].' " name="newsentry">');
			print('<td class="leftrow">');
				print(__('Filter by phrase:').'</td><td>');
				printf('<input type="text" name="%s" value="%s" class="inputwidth">'.help(''),
					'phrase',
					htmlspecialchars($_SESSION['filter_files']['phrase']));
			print('</td></tr><td>&nbsp;</td><td>');
				print('<input type="hidden" name="action" value="setfilter">');
				print('<input type="submit" class="button" value="'.htmlspecialchars(__('Set filter parameters')).'">');
			print('</td>');
			print('</form>');
			print('</tr></tbody></table>');
		}
		// Ende Artikelfilter Teil 2 *****************
SUCHE

Code: Alles auswählen

        if ($_SESSION['SID_stufe2']==1 && $cpoRubricSettings['sorting']=='sort_id desc') { 
ERSETZEN MIT

Code: Alles auswählen

		// Start Artikelfilter Teil 3 *****************
        if ($_SESSION['SID_stufe2']==1 && $cpoRubricSettings['sorting']=='sort_id desc' && $_SESSION['filter_files']['phrase'] == '') { 
 		// Ende Artikelfilter Teil 3 *****************
SUCHE (ein paar Zeilen danach kommt der gleiche Code nochmal!)

Code: Alles auswählen

            if ($_SESSION['SID_stufe2']==1 && $cpoRubricSettings['sorting']=='sort_id desc') { 
ERSETZEN MIT

Code: Alles auswählen

			// Start Artikelfilter Teil 4 *****************
            if ($_SESSION['SID_stufe2']==1 && $cpoRubricSettings['sorting']=='sort_id desc' && $_SESSION['filter_files']['phrase'] == '') {
			// Ende Artikelfilter Teil 4 *****************
Nicht wundern: Der eingegebene Suchbegriff wird auch beim Dateifilter und umgekehrt benutzt!
Dateianhänge
articles.zip
(11.11 KiB) 666-mal heruntergeladen
artikelfilter.gif
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Rappi
ConPresso-User
Beiträge: 97
Registriert: 05.05.2006 11:15
Wohnort: Magdeburg
Hat sich bedankt: 20 Mal
Danksagung erhalten: 1 Mal

Beitrag von Rappi »

Die Funktion habe ich soeben bei mir eingebaut.

Das ist eine super Idee von dir, damit erspare ich mit viel Arbeit.

weiter so...
Marko Rappholz
Benutzeravatar
balu
ConPresso-Entwickler
Beiträge: 1748
Registriert: 01.01.1970 01:00
Hat sich bedankt: 81 Mal
Danksagung erhalten: 133 Mal

Beitrag von balu »

Hi Markus,

schoenes Feature! Aber mir kam gerade (beim schnellen Ueberfliegen) der Gedanke - wie verhaelt es sich, wenn die manuelle Sortierung aktiv ist?

Sehe ich das richtig, dass die Sortierung abgeschaltet wird, wenn man den Filter aktiviert?

Balu
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Genau!

Weil man sonst ja blind Plätze wechseln würde. Oder man glaubt, daß es nicht funktioniert, weil sich die Artikel nicht bewegen (weil ihre "Nachbarn" ja ausgeblendet sind).

Es haben sich schon genügend Leute in Excel bei aktiven Filtern komplexe Tabellen zerschossen :twisted:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

Hallo MarkusR,

hast du evtl. auch einen Ansatz für so einen Filter bei "Benutzer bearbeiten"??

Da es mir evtl. bald so gehen wird das ich mehrere Hundert User haben werde. Und da wäre so ein Filter auch nicht schlecht ...
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Nein.
Ich warte noch darauf, daß mich jemand mit so vielen Usern mit der Entwicklung beauftragt (wie das ja auch beim Artikelfilter war).
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Antworten