admin.comprofiler.html.php
上传用户:stephen_wu
上传日期:2008-07-05
资源大小:1757k
文件大小:144k
源码类别:

网络

开发平台:

Unix_Linux

  1. <?php
  2. /**
  3. * Joomla/Mambo Community Builder
  4. * @version $Id: admin.comprofiler.html.php 610 2006-12-13 17:33:44Z beat $
  5. * @package Community Builder
  6. * @subpackage admin.comprofiler.html.php
  7. * @author JoomlaJoe and Beat
  8. * @copyright (C) JoomlaJoe and Beat, www.joomlapolis.com
  9. * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU/GPL version 2
  10. */
  11. // ensure this file is being included by a parent file
  12. if ( ! ( defined( '_VALID_CB' ) || defined( '_JEXEC' ) || defined( '_VALID_MOS' ) ) ) { die( 'Direct Access to this location is not allowed.' ); }
  13. class HTML_comprofiler {
  14. function secureAboveForm( $functionName ) {
  15. // return cbJumpOutOfIframe();
  16. ?>
  17. <script type="text/javascript"><!--//--><![CDATA[//><!--
  18. if(self!=top) {
  19. parent.document.body.innerHTML='<div>Iframes not allowed, could be hack attempt..., sorry!</div>';
  20. self.top.location=self.location;
  21. }
  22. //--><!]]></script>
  23. <?php
  24. }
  25. function installPluginForm() {
  26. }
  27. function showLists( &$rows, $pageNav, $search, $option ) {
  28. global $_CB_framework;
  29. HTML_comprofiler::secureAboveForm('showLists');
  30. outputCbTemplate( 2 );
  31. outputCbJs( 2 );
  32. global $_CB_Backend_Title;
  33. $_CB_Backend_Title = array( 0 => array( 'cbicon-48-lists', "CB List Manager" ) );
  34. ?>
  35. <script type="text/javascript"><!--//--><![CDATA[//><!--
  36. function cbsaveorder( n ) {
  37. cbcheckAll_button( n );
  38. submitform('savelistorder');
  39. }
  40. //needed by cbsaveorder function
  41. function cbcheckAll_button( n ) {
  42. for ( var j = 0; j <= n; j++ ) {
  43. box = eval( "document.adminForm.cb" + j );
  44. if ( box.checked == false ) {
  45. box.checked = true;
  46. }
  47. }
  48. }
  49. //--><!]]></script>
  50. <form action="index2.php" method="post" name="adminForm">
  51.   <table cellpadding="4" cellspacing="0" border="0" width="100%">
  52.     <tr>
  53.        <td>Search: <input type="text" name="search" value="<?php echo $search;?>" class="inputbox" onChange="document.adminForm.submit();" />
  54.       </td>
  55.     </tr>
  56.   </table>
  57.   <table cellpadding="4" cellspacing="0" border="0" width="100%" class="adminlist">
  58.    <thead>
  59.     <tr>
  60.       <th width="2%" class="title">#</th>
  61.       <th width="3%" class="title"> <input type="checkbox" name="toggle" value="" onClick="checkAll(<?php echo count($rows); ?>);" />
  62.       </th>
  63.       <th width="25%" class="title">Title</th>
  64.       <th width="25%" class="title">Description</th>
  65.       <th width="5%" class="title">Published?</th>
  66.       <th width="5%" class="title">Default?</th>
  67.       <th width="15%" class="title">Access</th>
  68.       <th width="5%" class="title" colspan="2">Re-Order</th>
  69.       <th width="1%"><a href="javascript: cbsaveorder( <?php echo count( $rows )-1; ?> )"><img src="images/filesave.png" border="0" width="16" height="16" alt="Save Order" /></a></th>
  70.       <th width="2%" class="title">listid</th>
  71.     </tr>
  72.    </thead>
  73.    <tbody>
  74. <?php
  75. $k = 0;
  76. $imgpath='../components/com_comprofiler/images/';
  77. for ($i=0, $n=count( $rows ); $i < $n; $i++) {
  78. $row =& $rows[$i];
  79.         $img3 = $row->published ?  'tick.png' : 'publish_x.png';
  80.         $task3 = $row->published ?  'listPublishedNo' : 'listPublishedYes';
  81.         $img4 = $row->default ?  'tick.png' : 'publish_x.png';
  82. $task4 = $row->default ?  'listDefaultNo' : 'listDefaultYes';
  83. ?>
  84.     <tr class="<?php echo "row$k"; ?>">
  85.       <td><?php echo $i+1+$pageNav->limitstart;?></td>
  86.       <td><input type="checkbox" id="cb<?php echo $i;?>" name="cid[]" value="<?php echo $row->listid; ?>" onClick="isChecked(this.checked);" /></td>
  87.       <td> <a href="#editList" onClick="return listItemTask('cb<?php echo $i;?>','editList')"><?php echo getLangDefinition($row->title); ?></a></td>
  88.       <td><?php echo getLangDefinition($row->description); ?></td>
  89.       <td width="10%"><a href="javascript: void(0);" onClick="return listItemTask('cb<?php echo $i;?>
  90. ','<?php echo $task3;?>')"><img src="<?php echo $imgpath.$img3;?>" width="16" height="16" border="0" alt="" /></a></td>
  91.       <td width="10%"><a href="javascript: void(0);" onClick="return listItemTask('cb<?php echo $i;?>
  92. ','<?php echo $task4;?>')"><img src="<?php echo $imgpath.$img4;?>" width="16" height="16" border="0" alt="" /></a></td>
  93.   <td><?php 
  94.    if ( $row->useraccessgroupid >= 0 ) {
  95.    echo '<span style="color:red;">' . $_CB_framework->acl->get_group_name( (int) $row->useraccessgroupid ) . '</span>';
  96.    } elseif ( $row->useraccessgroupid == -2 ) {
  97.    echo '<span style="color:green;">Everybody</span>';
  98.    } elseif ( $row->useraccessgroupid == -1 ) {
  99.    echo '<span style="color:orange;">All Registered Users</span>';
  100.    }
  101.   ?></td>
  102.       <td>
  103. <?php    if ($i > 0 || ($i+$pageNav->limitstart > 0)) { ?>
  104.          <a href="#reorder" onClick="return listItemTask('cb<?php echo $i;?>','orderupList')">
  105.             <img src="images/uparrow.png" width="12" height="12" border="0" alt="Move Up" />
  106.          </a>
  107. <?php    } ?>
  108.       </td>
  109.       <td>
  110. <?php    if ($i < $n-1 || $i+$pageNav->limitstart < $pageNav->total-1) { ?>
  111.          <a href="#reorder" onClick="return listItemTask('cb<?php echo $i;?>','orderdownList')">
  112.             <img src="images/downarrow.png" width="12" height="12" border="0" alt="Move Down" />
  113.          </a>
  114. <?php    } ?>
  115.       </td>
  116.   <td align="center">
  117.   <input type="text" name="order[]" size="5" value="<?php echo $row->ordering; ?>" class="text_area" style="text-align: center" />
  118.   </td>
  119.       <td style="text-align:right"><?php echo $row->listid;?></td>
  120.     </tr>
  121.     <?php $k = 1 - $k; } ?>
  122.    </tbody>
  123.    <tfoot>
  124.     <tr>
  125.       <th align="center" colspan="12"> <?php echo $pageNav->getListFooter(); ?></th>
  126.     </tr>
  127.    </tfoot>
  128.   </table>
  129.   <input type="hidden" name="option" value="<?php echo $option;?>" />
  130.   <input type="hidden" name="task" value="showLists" />
  131.   <input type="hidden" name="boxchecked" value="0" />
  132.   <?php
  133. echo cbGetSpoofInputTag( 'list' );
  134.   ?>
  135. </form>
  136. <?php
  137. }
  138. function editList( &$row, $lists, $fields, $option, $tabid, $paramsEditorHtml ) {
  139. global $_CB_database, $_CB_framework;
  140. HTML_comprofiler::secureAboveForm('editList');
  141. outputCbTemplate( 2 );
  142. // outputCbJs( 2 );
  143. echo initToolTip(2);
  144. global $_CB_Backend_Title;
  145. $_CB_Backend_Title = array( 0 => array( 'cbicon-48-lists', "Community Builder List: <small>" . ( $row->listid ? "Edit" . ' [ '. htmlspecialchars( getLangDefinition( $row->title ) ) .' ]' : "New" ) . '</small>' ) );
  146. if ( $row->listid && ( ! $row->published ) ) {
  147. echo '<div class="cbWarning">List is not published</div>' . "n";
  148. }
  149. $notFoundFielIds = array();
  150. $sqlWhere="";
  151. $fieldids=null;
  152. $col1options="";
  153. $col2options="";
  154. $col3options="";
  155. $col4options="";
  156. if($tabid >0) {
  157. $col1fields=explode('|*|',$row->col1fields);
  158. $fieldids="";
  159. for ($i=0, $n=count( $col1fields ); $i < $n; $i++) {
  160. $col1field = $col1fields[$i];
  161. if(trim($col1field)!='' && trim($col1field)!=null) {
  162. $text = array_search($col1field,$fields);
  163. if ( is_string( $text ) ) {
  164. $col1options .= "<option value="".$col1field."">".getLangDefinition($text)."n";
  165. if ( $fieldids ) {
  166. $fieldids .= ",";
  167. }
  168. $fieldids .= "'".$col1field."'";
  169. } else {
  170. $notFoundFielIds[] = $col1field;
  171. }
  172. }
  173. }
  174. $col2fields=explode('|*|',$row->col2fields);
  175. for ($i=0, $n=count( $col2fields ); $i < $n; $i++) {
  176. $col2field = $col2fields[$i];
  177. if(trim($col2field)!='' && trim($col2field)!=null) { 
  178. $text = array_search($col2field,$fields);
  179. if ( is_string( $text ) ) {
  180. $col2options .= "<option value="".$col2field."">".getLangDefinition($text)."n";
  181. if ( $fieldids ) {
  182. $fieldids .= ",";
  183. }
  184. $fieldids .= "'".$col2field."'";
  185. } else {
  186. $notFoundFielIds[] = $col2field;
  187. }
  188. }
  189. }
  190. $col3fields=explode('|*|',$row->col3fields);
  191. for ($i=0, $n=count( $col3fields ); $i < $n; $i++) {
  192. $col3field = $col3fields[$i];
  193. if(trim($col3field)!='' && trim($col3field)!=null) { 
  194. $text = array_search($col3field,$fields);
  195. if ( is_string( $text ) ) {
  196. $col3options .= "<option value="".$col3field."">".getLangDefinition($text)."n";
  197. if ( $fieldids ) {
  198. $fieldids .= ",";
  199. }
  200. $fieldids .= "'".$col3field."'";
  201. } else {
  202. $notFoundFielIds[] = $col3field;
  203. }
  204. }
  205. }
  206. $col4fields=explode('|*|',$row->col4fields);
  207. for ($i=0, $n=count( $col4fields ); $i < $n; $i++) {
  208. $col4field = $col4fields[$i];
  209. if(trim($col4field)!='' && trim($col4field)!=null) { 
  210. $text = array_search($col4field,$fields);
  211. if ( is_string( $text ) ) {
  212. $col4options .= "<option value="".$col4field."">".getLangDefinition($text)."n";
  213. if ( $fieldids ) {
  214. $fieldids .= ",";
  215. }
  216. $fieldids .= "'".$col4field."'";
  217. } else {
  218. $notFoundFielIds[] = $col4field;
  219. }
  220. }
  221. }
  222. if($fieldids!=null) {
  223. $sqlWhere="nAND fieldid NOT IN ($fieldids)";
  224. }
  225. }
  226. // this query is for listing displayable fields:
  227. $_CB_database->setQuery( "SELECT f.fieldid, f.title, f.name"
  228. . "n FROM #__comprofiler_fields f"
  229. . "n INNER JOIN #__comprofiler_plugin AS p ON (f.pluginid = p.id)"
  230. . "n WHERE f.published = 1"
  231. . "n  AND f.profile > 0"
  232. . "n  AND p.published = 1"
  233. . $sqlWhere
  234. );
  235. $fields = $_CB_database->loadObjectList();
  236. $stripME = array(" ASC", " DESC","`");
  237. $sortsArray = explode( ', ', $row->sortfields );
  238. $SQLfunctions = array();
  239. foreach ( $sortsArray as $k => $v ) {
  240. $WhereIn = trim( str_replace($stripME, "", $v ) );
  241. if ( substr( $WhereIn, -1, 1 ) == ')') {
  242. $SQLfunctions[] = $WhereIn;
  243. unset( $sortsArray[$k] );
  244. } else {
  245. $sortsArray[$k] = $_CB_database->Quote( $WhereIn );
  246. }
  247. }
  248. $sortsArray[$k+1] = $_CB_database->Quote( 'onlinestatus' ); //TBD: refactor to field, temporarly in here...
  249. // this query is for listing sortable fields
  250. $_CB_database->setQuery( "SELECT f.title, f.name"
  251. . "n FROM #__comprofiler_fields f"
  252. . "n INNER JOIN #__comprofiler_plugin AS p ON (f.pluginid = p.id)"
  253. . "n WHERE f.published = 1"
  254. . "n  AND f.name <> 'NA'"
  255. . "n  AND f.tablecolumns <> ''"
  256. . "n  AND p.published = 1"
  257. . "n AND f.name NOT IN(" . implode( ',', $sortsArray ) . ")"
  258. );
  259. /*
  260. $stripME = array(" ASC", " DESC","`");
  261. $WhereIn = str_replace($stripME, "", $row->sortfields);
  262. $WhereIn = "'".str_replace(", ","','",$WhereIn)."'";
  263. $_CB_database->setQuery( "SELECT f.title, f.name"
  264. . "nFROM #__comprofiler_fields f"
  265. . "nWHERE f.published = 1 AND f.name!='NA'"
  266. . "nAND f.name NOT IN(".$WhereIn.")"
  267. );
  268. */
  269. $sortfields = $_CB_database->loadObjectList();
  270. if ( is_array( $sortfields ) && ( count( $sortfields ) > 0 ) && ! in_array( 'RAND()', $SQLfunctions ) ) {
  271. $randomSort = new stdClass();
  272. $randomSort->title = CBTxt::T("Sort Randomly");
  273. $randomSort->name = "RAND()";
  274. $sortfields[] = $randomSort;
  275. }
  276. // this query is for listing filterable fields
  277. $_CB_database->setQuery( "SELECT f.title, f.name"
  278. . "n FROM #__comprofiler_fields f"
  279. . "n INNER JOIN #__comprofiler_plugin AS p ON (f.pluginid = p.id)"
  280. . "n WHERE f.published = 1"
  281. . "n  AND f.name <> 'NA'"
  282. . "n  AND f.tablecolumns <> ''"
  283. . "n  AND p.published = 1"
  284. );
  285. $filterfields = $_CB_database->loadObjectList();
  286. $sortlists=explode(", ",str_replace("`","",$row->sortfields));
  287. $sortparts=array();
  288. $i=0;
  289. foreach($sortlists as $sortlist) {
  290. $sortlistpart=array();
  291. $sortlistpart=explode(" ",$sortlist);
  292. if(!ISSET($sortlistpart[1])) $sortlistpart[1]="";
  293. $sortparts[$i]['field']=$sortlistpart[0];
  294. $sortparts[$i]['dir']=$sortlistpart[1];
  295. if ( substr( $sortlistpart[0], -1, 1 ) != ')' ) {
  296. $_CB_database->setQuery("SELECT title FROM #__comprofiler_fields WHERE name='".$sortlistpart[0]."' LIMIT 1");
  297. $sortparts[$i]['title']=$_CB_database->loadResult();
  298. } else {
  299. switch ( $sortlistpart[0] ) {
  300. case 'RAND()':
  301. $sortparts[$i]['title'] = CBTxt::T("Sort Randomly");
  302. break;
  303. default:
  304. $sortparts[$i]['title'] = CBTxt::T("Non-existing field") . ": " . $sortlistpart[0];
  305. break;
  306. }
  307. }
  308. $i++;
  309. }
  310. if ( count( $notFoundFielIds ) > 0 ) {
  311. cbArrayToInts( $notFoundFielIds );
  312. $_CB_database->setQuery( "SELECT f.name, f.title, f.published, f.profile, p.published AS pluginpublished, p.name AS pluginname"
  313. . "n FROM #__comprofiler_fields AS f"
  314. . "n INNER JOIN #__comprofiler_plugin AS p ON (f.pluginid = p.id)"
  315. . "n WHERE f.fieldid IN (" . implode( ',', $notFoundFielIds ) . ")"
  316. // . "n WHERE f.published = 1"
  317. // . "n  AND f.profile > 0"
  318. // . "n  AND p.published = 1"
  319. . "n ORDER BY f.ordering"
  320. );
  321. $problemFields = $_CB_database->loadObjectList();
  322. if ( is_array( $problemFields ) && ( count( $problemFields ) > 0 ) ) {
  323. echo '<div class="cbWarning">Following fields are in list but not visible in here for following reason(s):<ul>';
  324. foreach ( $problemFields as $f ) {
  325. if ( $f->published != 1 ) {
  326. echo '<li>Field "' . getLangDefinition( $f->title ) . ' (' . $f->name . ')" ' . " is not published !";
  327. }
  328. if ( $f->profile <= 0 ) {
  329. echo '<li>Field "' . getLangDefinition( $f->title ) . ' (' . $f->name . ')" ' . " is not displayed on profile !";
  330. }
  331. if ( $f->pluginpublished != 1 ) {
  332. echo '<li>Field "' . getLangDefinition( $f->title ) . ' (' . $f->name . ')" ' . " is from plugin "" . $f->pluginname . "" but this plugin is not published !";
  333. }
  334. }
  335. echo '</ul>If you save list now, they will be removed from the list. If you want to keep them, cancel now and go to Components / CB / Field Manager.</div>' . "n";
  336. }
  337. }
  338. ?>
  339. <script type="text/javascript"><!--//--><![CDATA[//><!--
  340.   function getObject(obj) {
  341.     var strObj;
  342.     if (document.all) {
  343.       strObj = document.all.item(obj);
  344.     } else if (document.getElementById) {
  345.       strObj = document.getElementById(obj);
  346.     }
  347. return strObj;
  348. }
  349. function shDiv(objID,sh) {
  350. var strObj;
  351. strObj = getObject(objID);
  352. if(sh==0) {
  353. strObj.style.display="none";
  354. } else {
  355. strObj.style.display="block";
  356. }
  357. }
  358. function submitbutton(pressbutton) {
  359. if (pressbutton == 'showLists') {
  360.         <?php echo $_CB_framework->saveCmsEditorJS( 'description' ); ?>
  361. submitform( pressbutton );
  362. return;
  363. }
  364. var coll = document.adminForm;
  365. var errorMSG = '';
  366. var iserror=0;
  367. if (coll.col1enabled.checked == true) coll.col1title.setAttribute('mosReq',1);
  368. if (coll.col2enabled.checked == true) coll.col2title.setAttribute('mosReq',1);
  369. if (coll.col3enabled.checked == true) coll.col3title.setAttribute('mosReq',1);
  370. if (coll.col4enabled.checked == true) coll.col4title.setAttribute('mosReq',1);
  371. getSortList(document.adminForm.sort);
  372. getFilterList(document.adminForm.filter);
  373.      if (coll != null) {
  374.        var elements = coll.elements;
  375.        // loop through all input elements in form
  376.        for (var i=0; i < elements.length; i++) {
  377.          // check if element is mandatory; here mosReq=1
  378.          if ((typeof(elements.item(i).getAttribute('mosReq')) != "undefined") && (elements.item(i).getAttribute('mosReq') == 1)) {
  379.            if (elements.item(i).value == '') {
  380.              //alert(elements.item(i).getAttribute('mosLabel') + ':' + elements.item(i).getAttribute('mosReq'));
  381.              // add up all error messages
  382.              errorMSG += elements.item(i).getAttribute('mosLabel') + ' : <?php echo _UE_REQUIRED_ERROR; ?>n';
  383.              // notify user by changing background color, in this case to red
  384.              elements.item(i).style.backgroundColor = "red";
  385.              iserror=1;
  386.            }
  387.          }
  388.        }
  389.      }
  390. if(iserror==1) { alert(errorMSG); }
  391. else {
  392. selectAll(document.adminForm.col1);
  393. selectAll(document.adminForm.col2);
  394. selectAll(document.adminForm.col3);
  395. selectAll(document.adminForm.col4);
  396.         <?php echo $_CB_framework->saveCmsEditorJS( 'description' ); ?>
  397. submitform( pressbutton );
  398. }
  399. }
  400.     function addOption(selectObj, value)
  401.     {
  402.       optionSelected = (value == null);
  403.       if(value == null) value = prompt('', '');
  404.       if(value != null)
  405.       {
  406.         if(value.indexOf(',') != -1)
  407.           alert('Commas are not allowed in size values');
  408.         else
  409.         {
  410.           var i = selectObj.options.length;
  411.           value = value.replace(/1/2/g, '锟