1 28 29 30 package com.opencms.workplace; 31 32 import org.opencms.db.CmsUserSettings; 33 import org.opencms.file.CmsObject; 34 import org.opencms.file.CmsPropertyDefinition; 35 import org.opencms.file.CmsResource; 36 import org.opencms.file.types.I_CmsResourceType; 37 import org.opencms.i18n.CmsEncoder; 38 import org.opencms.lock.CmsLock; 39 import org.opencms.main.CmsException; 40 import org.opencms.main.OpenCms; 41 import org.opencms.security.CmsPermissionSet; 42 import org.opencms.util.CmsUUID; 43 import org.opencms.workplace.CmsWorkplace; 44 45 import com.opencms.legacy.CmsLegacyException; 46 import com.opencms.legacy.CmsXmlTemplateLoader; 47 import com.opencms.template.A_CmsXmlContent; 48 49 import java.util.Calendar ; 50 import java.util.Date ; 51 import java.util.GregorianCalendar ; 52 import java.util.Hashtable ; 53 import java.util.Iterator ; 54 import java.util.List ; 55 56 import org.w3c.dom.Element ; 57 58 75 76 public class CmsFileList extends A_CmsWpElement { 77 78 79 80 private final static String C_LIST_HEAD = "list_head"; 81 82 83 84 private final static String C_LIST_ENTRY = "list_entry"; 85 86 87 88 private final static String C_LOCKED_VALUE_NOLOCK = "column_lock_value_nolock"; 89 90 91 92 private final static String C_LOCKED_VALUE_OWN = "column_lock_value_own"; 93 94 95 96 private final static String C_LOCKED_VALUE_USER = "column_lock_value_user"; 97 98 99 100 private final static String C_NAME_VALUE_FILE = "column_name_value_file"; 101 102 103 104 private final static String C_NAME_VALUE_FOLDER = "column_name_value_folder"; 105 106 107 108 private final static String C_LOCKEDBY = "lockedby"; 109 110 111 112 private final static String C_NAME_FILEFOLDER = "name_filefolder"; 113 114 115 116 private final static String C_STYLE_UNCHANGED = "dateingeandert"; 117 118 119 120 private final static String C_STYLE_NOTINPROJECT = "dateintprojekt"; 121 122 123 124 private final static String C_STYLE_NEW = "dateineu"; 125 126 127 128 private final static String C_STYLE_DELETED = "dateigeloescht"; 129 130 131 132 private final static String C_STYLE_CHANGED = "dateigeaendert"; 133 134 135 136 private final static String C_DEFAULT_CONTEXTMENU = "online"; 137 138 139 140 private final static String C_DEFAULT_CONTEXTMENUFOLDER = "onlinefolder"; 141 142 143 144 private final static String C_CONTEXT_LINK = "context_link"; 145 146 147 148 private final static String C_CONTEXT_MENU = "context_menu"; 149 150 151 152 private final static String C_CONTEXT_NUMBER = "context_number"; 153 154 155 156 private final static String C_CONTEXT_LOCK = "lock"; 157 158 159 160 private final static String C_CONTEXT_LOCKUSER = "user"; 161 162 163 164 private Hashtable m_iconCache = new Hashtable (); 165 166 173 174 private boolean checkAccess(CmsObject cms, CmsResource res) throws CmsException { 175 176 return cms.hasPermissions(res, CmsPermissionSet.ACCESS_VIEW); 177 178 } 179 180 188 189 private CmsXmlWpTemplateFile checkDisplayedColumns(int filelist, 190 CmsXmlWpTemplateFile template, String suffix) { 191 if((filelist & CmsUserSettings.FILELIST_NAME) == 0) { 192 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_NAME + suffix, ""); 193 } 194 if((filelist & CmsUserSettings.FILELIST_TITLE) == 0) { 195 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_TITLE + suffix, ""); 196 } 197 if((filelist & CmsUserSettings.FILELIST_TYPE) == 0) { 198 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_TYPE + suffix, ""); 199 } 200 if((filelist & CmsUserSettings.FILELIST_STATE) == 0) { 201 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_STATE + suffix, ""); 202 } 203 if((filelist & CmsUserSettings.FILELIST_DATE_LASTMODIFIED) == 0) { 204 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_CHANGED + suffix, ""); 205 } 206 if((filelist & CmsUserSettings.FILELIST_SIZE) == 0) { 207 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_SIZE + suffix, ""); 208 } 209 if((filelist & CmsUserSettings.FILELIST_USER_CREATED) == 0) { 210 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_OWNER + suffix, ""); 211 } 212 if((filelist & CmsWorkplaceDefault.C_FILELIST_GROUP) == 0) { 213 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_GROUP + suffix, ""); 214 } 215 if((filelist & CmsUserSettings.FILELIST_PERMISSIONS) == 0) { 216 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_ACCESS + suffix, ""); 217 } 218 if((filelist & CmsUserSettings.FILELIST_LOCKEDBY) == 0) { 219 template.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_LOCKED + suffix, ""); 220 } 221 return template; 222 } 223 224 229 296 305 306 private String getContextMenue(CmsObject cms, CmsResource res, 307 CmsXmlWpTemplateFile template) throws CmsException { 308 String contextMenu = null; 309 if(res.getState() != CmsResource.STATE_DELETED) { 310 311 if((cms.getRequestContext().currentProject().isOnlineProject()) 313 || (!cms.isInsideCurrentProject(cms.getSitePath(res)))) { 315 if(res.isFile()) { 316 contextMenu = C_DEFAULT_CONTEXTMENU; 317 } 318 else { 319 contextMenu = C_DEFAULT_CONTEXTMENUFOLDER; 320 } 321 } 322 else { 323 324 I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(res.getTypeId()); 326 327 contextMenu = type.getTypeName(); 329 330 CmsLock lock = cms.getLock(res); 331 332 if(!lock.isNullLock()) { 334 contextMenu += C_CONTEXT_LOCK; 335 336 if(cms.getRequestContext().currentUser().getId().equals(lock.getUserId())) { 338 contextMenu += C_CONTEXT_LOCKUSER; 339 } 340 } 341 } 342 } 343 else { 344 contextMenu = ""; 345 } 346 return contextMenu; 347 } 348 349 353 354 private int getDefaultPreferences(CmsObject cms) { 355 int filelist; 356 String explorerSettings = (String )cms.getRequestContext().currentUser().getAdditionalInfo(CmsUserSettings.ADDITIONAL_INFO_EXPLORERSETTINGS); 357 if(explorerSettings != null) { 358 filelist = new Integer (explorerSettings).intValue(); 359 } 360 else { 361 filelist = CmsUserSettings.FILELIST_NAME + CmsUserSettings.FILELIST_TITLE + CmsUserSettings.FILELIST_TYPE + CmsUserSettings.FILELIST_DATE_LASTMODIFIED; 362 } 363 return filelist; 364 } 365 366 378 379 private Object getFilelist(CmsObject cms, List list, A_CmsXmlContent doc, 380 CmsXmlLanguageFile lang, Hashtable parameters, I_CmsFileListUsers callingObject, 381 CmsXmlWpConfigFile config) throws CmsException { 382 StringBuffer output = new StringBuffer (); 383 String title = null; 384 int contextNumber = 0; 385 String [] tagList = { 386 C_CONTEXT_LINK, C_CONTEXT_MENU, C_CONTEXT_NUMBER, CmsWorkplaceDefault.C_FILELIST_ICON_VALUE, 387 CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, CmsWorkplaceDefault.C_FILELIST_LOCK_VALUE, CmsWorkplaceDefault.C_FILELIST_NAME_VALUE, 388 CmsWorkplaceDefault.C_FILELIST_TITLE_VALUE, CmsWorkplaceDefault.C_FILELIST_TYPE_VALUE, CmsWorkplaceDefault.C_FILELIST_CHANGED_VALUE, 389 CmsWorkplaceDefault.C_FILELIST_SIZE_VALUE, CmsWorkplaceDefault.C_FILELIST_STATE_VALUE, CmsWorkplaceDefault.C_FILELIST_OWNER_VALUE, 390 CmsWorkplaceDefault.C_FILELIST_GROUP_VALUE, CmsWorkplaceDefault.C_FILELIST_ACCESS_VALUE, CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE, 391 C_NAME_FILEFOLDER, C_LOCKEDBY, CmsWorkplaceDefault.C_FILELIST_CLASS_VALUE 392 }; 393 String servlets = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl(); 394 String currentFilelist = CmsWorkplaceAction.getCurrentFolder(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest()); 397 398 if((currentFilelist == null) || (currentFilelist.length() == 0)) { 399 currentFilelist = "/"; 400 } 401 402 CmsXmlWpTemplateFile template = (CmsXmlWpTemplateFile)doc; 404 Iterator en = null; 405 406 CmsResource file; 409 CmsResource res; 410 411 int filelist = getDefaultPreferences(cms); 415 416 filelist = callingObject.modifyDisplayedColumns(cms, filelist); 419 template = checkDisplayedColumns(filelist, template, ""); 420 template = checkDisplayedColumns(filelist, template, CmsWorkplaceDefault.C_FILELIST_SUFFIX_VALUE); 421 422 output.append(template.getProcessedDataValue(C_LIST_HEAD, callingObject)); 424 425 for(int i = 0;i < tagList.length;i++) { 427 template.setData(tagList[i], ""); 428 } 429 430 en = list.iterator(); 432 while(en.hasNext()) { 433 res = (CmsResource)en.next(); 434 if(checkAccess(cms, res)) { 435 template.setData("PREVIOUS", currentFilelist); 436 if(res.isFolder()) { 437 438 template.setData(CmsWorkplaceDefault.C_FILELIST_CLASS_VALUE, getStyle(cms, res)); 440 441 template.fastSetXmlData(C_CONTEXT_LINK, cms.getSitePath(res)); 443 template.fastSetXmlData(C_CONTEXT_MENU, getContextMenue(cms, res, template)); 444 template.fastSetXmlData(C_CONTEXT_NUMBER, new Integer (contextNumber++).toString()); 445 I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(res.getTypeId()); 446 String icon = getIcon(cms, type, config); 447 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_ICON_VALUE, CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl() + config.getWpPicturePath() + icon); 448 449 if(res.getState() != CmsResource.STATE_DELETED) { 451 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, cms.getSitePath(res)); 452 } 453 else { 454 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, "#"); 455 } 456 457 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCK_VALUE, template.getProcessedDataValue(getLock(cms, 459 res, template, lang), callingObject)); 460 if((filelist & CmsUserSettings.FILELIST_NAME) != 0) { 461 462 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_NAME_VALUE, res.getName()); 464 } 465 if((filelist & CmsUserSettings.FILELIST_TITLE) != 0) { 466 467 title = ""; 469 try { 470 title = CmsEncoder.escapeXml(cms.readProperty(cms.getSitePath(res), CmsPropertyDefinition.PROPERTY_TITLE)); 471 } 472 catch(CmsException e) { 473 474 } 475 if(title == null) { 476 title = ""; 477 } 478 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_TITLE_VALUE, title); 479 } 480 if((filelist & CmsUserSettings.FILELIST_TYPE) != 0) { 481 String typename = type.getTypeName(); 482 typename = lang.getLanguageValue("fileicon." + typename); 483 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_TYPE_VALUE, typename); 484 } 485 if((filelist & CmsUserSettings.FILELIST_DATE_LASTMODIFIED) != 0) { 486 487 long time = res.getDateLastModified(); 489 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_CHANGED_VALUE, getNiceDate(time)); 490 } 491 if((filelist & CmsUserSettings.FILELIST_SIZE) != 0) { 492 493 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_SIZE_VALUE, ""); 495 } 496 if((filelist & CmsUserSettings.FILELIST_STATE) != 0) { 497 498 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_STATE_VALUE, getState(cms, res, lang)); 500 } 501 510 519 528 if((filelist & CmsUserSettings.FILELIST_LOCKEDBY) != 0) { 529 530 CmsLock lock = cms.getLock(res); 532 if(lock.isNullLock()) { 533 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE, ""); 534 } 535 else { 536 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE, cms.readUser(lock.getUserId()).getName()); 537 } 538 } 539 540 callingObject.getCustomizedColumnValues(cms, template, res, lang); 542 template.fastSetXmlData(C_NAME_FILEFOLDER, template.getProcessedDataValue(getName(cms, res), this)); 543 } 544 else { 545 546 file = res; 548 549 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_CLASS_VALUE, getStyle(cms, file)); 551 552 template.fastSetXmlData(C_CONTEXT_LINK, cms.getSitePath(res)); 554 template.fastSetXmlData(C_CONTEXT_MENU, getContextMenue(cms, res, template)); 555 template.fastSetXmlData(C_CONTEXT_NUMBER, new Integer (contextNumber++).toString()); 556 I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(file.getTypeId()); 557 String icon = getIcon(cms, type, config); 558 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_ICON_VALUE, config.getWpPicturePath() + icon); 559 560 if(res.getState() != CmsResource.STATE_DELETED) { 562 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, servlets + cms.getSitePath(file)); 563 } 564 else { 565 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, "#"); 566 } 567 568 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCK_VALUE, template.getProcessedDataValue(getLock(cms, file, template, lang), callingObject)); 570 if((filelist & CmsUserSettings.FILELIST_NAME) != 0) { 571 572 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_NAME_VALUE, file.getName()); 574 } 575 if((filelist & CmsUserSettings.FILELIST_TITLE) != 0) { 576 577 title = ""; 579 try { 580 title = CmsEncoder.escapeXml(cms.readProperty(cms.getSitePath(file), CmsPropertyDefinition.PROPERTY_TITLE)); 581 } 582 catch(CmsException e) { 583 584 } 585 if(title == null) { 586 title = ""; 587 } 588 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_TITLE_VALUE, title); 589 } 590 if((filelist & CmsUserSettings.FILELIST_TYPE) != 0) { 591 592 String typename = type.getTypeName(); 594 typename = lang.getLanguageValue("fileicon." + typename); 595 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_TYPE_VALUE, typename); 596 } 597 if((filelist & CmsUserSettings.FILELIST_DATE_LASTMODIFIED) != 0) { 598 599 long time = file.getDateLastModified(); 601 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_CHANGED_VALUE, getNiceDate(time)); 602 } 603 if((filelist & CmsUserSettings.FILELIST_SIZE) != 0) { 604 605 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_SIZE_VALUE, new Integer (file.getLength()).toString()); 607 } 608 if((filelist & CmsUserSettings.FILELIST_STATE) != 0) { 609 610 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_STATE_VALUE, getState(cms, file, lang)); 612 } 613 622 631 640 if((filelist & CmsUserSettings.FILELIST_PERMISSIONS) != 0) { 641 642 CmsLock lock = cms.getLock(file); 644 if(lock.isNullLock()) { 645 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE, ""); 646 } 647 else { 648 template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE, cms.readUser(lock.getUserId()).getName()); 649 } 650 } 651 652 callingObject.getCustomizedColumnValues(cms, template, res, lang); 654 template.fastSetXmlData(C_NAME_FILEFOLDER, template.getProcessedDataValue(getName(cms, file), this)); 655 } 656 output.append(template.getProcessedDataValue(C_LIST_ENTRY, callingObject)); 657 } 658 } 659 return output.toString(); 660 } 661 662 672 private String getIcon(CmsObject cms, I_CmsResourceType type, CmsXmlWpConfigFile config) throws CmsException { 673 String icon = (String )m_iconCache.get(type.getTypeName()); 675 if(icon == null) { 677 String filename = CmsWorkplaceDefault.C_ICON_PREFIX + type.getTypeName().toLowerCase() + CmsWorkplaceDefault.C_ICON_EXTENSION; 678 try { 679 cms.readResource(CmsWorkplace.VFS_PATH_RESOURCES + filename); 681 icon = filename; 683 m_iconCache.put(type.getTypeName(), icon); 684 } 685 catch(CmsException e) { 686 icon = CmsWorkplaceDefault.C_ICON_DEFAULT; 688 m_iconCache.put(type.getTypeName(), icon); 689 } 690 } 691 return icon; 692 } 693 694 702 703 private String getLock(CmsObject cms, CmsResource file, CmsXmlWpTemplateFile template, CmsXmlLanguageFile lang) throws CmsException { 704 StringBuffer output = new StringBuffer (); 705 CmsLock lock = cms.getLock(file); 706 707 if(!lock.isNullLock()) { 709 CmsUUID locked = lock.getUserId(); 710 711 if(cms.getRequestContext().currentUser().getId().equals(locked)) { 713 template.fastSetXmlData(C_LOCKEDBY, lang.getLanguageValue("explorer.lockedby") + cms.getRequestContext().currentUser().getName()); 714 output.append(C_LOCKED_VALUE_OWN); 715 } 716 else { 717 template.fastSetXmlData(C_LOCKEDBY, lang.getLanguageValue("explorer.lockedby") + cms.readUser(lock.getUserId()).getName()); 718 output.append(C_LOCKED_VALUE_USER); 719 } 720 } 721 else { 722 output.append(C_LOCKED_VALUE_NOLOCK); 723 } 724 725 return output.toString(); 727 } 728 729 735 736 private String getName(CmsObject cms, CmsResource file) { 737 StringBuffer output = new StringBuffer (); 738 if(file.isFile()) { 739 output.append(C_NAME_VALUE_FILE); 740 } 741 else { 742 output.append(C_NAME_VALUE_FOLDER); 743 } 744 return output.toString(); 745 } 746 747 752 753 private String getNiceDate(long time) { 754 StringBuffer niceTime = new StringBuffer (); 755 GregorianCalendar cal = new GregorianCalendar (); 756 cal.setTime(new Date (time)); 757 String day = "0" + new Integer (cal.get(Calendar.DAY_OF_MONTH)).intValue(); 758 String month = "0" + new Integer (cal.get(Calendar.MONTH) + 1).intValue(); 759 String year = new Integer (cal.get(Calendar.YEAR)).toString(); 760 String hour = "0" + new Integer (cal.get(Calendar.HOUR) + 12 * cal.get(Calendar.AM_PM)).intValue(); 761 String minute = "0" + new Integer (cal.get(Calendar.MINUTE)); 762 if(day.length() == 3) { 763 day = day.substring(1, 3); 764 } 765 if(month.length() == 3) { 766 month = month.substring(1, 3); 767 } 768 if(hour.length() == 3) { 769 hour = hour.substring(1, 3); 770 } 771 if(minute.length() == 3) { 772 minute = minute.substring(1, 3); 773 } 774 niceTime.append(day + "."); 775 niceTime.append(month + "."); 776 niceTime.append(year + " "); 777 niceTime.append(hour + ":"); 778 niceTime.append(minute); 779 return niceTime.toString(); 780 } 781 782 789 790 private String getState(CmsObject cms, CmsResource file, CmsXmlLanguageFile lang) throws CmsException { 791 StringBuffer output = new StringBuffer (); 792 if (cms.isInsideCurrentProject(cms.getSitePath(file))) { 794 int state = file.getState(); 795 output.append(lang.getLanguageValue("explorer.state" + state)); 796 } 797 else { 798 output.append(lang.getLanguageValue("explorer.statenip")); 799 } 800 return output.toString(); 801 } 802 803 809 810 private String getStyle(CmsObject cms, CmsResource file) throws CmsException { 811 StringBuffer output = new StringBuffer (); 812 813 if (!cms.isInsideCurrentProject(cms.getSitePath(file))) { 816 output.append(C_STYLE_NOTINPROJECT); 817 } 818 else { 819 if(cms.getRequestContext().currentProject().isOnlineProject()) { 820 821 output.append(C_STYLE_UNCHANGED); 823 } 824 else { 825 int style = file.getState(); 826 switch(style) { 827 case 0: 828 output.append(C_STYLE_UNCHANGED); 829 break; 830 831 case 1: 832 output.append(C_STYLE_CHANGED); 833 break; 834 835 case 2: 836 output.append(C_STYLE_NEW); 837 break; 838 839 case 3: 840 output.append(C_STYLE_DELETED); 841 break; 842 843 default: 844 output.append(C_STYLE_UNCHANGED); 845 } 846 } 847 } 848 return output.toString(); 849 } 850 851 865 866 public Object handleSpecialWorkplaceTag(CmsObject cms, Element n, A_CmsXmlContent doc, 867 Object callingObject, Hashtable parameters, CmsXmlLanguageFile lang) throws CmsException { 868 String template = n.getAttribute(CmsWorkplaceDefault.C_FILELIST_TEMPLATE); 869 String customizedTemplate = n.getAttribute(CmsWorkplaceDefault.C_FILELIST_CUSTOMTEMPLATE); 870 CmsXmlWpTemplateFile filelistTemplate = new CmsXmlWpTemplateFile(cms, template); 871 filelistTemplate.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_CUSTOMIZED, ""); 872 filelistTemplate.setData(CmsWorkplaceDefault.C_FILELIST_COLUMN_CUSTOMIZED_VALUE, ""); 873 874 if(customizedTemplate != null && !"".equals(customizedTemplate)) { 876 filelistTemplate.readIncludeFile(customizedTemplate); 877 } 878 879 if(!(callingObject instanceof I_CmsFileListUsers)) { 881 throwException("Class " + callingObject.getClass().getName() + " is using a \"FILELIST\" tag in its " 882 + "template file " + doc.getAbsoluteFilename() + ", but does not implement I_CmsFileListUsers. ", CmsLegacyException.C_XML_WRONG_TEMPLATE_CLASS); 883 } 884 CmsXmlWpConfigFile configFile = this.getConfigFile(cms); 885 I_CmsFileListUsers filelistUser = (I_CmsFileListUsers)callingObject; 886 List filelist = filelistUser.getFiles(cms); 887 return getFilelist(cms, filelist, filelistTemplate, lang, parameters, filelistUser, configFile); 888 } 889 } 890 | Popular Tags |