/inc/app/xed/boxes/properties/index.php

https://github.com/lux/sitellite · PHP · 123 lines · 97 code · 23 blank · 3 comment · 10 complexity · 08bec32396c1d4fa792782f96222e5c6 MD5 · raw file

  1. <?php
  2. loader_import ('saf.MailForm');
  3. loader_import ('saf.File.Directory');
  4. loader_import ('saf.HTML.CSS_Parser');
  5. global $cgi;
  6. if ($cgi->tag == 'xt:box') {
  7. $attrs = array (
  8. (object) array ('name' => 'name', 'typedef' => "type=text\nalt=Name"),
  9. (object) array ('name' => 'title', 'typedef' => 'type=hidden'),
  10. (object) array ('name' => 'style', 'typedef' => 'type=hidden'),
  11. );
  12. // parse box settings for custom attributes
  13. list ($app, $name) = explode ('/', $cgi->name, 2);
  14. $settings = loader_box_get_settings ($name, $app);
  15. foreach ($settings as $k => $v) {
  16. if ($k == 'Meta') {
  17. continue;
  18. }
  19. $attrs[] = (object) array ('name' => $k, 'typedef' => ini_write ($v));
  20. }
  21. //info ($settings);
  22. } else {
  23. $attrs = db_fetch_array (
  24. 'select * from xed_attributes where element = ? order by id asc',
  25. $cgi->tag
  26. );
  27. $defaults = db_fetch_array (
  28. 'select * from xed_attributes where element = ? order by id asc',
  29. 'default'
  30. );
  31. $attrs = array_merge ($attrs, $defaults);
  32. }
  33. $css = new CSS_Parser ();
  34. $classes = array ();
  35. $ids = array ();
  36. foreach (Dir::find ('*.css', 'inc/html/' . conf ('Server', 'default_template_set')) as $file) {
  37. $css->parse (@join ('', @file ($file)));
  38. $classes = array_merge ($classes, $css->getClasses ($cgi->tag));
  39. $ids = array_merge ($ids, $css->getIDs ($cgi->tag));
  40. }
  41. $classes = array_unique ($classes);
  42. $ids = array_unique ($ids);
  43. $form = new MailForm;
  44. ini_add_filter ('ini_filter_split_comma_single', array (
  45. 'rule 0', 'rule 1', 'rule 2', 'rule 3', 'rule 4', 'rule 5', 'rule 6', 'rule 7', 'rule 8',
  46. 'button 0', 'button 1', 'button 2', 'button 3', 'button 4', 'button 5', 'button 6', 'button 7', 'button 8',
  47. 'submitButtons',
  48. ));
  49. foreach ($attrs as $attr) {
  50. $w =& $form->createWidget ($attr->name, ini_parse ($attr->typedef, false));
  51. if (isset ($cgi->{$attr->name})) {
  52. $w->setDefault ($cgi->{$attr->name});
  53. }
  54. }
  55. ini_clear ();
  56. if (isset ($form->widgets['id'])) {
  57. $form->widgets['id']->setValues (
  58. array_merge (
  59. array ('' => '- ' . intl_get ('SELECT') . ' -'),
  60. assocify ($ids)
  61. )
  62. );
  63. }
  64. if (isset ($form->widgets['class'])) {
  65. $form->widgets['class']->setValues (
  66. array_merge (
  67. array ('' => '- ' . intl_get ('SELECT') . ' -'),
  68. assocify ($classes)
  69. )
  70. );
  71. }
  72. $w =& $form->addWidget ('hidden', 'ifname');
  73. $w->setValue ($cgi->ifname);
  74. $w =& $form->addWidget ('hidden', 'tag');
  75. $w->setValue ($cgi->tag);
  76. $w =& $form->addWidget ('template', 'tpl');
  77. $w->template = 'properties.spt';
  78. $w =& $form->addWidget ('msubmit', 'submit_button');
  79. $b1 =& $w->getButton ();
  80. $b1->setValues (intl_get ('OK'));
  81. //$b1->extra = 'onclick="return properties_ok (this.form)"';
  82. $b2 =& $w->addButton ('submit_button', intl_get ('Cancel'));
  83. $b2->extra = 'onclick="return properties_cancel (this.form)"';
  84. page_title (intl_get ('Editing Element') . ': ' . strtoupper ($cgi->tag));
  85. if ($form->invalid ($cgi)) {
  86. $form->setValues ($cgi);
  87. echo $form->show ();
  88. } else {
  89. $form->setValues ($cgi);
  90. $vals = $form->getValues ($cgi);
  91. $ifname = $vals['ifname'];
  92. unset ($vals['ifname']);
  93. $tag = $vals['tag'];
  94. unset ($vals['tag']);
  95. unset ($vals['tpl']);
  96. unset ($vals['submit_button']);
  97. echo template_simple ('properties_return.spt', array ('ifname' => $ifname, 'vals' => $vals));
  98. exit;
  99. }
  100. ?>