RSS

zapisz się: RSS Artykuły

szukaj

Ankiety w technologii AJAX do sNews

Komentarze 2

Ankieta - checkboxDzisiaj kolejny bardzo przydatny mod do sNews. Mod pozwalający na przeprowadzenie ankiet/sond na naszej stronie. Jest on zrobiony w technologii AJAX. Autorem moda jest Matt Jones. Ja tylko dodałem tłumaczenie na polski język.

Ok, w takim razie lecimy. Najpierw ściągnij paczkę z tego linku. Następnie zrób kopie zapasowe plików "index.php", "snews.php", "PL.php" oraz "admin.js" - w nich będą robione zmiany, dlatego zrób sobie na wszelki wypadek kopie. Teraz możemy przejść do instalacji moda.

Krok 1. Wypakuj zawartość paczki i na początek otwórz plik "poll_process.php". Należy dokonać w nim zmian - wpisujemy dane do bazy danych naszego CMSa - takie same jak w pliku "snews.pl" są na początku.

include_once('../lang/PL.php');

$server = 'serwer_bazy_danych';
$dbuser = 'uzytkownik_bazy_danych';
$dbpass = 'haslo_bazy_danych';
$dbname = 'nazwa_bazy_danych';
$dbprefix = '';

Krok 2. Dodajemy do bazy danych naszego CMSa komendy z pliku "poll.sql". Możemy dodać je poprzez import pliku lub kopiując zawartość pliku i wklejeniu w naszym menadżerze baz danych w odpowiednie miejsce. Gdy dodamy już zawartość pliku "poll.sql" możemy go już usunąć - nie będzie już potrzebny. W naszej bazie danych powinny pojawić się dwie nowe tabele.

Krok 3. Umieszczamy rozpakowany folder "mod_poll" oraz całą jego zawartość w folderze instalacyjnym CMSa sNews - folder "mod_poll" ma się znaleźć w tym samym miejscu gdzie plik "snews.php".

Krok 4. Teraz zajmiemy się modyfikacją plików naszego CMSa. Najpierw otwieramy "index.php" i dodajemy w nim podświetloną linijkę jak poniżej:

<?php include('snews.php'); ?>
<?php include('mod_poll/poll_functions.php'); ?>

Następnie w tym samym pliku dodajemy w sekcji "head" (np. pod wywołaniem title()) następujący kod dodający plik JavaScriptu oraz styli:

<script type="text/javascript" src="mod_poll/poll.js"></script>
<link rel="stylesheet" href="mod_poll/poll_styles.css" type="text/css" />

Możemy już zapisać i zamknąć plik "index.php".

Krok 5. Otwieramy plik PL.php i dodajemy do niego kod( np. przed znacznikiem zamykającym ?>):

# Ajax Polls mod
    $l['polls'] = 'Menadżer ankiet';
    $l['snews_polls'] = 'Menadżer ankiet w technologii AJAX';
    $l['admin_poll'] = 'Edytuj ankietę';
    $l['poll_not_found'] = 'Błąd, ankieta nie istnieje';
    $l['poll_reset_msg'] = 'Wszystkie głosy zostaną usunięte! Osoby, które już zagłosowały będą miały nadal aktywne ciastko na swoim komputerze. Czy napewno chcesz usunąć wszystkie głosy?';
    $l['poll_delete_msg'] = 'Ankieta oraz wszystkie głosy zostaną usunięte, czy chcesz kontunuować?';
    $l['js_poll1'] = 'Wpisz numer ankiety (ID).';
    $l['poll'] = 'Ankieta';
    $l['poll_value'] = 'Dodaj ankietę';
    $l['poll_question'] = 'Wpisz pytanie ankiety w tym miejscu.';
    $l['poll_create'] = 'Stwórz nową ankietę';
    $l['poll_manage'] = 'Zarządzaj aktualnymi ankietami';
    $l['no_polls'] = 'Brak ankiet.';
    $l['poll_overview_question'] = 'Pytanie do ankiety';
    $l['poll_overview_color'] = 'Kolor słupków wyników ankiety';
    $l['poll_id'] = 'ID';
    $l['poll_edit_id'] = 'Edytuj ankietę ID #';
    $l['poll_answers'] = 'Odpowiedzi do ankiety';
    $l['poll_add_answer'] = 'Dodaj następną odpowiedź';
    $l['poll_save'] = 'Zapisz';
    $l['poll_delete'] = 'Usuń';
    $l['poll_reset'] = 'Zresetuj głosy';
    $l['poll_embed'] = 'Kody ankiety do zastosowania'; 
    $l['poll_embed_snews'] = 'Kod sNews:';
    $l['poll_embed_php'] = 'Kod PHP:';
    $l['poll_preview'] = 'Podgląd ankiety';
    $l['poll_votes_singular'] = 'głos';
    $l['poll_votes_plural'] = 'głosów';
    $l['poll_total_votes'] = 'Łączna ilość głosów: ';
    $l['poll_back_to'] = 'Wróć do ankiety';
    $l['poll_vote_button'] = 'Głosuj';
    $l['poll_view_results'] = 'Zobacz wyniki';

Krok 6. Otwieramy plik "admin.js" oraz dodajemy w nim zaznaczony kod:

// function use end
 case 'poll':// adding function insertion
 url = prompt("<?php echo l('js_poll1'); ?>", '');
 start = url !=null ? '[func]show_poll:|:'+url+',0[\/func]' : '';
 end = '';
 break;
 case 'include':

Uwaga! Jeśli używasz innego separatora w wywoływanych funkcjach w sNews to zmień w powyższym fragmencie ten separator. Ja przykładowo używam moda intro, który wymaga zmiany separatora. Więcej możesz przeczytać o modzie intro i separatorze w tym wpisie.Separator do ewentualnej zmiany zaznaczyłem poniżej:

start = url !=null ? '[func]show_poll:|:'+url+',0[\/func]' : '';

Dodatkowo musisz zmienić wówczas jeszcze separator w pliku "poll_admin.php". Zaznaczyłem go poniżej:

echo '<p>'.l('poll_embed_snews').'<br /><input type="text" class="text" value="[func]show_poll:|:'.$pid.',0[/func]" onfocus="this.select();" /></p>';

Krok 7. Kolejnym posunięciem będzie modyfikacja pliku "snews.php". Otwieramy go na mniej więcej na początku pliku dodajemy zaznaczony fragment:

if (_ADMIN) {$l['cat_listSEF'] .= ',administration,admin_category,admin_article,admin_poll,snews_polls,article_new,extra_new,page_new,snews_categories,snews_articles,extra_contents,snews_pages,snews_settings,snews_files,logout,groupings,admin_groupings';}

Następnie w funkcji "center" dodajemy zaznaczony kod:

case 'snews_files':
	files(); return; break;
case 'admin_poll':
    	polls('edit'); return; break;
case 'snews_polls':
  	polls('home'); return; break;
case 'process':
	processing(); return; break;

Następnym ruchem będzie dodanie podświetlonego niżej fragmentu w funkcji "administration":

echo '<p><a href="snews_settings/">'.l('settings').'</a></p>
 <p><a href="snews_files/">'.l('files').'</a></p>
 <p><a href="snews_polls/">'.l('polls').'</a></p>
 </fieldset></div>

Następnie dodamy jeszcze przycisk ankiety dodając zaznaczony fragment jak poniżej:

$insert = array('img', 'link', 'include', 'func','intro','poll');

Ostatnim posunięciem będzie dodanie funkcji na koniec pliku "snews.php" tuż przed zamykającym znacznikiem ?>:

// Ajax POLLS
function polls($option) {
    if (file_exists('mod_poll/poll_admin.php')) {
        include_once('mod_poll/poll_admin.php');
        do_polls($option);
    } else {
        echo "<h2>Wystąpił błąd!</h2><p>Nie odnaleziono pliku dodatku!</p>";
    }
}
Czy lubisz ankiety?
Tak
Niektóre
Nie

Gotowe! Mod z ankietami powinien działać. Jeśli chcesz możesz też zmienić style w pliku "poll_styles.css". W panelu admina masz dwie wersje kodu do wklejenia. Pierwsza jest przeznaczona do dodania ankiety przykładowo bezpośrednio w artykule, a druga do zastosowania w pliku "index.php" - możesz ankiety umieszczać gdzie chcesz. W panelu admina masz menadżer zarządzania ankietami. Przykładową ankietę masz obok.

Podziel się

Bookmark and Share

  1. Sylwek
    Sylwek napisał(a):

    Nie działa mi to jak umieszczę na stronie głównej.
    Ale w podglądzie w panelu admnia działa.
    Gdzie mogę mieć błąd?

    www.ilo-mhnr.ugu.pl

  2. Sylwek
    Sylwek napisał(a):

    Już rozwiązałem problem. Nie b rozumiałem te separatory. I zamiast "," użyłem "*";

    Wszystko działa

Komentowanie zostało zablokowane