/administrator/components/com_acymailing/views/filter/view.html.php

https://github.com/Shigaru/shigaru · PHP · 138 lines · 134 code · 0 blank · 4 comment · 17 complexity · bed3b04b629682182be0a894a207dd3a MD5 · raw file

  1. <?php
  2. /**
  3. * @copyright Copyright (C) 2009-2010 ACYBA SARL - All rights reserved.
  4. * @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
  5. */
  6. defined('_JEXEC') or die('Restricted access');
  7. ?>
  8. <?php
  9. class FilterViewFilter extends JView
  10. {
  11. function display($tpl = null)
  12. {
  13. $function = $this->getLayout();
  14. if(method_exists($this,$function)) $this->$function();
  15. parent::display($tpl);
  16. }
  17. function form(){
  18. $filid = acymailing::getCID('filid');
  19. $filterClass = acymailing::get('class.filter');
  20. if(!empty($filid)){
  21. $filter = $filterClass->get($filid);
  22. }else{
  23. $filter = null;
  24. $filter->action = JRequest::getVar('action');
  25. $filter->filter = JRequest::getVar('filter');
  26. $filter->published = 1;
  27. }
  28. JPluginHelper::importPlugin('acymailing');
  29. $this->dispatcher = &JDispatcher::getInstance();
  30. $typesFilters = array();
  31. $typesActions = array();
  32. $outputFilters = implode('',$this->dispatcher->trigger('onAcyDisplayFilters',array(&$typesFilters)));
  33. $outputActions = implode('',$this->dispatcher->trigger('onAcyDisplayActions',array(&$typesActions)));
  34. $typevaluesFilters = array();
  35. $typevaluesActions = array();
  36. $typevaluesFilters[] = JHTML::_('select.option', '',JText::_('FILTER_SELECT'));
  37. $typevaluesActions[] = JHTML::_('select.option', '',JText::_('ACTION_SELECT'));
  38. $doc =& JFactory::getDocument();
  39. $js = "function updateFilter(filterNum){";
  40. foreach($typesFilters as $oneType => $oneName){
  41. $typevaluesFilters[] = JHTML::_('select.option', $oneType,$oneName);
  42. $js .= "filterArea = 'filter'+filterNum+'$oneType';
  43. if(window.document.getElementById(filterArea)){window.document.getElementById(filterArea).style.display = 'none';}";
  44. }
  45. $js .= "filterArea = 'filter'+filterNum+window.document.getElementById('filtertype'+filterNum).value;
  46. if(window.document.getElementById(filterArea)){window.document.getElementById(filterArea).style.display = 'block';}
  47. }";
  48. $js .= "function updateAction(actionNum){";
  49. foreach($typesActions as $oneType => $oneName){
  50. $typevaluesActions[] = JHTML::_('select.option', $oneType,$oneName);
  51. $js .= "actionArea = 'action'+actionNum+'$oneType';
  52. if(window.document.getElementById(actionArea)){window.document.getElementById(actionArea).style.display = 'none';}";
  53. }
  54. $js .= "actionArea = 'action'+actionNum+window.document.getElementById('actiontype'+actionNum).value;
  55. if(window.document.getElementById(actionArea)){window.document.getElementById(actionArea).style.display = 'block';}
  56. }";
  57. $js .= "var numFilters = 0;
  58. var numActions = 0;
  59. function addFilter(){
  60. var newdiv = document.createElement('div');
  61. newdiv.id = 'filter'+numFilters;
  62. newdiv.className = 'plugarea';
  63. newdiv.innerHTML = document.getElementById('filters_original').innerHTML.replace(/__num__/g, numFilters);
  64. document.getElementById('allfilters').appendChild(newdiv); updateFilter(numFilters); numFilters++; }
  65. function addAction(){
  66. var newdiv = document.createElement('div');
  67. newdiv.id = 'action'+numActions;
  68. newdiv.className = 'plugarea';
  69. newdiv.innerHTML = document.getElementById('actions_original').innerHTML.replace(/__num__/g, numActions);
  70. document.getElementById('allactions').appendChild(newdiv); updateAction(numActions); numActions++; }";
  71. $js .= "window.addEvent('domready', function(){ addFilter(); addAction(); });";
  72. $js .= "function submitbutton(pressbutton){
  73. if (pressbutton != 'save') {
  74. submitform( pressbutton );
  75. return;
  76. }
  77. if(window.document.getElementById('filterinfo').style.display == 'none'){
  78. window.document.getElementById('filterinfo').style.display = 'block';
  79. try{allspans = window.document.getElementById('toolbar-save').getElementsByTagName(\"span\"); allspans[0].className = 'icon-32-apply';}catch(err){}
  80. return false;}
  81. if(window.document.getElementById('title').value.length < 2){alert('".JText::_('ENTER_TITLE',true)."'); return false;}
  82. submitform( pressbutton );}";
  83. $doc->addScriptDeclaration( $js );
  84. $js = '';
  85. $data = array('action','filter');
  86. foreach($data as $datatype){
  87. if(empty($filter->$datatype)) continue;
  88. foreach($filter->{$datatype}['type'] as $num => $oneType){
  89. if(empty($oneType)) continue;
  90. $js .= "while(!document.getElementById('".$datatype."type$num')){add".ucfirst($datatype)."();}
  91. document.getElementById('".$datatype."type$num').value= '$oneType';
  92. update".ucfirst($datatype)."($num);";
  93. if(empty($filter->{$datatype}[$num][$oneType])) continue;
  94. foreach($filter->{$datatype}[$num][$oneType] as $key => $value){
  95. $js .= "document.adminForm.elements['".$datatype."[$num][$oneType][$key]'].value = '".addslashes($value)."';";
  96. }
  97. }
  98. }
  99. $listid = JRequest::getInt('listid');
  100. if(!empty($listid)){
  101. $js .= "document.getElementById('actiontype0').value = 'list'; updateAction(0); document.adminForm.elements['action[0][list][selectedlist]'].value = '".$listid."';";
  102. }
  103. $doc->addScriptDeclaration( "window.addEvent('domready', function(){ $js });" );
  104. $triggers = array();
  105. $triggers['daycron'] = JText::_('AUTO_CRON_FILTER');
  106. $triggers['subcreate'] = JText::_('ON_USER_CREATE');
  107. $triggers['subchange'] = JText::_('ON_USER_CHANGE');
  108. $this->dispatcher->trigger('onAcyDisplayTriggers',array(&$triggers));
  109. $name = empty($filter->name) ? '' : ' : '.$filter->name;
  110. acymailing::setTitle(JText::_('ACY_FILTER').$name,'filter','filter&task=edit&filid='.$filid);
  111. $bar = & JToolBar::getInstance('toolbar');
  112. $bar->appendButton( 'Confirm', JText::_('PROCESS_CONFIRMATION'), 'process', JText::_('PROCESS'), 'process', false, false );
  113. JToolBarHelper::divider();
  114. if(acymailing::level(3)){
  115. $bar->appendButton( 'Popup', 'loadfilter', JText::_('ACY_LOAD'), acymailing::completeLink("filter&task=load",true),750,550);
  116. JToolBarHelper::spacer();
  117. JToolBarHelper::save();
  118. if(!empty($filter->filid)) $bar->appendButton( 'Link', 'new', JText::_('NEW'), acymailing::completeLink('filter&task=edit&filid=0') );
  119. }
  120. $bar->appendButton( 'Link', 'cancel', JText::_('CLOSE'), acymailing::completeLink('list') );
  121. JToolBarHelper::divider();
  122. $bar->appendButton( 'Pophelp','filter');
  123. $this->assignRef('typevaluesFilters',$typevaluesFilters);
  124. $this->assignRef('typevaluesActions',$typevaluesActions);
  125. $this->assignRef('outputFilters',$outputFilters);
  126. $this->assignRef('outputActions',$outputActions);
  127. $this->assignRef('filter',$filter);
  128. $this->assignRef('subid',JRequest::getString('subid'));
  129. $this->assignRef('triggers',$triggers);
  130. }
  131. function load(){
  132. $db =& JFactory::getDBO();
  133. $db->setQuery('SELECT * FROM #__acymailing_filter ORDER BY `published` DESC, `filid` DESC');
  134. $filters = $db->loadObjectList();
  135. $this->assignRef('toggleClass',acymailing::get('helper.toggle'));
  136. $this->assignRef('filters',$filters);
  137. }
  138. }