Update module to new Hallinta system
[misc/hallinta-metro] / ordersatz_pos.php
index 4820c6c..d5ce686 100644 (file)
@@ -20,9 +20,22 @@ if (substr($_SERVER["SCRIPT_FILENAME"],-10) == '/index.php' &&
 }
 
 if (!$done) {
+  Actions::instance()->addLink(new Link(array('id' => 'btn_finish',
+                                               'icon' => 'masks/metro/hp_folder_finished.png',
+                                               'title' => 'Ordersatz Abschließen und Versenden',
+                                               'function' => 'confirm_finish')));
+  Actions::instance()->addLink(new Link(array('id' => 'btn_pdf',
+                                               'icon' => 'masks/metro/pdf_document.png',
+                                               'title' => 'PDF Vorschau',
+                                               'function' => 'build_pdf')));
+  Actions::instance()->addLink(new Link(array('id' => 'btn_import',
+                                               'icon' => 'masks/metro/import.png',
+                                               'title' => 'Neue Artikel importieren',
+                                               'function' => 'import_articles')));
+
   $jscode = <<<EOC
-grid_column_edit[1] = {
-    default_menu: false,
+Hallinta.registerGridMenu('main', 1, {
+    defaultMenu: false,
     width: '9em',
     values: [
             ['löschen', '', 0],
@@ -38,21 +51,17 @@ grid_column_edit[1] = {
             ['12 mal bestellen', '12', 12],
             ['Wert eingeben', 'Bitte geben Sie die gewünschte Menge ein', 'prompt']
             ]
-};
+      });
 
 function build_pdf_callback(data)
 {
     info('PDF erstellt');
-    window.open('ajax/ajax.php?tmpdir='+data.tmpdir+'&source=metro__ordersatz_pos&func=file&name=download','_blank');
+    window.open('ajax/ajax.php?tmpdir='+data.tmpdir+'&source='+Hallinta.pageSource+'&func=file&name=download','_blank');
 }
 
 function build_pdf()
 {
-  var source = document.getElementById('source');
-  if (!source) return false;
-
-  var parms = 'source=' + source.innerHTML + '&callback=pdf';
-  ajax_request('function', parms, build_pdf_callback);
+  ajax_request('function', 'callback=pdf', build_pdf_callback);
   return false;
 }
 
@@ -66,13 +75,10 @@ function finish_callback(data)
   }
 }
 
-function finish()
+function confirm_finish()
 {
-  var source = document.getElementById('source');
-  if (!source) return false;
-
-  var parms = 'source=' + source.innerHTML + '&callback=send';
-  ajax_request('function', parms, finish_callback);
+  if (confirm("Bei Abschluß wird ein Fax zu Metro und eine Kopie per Mail an den Koch geschickt."))
+    ajax_request('function', 'callback=send', finish_callback);
   return false;
 }
 
@@ -82,7 +88,7 @@ function import_articles_callback(data)
     info('Ordersatz aktualisiert');
 
     if (data.count > 0)
-      grid_update(grid);
+      grid_update(Hallinta.grid);
 
     confirm(data.count + ' Artikel zum Ordersatz hinzugefügt.');
   }
@@ -90,29 +96,14 @@ function import_articles_callback(data)
 
 function import_articles()
 {
-  var source = document.getElementById('source');
-  if (!source) return false;
-
-  var parms = 'source=' + source.innerHTML + '&callback=import';
-  ajax_request('function', parms, import_articles_callback);
+  ajax_request('function', 'callback=import', import_articles_callback);
   return false;
 }
 
 EOC;
-  $javascript->add($jscode);
+  JavaScript::instance()->add($jscode);
 }
 
-$buttons = <<<EOC
-<p style="margin-top: 0px; margin-bottom: 4px; text-align: center;">
-<button class="custom" onclick="return import_articles()">Artikel importieren</button>
-&nbsp;
-<button class="custom" onclick="return build_pdf()">PDF erstellen</button>
-&nbsp;
-<button class="custom" onclick="return finish()">Abschließen</button>
-<br>Bei Abschluß wird ein Fax zu Metro und eine Kopie per Mail an den Koch geschickt.
-</p>
-EOC;
-
 function get_title($id)
 {
   global $db;
@@ -142,7 +133,7 @@ $mask = array(
                              'anzahl' => array(
                                            'name' => 'Anzahl',
                                            'width' => 60,
-                                           'specs' => "ClassName: 'alignrightpad'",
+                                           'specs' => array('ClassName' => 'alignrightpad'),
                                            ),
                              'artnr' => array(
                                            'name' => 'Artnr',
@@ -152,18 +143,19 @@ $mask = array(
                              'menge' => array(
                                            'name' => 'Menge',
                                            'width' => 60,
-                                           'specs' => "ClassName: 'alignrightpad', filterUI: 't2'",
+                                           'filter' => 't2',
+                                           'specs' => array('ClassName' => 'alignrightpad'),
                                            ),
                              'bezeichnung' => array(
                                            'name' => 'Bezeichnung',
                                            'width' => 300,
-                                           'specs' => "filterUI: 't'",
+                                           'filter' => 't',
                                            ),
                              'preis' => array(
                                            'name' => 'Preis',
                                            'width' => 60,
                                            'type' => 'number',
-                                           'specs' => "decPlaces: 2, ClassName: 'alignrightpad'",
+                                           'specs' => array('decPlaces' => 2, 'ClassName' => 'alignrightpad'),
                                            'sql' => '(SELECT preis * ((100 + steuersatz)/100) FROM metro_artikel_preis ' .
                                                     'WHERE artikel = metro_artikel.id ORDER BY datum DESC LIMIT 1)',
                                            ),
@@ -178,19 +170,21 @@ $mask = array(
                              'hersteller' => array(
                                            'name' => 'Hersteller',
                                            'width' => 80,
-                                           'specs' => "filterUI: 't4'",
+                                           'filter' => 't4',
                                            ),
                              'vpe' => array(
                                            'name' => 'Einheit',
                                            'width' => 70,
-                                           'specs' => "ClassName: 'aligncenter', filterUI: 's'",
+                                           'filter' => 's',
+                                           'specs' => array('ClassName' => 'aligncenter'),
                                            'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_vpe','id','name').", 0, '')",
                                            'distinct' => "SELECT DISTINCT vpe,metro_vpe.name FROM metro_artikel JOIN metro_vpe ON vpe = metro_vpe.id ORDER BY name",
                                            ),
                              'abteilung' => array(
                                            'name' => 'Abteilung',
                                            'width' => 80,
-                                           'specs' => "ClassName: 'aligncenter', filterUI: 's'",
+                                           'filter' => 's',
+                                           'specs' => array('ClassName' => 'aligncenter'),
                                            'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','name').", 0, '')",
                                            'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.name FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY name",
                                            'visible' => false,
@@ -199,19 +193,13 @@ $mask = array(
                                            'name' => 'Gang',
                                            'width' => 50,
                                            'sql' => 'abteilung',
-                                           'specs' => "ClassName: 'aligncenter', filterUI: 's'",
+                                           'filter' => 's',
+                                           'specs' => array('ClassName' => 'aligncenter'),
                                            'control' => "new Rico.TableColumn.lookup(".grid_lookup_sql('metro_abteilung','id','gang').", 0, '')",
                                            'distinct' => "SELECT DISTINCT abteilung,metro_abteilung.gang FROM metro_artikel JOIN metro_abteilung ON abteilung = metro_abteilung.id ORDER BY gang",
                                            'visible' => false,
                                            ),
                              ),
-             'edit' => array(
-                             'buttons' => array(
-                                           'type' => 'html',
-                                           'code' => $buttons,
-                                           'sql' => false,
-                                           ),
-                             ),
              'callbacks' => array(
                                   'cellsave' => cb_cellsave,
                                   'pdf' => cb_pdf,