Merge branch 'master' of nevergone
[drupal_tuksi02.git] / nevergone_1.module
blob6ae79dde17a60918f786d64ec23b476e68d032bc
1 <?php
2 // $Id$
4 /*
5 Házi feladat kiírás:
6 http://www.tanarurkerem.hu/node/344
8 Készíts modult, mely a következő widgetet/kisalkalmazást megjeleníti a következő módon:
10   1. A MODULNEVE útvonalon egy oldalként
11   2. Egy blokként amit bárhova kirakhatunk
12   3. Egy szűrőként, ami a [widget] szöveget lecseréli a widgetre.
14 A widget:
16 <script type="text/javascript" src="http://feeds.delicious.com/v2/js/networkbadge/tanarurkerem?showadd&icon=s&name&itemcount&nwcount&fancount"></script>
17  */
20 /* modul azonosító konstansként */
21 define('MODULE_ID', 'nevergone_1');
23 /* felhasználónév */
24 define('WIDGET_USER', 'tanarurkerem');
26 /* widget kódja */
27 define('WIDGET', '<script type="text/javascript" src="http://feeds.delicious.com/v2/js/networkbadge/' . WIDGET_USER . '?showadd&icon=s&name&itemcount&nwcount&fancount"></script>');
30 /* hook_menu() implementáció */
31 function nevergone_1_menu() {
32   $items['admin/content/' . MODULE_ID] = array(
33     'title' => MODULE_ID . ' #tuksi02 settings',
34     'page callback' => drupal_get_form,
35     'page arguments' => array('nevergone_1_settings_form'),
36     'access arguments' => array('administer access'),
37   );
38   $items[MODULE_ID] = array(
39     'title' => MODULE_ID . ' #tuksi02',
40     'page callback' => 'nevergone_1_page',
41     'access arguments' => array('access content'),
42   );
43   return $items;
47 /* modul admin oldalán megjelenő form */
48 function nevergone_1_settings_form() {
49   $form['widget'] = array( /* beviteli mező */
50     '#type' => 'textfield',
51     '#title' => MODULE_ID . ' widget felhasználó neve',
52     '#default_value' => variable_get('nevergone_1_widget', WIDGET_USER),
53     '#description' => check_plain(str_replace(WIDGET_USER, variable_get('nevergone_1_widget', ''), WIDGET)),
54   );
55   $form['submit'] = array( /* "Save configuration" gomb */
56     '#type' => 'submit',
57     '#value' => t('Save configuration'),
58   );
59   $form['reset'] = array( /* "Reset to defaults" gomb */
60     '#type' => 'submit',
61     '#value' => t('Reset to defaults'),
62     '#submit' => array('nevergone_1_settings_form_clear'), /* reset form */
63   );
64   return $form;
68 /* modul admin form törlése */
69 function nevergone_1_settings_form_clear($form, &$form_state) {
70   $form_state['rebuild'] = TRUE; /* újra kell építeni a formot */
71   $form_state['values']['widget'] = WIDGET_USER; /* eredeti érték */
72   variable_set('nevergone_1_widget', WIDGET_USER);
73   drupal_flush_all_caches(); /* gyorstár ürítése */
77 /* modul admin form ellenőrzése: a felhasználónév nem lehet üres */
78 function nevergone_1_settings_form_validate($form, &$form_state) {
79   if (empty ($form_state['values']['widget'])) {
80     form_error($form['widget'], 'Nem lehet üres a felhasználónév!');
81   }
85 /* modul admin form elküldése: felhasználónév mentése */
86 function nevergone_1_settings_form_submit($form, &$form_state) {
87   variable_set('nevergone_1_widget', $form_state['values']['widget']);
88   drupal_flush_all_caches(); /* gyorstár ürítése */
92 /* hook_theme implementáció */
93 function nevergone_1_theme($existing, $type, $theme, $path) {
94   return array(
95     'nevergone_1_page' => array( /* sminkeléshez használt függvény neve: theme_nevergone_1_page(), és az átadott paraméterek */
96       'arguments' => array('widget' => NULL),
97     ),
98     'nevergone_1_block' => array(
99       'arguments' => array('widget' => NULL),
100     ),
101   );
105 /* oldal sminkeléséhez használt függvény */
106 function theme_nevergone_1_page($widget) {
107   return $widget;
111 /* modul oldalának megjelenítése */
112 function nevergone_1_page() {
113   $widget = variable_get('nevergone_1_widget', '');
114   $widget = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
115   return theme('nevergone_1_page', $widget); /* sminkeléssel generált eredmény */
119 /* hook_block() implementáció */
120 function nevergone_1_block($op = 'list', $delta = 0, $edit = array()) {
121   switch ($op) {
122     case 'list': /* blokkok listája */
123       $blocks['0'] = array(
124         'info' => 'Blokktégla (nevergone_1)',
125       );
126       return $blocks;
127       break;
128     case 'view': /* blokk tartalma */
129       $blocks = array();
130       /* nézzük a delta-t, hátha egyszer több blokk lesz a modulban */
131       switch ($delta) {
132         case '0':
133           $widget = variable_get('nevergone_1_widget', '');
134           $widget = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
135           $blocks['subject'] = MODULE_ID;
136           $blocks['content'] = theme('nevergone_1_block', $widget);
137           break;
138       }
139       return $blocks;
140       break;
141   }
145 /* blokk sminkeléséhez használt függvény */
146 function theme_nevergone_1_block($widget) {
147   return $widget;
151 /* hook_filter() implementáció */
152 function nevergone_1_filter($op, $delta = 0, $format = -1, $text = '', $cache_id = 0) {
153   switch ($op) {
154     case 'list':
155       $filters = array(
156         '0' => 'nevergone_1 filter',
157       );
158       return $filters;
159       break;
160     case 'prepare':
161       return $text;
162       break;
163     case 'process':
164       $widget_code = str_replace(WIDGET_USER, check_plain(variable_get('nevergone_1_widget', '')), WIDGET);
165       return str_replace('[widget]', $widget_code, $text);
166       break;
167     case 'no cache':
168       return TRUE; /* cache kikapcsolása */
169       break;
170   }
174 /* hook_filter_tips() implementáció */
175 function nevergone_1_filter_tips($delta, $format, $long = FALSE) {
176   switch ($delta) {
177     case '0':
178       return 'nevergone_1 példafilter leírása';
179       break;
180   }