1 3 118 package com.ivata.groupware.admin.setting.struts; 119 120 import java.util.Arrays ; 121 import java.util.Iterator ; 122 import java.util.List ; 123 import java.util.Vector ; 124 125 import javax.servlet.http.HttpServletRequest ; 126 import javax.servlet.http.HttpServletResponse ; 127 import javax.servlet.http.HttpSession ; 128 129 import org.apache.struts.action.ActionErrors; 130 import org.apache.struts.action.ActionForm; 131 import org.apache.struts.action.ActionMapping; 132 133 import com.ivata.groupware.admin.security.server.SecuritySession; 134 import com.ivata.groupware.admin.security.user.UserDO; 135 import com.ivata.groupware.admin.setting.Settings; 136 import com.ivata.groupware.admin.setting.right.SettingsRights; 137 import com.ivata.mask.MaskFactory; 138 import com.ivata.mask.util.SystemException; 139 import com.ivata.mask.web.struts.MaskAction; 140 import com.ivata.mask.web.struts.MaskAuthenticator; 141 142 143 151 public class SettingAction extends MaskAction { 152 private Settings settings; 153 private SettingsRights settingsRights; 154 166 public SettingAction(Settings settings, SettingsRights settingsRights, 167 MaskFactory maskFactory, MaskAuthenticator authenticator) { 168 super(maskFactory, authenticator); 169 this.settings = settings; 170 this.settingsRights = settingsRights; 171 } 172 173 193 public void clear(final ActionMapping mapping, 194 final ActionErrors errors, 195 final ActionForm form, 196 final HttpServletRequest request, 197 final HttpServletResponse response, 198 final HttpSession session) throws SystemException { 199 session.removeAttribute("settingTab_activeTab"); 200 session.removeAttribute("settingForm"); 201 } 202 203 226 public String execute(final ActionMapping mapping, 227 final ActionErrors errors, 228 final ActionForm form, 229 final HttpServletRequest request, 230 final HttpServletResponse response, 231 final HttpSession session) throws SystemException { 232 SettingForm settingForm = (SettingForm) form; 233 List tabName = settingForm.getTabName(); 234 SecuritySession securitySession = (SecuritySession) session.getAttribute("securitySession"); 235 236 Integer activeTab = settingForm.getSettingTab_activeTab(); 237 238 if (settingForm.getSettingTab_activeTab() == null) { 240 Vector settingTabUser = new Vector (); 242 Vector settingTabSystem = new Vector (); 243 244 if (settingsRights.canAmendSystemSettings(securitySession)) { 246 settingForm.setAdministrator("true"); 247 } 248 249 settingForm.setSettingArea("user"); 251 activeTab = new Integer (0); 253 settingForm.setSettingTab_activeTab(activeTab); 254 tabName = new Vector (); 257 List settingNameUser; 259 List settingNameSystem; 260 261 settingNameUser = initialiseSettings(securitySession, 263 new String [] 264 {"siteDefaultForward"}, 265 settingForm); 266 settingNameSystem = initialiseSettings(securitySession, 267 new String [] 268 {"siteTitle", "siteName", "siteWelcomeText"}, 269 settingForm); 270 if (!(settingNameUser.isEmpty() && settingNameSystem.isEmpty())) { 271 tabName.add("general"); 272 settingTabUser.add(settingNameUser); 273 settingTabSystem.add(settingNameSystem); 274 } 275 276 settingNameUser = initialiseSettings(securitySession, 278 new String [] 279 {"guiShortcutStyle", "guiShortcutPause"}, 280 settingForm); 281 if (!settingNameUser.isEmpty()) { 282 tabName.add("controls"); 283 settingTabUser.add(settingNameUser); 284 settingTabSystem.add(new Vector ()); 285 } 286 287 settingNameUser = initialiseSettings(securitySession, 289 new String [] { 290 "emailDefaultFormat", 291 "emailReplyIndent", "emailFolderInbox", "emailFolderSent", 292 "emailFolderTrash", "emailFolderDrafts", "emailSignatureHTML", 293 "emailSignatureText", "emailSignatureForward", "emailSignatureReply"}, 294 settingForm); 295 settingNameSystem = initialiseSettings(securitySession, 296 new String [] { 297 "emailHost", "emailPort", "emailHostSmtp"}, 298 settingForm); 299 if (!(settingNameUser.isEmpty() && settingNameSystem.isEmpty())) { 300 tabName.add("email"); 301 settingTabUser.add(settingNameUser); 302 settingTabSystem.add(settingNameSystem); 303 } 304 305 settingNameUser = initialiseSettings(securitySession, 307 new String [] { 308 "libraryHome", "libraryRecent", "libraryCommentSpacer"}, 309 settingForm); 310 if (!settingNameUser.isEmpty()) { 311 tabName.add("library"); 312 settingTabUser.add(settingNameUser); 313 settingTabSystem.add(new Vector ()); 314 } 315 316 settingNameSystem = initialiseSettings(securitySession, 318 new String [] { 319 "libraryNotificationContentComment", 320 "libraryNotificationContentCommentAmend", 321 "libraryNotificationContentItem", 322 "libraryNotificationContentItemAmend", 323 "libraryNotificationContentItemReply", 324 "libraryNotificationContentItemReplyAmend"}, 325 settingForm); 326 if (!settingNameSystem.isEmpty()) { 327 tabName.add("notification"); 328 settingTabUser.add(new Vector ()); 329 settingTabSystem.add(settingNameSystem); 330 } 331 332 settingNameUser = initialiseSettings(securitySession, 334 new String [] { 335 "i18nTimeZone","calendarDefaultView","calendarFirstWeekDay", 336 337 "i18nDateInputDisplay", "i18nTimeInputDisplay", 338 339 "i18nDateLong", "i18nDateLongDay", "i18nDateLongYear", 340 "i18nDateShort","i18nDateShortYear", "i18nDateWeekDay", 341 "i18nTimeLong", "i18nTimeShort", 342 343 "i18nDateShortToday", "i18nDateShortYesterday", 344 "i18nDateThisAfternoon", "i18nDateThisMorning", 345 "i18nDateThisEvening", "i18nDateYesterdayMorning", 346 "i18nDateYesterdayAfternoon", "i18nDateYesterdayEvening"}, 347 settingForm); 348 if (!settingNameUser.isEmpty()) { 349 tabName.add("dateTime"); 350 settingTabUser.add(settingNameUser); 351 settingTabSystem.add(new Vector ()); 352 } 353 354 if (tabName.isEmpty()) { 357 clear(mapping, errors, form, request, response, session); 358 return "noSettings"; 359 } 360 361 settingForm.setTabName(tabName); 363 settingForm.setSettingTabUser(settingTabUser); 364 settingForm.setSettingTabSystem(settingTabSystem); 365 } 366 return null; 367 } 368 369 380 private List initialiseSettings(final SecuritySession securitySession, 381 final String [] names, 382 final SettingForm form) 383 throws SystemException { 384 Vector returnVector = new Vector (); 385 for (int i = 0; i < names.length; i++) { 386 String name = names[i]; 387 388 if (settings.isSettingEnabled(securitySession, name)) { 390 if (settingsRights.canAmendSystemSettings(securitySession) || 393 settingsRights.canAmendSetting(securitySession, name)) { 394 form.setSettingUser(name, settings.getSetting(securitySession, 395 name, securitySession.getUser())); 396 form.setSettingSystem(name, settings.getSetting(securitySession, 397 name, null)); 398 form.setSettingType(name, new Integer (settings.getSettingType(securitySession, name))); 399 form.setSettingOverride(name, settingsRights.canAmendSetting(securitySession, 400 name)); 401 402 returnVector.add(name); 403 } 404 } 405 } 406 return returnVector; 407 } 408 409 432 public String onConfirm(final ActionMapping mapping, 433 final ActionErrors errors, 434 final ActionForm form, 435 final HttpServletRequest request, 436 final HttpServletResponse response, 437 final HttpSession session, 438 final String defaultForward) throws SystemException { 439 SettingForm settingForm = (SettingForm) form; 440 441 SecuritySession securitySession = (SecuritySession) session.getAttribute("securitySession"); 443 saveSettings(securitySession, settingForm); 444 445 request.setAttribute("refreshOpener", "1"); 446 447 return defaultForward; 448 } 449 450 451 460 private void saveSettings(final SecuritySession securitySession, 461 final SettingForm form) 462 throws SystemException { 463 UserDO user = securitySession.getUser(); 464 465 boolean administrator = (form.getAdministrator()!=null); 466 for (Iterator i = form.getSettingName().iterator(); i.hasNext();) { 467 String name = (String ) i.next(); 468 Object userValue = form.getSettingUser(name); 469 Object systemValue = form.getSettingSystem(name); 470 471 Object oldSystemValue = settings.getSetting(securitySession, name, null); 472 473 if(administrator) { 476 settings.amendSetting(securitySession, name, systemValue, null); 477 478 if (name.equals("i18nDateInputDisplay") || 482 name.equals("i18nTimeInputDisplay")) { 483 settings.amendSetting(securitySession, name, userValue, user); 484 } 485 486 if (form.getSettingOverride(name)) { 488 settingsRights.addAmendRightForSetting(securitySession, name); 489 } else { 490 settingsRights.removeAmendRightForSetting(securitySession, name); 491 } 492 } 493 494 if (userValue.equals(systemValue) || userValue.equals(oldSystemValue)) { 496 settings.revertSetting(securitySession, name, user); 497 if (name.equals("i18nDateInputDisplay") || 501 name.equals("i18nTimeInputDisplay")) { 502 String displaySettingName = name.substring(0,name.indexOf("Display")); 503 settings.revertSetting(securitySession, displaySettingName, user); 504 } 505 form.setSettingUser(name, systemValue); 508 509 } else { 511 settings.amendSetting(securitySession, name, userValue, user); 512 if (name.equals("i18nDateInputDisplay") || 516 name.equals("i18nTimeInputDisplay")) { 517 String displaySettingName = name.substring(0,name.indexOf("Display")); 518 settings.amendSetting(securitySession, displaySettingName, userValue, user); 519 } 520 521 } 522 } 523 } 524 525 532 private String simplifyInputFormat(final String inputFormat) { 533 String returnFormat = inputFormat; 534 String [] patterns = new String [] {"MM","dd","hh","KK","HH","kk","mm","ss"}; 535 536 for (Iterator i = Arrays.asList(patterns).iterator(); i.hasNext(); ) { 537 String currentPattern = (String ) i.next(); 538 539 int patternPosition = returnFormat.indexOf(currentPattern); 541 542 if (patternPosition != -1) { 543 int longPatternPosition = returnFormat.indexOf(currentPattern, patternPosition + 1); 544 if (!(currentPattern.equals("MM") && longPatternPosition == (patternPosition + 1))) { 545 returnFormat = returnFormat.substring(0, patternPosition) + 547 currentPattern.substring(1) + 548 returnFormat.substring(patternPosition + 2); 549 550 } 551 } 552 } 553 return returnFormat; 554 } 555 } 556 | Popular Tags |