diff --git a/NOTICE.TXT b/NOTICE.TXT index 5d2000a3ecef8c0af558db8b214036f6bb7778e1..4c53ed55116832377bddcf0064dce9ff19954a2c 100644 --- a/NOTICE.TXT +++ b/NOTICE.TXT @@ -179,12 +179,6 @@ YAML layout framework (Creative Commons Attribution 2.0 Lizenz, see http://creativecommons.org/licenses/by/2.0/de) [http://www.yaml.de] Please read the licensing terms of YAML if you plan to use OLAT in a commercial setup. ------------------------------------------------------------------------ -The OpenOLAT comic portlet uses comic strips produces by Alex Macartney -Please not that these comics are not public domain and must not be used for any -other purpose than beeing displayed in the OpenOLAT home portal -[http://www.macartney.ch] - ----------------------------------------------------------------------- EXTJS javascript framework [http://www.sencha.com] diff --git a/src/main/java/de/bps/course/nodes/vc/provider/adobe/AdobeConnectCleanupJob.java b/src/main/java/de/bps/course/nodes/vc/provider/adobe/AdobeConnectCleanupJob.java index 4aecb2dd28fec7d11cf7c99623f0e44af4befea2..86f2a21a4e65229fdf94b0778ee14b3ad7505012 100644 --- a/src/main/java/de/bps/course/nodes/vc/provider/adobe/AdobeConnectCleanupJob.java +++ b/src/main/java/de/bps/course/nodes/vc/provider/adobe/AdobeConnectCleanupJob.java @@ -34,6 +34,7 @@ import org.springframework.scheduling.quartz.QuartzJobBean; import de.bps.course.nodes.VCCourseNode; import de.bps.course.nodes.vc.MeetingDate; +import de.bps.course.nodes.vc.provider.VCProvider; import de.bps.course.nodes.vc.provider.VCProviderFactory; /** @@ -57,19 +58,20 @@ public class AdobeConnectCleanupJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { - AdobeConnectProvider adobe = null; - - boolean success = VCProviderFactory.existsProvider(providerId); - if(!success) return;//same as dummy job - - try { - adobe = (AdobeConnectProvider) VCProviderFactory.createProvider(providerId); - } catch(ClassCastException e) { - throw new JobExecutionException("Invalid configuration: defined a virtual classroom cleanup job and provider implementation doesn't fit"); + if(!VCProviderFactory.existsProvider(providerId)) { + return;//same as dummy job } - success = adobe.isProviderAvailable() && adobe.isEnabled(); - if(!success) { + VCProvider provider = VCProviderFactory.createProvider(providerId); + if(!provider.isEnabled()) { + return; + } + if(!(provider instanceof AdobeConnectProvider)) { + logger.error("Invalid configuration: defined a virtual classroom cleanup job and provider implementation doesn't fit"); + return; + } + AdobeConnectProvider adobe = (AdobeConnectProvider)provider; + if(!adobe.isProviderAvailable()) { logger.debug("Tried to cleanup Adobe Connect meetings but it's actually not available"); return; } diff --git a/src/main/java/org/olat/admin/UserAdminMainController.java b/src/main/java/org/olat/admin/UserAdminMainController.java index b700c2fb531e1f0a1295853a5e30971495a71cbd..e95b3af9ab76540c70a0dd4f9772fac692af09d5 100644 --- a/src/main/java/org/olat/admin/UserAdminMainController.java +++ b/src/main/java/org/olat/admin/UserAdminMainController.java @@ -71,10 +71,11 @@ import org.olat.core.id.context.StateEntry; import org.olat.core.logging.AssertException; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.coordinate.LockResult; -import org.olat.core.util.nodes.INode; import org.olat.core.util.resource.OresHelper; +import org.olat.util.logging.activity.LoggingResourceable; /** * <pre> @@ -123,6 +124,7 @@ public class UserAdminMainController extends MainLayoutBasicController implement // we always start with a search controller //fxdiff BAKS-7 Resume function OLATResourceable ores = OresHelper.createOLATResourceableInstance(firstNode.getUserObject().toString(), 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = addToHistory(ureq, ores, null); contentCtr = new UsermanagerUserSearchController(ureq, bwControl); listenTo(contentCtr); // auto dispose later @@ -168,6 +170,8 @@ public class UserAdminMainController extends MainLayoutBasicController implement //fxdiff BAKS-7 Resume function OLATResourceable ores = OresHelper.createOLATResourceableInstance(Identity.class, identity.getKey()); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); + WindowControl bwControl; if(contentCtr instanceof UsermanagerUserSearchController) { UsermanagerUserSearchController ctrl = (UsermanagerUserSearchController)contentCtr; diff --git a/src/main/java/org/olat/admin/site/UserAdminSite.java b/src/main/java/org/olat/admin/site/UserAdminSite.java index 778541b0060b614656a82cfc405a899d48e7106c..93cf931f70f8b5bdab449127f6df9738c8d2a9e2 100644 --- a/src/main/java/org/olat/admin/site/UserAdminSite.java +++ b/src/main/java/org/olat/admin/site/UserAdminSite.java @@ -41,8 +41,10 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.StateSite; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; import org.olat.core.util.resource.OresHelper; +import org.olat.util.logging.activity.LoggingResourceable; /** * Initial Date: Jan 16, 2006 * @author Florian Gnaegi @@ -78,6 +80,7 @@ public class UserAdminSite implements SiteInstance { public MainLayoutController createController(UserRequest ureq, WindowControl wControl) { //fxdiff BAKS-7 Resume function OLATResourceable ores = OresHelper.createOLATResourceableInstance(UserAdminSite.class, 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, new StateSite(this), wControl, true); MainLayoutController c = ControllerFactory.createLaunchController(ORES_OLATUSERADMINS, null, ureq, bwControl, true); return c; diff --git a/src/main/java/org/olat/admin/sysinfo/InfoMsgForm.java b/src/main/java/org/olat/admin/sysinfo/InfoMsgForm.java index a03eb6adf946ae09595cdcccb65cdd7f832fad4f..926f4810357602a2d0c39edbe621d283a5f673ab 100644 --- a/src/main/java/org/olat/admin/sysinfo/InfoMsgForm.java +++ b/src/main/java/org/olat/admin/sysinfo/InfoMsgForm.java @@ -21,15 +21,20 @@ * OpenOLAT - Online Learning and Training</a><br> * This file has been modified by the OpenOLAT community. Changes are licensed * under the Apache 2.0 license as the original file. +* <p> +* Initial code contributed and copyrighted by<br> +* 2012 by frentix GmbH, http://www.frentix.com +* <p> */ package org.olat.admin.sysinfo; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; -import org.olat.core.gui.components.form.flexible.elements.TextElement; +import org.olat.core.gui.components.form.flexible.elements.RichTextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.components.form.flexible.impl.elements.richText.RichTextConfiguration; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -38,10 +43,12 @@ import org.olat.core.gui.control.WindowControl; * Initial Date: Apr 30, 2004 * * @author Mike Stock + * @author Sergio Trentini + * @author Florian Gnägi */ public class InfoMsgForm extends FormBasicController { - private TextElement msg; + private RichTextElement msg; private String infomsg; /** @@ -49,7 +56,7 @@ public class InfoMsgForm extends FormBasicController { * @param infomsg */ public InfoMsgForm(UserRequest ureq, WindowControl wControl, String infomsg) { - super(ureq, wControl); + super(ureq, wControl, LAYOUT_VERTICAL); this.infomsg = infomsg; initForm(ureq); } @@ -58,7 +65,8 @@ public class InfoMsgForm extends FormBasicController { * @return the info message */ public String getInfoMsg() { - return msg.getValue(); + // use raw value to circumvent XSS filtering of script tags + return msg.getRawValue(); } public void reset() { @@ -78,9 +86,17 @@ public class InfoMsgForm extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - msg = uifactory.addRichTextElementForStringDataMinimalistic("msg", "infomsg", infomsg, 20, 60, false, formLayout, ureq.getUserSession(), getWindowControl()); + msg = uifactory.addRichTextElementForStringData("msg", "infomsg", infomsg, 20, 70, false, true, null, null, formLayout, ureq.getUserSession(), getWindowControl()); msg.setMaxLength(1024); + RichTextConfiguration richTextConfig = msg.getEditorConfiguration(); + // manually enable the source edit button + richTextConfig.setQuotedConfigValue(RichTextConfiguration.THEME_ADVANCED_BUTTONS3_ADD, RichTextConfiguration.SEPARATOR_BUTTON + "," + RichTextConfiguration.CODE_BUTTON); + //allow script tags... + richTextConfig.setQuotedConfigValue(RichTextConfiguration.INVALID_ELEMENTS, RichTextConfiguration.INVALID_ELEMENTS_FORM_FULL_VALUE_UNSAVE_WITH_SCRIPT); + richTextConfig.setQuotedConfigValue(RichTextConfiguration.EXTENDED_VALID_ELEMENTS, "script[src,type,defer]"); + + FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttonGroupLayout", getTranslator()); formLayout.add(buttonGroupLayout); uifactory.addFormSubmitButton("submit", "submit", buttonGroupLayout); diff --git a/src/main/java/org/olat/admin/sysinfo/_content/infomsg.html b/src/main/java/org/olat/admin/sysinfo/_content/infomsg.html index d18b98a6a1553690522438b3857b6365866c2c40..b4651b1d1849181964c948ec7f7ecd36f17e3ec3 100644 --- a/src/main/java/org/olat/admin/sysinfo/_content/infomsg.html +++ b/src/main/java/org/olat/admin/sysinfo/_content/infomsg.html @@ -1,4 +1,7 @@ -<i>Message Admin-Token: $!admintoken</i><br/> +<p> + <i>Message Admin-Token: $!admintoken</i> +</p> + <fieldset> <legend>$r.translate("infomsg.title")</legend> #if ($infomsg) @@ -28,7 +31,6 @@ $r.render("infomsgEdit") $r.render("infomsgClear") </fieldset> #end -<hr class="o_separator"> <fieldset> <legend>$r.translate("maintenancemsg.title")</legend> diff --git a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java index d90b3a13e59224fbb7af73e6f845a9eacad61120..cb44c18d58111968a6b1eb781f406b1e13ca26d5 100644 --- a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java +++ b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java @@ -82,6 +82,7 @@ import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.id.context.StateMapped; import org.olat.core.logging.AssertException; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.servlets.WebDAVManager; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; @@ -95,6 +96,7 @@ import org.olat.modules.co.ContactFormController; import org.olat.user.UserInfoMainController; import org.olat.user.UserManager; import org.olat.user.propertyhandlers.UserPropertyHandler; +import org.olat.util.logging.activity.LoggingResourceable; /** * Initial Date: Jan 31, 2006 @@ -310,6 +312,7 @@ public class UsermanagerUserSearchController extends BasicController implements removeAsListenerAndDispose(tableCtr); //fxdiff BAKS-7 Resume function OLATResourceable ores = OresHelper.createOLATResourceableInstance("table", 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = addToHistory(ureq, ores, null); tableCtr = ExtendedIdentitiesTableControllerFactory.createController(tdm, ureq, bwControl, actionEnabled); listenTo(tableCtr); diff --git a/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java b/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java index 3865b0386f21d609e3d02fb200d5ebc889b408de..f73bd925f08716584df88711c1003116a6c36da4 100644 --- a/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java +++ b/src/main/java/org/olat/admin/user/delete/ReadyToDeleteController.java @@ -25,6 +25,7 @@ package org.olat.admin.user.delete; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -71,7 +72,7 @@ public class ReadyToDeleteController extends BasicController { private Panel readyToDeletePanel; private TableController tableCtr; private UserDeleteTableModel tdm; - private List readyToDeleteIdentities; + private List<Identity> readyToDeleteIdentities; private DialogBoxController deleteConfirmController; private boolean isAdministrativeUser; private Translator propertyHandlerTranslator; @@ -126,8 +127,18 @@ public class ReadyToDeleteController extends BasicController { } } else if (source == deleteConfirmController) { if (DialogBoxUIFactory.isOkEvent(event)) { - deleteIdentities(readyToDeleteIdentities); - showInfo("deleted.feedback.msg"); + List<String> errors = new ArrayList<String>(); + deleteIdentities(readyToDeleteIdentities, errors); + if(errors.isEmpty()) { + showInfo("deleted.feedback.msg"); + } else { + StringBuilder sb = new StringBuilder(); + for(String error:errors) { + if(sb.length() > 0) sb.append(", "); + sb.append(error); + } + showWarning("error.delete", sb.toString()); + } initializeContent(); } } @@ -152,10 +163,10 @@ public class ReadyToDeleteController extends BasicController { * @param readyToDeleteIdentities2 * @return String with login-name, comma separated */ - private String getUserlistAsString(List readyToDeleteIdentities2) { + private String getUserlistAsString(List<Identity> readyToDeleteIdentities2) { StringBuilder strb = new StringBuilder(); - for (Iterator iter = readyToDeleteIdentities2.iterator(); iter.hasNext();) { - strb.append(((Identity)iter.next()).getName()); + for (Iterator<Identity> iter = readyToDeleteIdentities2.iterator(); iter.hasNext();) { + strb.append((iter.next()).getName()); if (iter.hasNext()) { strb.append(","); } @@ -196,10 +207,20 @@ public class ReadyToDeleteController extends BasicController { tableCtr.setTableDataModel(tdm); } - private void deleteIdentities(List objects) { - for (Iterator iter = objects.iterator(); iter.hasNext();) { - UserDeletionManager.getInstance().deleteIdentity( (Identity) iter.next() ); - DBFactory.getInstance().intermediateCommit(); + private void deleteIdentities(List<Identity> identities, List<String> errors) { + for (Identity id:identities) { + try { + UserDeletionManager.getInstance().deleteIdentity( id ); + } catch (Exception e) { + errors.add(id.getName()); + logError("", e); + } finally { + try { + DBFactory.getInstance().intermediateCommit(); + } catch (Exception e) { + logError("", e); + } + } } } diff --git a/src/main/java/org/olat/admin/user/delete/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/admin/user/delete/_i18n/LocalStrings_de.properties index 0b2936fedde214c337201cc0bd6e8d3028e0e0f5..49e9176de24b50945db711beb9c5a5c73d34199b 100644 --- a/src/main/java/org/olat/admin/user/delete/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/admin/user/delete/_i18n/LocalStrings_de.properties @@ -46,4 +46,5 @@ table.users.found=Gefundene Benutzer table.users.notfound=Folgende Benutzer wurden nicht gefunden user.selection.delete.header=Untenstehende Benutzer haben sich seit {0} Monaten nicht in OLAT eingeloggt. Via E-Mail informieren Sie sie \u00FCber das bevorstehende L\u00F6schen ihres Benutzerkontos. Mit <i>Aktivieren</i> verhindern Sie das L\u00F6schen des Benutzerkontos. info.is.not.ready.to.delete=Es ist bereits ein L\u00F6schvorgang im Hintergrund am Laufen. Dieser muss komplett durchlaufen bevor ein neuer L\u00F6schvorgang gestartet werden kann. -error.no.user.found=Keine zutreffenden Benutzer gefunden \ No newline at end of file +error.no.user.found=Keine zutreffenden Benutzer gefunden +error.delete=Die folgende Benutzer konnte nicht richtig gel\u00F6scht werden: {0} \ No newline at end of file diff --git a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java index 94b7456a576bf5eb8b3e84168a41079cf80ecb35..b074acdb40e913dac32e708d352a9080a1c12705 100644 --- a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java +++ b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java @@ -31,7 +31,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; -import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -71,8 +70,6 @@ import org.olat.user.UserDataDeletable; import org.olat.user.UserManager; import org.olat.user.propertyhandlers.UserPropertyHandler; -import com.thoughtworks.xstream.XStream; - /** * Manager for user-deletion. @@ -132,8 +129,8 @@ public class UserDeletionManager extends BasicManager { if (template != null) { MailerWithTemplate mailer = MailerWithTemplate.getInstance(); template.addToContext("responseTo", deletionModule.getEmailResponseTo()); - for (Iterator iter = selectedIdentities.iterator(); iter.hasNext();) { - Identity identity = (Identity)iter.next(); + for (Iterator<Identity> iter = selectedIdentities.iterator(); iter.hasNext();) { + Identity identity = iter.next(); if (!isTemplateChanged) { // Email template has NOT changed => take translated version of subject and body text Translator identityTranslator = Util.createPackageTranslator(SelectionController.class, I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage())); @@ -157,8 +154,8 @@ public class UserDeletionManager extends BasicManager { } } else { // no template => User decides to sending no delete-email, mark only in lifecycle table 'sendEmail' - for (Iterator iter = selectedIdentities.iterator(); iter.hasNext();) { - Identity identity = (Identity)iter.next(); + for (Iterator<Identity> iter = selectedIdentities.iterator(); iter.hasNext();) { + Identity identity = iter.next(); logAudit("User-Deletion: Move in 'Email sent' section without sending email, identity=" + identity.getName()); markSendEmailEvent(identity); } @@ -260,6 +257,7 @@ public class UserDeletionManager extends BasicManager { logInfo("Start deleteIdentity for identity=" + identity); String newName = getBackupStringWithDate(identity.getName()); + // TODO: chg: Workaround: instances each manager which implements UaserDataDeletable interface // Each manager register themself as deletable @@ -297,9 +295,9 @@ public class UserDeletionManager extends BasicManager { logInfo("deleteUserProperties user=" + identity.getUser()); UserManager.getInstance().deleteUserProperties(identity.getUser()); // Delete all authentications for certain identity - List authentications = BaseSecurityManager.getInstance().getAuthentications(identity); - for (Iterator iter = authentications.iterator(); iter.hasNext();) { - Authentication auth = (Authentication) iter.next(); + List<Authentication> authentications = BaseSecurityManager.getInstance().getAuthentications(identity); + for (Iterator<Authentication> iter = authentications.iterator(); iter.hasNext();) { + Authentication auth = iter.next(); logInfo("deleteAuthentication auth=" + auth); BaseSecurityManager.getInstance().deleteAuthentication(auth); logDebug("Delete auth=" + auth + " of identity=" + identity); @@ -422,7 +420,7 @@ public class UserDeletionManager extends BasicManager { } private int getPropertyByName(String name, int defaultValue) { - List properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, name); + List<Property> properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, name); if (properties.size() == 0) { return defaultValue; } else { @@ -439,7 +437,7 @@ public class UserDeletionManager extends BasicManager { } private void setProperty(String propertyName, int value) { - List properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, propertyName); + List<Property> properties = PropertyManager.getInstance().findProperties(null, null, null, PROPERTY_CATEGORY, propertyName); Property property = null; if (properties.size() == 0) { property = PropertyManager.getInstance().createPropertyInstance(null, null, null, PROPERTY_CATEGORY, propertyName, null, new Long(value), null, null); diff --git a/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java b/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java index c14e2d7c9cde02ec771ee67ff4876190d1d746d4..98fdfbd6ac30975af315f1a79642f0103e68123f 100644 --- a/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java +++ b/src/main/java/org/olat/core/gui/control/generic/layout/GenericMainController.java @@ -49,9 +49,11 @@ import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.logging.AssertException; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.CodeHelper; import org.olat.core.util.StringHelper; import org.olat.core.util.resource.OresHelper; +import org.olat.util.logging.activity.LoggingResourceable; /** * Description:<br> @@ -351,6 +353,7 @@ public abstract class GenericMainController extends MainLayoutBasicController { } else { ores = OresHelper.createOLATResourceableInstance(GMCMT, CodeHelper.getUniqueIDFromString(nE.getUniqueExtensionID())); } + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); bwControl = addToHistory(ureq, ores, null); } } diff --git a/src/main/java/org/olat/core/gui/dev/controller/DevelopmentController.java b/src/main/java/org/olat/core/gui/dev/controller/DevelopmentController.java index 41b2f929ee0e270f93455207c190e63ec2ea1edf..97d2401de14521704fd601f600620a0920df8207 100644 --- a/src/main/java/org/olat/core/gui/dev/controller/DevelopmentController.java +++ b/src/main/java/org/olat/core/gui/dev/controller/DevelopmentController.java @@ -142,7 +142,7 @@ public class DevelopmentController extends BasicController { Component protectedMainPanel = DebugHelper.createDebugProtectedWrapper(mainpanel); devToolLink = LinkFactory.createCustomLink("devTool", "devTool", "", Link.NONTRANSLATED, myContent, this); - devToolLink.setCustomEnabledLinkCSS("b_dev"); + devToolLink.setCustomEnabledLinkCSS("b_dev o_noprint"); devToolLink.setTitle(translate("devTool")); spacesaverController = new ExpColController(ureq, getWindowControl(), false, protectedMainPanel, devToolLink); diff --git a/src/main/java/org/olat/core/logging/activity/CoreLoggingResourceable.java b/src/main/java/org/olat/core/logging/activity/CoreLoggingResourceable.java index a2e506c7cca9ac3566b58d272edf8ec4b91ddaf6..e1b1917aaf06e325fba3c8c971490b020b6738c0 100644 --- a/src/main/java/org/olat/core/logging/activity/CoreLoggingResourceable.java +++ b/src/main/java/org/olat/core/logging/activity/CoreLoggingResourceable.java @@ -26,7 +26,6 @@ package org.olat.core.logging.activity; -import org.olat.core.commons.persistence.PersistentObject; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.ContextEntry; @@ -97,6 +96,8 @@ public class CoreLoggingResourceable implements ILoggingResourceable { /** the OlatResourceable if we have one - null otherwise. Used for equals() and the businessPath check mainly **/ private final OLATResourceable resourceable_; + private final boolean ignorable_; + /** * Internal constructor to create a LoggingResourceable object with the given mandatory * parameters initialized. @@ -110,7 +111,7 @@ public class CoreLoggingResourceable implements ILoggingResourceable { * @param id the id to be stored to the database * @param name the name to be stored to the database */ - private CoreLoggingResourceable(OLATResourceable resourceable, ILoggingResourceableType resourceableType, String type, String id, String name) { + private CoreLoggingResourceable(OLATResourceable resourceable, ILoggingResourceableType resourceableType, String type, String id, String name, boolean ignorable) { if (type!=null && type.length()>32) { log_.error("<init> type too long. Allowed 32, actual: "+type.length()+", type="+type); type = type.substring(0, 32); @@ -128,6 +129,7 @@ public class CoreLoggingResourceable implements ILoggingResourceable { type_ = type; id_ = id; name_ = name; + ignorable_ = ignorable; } // @@ -153,7 +155,7 @@ public class CoreLoggingResourceable implements ILoggingResourceable { */ public static CoreLoggingResourceable wrapNonOlatResource(StringResourceableType type, String idForDB, String nameForDB) { return new CoreLoggingResourceable(null, type, - type.name(), idForDB, nameForDB); + type.name(), idForDB, nameForDB, false); } /** @@ -220,7 +222,7 @@ public class CoreLoggingResourceable implements ILoggingResourceable { */ public static CoreLoggingResourceable wrap(OLATResourceable olatResourceable, ILoggingResourceableType type) { return new CoreLoggingResourceable(olatResourceable, type, olatResourceable.getResourceableTypeName(), - String.valueOf(olatResourceable.getResourceableId()), ""); + String.valueOf(olatResourceable.getResourceableId()), "", false); } /** @@ -275,6 +277,11 @@ public class CoreLoggingResourceable implements ILoggingResourceable { return resourceableType_; } + @Override + public boolean isIgnorable() { + return ignorable_; + } + @Override public int hashCode() { return type_.hashCode()+id_.hashCode()+(resourceable_!=null ? resourceable_.getResourceableTypeName().hashCode()+(int)resourceable_.getResourceableId().longValue() : 0) + (resourceableType_!=null ? resourceableType_.hashCode() : 0); diff --git a/src/main/java/org/olat/core/logging/activity/CourseLoggingAction.java b/src/main/java/org/olat/core/logging/activity/CourseLoggingAction.java index d9054d48aeedc44b41d3954b6f2bf559f980cf45..b7d5ea81e066188ffa42cc9bfaa83dba82caf5d6 100644 --- a/src/main/java/org/olat/core/logging/activity/CourseLoggingAction.java +++ b/src/main/java/org/olat/core/logging/activity/CourseLoggingAction.java @@ -93,6 +93,7 @@ public class CourseLoggingAction extends BaseLoggingAction { public static final ILoggingAction COURSE_LEAVING = new CourseLoggingAction(ActionType.statistic, CrudAction.exit, ActionVerb.exit, ActionObject.course).setTypeList( new ResourceableTypeList().addMandatory(OlatResourceableType.course). + or().addMandatory(OlatResourceableType.course).addOptional(OlatResourceableType.node). or().addMandatory(OlatResourceableType.course, OlatResourceableType.genRepoEntry).addOptional(OlatResourceableType.businessGroup). or().addMandatory(OlatResourceableType.genRepoEntry, StringResourceableType.targetIdentity).addOptional(OlatResourceableType.businessGroup).addOptional(OlatResourceableType.sharedFolder).addOptional(OlatResourceableType.course). or().addMandatory(OlatResourceableType.course, StringResourceableType.targetIdentity)); diff --git a/src/main/java/org/olat/core/logging/activity/ILoggingResourceable.java b/src/main/java/org/olat/core/logging/activity/ILoggingResourceable.java index 6aee445ab415ec98c7893ebb526a989df9eefdda..8c48563d6f0acacfe54fa019f9bddede343b7f94 100644 --- a/src/main/java/org/olat/core/logging/activity/ILoggingResourceable.java +++ b/src/main/java/org/olat/core/logging/activity/ILoggingResourceable.java @@ -66,4 +66,11 @@ public interface ILoggingResourceable { * @return the ILoggingResourceableType of this LoggingResourceable */ public ILoggingResourceableType getResourceableType(); + + /** + * Some components of a list of context entries are used to recreate the + * controllers hierarchy by back button and haven't any meaning for logging. + * @return + */ + public boolean isIgnorable(); } diff --git a/src/main/java/org/olat/core/logging/activity/LearningResourceLoggingAction.java b/src/main/java/org/olat/core/logging/activity/LearningResourceLoggingAction.java index 97a66391a5498442a18fc28a5332cadc8f5256f0..4b36b6bf63bffbafc72f0930cbac7d0dc5fc7cc4 100644 --- a/src/main/java/org/olat/core/logging/activity/LearningResourceLoggingAction.java +++ b/src/main/java/org/olat/core/logging/activity/LearningResourceLoggingAction.java @@ -59,6 +59,8 @@ public class LearningResourceLoggingAction extends BaseLoggingAction { or().addMandatory(OlatResourceableType.course, OlatResourceableType.node, OlatResourceableType.wiki). // this is the case when you open a scorm resource as a course node or().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.scormResource). + // this is the case when you open a QTI resource as a course node + or().addMandatory(OlatResourceableType.course, OlatResourceableType.node, OlatResourceableType.iq). // this is another case of closing a resource or().addMandatory(OlatResourceableType.course, OlatResourceableType.node); public static final ILoggingAction LEARNING_RESOURCE_OPEN = diff --git a/src/main/java/org/olat/core/logging/activity/OlatResourceableType.java b/src/main/java/org/olat/core/logging/activity/OlatResourceableType.java index 646c0bde658af839433458919b3f69f8827f8ecb..db4333d1f2fcae8d6c92ef55785cbb70099d9a61 100644 --- a/src/main/java/org/olat/core/logging/activity/OlatResourceableType.java +++ b/src/main/java/org/olat/core/logging/activity/OlatResourceableType.java @@ -78,5 +78,8 @@ public enum OlatResourceableType implements ILoggingResourceableType { calendar, /** reprensents a portfolio map **/ - portfolio; + portfolio, + + /** business path component **/ + businessPath } \ No newline at end of file diff --git a/src/main/java/org/olat/core/logging/activity/ResourceableTypeList.java b/src/main/java/org/olat/core/logging/activity/ResourceableTypeList.java index 4877e618801b159f0c2bb8abc894c3266ad0f7b6..a7cb0d60b9df3d7820f8cfc88130d67b21b2ee63 100644 --- a/src/main/java/org/olat/core/logging/activity/ResourceableTypeList.java +++ b/src/main/java/org/olat/core/logging/activity/ResourceableTypeList.java @@ -267,6 +267,14 @@ public class ResourceableTypeList { } List<ILoggingResourceable> resourceInfosCopy = new LinkedList<ILoggingResourceable>(resourceInfos); + + for (Iterator<ILoggingResourceable> it = resourceInfosCopy.iterator(); it.hasNext();) { + if(it.next().isIgnorable()) { + it.remove(); + } + } + + List<ILoggingResourceableType> mandatory = getMandatory(); for (Iterator<ILoggingResourceableType> it = mandatory.iterator(); it.hasNext();) { ILoggingResourceableType type = it.next(); diff --git a/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java b/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java index f71be6af75b198d2be7578364bc5f3458fca1d5b..99af9e48ce9b9f18607273b683283db19e0f39a5 100644 --- a/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java +++ b/src/main/java/org/olat/core/logging/activity/ThreadLocalUserActivityLogger.java @@ -92,7 +92,9 @@ public class ThreadLocalUserActivityLogger { static IUserActivityLogger getUserActivityLogger() { IUserActivityLogger logger = userActivityLogger_.get(); if (logger==null) { - log_.warn("No UserActivityLogger set! Reinitializing now.", new Exception("stacktrace")); + if(log_.isDebug()) {//only generate this exception in debug + log_.warn("No UserActivityLogger set! Reinitializing now.", new Exception("stacktrace")); + } return new UserActivityLoggerImpl(); } return logger; diff --git a/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java b/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java index 2e20420a85490aa0d2ed85d9a0a6e3d72f494ce4..c04ffa3269ce0287f7a4d9494cafe0afe2f3bb20 100644 --- a/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java +++ b/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java @@ -32,7 +32,6 @@ import java.io.UnsupportedEncodingException; import java.io.Writer; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; -import java.util.Date; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -41,10 +40,8 @@ import java.util.Set; import javax.servlet.http.HttpServletRequest; -import org.hibernate.FlushMode; import org.olat.core.commons.persistence.DB; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.id.Identity; @@ -509,7 +506,8 @@ public class UserActivityLoggerImpl implements IUserActivityLogger { } if (!foundIt) { String oresourceableOres = "n/a (null)"; - if (ce !=null && ce.getOLATResourceable() !=null) { + // SR: why generate exception for unuseable information??? + if (log_.isDebug() && ce !=null && ce.getOLATResourceable() !=null) { try { java.lang.reflect.Method getOlatResource = ce.getOLATResourceable().getClass().getDeclaredMethod("getOlatResource"); if (getOlatResource!=null) { @@ -532,8 +530,12 @@ public class UserActivityLoggerImpl implements IUserActivityLogger { ILoggingResourceable resourceInfo = it2.next(); log_.info("id: "+resourceInfo.getId()+", name="+resourceInfo.getName()+", type="+resourceInfo.getType()+", toString: "+resourceInfo.toString()); } - log_.warn("Could not find any LoggingResourceable corresponding to this ContextEntry: "+ce.toString(), - new Exception("UserActivityLoggerImpl.getCombinedOrderedLoggingResourceables()")); + if(log_.isDebug()) {//only generate the stacktrace in debug mode + log_.warn("Could not find any LoggingResourceable corresponding to this ContextEntry: "+ce.toString(), + new Exception("UserActivityLoggerImpl.getCombinedOrderedLoggingResourceables()")); + } else { + log_.warn("Could not find any LoggingResourceable corresponding to this ContextEntry: "+ce.toString(), null); + } } } } @@ -727,6 +729,12 @@ public class UserActivityLoggerImpl implements IUserActivityLogger { // alongside the log message // check if we have more than 4 - if we do, issue a log and remove the middle ones + for(Iterator<ILoggingResourceable> riIterator=resourceInfos.iterator(); riIterator.hasNext(); ) { + if(riIterator.next().isIgnorable()) { + riIterator.remove(); + } + } + if (resourceInfos.size()>4) { log_.warn("More than 4 resource infos set on a user activity log. Can only have 4. Having: "+resourceInfos.size()); int diff = resourceInfos.size()-4; diff --git a/src/main/java/org/olat/core/util/prefs/Preferences.java b/src/main/java/org/olat/core/util/prefs/Preferences.java index 00155548520535126018811e01936cc5ce213b3a..9ad4fef1e197c4a997f9fdfafcc2a19ebb1797e8 100644 --- a/src/main/java/org/olat/core/util/prefs/Preferences.java +++ b/src/main/java/org/olat/core/util/prefs/Preferences.java @@ -42,7 +42,7 @@ public interface Preferences { * @param key * @return the object */ - public Object get(Class attributedClass, String key); + public Object get(Class<?> attributedClass, String key); /** * @param attributedClass @@ -50,7 +50,7 @@ public interface Preferences { * @param defaultValue the value returned if no such config exists * @return the object */ - public Object get(Class attributedClass, String key, Object defaultValue); + public Object get(Class<?> attributedClass, String key, Object defaultValue); /** @@ -59,7 +59,7 @@ public interface Preferences { * @param key * @param value the object to save, which class must have a public default contructor (for xstreams to save/load) */ - public void put(Class attributedClass, String key, Object value); + public void put(Class<?> attributedClass, String key, Object value); /** * convenience method: as put, followed by a save() @@ -68,7 +68,7 @@ public interface Preferences { * @param key * @param value */ - public void putAndSave(Class attributedClass, String key, Object value); + public void putAndSave(Class<?> attributedClass, String key, Object value); //FIXME fj: remove method is missing diff --git a/src/main/java/org/olat/core/util/prefs/PreferencesFactory.java b/src/main/java/org/olat/core/util/prefs/PreferencesFactory.java index e4de89794ff2d8d3f3922760b9672174775cdfa7..18a502773404a67d03dda17be42d285c39a4f7d1 100644 --- a/src/main/java/org/olat/core/util/prefs/PreferencesFactory.java +++ b/src/main/java/org/olat/core/util/prefs/PreferencesFactory.java @@ -67,5 +67,9 @@ public class PreferencesFactory { return preferencesStorage.getPreferencesFor(identity, useTransientPreferences); } + public PreferencesStorage getStorage() { + return preferencesStorage; + } + } diff --git a/src/main/java/org/olat/core/util/prefs/PreferencesStorage.java b/src/main/java/org/olat/core/util/prefs/PreferencesStorage.java index 6129244dd92038fd718ec503bddb90bf34803a40..4e501aa6d94d21b177eeb16b3dcd62fc18922836 100644 --- a/src/main/java/org/olat/core/util/prefs/PreferencesStorage.java +++ b/src/main/java/org/olat/core/util/prefs/PreferencesStorage.java @@ -47,4 +47,6 @@ public interface PreferencesStorage { * @return the preferences for the user */ public Preferences getPreferencesFor(Identity identity, boolean useTransientPreferences); + + public void updatePreferencesFor(Preferences prefs, Identity identity); } diff --git a/src/main/java/org/olat/core/util/prefs/db/DbPrefs.java b/src/main/java/org/olat/core/util/prefs/db/DbPrefs.java index 0e2a6dea45f3e13f10c82ce8dbf594fc9c7f8a5b..0cf840a816b965bd9ee8d9e08dc1fbb6f914a010 100644 --- a/src/main/java/org/olat/core/util/prefs/db/DbPrefs.java +++ b/src/main/java/org/olat/core/util/prefs/db/DbPrefs.java @@ -32,11 +32,10 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import org.olat.core.CoreSpringFactory; import org.olat.core.id.Identity; import org.olat.core.util.prefs.Preferences; -import org.olat.core.util.xml.XStreamHelper; -import org.olat.properties.Property; -import org.olat.properties.PropertyManager; +import org.olat.core.util.prefs.PreferencesStorage; /** * Description:<br> @@ -49,36 +48,29 @@ import org.olat.properties.PropertyManager; public class DbPrefs implements Preferences { // keys: prefs-keys; values: any Prefs-Objects - private Map prefstore = new HashMap(); - - // simply to indicate preferences version (serialized in the xstream, do not remove!) - private int version = 1; - + private Map<String,Object> prefstore = new HashMap<String,Object>(); + private transient Identity owner; // true: don't save to disk, only in ram - transient boolean isTransient = false; - transient Property dbProperty = null; + private transient boolean isTransient = false; public DbPrefs() { // must have a default constructor for serialization! } - - + + public boolean isTransient() { + return isTransient; + } + + public void setTransient(boolean isTransient) { + this.isTransient = isTransient; + } + public void save() { if (!isTransient) { - PropertyManager pm = PropertyManager.getInstance(); - // generate x-stream serialization of this object - String props = XStreamHelper.toXML(this); - if (this.dbProperty == null) { - // save as new property - this.dbProperty = pm.createPropertyInstance(owner, null, null, null, DbStorage.USER_PROPERTY_KEY, null, null, null, props); - pm.saveProperty(this.dbProperty); - } else { - // update exising property - this.dbProperty.setTextValue(props); - pm.updateProperty(this.dbProperty); - } + PreferencesStorage storage = (PreferencesStorage)CoreSpringFactory.getBean("core.preferences.PreferencesStorage"); + storage.updatePreferencesFor(this, owner); } } @@ -87,14 +79,14 @@ public class DbPrefs implements Preferences { * @param key * @return Object */ - public Object get(Class attributedClass, String key) { + public Object get(Class<?> attributedClass, String key) { return prefstore.get(attributedClass.getName()+"::"+key); } /** * @see org.olat.core.util.prefs.Preferences#get(java.lang.Class, java.lang.String, java.lang.Object) */ - public Object get(Class attributedClass, String key, Object defaultValue) { + public Object get(Class<?> attributedClass, String key, Object defaultValue) { Object value = get(attributedClass, key); if (value == null) return defaultValue; return value; @@ -106,7 +98,7 @@ public class DbPrefs implements Preferences { * @param value * TODO: make value not object, but basetypemap or such? */ - public void put(Class attributedClass, String key, Object value) { + public void put(Class<?> attributedClass, String key, Object value) { prefstore.put(attributedClass.getName()+"::"+key, value); } @@ -121,7 +113,7 @@ public class DbPrefs implements Preferences { * * @see org.olat.core.util.prefs.Preferences#putAndSave(java.lang.Class, java.lang.String, java.lang.Object) */ - public void putAndSave(Class attributedClass, String key, Object value) { + public void putAndSave(Class<?> attributedClass, String key, Object value) { put(attributedClass, key, value); save(); } @@ -131,9 +123,11 @@ public class DbPrefs implements Preferences { * @see org.olat.core.util.prefs.Preferences#findPrefByKey(java.lang.String) */ public Object findPrefByKey(String partOfKey) { - for (Iterator iterator = prefstore.keySet().iterator(); iterator.hasNext();) { - String key = (String) iterator.next(); - if (key.endsWith(partOfKey)) return prefstore.get(key); + for (Iterator<String> iterator = prefstore.keySet().iterator(); iterator.hasNext();) { + String key = iterator.next(); + if (key.endsWith(partOfKey)) { + return prefstore.get(key); + } } return null; } diff --git a/src/main/java/org/olat/core/util/prefs/db/DbStorage.java b/src/main/java/org/olat/core/util/prefs/db/DbStorage.java index 0a65eeb28104b82b05f13e4f5ba23b21c015a84a..7b476c4ff8ba7b946ed048dba63f611154197a06 100644 --- a/src/main/java/org/olat/core/util/prefs/db/DbStorage.java +++ b/src/main/java/org/olat/core/util/prefs/db/DbStorage.java @@ -32,7 +32,6 @@ import java.util.Iterator; import java.util.List; import org.olat.core.id.Identity; -import org.olat.core.logging.AssertException; import org.olat.core.logging.LogDelegator; import org.olat.core.util.prefs.Preferences; import org.olat.core.util.prefs.PreferencesStorage; @@ -40,6 +39,8 @@ import org.olat.core.util.xml.XStreamHelper; import org.olat.properties.Property; import org.olat.properties.PropertyManager; +import com.thoughtworks.xstream.XStream; + /** * Description:<br> * <P> @@ -51,6 +52,8 @@ public class DbStorage extends LogDelegator implements PreferencesStorage{ static final String USER_PROPERTY_KEY = "v2guipreferences"; + private XStream xstream = XStreamHelper.createXStreamInstance(); + public Preferences getPreferencesFor(Identity identity, boolean useTransientPreferences) { if (useTransientPreferences) { return createEmptyDbPrefs(identity,true); @@ -59,36 +62,52 @@ public class DbStorage extends LogDelegator implements PreferencesStorage{ } } + @Override + public void updatePreferencesFor(Preferences prefs, Identity identity) { + String props = xstream.toXML(prefs); + Property property = getPreferencesProperty(identity); + if(property == null) { + PropertyManager.getInstance().createPropertyInstance(identity, null, null, null, DbStorage.USER_PROPERTY_KEY, null, null, null, props); + } else { + property.setTextValue(props); + PropertyManager.getInstance().updateProperty(property); + } + } + /** * search x-stream serialization in properties table, create new if not found * @param identity * @return */ private DbPrefs getPreferencesFor(final Identity identity) { - Property guiProperty = null; - try { - guiProperty = PropertyManager.getInstance().findProperty(identity, null, null, null, USER_PROPERTY_KEY); - } catch (AssertException e) { - // OLAT-6429 detect and delete multiple prefs objects, keep the first one only - List<Property> guiPropertyList = PropertyManager.getInstance().findProperties(identity, null, null, null, USER_PROPERTY_KEY); - if (guiPropertyList != null && guiPropertyList.size() > 0) { + Property guiProperty = getPreferencesProperty(identity); + if (guiProperty == null) { + return createEmptyDbPrefs(identity,false); + } else { + return getPreferencesForProperty(identity, guiProperty); + } + } + + private Property getPreferencesProperty(Identity identity) { + Property guiProperty = null; + try { + guiProperty = PropertyManager.getInstance().findProperty(identity, null, null, null, USER_PROPERTY_KEY); + } catch (Exception e) { + // OLAT-6429 detect and delete multiple prefs objects, keep the first one only + List<Property> guiPropertyList = PropertyManager.getInstance().findProperties(identity, null, null, null, USER_PROPERTY_KEY); + if (guiPropertyList != null && guiPropertyList.size() > 0) { logError("Found more than 1 entry for " + USER_PROPERTY_KEY + " in o_property table for user " + identity.getName() + ". Use first of them, deleting the others!", e); guiProperty = guiPropertyList.get(0); Iterator<Property> iterator = guiPropertyList.iterator(); iterator.next(); while (iterator.hasNext()) { - Property property = (Property) iterator.next(); + Property property = iterator.next(); PropertyManager.getInstance().deleteProperty(property); logInfo("Will delete old property: " + property.getTextValue()); - } - } - } - - if (guiProperty == null) { - return createEmptyDbPrefs(identity,false); - } else { - return getPreferencesForProperty(identity, guiProperty); + } + } } + return guiProperty; } private DbPrefs getPreferencesForProperty(Identity identity, Property guiProperty) { @@ -104,14 +123,13 @@ public class DbStorage extends LogDelegator implements PreferencesStorage{ private DbPrefs createEmptyDbPrefs(Identity identity, boolean isTransient) { DbPrefs prefs = new DbPrefs(); prefs.setIdentity(identity); - prefs.isTransient = isTransient; + prefs.setTransient(isTransient); return prefs; } private DbPrefs createDbPrefsFrom(Identity identity, Property guiProperty, String textValue) { - DbPrefs prefs = (DbPrefs) XStreamHelper.fromXML(textValue); + DbPrefs prefs = (DbPrefs) xstream.fromXML(textValue); prefs.setIdentity(identity); // reset transient value - prefs.dbProperty = guiProperty; // set property for later use return prefs; } diff --git a/src/main/java/org/olat/core/util/prefs/ram/RamPreferences.java b/src/main/java/org/olat/core/util/prefs/ram/RamPreferences.java index bec26a36fc14463d3c59609be805505295509440..d628c45843bf6705e501709c78d1a495e1a35e0d 100644 --- a/src/main/java/org/olat/core/util/prefs/ram/RamPreferences.java +++ b/src/main/java/org/olat/core/util/prefs/ram/RamPreferences.java @@ -39,20 +39,20 @@ import org.olat.core.util.prefs.Preferences; * @author Felix */ public class RamPreferences implements Preferences { - private Map store = new HashMap(); + private Map<String, Object> store = new HashMap<String, Object>(); /** * @see org.olat.core.util.prefs.Preferences#get(java.lang.Class, java.lang.String) */ - public Object get(Class attributedClass, String key) { + public Object get(Class<?> attributedClass, String key) { return store.get(getCompoundKey(attributedClass, key)); } /** * @see org.olat.core.util.prefs.Preferences#get(java.lang.Class, java.lang.String, java.lang.Object) */ - public Object get(Class attributedClass, String key, Object defaultValue) { + public Object get(Class<?> attributedClass, String key, Object defaultValue) { Object value = get(attributedClass, key); if (value == null) return defaultValue; return value; @@ -61,14 +61,14 @@ public class RamPreferences implements Preferences { /** * @see org.olat.core.util.prefs.Preferences#put(java.lang.Class, java.lang.String, java.lang.Object) */ - public void put(Class attributedClass, String key, Object value) { + public void put(Class<?> attributedClass, String key, Object value) { store.put(getCompoundKey(attributedClass, key), value); } /** * @see org.olat.core.util.prefs.Preferences#putAndSave(java.lang.Class, java.lang.String, java.lang.Object) */ - public void putAndSave(Class attributedClass, String key, Object value) { + public void putAndSave(Class<?> attributedClass, String key, Object value) { put(attributedClass, key, value); save(); @@ -82,13 +82,13 @@ public class RamPreferences implements Preferences { } - private String getCompoundKey(Class attributedClass, String key) { + private String getCompoundKey(Class<?> attributedClass, String key) { return attributedClass.getName()+":"+key; } public Object findPrefByKey(String partOfKey) { - for (Iterator iterator = store.keySet().iterator(); iterator.hasNext();) { - String key = (String) iterator.next(); + for (Iterator<String> iterator = store.keySet().iterator(); iterator.hasNext();) { + String key = iterator.next(); if (key.endsWith(partOfKey)) return store.get(key); } return null; diff --git a/src/main/java/org/olat/core/util/prefs/ram/RamPreferencesStorage.java b/src/main/java/org/olat/core/util/prefs/ram/RamPreferencesStorage.java index 302033c539acd3e7f09a0cc63b2f6a5604a68f21..402ec5ce10e7606db719a5b2cb6f24d47e12b0e5 100644 --- a/src/main/java/org/olat/core/util/prefs/ram/RamPreferencesStorage.java +++ b/src/main/java/org/olat/core/util/prefs/ram/RamPreferencesStorage.java @@ -43,10 +43,10 @@ import org.olat.core.util.prefs.PreferencesStorage; * @author Felix Jost */ public class RamPreferencesStorage implements PreferencesStorage { - private Map identToPrefs; + private Map<String, Preferences> identToPrefs; public RamPreferencesStorage() { - identToPrefs = new HashMap(); + identToPrefs = new HashMap<String, Preferences>(); } /** @@ -65,4 +65,11 @@ public class RamPreferencesStorage implements PreferencesStorage { return p; } + @Override + public void updatePreferencesFor(Preferences prefs, Identity identity) { + // + } + + + } \ No newline at end of file diff --git a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java index ccebd9556e33e97060a3d7db5b9fa8fe1cba90b0..7bf5902d63eaf405c193392edf28c7335ab98957 100644 --- a/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java +++ b/src/main/java/org/olat/course/assessment/AssessedIdentitiesTableDataModel.java @@ -270,8 +270,8 @@ public class AssessedIdentitiesTableDataModel extends DefaultTableDataModel { userListCtr.addColumnDescriptor(new BooleanColumnDescriptor("table.header.passed", colCount++, translator.translate("passed.true"), translator.translate("passed.false"))); } - userListCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.initialLaunchDate", colCount++, null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT)); - userListCtr.addColumnDescriptor(new DefaultColumnDescriptor("table.header.lastScoreDate", colCount++, null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT)); + userListCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("table.header.initialLaunchDate", colCount++, null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT)); + userListCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("table.header.lastScoreDate", colCount++, null, getLocale(), ColumnDescriptor.ALIGNMENT_LEFT)); } } diff --git a/src/main/java/org/olat/course/assessment/AssessmentLoggingAction.java b/src/main/java/org/olat/course/assessment/AssessmentLoggingAction.java index e9c42a98efaf5404522a80a4e1f8ecd46eab4d35..35915d08515d95e55c77f7e224211e9f2dc16436 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentLoggingAction.java +++ b/src/main/java/org/olat/course/assessment/AssessmentLoggingAction.java @@ -61,21 +61,21 @@ import org.olat.core.logging.activity.StringResourceableType; // the stickyactiontype to admin public static final ILoggingAction ASSESSMENT_ATTEMPTS_UPDATED = new AssessmentLoggingAction(ActionType.statistic, CrudAction.update, ActionVerb.edit, ActionObject.testattempts).setTypeList( - new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiAttempts, StringResourceableType.targetIdentity)); + new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiAttempts).addOptional(StringResourceableType.targetIdentity)); public static final ILoggingAction ASSESSMENT_SCORE_UPDATED = new AssessmentLoggingAction(ActionType.statistic, CrudAction.update, ActionVerb.edit, ActionObject.testscore).setTypeList( - new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiScore, StringResourceableType.targetIdentity)); + new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiScore).addOptional(StringResourceableType.targetIdentity)); public static final ILoggingAction ASSESSMENT_PASSED_UPDATED = new AssessmentLoggingAction(ActionType.statistic, CrudAction.update, ActionVerb.edit, ActionObject.testsuccess).setTypeList( - new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiPassed, StringResourceableType.targetIdentity)); + new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiPassed).addOptional(StringResourceableType.targetIdentity)); // note that comments can only be set via a tutor, hence the following two are strict admin actions public static final ILoggingAction ASSESSMENT_USERCOMMENT_UPDATED = new AssessmentLoggingAction(ActionType.admin, CrudAction.update, ActionVerb.edit, ActionObject.testcomment).setTypeList( - new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiUserComment, StringResourceableType.targetIdentity)); + new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiUserComment).addOptional(StringResourceableType.targetIdentity)); public static final ILoggingAction ASSESSMENT_COACHCOMMENT_UPDATED = new AssessmentLoggingAction(ActionType.admin, CrudAction.update, ActionVerb.edit, ActionObject.testcomment).setTypeList( - new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiCoachComment, StringResourceableType.targetIdentity)); + new ResourceableTypeList().addMandatory(OlatResourceableType.course, OlatResourceableType.node, StringResourceableType.qtiCoachComment).addOptional(StringResourceableType.targetIdentity)); /** diff --git a/src/main/java/org/olat/course/assessment/AssessmentMainController.java b/src/main/java/org/olat/course/assessment/AssessmentMainController.java index 6903e3a84314955f269b09372cfa69afb691342c..7cdab881e4fe4a4dbad716ead6fcf400e3262faa 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentMainController.java +++ b/src/main/java/org/olat/course/assessment/AssessmentMainController.java @@ -40,6 +40,7 @@ import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.SecurityGroup; import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; import org.olat.core.commons.persistence.DBFactory; +import org.olat.core.gui.ShortName; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.link.Link; @@ -145,7 +146,7 @@ public class AssessmentMainController extends MainLayoutBasicController implemen private NodeTableDataModel nodeTableModel; private TableController groupListCtr, userListCtr, nodeListCtr; - private List nodeFilters; + private List<ShortName> nodeFilters; private List<Identity> identitiesList; // Course assessment notification support fields @@ -377,19 +378,8 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea ICourse course = CourseFactory.loadCourse(ores); this.isFiltering = enableFiltering; userChoose.contextPut("isFiltering", enableFiltering); - this.nodeFilters = addAssessableNodesToList(course.getRunStructure().getRootNode(), this.currentGroup); - userListCtr.setFilters(this.nodeFilters, null ); - } - - /** - * Enable/disable filtering of groups in - * @param enableFiltering - * @param ureq - */ - private void enableFilteringGroups(boolean enableFiltering, UserRequest ureq) { - this.isFiltering = enableFiltering; - groupChoose.contextPut("isFiltering", enableFiltering); - doGroupChoose(ureq); + nodeFilters = getNodeFilters(course.getRunStructure().getRootNode(), currentGroup); + userListCtr.setFilters(nodeFilters, null); } /** @@ -451,8 +441,13 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea } } } else if (event.equals(TableController.EVENT_FILTER_SELECTED)) { - this.currentCourseNode = (AssessableCourseNode) userListCtr.getActiveFilter(); - doUserChooseWithData(ureq, this.identitiesList, this.currentGroup, this.currentCourseNode); + ShortName filter = userListCtr.getActiveFilter(); + if(filter instanceof AssessableCourseNode) { + currentCourseNode = (AssessableCourseNode)filter; + } else { + currentCourseNode = null; + } + doUserChooseWithData(ureq, identitiesList, currentGroup, currentCourseNode); } } else if (source == nodeListCtr) { @@ -474,8 +469,13 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea } } } else if (event.equals(TableController.EVENT_FILTER_SELECTED)) { - this.currentCourseNode = (AssessableCourseNode) nodeListCtr.getActiveFilter(); - doUserChooseWithData(ureq, this.identitiesList, null, this.currentCourseNode); + ShortName filter = nodeListCtr.getActiveFilter(); + if(filter instanceof AssessableCourseNode) { + currentCourseNode = (AssessableCourseNode)filter; + } else { + currentCourseNode = null; + } + doUserChooseWithData(ureq, identitiesList, null, currentCourseNode); } } else if (source == assessmentEditController) { @@ -669,8 +669,8 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea Translator defaultContextTranslator = new PackageTranslator(Util.getPackageName(BGContextTableModel.class), ureq.getLocale()); // loop over all groups to filter depending on condition List<BusinessGroup> currentGroups = new ArrayList<BusinessGroup>(); - for (Iterator iter = this.coachedGroups.iterator(); iter.hasNext();) { - BusinessGroup group = (BusinessGroup) iter.next(); + for (Iterator<BusinessGroup> iter = this.coachedGroups.iterator(); iter.hasNext();) { + BusinessGroup group = iter.next(); if ( !isFiltering || isVisibleAndAccessable(this.currentCourseNode, group) ) { currentGroups.add(group); } @@ -697,11 +697,7 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea ICourse course = CourseFactory.loadCourse(ores); //fxdiff FXOLAT-108: improve results table of tests if (mode == MODE_GROUPFOCUS || mode == MODE_USERFOCUS) { - this.nodeFilters = addAssessableNodesToList(course.getRunStructure().getRootNode(), group); - if (courseNode == null && this.nodeFilters.size() > 0) { - this.currentCourseNode = (AssessableCourseNode) this.nodeFilters.get(0); - courseNode = this.currentCourseNode; - } + nodeFilters = getNodeFilters(course.getRunStructure().getRootNode(), group); } // Init table headers removeAsListenerAndDispose(userListCtr); @@ -712,6 +708,8 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea } else if(mode == MODE_GROUPFOCUS){ //fxdiff VCRP-4: assessment overview with max score tableConfig.setPreferencesOffered(true, "assessmentGroupUsersNode"); + } else if (mode == MODE_NODEFOCUS) { + tableConfig.setPreferencesOffered(true, "assessmentUserNodeList"); } if (mode == MODE_GROUPFOCUS || mode == MODE_USERFOCUS) { @@ -945,8 +943,15 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea * @param courseNode * @return List of course Nodes */ - private List addAssessableNodesToList(CourseNode courseNode, BusinessGroup group) { - List result = new ArrayList(); + private List<ShortName> getNodeFilters(CourseNode courseNode, BusinessGroup group) { + List<ShortName> filters = new ArrayList<ShortName>(); + filters.add(new FilterName(translate("nodesoverview.filter.showEmptyNodes"))); + filters.addAll(addAssessableNodesToList(courseNode, group)); + return filters; + } + + private List<ShortName> addAssessableNodesToList(CourseNode courseNode, BusinessGroup group) { + List<ShortName> result = new ArrayList<ShortName>(); if (courseNode instanceof AssessableCourseNode && !(courseNode instanceof ProjectBrokerCourseNode)) { // TODO:cg 04.11.2010 ProjectBroker : no assessment-tool in V1.0 , remove projectbroker completely form assessment-tool gui AssessableCourseNode assessableCourseNode = (AssessableCourseNode) courseNode; AssessableCourseNode assessableCourseNode = (AssessableCourseNode) courseNode; @@ -994,13 +999,13 @@ AssessmentMainController(UserRequest ureq, WindowControl wControl, OLATResourcea identityEnvironment.setIdentity(identity); UserCourseEnvironment uce = new UserCourseEnvironmentImpl(identityEnvironment, course.getCourseEnvironment()); OnlyGroupConditionInterpreter ci = new OnlyGroupConditionInterpreter(uce); - List listOfConditionExpressions = courseNode.getConditionExpressions(); + List<ConditionExpression> listOfConditionExpressions = courseNode.getConditionExpressions(); boolean allConditionAreValid = true; // loop over all conditions, all must be true - for (Iterator iter = listOfConditionExpressions.iterator(); iter.hasNext();) { + for (Iterator<ConditionExpression> iter = listOfConditionExpressions.iterator(); iter.hasNext();) { ConditionExpression conditionExpression = (ConditionExpression) iter.next(); - Tracing.logDebug("conditionExpression=" + conditionExpression, this.getClass()); - Tracing.logDebug("conditionExpression.getId()=" + conditionExpression.getId(), this.getClass()); + logDebug("conditionExpression=" + conditionExpression, null); + logDebug("conditionExpression.getId()=" + conditionExpression.getId(), null); Condition condition = new Condition(); condition.setConditionId(conditionExpression.getId()); condition.setConditionExpression(conditionExpression.getExptressionString()); diff --git a/src/main/java/org/olat/course/assessment/FilterName.java b/src/main/java/org/olat/course/assessment/FilterName.java new file mode 100644 index 0000000000000000000000000000000000000000..1984f0e94a09dcd4bc02a46abba1fc0e4bf8887b --- /dev/null +++ b/src/main/java/org/olat/course/assessment/FilterName.java @@ -0,0 +1,29 @@ +package org.olat.course.assessment; + +import org.olat.core.gui.ShortName; + +/** + * + * Description:<br> + * + * <P> + * Initial Date: 27 janv. 2012 <br> + * + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + */ +public class FilterName implements ShortName { + + private final String name; + + public FilterName(String name) { + this.name = name; + } + + @Override + public String getShortName() { + return name; + } + + + +} diff --git a/src/main/java/org/olat/course/assessment/IdentityAssessmentOverviewController.java b/src/main/java/org/olat/course/assessment/IdentityAssessmentOverviewController.java index f683109a1e3b92e989d8706674fe76f91e7d690d..eb29b26dc4c57206e553cffc8c6bfd27ae4ba56e 100644 --- a/src/main/java/org/olat/course/assessment/IdentityAssessmentOverviewController.java +++ b/src/main/java/org/olat/course/assessment/IdentityAssessmentOverviewController.java @@ -248,6 +248,7 @@ public class IdentityAssessmentOverviewController extends BasicController { } }); } + nodesTableModel = new NodeAssessmentTableDataModel(nodesTableList, getTranslator(), nodesSelectable); tableFilterCtr.setTableDataModel(nodesTableModel); @@ -257,23 +258,9 @@ public class IdentityAssessmentOverviewController extends BasicController { private void initNodesoverviewTableFilters(){ // create filter for only nodes with values - this.discardEmptyNodesFilter = new ShortName() { - /** - * @see org.olat.core.gui.ShortName#getShortName() - */ - public String getShortName() { - return translate("nodesoverview.filter.discardEmptyNodes"); - } - }; + this.discardEmptyNodesFilter = new FilterName(translate("nodesoverview.filter.discardEmptyNodes")); // create filter for all nodes, even with no values - this.showAllNodesFilter = new ShortName() { - /** - * @see org.olat.core.gui.ShortName#getShortName() - */ - public String getShortName() { - return translate("nodesoverview.filter.showEmptyNodes"); - } - }; + this.showAllNodesFilter = new FilterName(translate("nodesoverview.filter.showEmptyNodes")); // add this two filter to the filters list this.nodesoverviewTableFilters = new ArrayList<ShortName>(); this.nodesoverviewTableFilters.add(discardEmptyNodesFilter); diff --git a/src/main/java/org/olat/course/nodes/TACourseNode.java b/src/main/java/org/olat/course/nodes/TACourseNode.java index 3d04424b77dbead2273ae01ed9c7f69af910aab5..9b9ab4dc4e8d02bcf61458ecad71f1afb5a04df2 100644 --- a/src/main/java/org/olat/course/nodes/TACourseNode.java +++ b/src/main/java/org/olat/course/nodes/TACourseNode.java @@ -30,7 +30,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; -import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Set; @@ -73,7 +72,6 @@ import org.olat.course.nodes.ta.ReturnboxController; import org.olat.course.nodes.ta.TACourseNodeEditController; import org.olat.course.nodes.ta.TACourseNodeRunController; import org.olat.course.nodes.ta.TaskController; -import org.olat.course.nodes.ta.TaskFormController; import org.olat.course.properties.CoursePropertyManager; import org.olat.course.properties.PersistingCoursePropertyManager; import org.olat.course.run.environment.CourseEnvironment; @@ -104,17 +102,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN private static final String NLS_GUESTNOACCESS_TITLE = "guestnoaccess.title"; private static final String NLS_GUESTNOACCESS_MESSAGE = "guestnoaccess.message"; private static final String NLS_ERROR_MISSINGSCORECONFIG_SHORT = "error.missingscoreconfig.short"; - private static final String NLS_ERROR_MISSING_GROUP_SHORT = "error.missing.group.short"; - private static final String NLS_ERROR_MISSING_GROUP_LONG = "error.missing.group.long"; private static final String NLS_WARN_NODEDELETE = "warn.nodedelete"; - private static final String NLS_DROPBOX_ERROR_MISSING_GROUP_SHORT = "error.dropbox.missing.group.short"; - private static final String NLS_DROPBOX_ERROR_MISSING_GROUP_LONG = "error.dropbox.missing.group.long"; - private static final String NLS_RETURNBOX_ERROR_MISSING_GROUP_SHORT = "error.returnbox.missing.group.short"; - private static final String NLS_RETURNBOX_ERROR_MISSING_GROUP_LONG = "error.returnbox.missing.group.long"; - private static final String NLS_SOLUTION_ERROR_MISSING_GROUP_SHORT = "error.solution.missing.group.short"; - private static final String NLS_SOLUTION_ERROR_MISSING_GROUP_LONG = "error.solution.missing.group.long"; - private static final String NLS_SCORING_ERROR_MISSING_GROUP_SHORT = "error.scoring.missing.group.short"; - private static final String NLS_SCORING_ERROR_MISSING_GROUP_LONG = "error.scoring.missing.group.long"; private static final int CURRENT_CONFIG_VERSION = 2; @@ -284,52 +272,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN hasSolution = new Boolean(false); } - if (hasScoring.booleanValue() || hasDropbox.booleanValue() || hasSolution.booleanValue() || hasReturnbox.booleanValue()) { - // check if any group exit for this course - if ((groupMgr != null) && (groupMgr.getAllLearningGroupsFromAllContexts().size() == 0)) { - String[] params = new String[] { this.getShortTitle() }; - String translPackage = Util.getPackageName(TaskFormController.class); - sd = new StatusDescription(StatusDescription.WARNING, NLS_ERROR_MISSING_GROUP_SHORT, NLS_ERROR_MISSING_GROUP_LONG, params, translPackage); - sd.setDescriptionForUnit(getIdent()); - // set which pane is affected by error - sd.setActivateableViewIdentifier(TACourseNodeEditController.PANE_TAB_ACCESSIBILITY); - } else if (hasDropbox.booleanValue() && ( conditionDrop.getEasyModeGroupAccess() == null || conditionDrop.getEasyModeGroupAccess().equals("") ) - && ( conditionDrop.getEasyModeGroupAreaAccess() == null || conditionDrop.getEasyModeGroupAreaAccess().equals("") )) { - String[] params = new String[] { this.getShortTitle() }; - String translPackage = Util.getPackageName(TaskFormController.class); - sd = new StatusDescription(StatusDescription.WARNING, NLS_DROPBOX_ERROR_MISSING_GROUP_SHORT, NLS_DROPBOX_ERROR_MISSING_GROUP_LONG, params, translPackage); - sd.setDescriptionForUnit(getIdent()); - // set which pane is affected by error - sd.setActivateableViewIdentifier(TACourseNodeEditController.PANE_TAB_ACCESSIBILITY); - } else if (hasReturnbox.booleanValue() && ( conditionReturnbox.getEasyModeGroupAccess() == null || conditionReturnbox.getEasyModeGroupAccess().equals("") ) - && ( conditionReturnbox.getEasyModeGroupAreaAccess() == null || conditionReturnbox.getEasyModeGroupAreaAccess().equals("") )) { - //show NLS_RETURNBOX_ERROR_MISSING_GROUP error only if the dropCondition is also null, else use same group as for the dropbox - if( conditionDrop.getEasyModeGroupAccess() == null /*|| conditionDrop.getEasyModeGroupAccess().equals("")*/ ) { - String[] params = new String[] { this.getShortTitle() }; - String translPackage = Util.getPackageName(TaskFormController.class); - sd = new StatusDescription(StatusDescription.WARNING, NLS_RETURNBOX_ERROR_MISSING_GROUP_SHORT, NLS_RETURNBOX_ERROR_MISSING_GROUP_LONG, params, translPackage); - sd.setDescriptionForUnit(getIdent()); - // set which pane is affected by error - sd.setActivateableViewIdentifier(TACourseNodeEditController.PANE_TAB_ACCESSIBILITY); - } - } else if (hasScoring.booleanValue() && ( conditionScoring.getEasyModeGroupAccess() == null || conditionScoring.getEasyModeGroupAccess().equals("") ) - && ( conditionScoring.getEasyModeGroupAreaAccess() == null || conditionScoring.getEasyModeGroupAreaAccess().equals("") )) { - String[] params = new String[] { this.getShortTitle() }; - String translPackage = Util.getPackageName(TaskFormController.class); - sd = new StatusDescription(StatusDescription.WARNING, NLS_SCORING_ERROR_MISSING_GROUP_SHORT, NLS_SCORING_ERROR_MISSING_GROUP_LONG, params, translPackage); - sd.setDescriptionForUnit(getIdent()); - // set which pane is affected by error - sd.setActivateableViewIdentifier(TACourseNodeEditController.PANE_TAB_ACCESSIBILITY); - } else if (hasSolution.booleanValue() && ( conditionSolution.getEasyModeGroupAccess() == null || conditionSolution.getEasyModeGroupAccess().equals("") ) - && ( conditionSolution.getEasyModeGroupAreaAccess() == null || conditionSolution.getEasyModeGroupAreaAccess().equals("") )) { - String[] params = new String[] { this.getShortTitle() }; - String translPackage = Util.getPackageName(TaskFormController.class); - sd = new StatusDescription(StatusDescription.WARNING, NLS_SOLUTION_ERROR_MISSING_GROUP_SHORT, NLS_SOLUTION_ERROR_MISSING_GROUP_LONG, params, translPackage); - sd.setDescriptionForUnit(getIdent()); - // set which pane is affected by error - sd.setActivateableViewIdentifier(TACourseNodeEditController.PANE_TAB_ACCESSIBILITY); - } - } + //remove the error handling for missing groups as you can use the course members return sd; } @@ -346,7 +289,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN if (groupMgr == null) { groupMgr = cev.getCourseGroupManager(); } - List sds = isConfigValidWithTranslator(cev, translatorStr, getConditionExpressions()); + List<StatusDescription> sds = isConfigValidWithTranslator(cev, translatorStr, getConditionExpressions()); oneClickStatusCache = StatusDescriptionHelper.sort(sds); return oneClickStatusCache; } @@ -382,7 +325,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN public String informOnDelete(Locale locale, ICourse course) { Translator trans = new PackageTranslator(PACKAGE_TA, locale); CoursePropertyManager cpm = PersistingCoursePropertyManager.getInstance(course); - List list = cpm.listCourseNodeProperties(this, null, null, null); + List<Property> list = cpm.listCourseNodeProperties(this, null, null, null); if (list.size() != 0) return trans.translate("warn.nodedelete"); // properties exist File fTaskFolder = new File(FolderConfig.getCanonicalRoot() + TACourseNode.getTaskFolderPathRelToFolderRoot(course, this)); if (fTaskFolder.exists() && fTaskFolder.list().length > 0) return trans.translate(NLS_WARN_NODEDELETE); // task folder contains files @@ -730,7 +673,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN public String getDetailsListView(UserCourseEnvironment userCourseEnvironment) { Identity identity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); CoursePropertyManager propMgr = userCourseEnvironment.getCourseEnvironment().getCoursePropertyManager(); - List samples = propMgr.findCourseNodeProperties(this, identity, null, TaskController.PROP_ASSIGNED); + List<Property> samples = propMgr.findCourseNodeProperties(this, identity, null, TaskController.PROP_ASSIGNED); if (samples.size() == 0) return null; // no sample assigned yet return ((Property) samples.get(0)).getStringValue(); } @@ -823,8 +766,8 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN } // prepare writing course results overview table - List users = ScoreAccountingHelper.loadUsers(course.getCourseEnvironment()); - List nodes = new ArrayList(); + List<Identity> users = ScoreAccountingHelper.loadUsers(course.getCourseEnvironment()); + List<AssessableCourseNode> nodes = new ArrayList<AssessableCourseNode>(); nodes.add(this); String s = ScoreAccountingHelper.createCourseResultsOverviewTable(users, nodes, course, locale); @@ -835,7 +778,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN ExportUtil.writeContentToFile(fileName, s, tmpDir, charset); // prepare zipping the node directory and the course results overview table - Set fileList = new HashSet(); + Set<String> fileList = new HashSet<String>(); // move xls file to tmp dir fileList.add(fileName); // copy solutions to tmp dir @@ -866,8 +809,7 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN // copy only the choosen task to user taskfolder, loop over all users String taskfolderPath = FolderConfig.getCanonicalRoot() + TACourseNode.getTaskFolderPathRelToFolderRoot(course.getCourseEnvironment(),this); boolean taskFolderExist = false; - for(Iterator iter=users.iterator();iter.hasNext();) { - Identity identity = (Identity)iter.next(); + for(Identity identity:users) { // check if user already chose a task String assignedTask = TaskController.getAssignedTask(identity, course.getCourseEnvironment(), this); if (assignedTask != null) { @@ -991,13 +933,13 @@ public class TACourseNode extends GenericCourseNode implements AssessableCourseN * @see org.olat.course.nodes.GenericCourseNode#getConditionExpressions() */ @Override - public List getConditionExpressions() { - ArrayList retVal; - List parentsConditions = super.getConditionExpressions(); + public List<ConditionExpression> getConditionExpressions() { + List<ConditionExpression> retVal; + List<ConditionExpression> parentsConditions = super.getConditionExpressions(); if (parentsConditions.size() > 0) { - retVal = new ArrayList(parentsConditions); + retVal = new ArrayList<ConditionExpression>(parentsConditions); } else { - retVal = new ArrayList(); + retVal = new ArrayList<ConditionExpression>(); } // String coS = getConditionDrop().getConditionExpression(); diff --git a/src/main/java/org/olat/course/nodes/iq/IQRunController.java b/src/main/java/org/olat/course/nodes/iq/IQRunController.java index 235a5220a781815eea089db57c009393b00ab965..4ca8dd71395c0ae7b61f0889fcfc36cf3d312d3e 100644 --- a/src/main/java/org/olat/course/nodes/iq/IQRunController.java +++ b/src/main/java/org/olat/course/nodes/iq/IQRunController.java @@ -52,6 +52,7 @@ import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.core.logging.AssertException; import org.olat.core.logging.OLATRuntimeException; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Formatter; import org.olat.core.util.UserSession; import org.olat.core.util.event.EventBus; @@ -381,6 +382,7 @@ public class IQRunController extends BasicController implements GenericEventList //fxdiff BAKS-7 Resume function OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test"); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = addToHistory(ureq, ores, null); Controller returnController = IQManager.getInstance().createIQDisplayController(modConfig, secCallback, ureq, bwControl, callingResId, callingResDetail); /* @@ -457,7 +459,6 @@ public class IQRunController extends BasicController implements GenericEventList IQSubmittedEvent se = (IQSubmittedEvent) event; AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); - // Save results in case of test if (type.equals(AssessmentInstance.QMD_ENTRY_TYPE_ASSESS)) { // update scoring overview for the user in the current course diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ar.properties index 79a286d2f6669ab101b85b947338d1437902ee84..bc1754bf13f1f39079205276393ee49d22b0bb80 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ar.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ar.properties @@ -42,18 +42,6 @@ dropbox.notifications.entry={1} \u0645\u0644\u0641 "{0}" \u0641\u0649 dropbox.notifications.header="{0}" \u0645\u0631\u0628\u0639 \u0627\u0644\u0625\u0641\u0644\u0627\u062A \u0641\u0649 \u0627\u0644\u0645\u0642\u0631\u0631 dropbox.title=\u0645\u0631\u0628\u0639 \u0627\u0644\u0625\u0641\u0644\u0627\u062A dropbox.upload=\u062A\u062D\u0645\u064A\u0644 \u0645\u0644\u0641 -error.dropbox.missing.group.long=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0645\u0646 \u062E\u0644\u0627\u0644'\u0627\u0644\u0648\u0635\u0648\u0644') \u0642\u0628\u0644 \u0625\u0646\u0634\u0627\u0621 \u0645\u0631\u0628\u0639 \u0627\u0644\u0625\u0641\u0644\u0627\u062A. -error.dropbox.missing.group.short=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0628\u0648\u0627\u0633\u0637\u0629 '\u0627\u0644\u0648\u0635\u0648\u0644') \u0642\u0628\u0644 \u0625\u0646\u0634\u0627\u0621 \u0645\u0631\u0628\u0639 \u0627\u0644\u0625\u0641\u0644\u0627\u062A. -error.missing.group.long=\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0645\u062A\u0627\u062D\u0629\u060C \u0648\u064A\u062C\u0628 \u0623\u0648\u0644\u0627\u064B \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u0625\u0646\u0634\u0627\u0621 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F. -error.missing.group.short=\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0645\u062A\u0627\u062D\u0629. \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u0625\u0646\u0634\u0627\u0621 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F \u0623\u0648\u0644\u0627\u064B. -error.missingscoreconfig.long=."{0}" \u0627\u0641\u062A\u062D \u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u062A\u0628\u0648\u064A\u0628 "\u062A\u0642\u064A\u064A\u0645" \u0644\u062A\u0635\u062D\u064A\u062D -error.missingscoreconfig.short=\u0627\u0644\u062A\u0642\u064A\u064A\u0645 "{0}" \u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646\u0647 \u0628\u0634\u0643\u0644 \u0635\u062D\u064A\u062D. -error.returnbox.missing.group.long=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0644\u0645\u0631\u0628\u0639 \u0627\u0644\u0631\u062C\u0648\u0639\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0628\u0648\u0627\u0633\u0637\u0629 '\u0627\u0644\u0648\u0635\u0648\u0644') \u0644\u0645\u0631\u0628\u0639 \u0627\u0644\u0631\u062C\u0648\u0639 \u0627\u0644\u062E\u0627\u0635 \u0628\u0643. -error.returnbox.missing.group.short=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0644\u0645\u0631\u0628\u0639 \u0627\u0644\u0631\u062C\u0648\u0639\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0645\u0646 \u062E\u0644\u0627\u0644 '\u0627\u0644\u0648\u0635\u0648\u0644') \u0644\u0645\u0631\u0628\u0639 \u0627\u0644\u0631\u062C\u0648\u0639 \u0627\u0644\u062E\u0627\u0635 \u0628\u0643. -error.scoring.missing.group.long=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0645\u0646 \u062E\u0644\u0627\u0644'\u0627\u0644\u0648\u0635\u0648\u0644') \u0642\u0628\u0644 \u0627\u0644\u062A\u0642\u064A\u064A\u0645. -error.scoring.missing.group.short=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0639\u0646 \u0637\u0631\u064A\u0642'\u0627\u0644\u0648\u0635\u0648\u0644') \u0642\u0628\u0644 \u0627\u0644\u062A\u0642\u064A\u064A\u0645. -error.solution.missing.group.long=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0645\u0646 \u062E\u0644\u0627\u0644'\u0627\u0644\u0648\u0635\u0648\u0644') \u0642\u0628\u0644 \u0625\u0646\u0634\u0627\u0621 \u0639\u064A\u0646\u0629 \u0644\u0644\u0625\u062C\u0627\u0628\u0629.. -error.solution.missing.group.short=\u0644\u0645 \u064A\u062A\u0645 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645\u060C \u0648\u064A\u062C\u0628 \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644 \u062A\u0643\u0648\u064A\u0646 \u0645\u062C\u0645\u0648\u0639\u0629 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F\u0629 \u0623\u0648 \u0645\u062C\u0627\u0644 \u062A\u0639\u0644\u064A\u0645 \u0648\u0627\u062D\u062F (\u0639\u0646 \u0637\u0631\u064A\u0642'\u0627\u0644\u0648\u0635\u0648\u0644') \u0642\u0628\u0644 \u0625\u0646\u0634\u0627\u0621 \u0639\u064A\u0646\u0629 \u0644\u0644\u0625\u062C\u0627\u0628\u0629.. fieldset.dropbox.title=\u062A\u0623\u0643\u064A\u062F \u0627\u0644\u062A\u0633\u0644\u064A\u0645 folder.close=\u0625\u063A\u0644\u0627\u0642 \u0645\u062C\u0644\u062F \u0627\u0644\u0645\u0647\u0645\u0629 form.dropbox.confirmation=\u0627\u0644\u0646\u0635 \u0628\u0639\u062F \u0627\u0644\u062A\u0633\u0644\u064A\u0645 diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_bg.properties index 0c4bba3b05a2a019fc7f6c060abc980c49103e69..69d1d06cb0d0478353a9e2837bbc101fd693af09 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_bg.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_bg.properties @@ -42,16 +42,8 @@ dropbox.notifications.entry=\u0424\u0430\u0439\u043B\={0} \u041F\u043E\u0442\u0 dropbox.notifications.header=\u0421\u043B\u0435\u0434\u043D\u0438\u0442\u0435 \u0444\u0430\u0439\u043B\u043E\u0432\u0435 \u0441\u0430 \u043F\u0440\u0435\u0434\u0430\u0434\u0435\u043D\u0438\: dropbox.title=\u041A\u0443\u0442\u0438\u044F \u0437\u0430 \u043E\u0441\u0442\u0430\u0432\u044F\u043D\u0435 dropbox.upload=\u041A\u0430\u0447\u0435\u0442\u0435 \u0444\u0430\u0439\u043B -error.dropbox.missing.group.long=\u041D\u0435 \u0441\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043D\u0438 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u0412\u0438\u0435 \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 \u043F\u043E\u043D\u0435 \u0435\u0434\u043D\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A, \u043F\u0440\u0435\u0434\u0438 \u0434\u0430 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u043A\u0443\u0442\u0438\u044F \u0437\u0430 \u043E\u0441\u0442\u0430\u0432\u044F\u043D\u0435 (\u0447\u0440\u0435\u0437 "\u0414\u043E\u0441\u0442\u044A\u043F"). -error.dropbox.missing.group.short=\u041D\u0435 \u0441\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043D\u0438 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u0422\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u043A\u043E\u043D\u0444\u0443\u0433\u0438\u0440\u0438\u0440\u0430\u0442\u0435 \u043F\u043E\u043D\u0435 \u0435\u0434\u043D\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A \u043F\u0440\u0435\u0434\u0438 \u0434\u0430 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u043A\u0443\u0442\u0438\u044F \u0437\u0430 \u043E\u0441\u0442\u0430\u0432\u044F\u043D\u0435 (\u0447\u0440\u0435\u0437 "\u0414\u043E\u0441\u0442\u044A\u043F"). -error.missing.group.long=\u041D\u044F\u043C\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u041F\u044A\u0440\u0432\u043E \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u043F\u043E\u043D\u0435 \u0435\u0434\u043D\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. -error.missing.group.short=\u041D\u0435 \u0441\u044A\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0442 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u0422\u0440\u044F\u0431\u0432\u0430 \u043F\u044A\u0440\u0432\u043E \u0434\u0430 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. error.missingscoreconfig.long=\u041E\u0442\u0432\u043E\u0440\u0435\u0442\u0435 \u0442\u0430\u0431\u0430 "\u041E\u0446\u0435\u043D\u043A\u0430" \u0437\u0430 \u043F\u043E\u043F\u0440\u0430\u0432\u043A\u0430\u0442\u0430 \u043D\u0430 "{0}". error.missingscoreconfig.short=\u041E\u0446\u0435\u043D\u043A\u0430\u0442\u0430 \u043D\u0430 "{0}" \u0435 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043D\u0430 \u043F\u0440\u0430\u0432\u0438\u043B\u043D\u043E. -error.scoring.missing.group.long=\u041D\u0435 \u0441\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043D\u0438 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u0412\u0438\u0435 \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 \u043F\u043E\u043D\u0435 \u0435\u0434\u043D\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A, \u043F\u0440\u0435\u0434\u0438 \u0434\u0430 \u0434\u0430\u0434\u0435\u0442\u0435 \u043E\u0446\u0435\u043D\u043A\u0430 (\u0447\u0440\u0435\u0437 "\u0414\u043E\u0441\u0442\u044A\u043F"). -error.scoring.missing.group.short=\u041D\u0435 \u0441\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043D\u0438 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u0412\u0438\u0435 \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 \u043F\u043E\u043D\u0435 \u0435\u0434\u043D\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A, \u043F\u0440\u0435\u0434\u0438 \u0434\u0430 \u0434\u0430\u0434\u0435\u0442\u0435 \u043E\u0446\u0435\u043A\u0430 (\u0447\u0440\u0435\u0437 "\u0414\u043E\u0441\u0442\u044A\u043F"). -error.solution.missing.group.long=\u041D\u0435 \u0441\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043D\u0438 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u0412\u0438\u0435 \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u0442\u0435 \u043F\u043E\u043D\u0435 \u0435\u0434\u043D\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A, \u043F\u0440\u0435\u0434\u0438 \u0434\u0430 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E \u0440\u0435\u0448\u0435\u043D\u0438\u0435 (\u0447\u0440\u0435\u0437 "\u0414\u043E\u0441\u0442\u044A\u043F"). -error.solution.missing.group.short=\u041D\u0435 \u0441\u0430 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043D\u0438 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A. \u0422\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u043A\u043E\u043D\u0444\u0443\u0433\u0438\u0440\u0438\u0440\u0430\u0442\u0435 \u043F\u043E\u043D\u0435 \u0435\u0434\u043D\u0430 \u0443\u0447\u0435\u0431\u043D\u0430 \u0433\u0440\u0443\u043F\u0430 \u0438\u043B\u0438 \u0443\u0447\u0435\u0431\u0435\u043D \u043F\u043E\u0442\u043E\u043A \u043F\u0440\u0435\u0434\u0438 \u0434\u0430 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E \u0440\u0435\u0448\u0435\u043D\u0438\u0435 (\u0447\u0440\u0435\u0437 "\u0414\u043E\u0441\u0442\u044A\u043F"). fieldset.dropbox.title=\u041F\u043E\u0442\u0432\u044A\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u0437\u0430 \u043F\u0440\u0435\u0434\u0430\u0432\u0430\u043D\u0435 folder.close=\u0417\u0430\u0442\u0432\u043E\u0440\u0435\u0442\u0435 \u043F\u0430\u043F\u043A\u0430\u0442\u0430 \u0441\u044A\u0441 \u0437\u0430\u0434\u0430\u0447\u0438 form.dropbox.confirmation=\u0422\u0435\u043A\u0441\u0442 \u0441\u043B\u0435\u0434 \u043F\u0440\u0435\u0434\u0430\u0432\u0430\u043D\u0435 diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_cs.properties index 75b4231f9887fdb209e5adf4aed581ed62b729a6..7c3b95736eb92da16c57ecc8c3185e98a95b42ad 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_cs.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_cs.properties @@ -42,16 +42,8 @@ dropbox.notifications.entry=Soubor\={0} U\u017Eivatel\={1} Zahrnut v\={2} dropbox.notifications.header=N\u00E1sleduj\u00EDc\u00ED soubry byly zahrnuty\: dropbox.title=Vstupn\u00ED slo\u017Eka dropbox.upload=Nahr\u00E1t soubor -error.dropbox.missing.group.long=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED nastavena. Nejprve mus\u00EDte nastavit alespo\u0148 jednu studijn\u00ED skupinu nebo oblast k vytvo\u0159en\u00ED drop boxu (p\u0159ez 'P\u0159\u00EDstup'). -error.dropbox.missing.group.short=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED nastavena. Nejprve mus\u00EDte nastavit alespo\u0148 jednu studijn\u00ED skupinu nebo oblast k vytvo\u0159en\u00ED drop boxu (p\u0159ez 'P\u0159\u00EDstup'). -error.missing.group.long=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED dostupn\u00E1. Nejprve mes\u00EDte vytvo\u0159it studijn\u00ED skupinu nebo oblast. -error.missing.group.short=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED dostupn\u00E1. Nejprve mes\u00EDte vytvo\u0159it studijn\u00ED skupinu nebo oblast. error.missingscoreconfig.long=Otev\u0159te tabulku "Hodnocen\u00ED" pro opravu "{0}". error.missingscoreconfig.short=Hodnocen\u00ED "{0}" je spr\u00E1vn\u011B nastaveno. -error.scoring.missing.group.long=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED nastavena. Nejprve mus\u00EDte nastavit alespo\u0148 jednu studijn\u00ED skupinu nebo oblast k hodnocen\u00ED (p\u0159ez 'P\u0159\u00EDstup'). -error.scoring.missing.group.short=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED nastavena. Nejprve mus\u00EDte nastavit alespo\u0148 jednu studijn\u00ED skupinu nebo oblast k hodnocen\u00ED(p\u0159ez 'P\u0159\u00EDstup'). -error.solution.missing.group.long=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED nastavena. Nejprve mus\u00EDte nastavit alespo\u0148 jednu studijn\u00ED skupinu nebo oblast k vytvo\u0159en\u00ED uk\u00E1zkov\u00E9ho \u0159e\u0161en\u00ED (p\u0159ez 'P\u0159\u00EDstup'). -error.solution.missing.group.short=\u017D\u00E1dn\u00E1 studijn\u00ED skupina nebo oblast nen\u00ED nastavena. Nejprve mus\u00EDte nastavit alespo\u0148 jednu studijn\u00ED skupinu nebo oblast k vytvo\u0159en\u00ED uk\u00E1zkov\u00E9ho \u0159e\u0161en\u00ED (p\u0159ez 'P\u0159\u00EDstup'). fieldset.dropbox.title=Potvrzen\u00ED vstupu folder.close=Zav\u0159\u00EDt \u00FAkolovou slo\u017Eku form.dropbox.confirmation=Text po vstupu diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_de.properties index 2a6b03db7d3418bb4801e4051e9033c780d172a7..d6fed60cc8954ca33961bbd4f82c0ddd6f7620b4 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_de.properties @@ -49,18 +49,8 @@ returnbox.notifications.entry=Datei "{0}" von {1} returnbox.notifications.header=R\u00FCckgabeordner in Kurs "{0}" solution.notifications.entry=Datei "{0}" von {1} solution.notifications.header=Musterl\u00F6sung in Kurs "{0}" -error.dropbox.missing.group.long=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr den Abgabeordner. F\u00FCr den Abgabeordner (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. -error.dropbox.missing.group.short=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr den Abgabeordner. F\u00FCr den Abgabeordner (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. -error.returnbox.missing.group.long=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr den Rückgabeordner. F\u00FCr den Rückgabeordner (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. -error.returnbox.missing.group.short=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr den Rückgabeordner. F\u00FCr den Rückgabeordner (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. -error.missing.group.long=Keine Lerngruppe oder Lernbereich vorhanden. F\u00FCr den Aufgabenbaustein muss mindestens eine Lerngruppe oder Lernbereich erstellt werden. -error.missing.group.short=Keine Lerngruppe oder Lernbereich vorhanden. F\u00FCr den Aufgabenbaustein muss mindestens eine Lerngruppe oder Lernbereich erstellt werden. error.missingscoreconfig.long=\u00D6ffnen Sie den Tab "Bewertung", um "{0}" zu korrigieren. error.missingscoreconfig.short=Die Bewertung f\u00FCr "{0}" ist nicht korrekt konfiguriert. -error.scoring.missing.group.long=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr die Bewertung. F\u00FCr die Bewertung (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. -error.scoring.missing.group.short=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr die Bewertung. F\u00FCr die Bewertung (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. -error.solution.missing.group.long=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr die Musterl\u00F6sung. F\u00FCr die Musterl\u00F6sung (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. -error.solution.missing.group.short=Keine Lerngruppe oder Lernbereich konfiguriert f\u00FCr die Musterl\u00F6sung. F\u00FCr die Musterl\u00F6sung (unter Zugang) muss mindestens eine Lerngruppe oder Lernbereich konfiguriert werden. fieldset.dropbox.title=Bestätigung der Abgabe folder.close=Aufgabenordner schliessen form.dropbox.confirmation=Text nach erfolgter Abgabe diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_el.properties index ec355aa2ee4616fea57e3a909e6d5b7e0560537c..5a910a13f7443f19b3120fed306a0fbb44857114 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_el.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_el.properties @@ -44,19 +44,9 @@ dropbox.notifications.header=\u0398\u03C5\u03C1\u03AF\u03B4\u03B1 \u03C0\u03B1\u dropbox.title=\u0398\u03C5\u03C1\u03AF\u03B4\u03B1 \u03C0\u03B1\u03C1\u03AC\u03B4\u03BF\u03C3\u03B7\u03C2 dropbox.upload=\u0391\u03BD\u03AD\u03B2\u03B1\u03C3\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 dropbox.upload.failed=\u03A4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03B4\u03B5\u03BD \u03B1\u03BD\u03AD\u03B2\u03B7\u03BA\u03B5 -error.dropbox.missing.group.long=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03B1\u03C1\u03B1\u03BC\u03B5\u03C4\u03C1\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03C0\u03C1\u03B9\u03BD \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03BC\u03AF\u03B1 \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03C0\u03B1\u03C1\u03AC\u03B4\u03BF\u03C3\u03B7\u03C2 (\u03BC\u03AD\u03C3\u03C9 '\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2'). -error.dropbox.missing.group.short=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03B1\u03C1\u03B1\u03BC\u03B5\u03C4\u03C1\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03C0\u03C1\u03B9\u03BD \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 drop box (\u03BC\u03AD\u03C3\u03C9 '\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2'). -error.missing.group.long=\u0394\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B4\u03B9\u03B1\u03B8\u03AD\u03C3\u03B9\u03BC\u03B7 \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1. -error.missing.group.short=\u0394\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B4\u03B9\u03B1\u03B8\u03AD\u03C3\u03B9\u03BC\u03B7 \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1. error.missingscoreconfig.long=\u0391\u03BD\u03BF\u03AF\u03BE\u03C4\u03B5 \u03C4\u03BF \u03C4\u03BC\u03AE\u03BC\u03B1 "\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7" \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7 \u03C4\u03BF\u03C5 "{0}". error.missingscoreconfig.short=\u0397 \u03B1\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03C4\u03BF "{0}" \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C3\u03C9\u03C3\u03C4\u03AC \u03B4\u03B9\u03B1\u03BC\u03BF\u03C1\u03C6\u03C9\u03BC\u03AD\u03BD\u03B7. error.nomailbody=\u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BF\u03C1\u03AF\u03C3\u03B5\u03C4\u03B5 \u03BA\u03AC\u03C0\u03BF\u03B9\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03C3\u03C4\u03B5\u03AF\u03BB\u03B5\u03C4\u03B5 e-mail. -error.returnbox.missing.group.long=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03BA\u03B1\u03BC\u03AF\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE\u03C2. \u03A4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03AE \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE\u03C2 \u03C3\u03B1\u03C2 (\u03BC\u03AD\u03C3\u03C9 "\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2"). -error.returnbox.missing.group.short=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03BA\u03B1\u03BC\u03AF\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE\u03C2. \u03A4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03AE \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B8\u03C5\u03C1\u03AF\u03B4\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE\u03C2 \u03C3\u03B1\u03C2 (\u03C4\u03BC\u03AE\u03BC\u03B1\: "\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7"). -error.scoring.missing.group.long=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03B1\u03C1\u03B1\u03BC\u03B5\u03C4\u03C1\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03C0\u03C1\u03B9\u03BD \u03C4\u03B7\u03BD \u03B1\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7 (\u03BC\u03AD\u03C3\u03C9 '\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2'). -error.scoring.missing.group.short=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03B1\u03C1\u03B1\u03BC\u03B5\u03C4\u03C1\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03C0\u03C1\u03B9\u03BD \u03C4\u03B7\u03BD \u03B1\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7 (\u03BC\u03AD\u03C3\u03C9 '\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2'). -error.solution.missing.group.long=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03B1\u03C1\u03B1\u03BC\u03B5\u03C4\u03C1\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03C0\u03C1\u03B9\u03BD \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03B4\u03B5\u03AF\u03B3\u03BC\u03B1 \u03BB\u03CD\u03C3\u03B7\u03C2 (\u03BC\u03AD\u03C3\u03C9 '\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2'). -error.solution.missing.group.short=\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03C0\u03B1\u03C1\u03B1\u03BC\u03B5\u03C4\u03C1\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03BA\u03B1\u03BC\u03B9\u03AC \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2. \u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF\u03C5\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03BF\u03BD \u03BC\u03B9\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03AE \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE \u03BC\u03AC\u03B8\u03B7\u03C3\u03B7\u03C2 \u03C0\u03C1\u03CE\u03C4\u03B1 \u03C0\u03C1\u03B9\u03BD \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03B4\u03B5\u03AF\u03B3\u03BC\u03B1 \u03BB\u03CD\u03C3\u03B7\u03C2 (\u03BC\u03AD\u03C3\u03C9 '\u03A0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2'). fieldset.dropbox.title=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 \u03C5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE\u03C2 folder.close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03C6\u03B1\u03BA\u03AD\u03BB\u03BF\u03C5 \u03B5\u03C1\u03B3\u03B1\u03C3\u03B9\u03CE\u03BD form.dropbox.confirmation=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03BC\u03B5\u03C4\u03AC \u03C4\u03B7\u03BD \u03C5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE - \u03C0\u03B1\u03C1\u03AC\u03B4\u03BF\u03C3\u03B7 diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_en.properties index 4877d8901bab56ebfe99a39bba6e8589249ad5be..7b1a1f89d603e8de9ac0b6582cb154ac9ddb6a51 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_en.properties @@ -44,19 +44,9 @@ dropbox.notifications.header=Drop box in course "{0}" dropbox.title=Drop box dropbox.upload=Upload file dropbox.upload.failed=File could not be uploaded -error.dropbox.missing.group.long=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a drop box (via 'Access'). -error.dropbox.missing.group.short=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a drop box (via 'Access'). -error.missing.group.long=No learning group or learning area available. You have to create at least one learning group or learning area first. -error.missing.group.short=No learning group or learning area available. You have to create at least one learning group or learning area first. error.missingscoreconfig.long=Open the tab "Assessment" for the correction of "{0}". error.missingscoreconfig.short=The assessment for "{0}" is not correctly configured. error.nomailbody=You have to indicate some text to send an e-mail. -error.returnbox.missing.group.long=No learning group or area configured for return box. At least one learning area or group has to be configured for your return box (via "Access"). -error.returnbox.missing.group.short=No learning group or area configured for this return box. At least one learning group or learning area has to be configured for a return box (section\: access). -error.scoring.missing.group.long=No learning group or learning area configured. You have to configure at least one learning group or learning area before assessing (via 'Access'). -error.scoring.missing.group.short=No learning group or learning area configured. You have to configure at least one learning group or learning area before assessing (via 'Access'). -error.solution.missing.group.long=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a sample solution (via 'Access'). -error.solution.missing.group.short=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a sample solution (via 'Access'). fieldset.dropbox.title=Confirmation of handing in folder.close=Close task folder form.dropbox.confirmation=Text after handing in diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_es.properties index 476e49e8c257edfe2a5168f568787b6acf8dbfa5..c75e61076492ef0f9f947f066107fb926c7b03c1 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_es.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_es.properties @@ -42,16 +42,8 @@ dropbox.notifications.entry=Archivo\={0} Usuario\={1} Transmitido\={2} dropbox.notifications.header=Los archivos siguientes se han sido transmitido\: dropbox.title=Carpeta de entrega dropbox.upload=Transferir archivo -error.dropbox.missing.group.long=Falta grupo de estudios o \u00E1rea de aprendizaje. Tienes que configurar uno de los dos antes de creer una carpeta de entrega (por 'Acceso'). -error.dropbox.missing.group.short=Falta grupo de estudios o \u00E1rea de aprendizaje. Tienes que configurar uno de los dos antes de creer una carpeta de entrega (por 'Acceso'). -error.missing.group.long=No existe grupo de estudios o \u00E1rea de aprendizaje. Tienes que creer uno de los dos primero. -error.missing.group.short=No existe grupo de estudios o \u00E1rea de aprendizaje. Tienes que creer uno de los dos primero. error.missingscoreconfig.long=Abrir la pesta\u00F1a "Evaluaci\u00F3n" para la correcci\u00F3n de "{0}". error.missingscoreconfig.short=La evaluaci\u00F3n para "{0}" no est\u00E1 configurada correctamente. -error.scoring.missing.group.long=Falta grupo de estudios o \u00E1rea de aprendizaje. Tienes que configurar uno de los dos antes de hacer una asignaci\u00F3n (por 'Acceso'). -error.scoring.missing.group.short=Falta grupo de estudios o \u00E1rea de aprendizaje. Tienes que configurar uno de los dos antes de hacer una asignaci\u00F3n (por 'Acceso'). -error.solution.missing.group.long=Falta grupo de estudios o \u00E1rea de aprendizaje. Tienes que configurar uno de los dos antes de creer una soluci\u00F3n de muestra (por 'Acceso'). -error.solution.missing.group.short=Falta grupo de estudios o \u00E1rea de aprendizaje. Tienes que configurar uno de los dos antes de creer una soluci\u00F3n de muestra (por 'Acceso'). fieldset.dropbox.title=Confirmaci\u00F3n de la entrada de datos folder.close=Cerrar carpeta de tareas form.dropbox.confirmation=Texto despu\u00E9s de la entrada de datos diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_fr.properties index 96ac9013aab635ef94c4057bd988a56755bb4452..7d830e702939aef8c54c95711dffed0d848ee807 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_fr.properties @@ -44,19 +44,9 @@ dropbox.notifications.header=Les fichiers suivants ont \u00E9t\u00E9 d\u00E9pos\ dropbox.title=Dossier de d\u00E9p\u00F4t dropbox.upload=T\u00E9l\u00E9charger fichier dropbox.upload.failed=Le fichier n'a pas \u00E9t\u00E9 t\u00E9l\u00E9charg\u00E9 -error.dropbox.missing.group.long=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude configur\u00E9 pour le dossier de remise. Pour le dossier de remise (sous acc\u00E8s) au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. -error.dropbox.missing.group.short=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude configur\u00E9 pour le dossier de d\u00E9p\u00F4t. Pour le dossier de d\u00E9p\u00F4t (sous acc\u00E8s) au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. -error.missing.group.long=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude disponible. Pour l'\u00E9l\u00E9ment devoir, au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. -error.missing.group.short=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude disponible. Pour l'\u00E9l\u00E9ment devoir, au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. error.missingscoreconfig.long=Ouvrez l'onglet "\u00E9valuation" pour corriger "{0}". error.missingscoreconfig.short=L'\u00E9valuation pour "{0}" n'est pas correctement d\u00E9fini. error.nomailbody=Vous devez introduire un texte pour envoyer l'e-mail. -error.returnbox.missing.group.long=Aucun groupe d'\u00E9tudes ou domaines d'\u00E9tudes configur\u00E9 pour le dossier de restitution. Pour le dossier de restitution (sous acc\u00E8s), au moins un groupe d'\u00E9tudes ou domaine d'\u00E9tudes doit \u00EAtre configur\u00E9e. -error.returnbox.missing.group.short=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude d\u00E9fini pour le dossier de restitution. Pour le dossier de restitution (sous acc\u00E8s) au moins un groupe d'\u00E9tude ou de domaine d'\u00E9tude doit \u00EAtre configur\u00E9. -error.scoring.missing.group.long=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude configur\u00E9 pour l'\u00E9valuation. Pour l'\u00E9valuation (sous acc\u00E8s) au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. -error.scoring.missing.group.short=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude configur\u00E9 pour l'\u00E9valuation. Pour l'\u00E9valuation (sous acc\u00E8s) au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. -error.solution.missing.group.long=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude configur\u00E9 pour la solution mod\u00E8le. Pour la solution mod\u00E8le (sous acc\u00E8s) au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. -error.solution.missing.group.short=Aucun groupe d'\u00E9tude ou domaine d'\u00E9tude configur\u00E9 pour la solution mod\u00E8le. Pour la solution mod\u00E8le (sous acc\u00E8s) au moins un groupe d'\u00E9tude ou un domaine d'\u00E9tude doit \u00EAtre cr\u00E9\u00E9. fieldset.dropbox.title=Confirmation de remise folder.close=Fermer dossier devoirs form.dropbox.confirmation=Texte apr\u00E8s remise effectu\u00E9e diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_it.properties index 56292bc5c44ff793ed6a472de178d54c9e367eef..8e5328afa9f8d11a09a95e5325612c4b82b50546 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_it.properties @@ -44,19 +44,9 @@ dropbox.notifications.header=Sono stati consegnati i file seguenti\: dropbox.title=Cartella di consegna dropbox.upload=Caricare file dropbox.upload.failed=Il file non \u00E8 stato caricato -error.dropbox.missing.group.long=Nessun gruppo o area di studio configurati per la cartella di consegna. La cartella di consegna (sotto "Accesso") richiede la configurazione di almeno un gruppo o un'area di studio. -error.dropbox.missing.group.short=Nessun gruppo o area di studio configurati per la cartella di consegna. La cartella di consegna (sotto "Accesso") richiede la configurazione di almeno un gruppo o un'area di studio. -error.missing.group.long=Non esistono gruppi o aree di studio. L'elemento di corso "Compito" richiede la creazione di almeno un gruppo o un'area di studio. -error.missing.group.short=Non esistono gruppi o aree di studio. L'elemento di corso "Compito" richiede la creazione di almeno un gruppo o un'area di studio. error.missingscoreconfig.long=Apra il tab "Valutazione" per correggere "{0}". error.missingscoreconfig.short=La valutazione per "{0}" non \u00E8 configurata correttamente. error.nomailbody=Deve immettere un testo per inviare la e-mail. -error.returnbox.missing.group.long=Nessun gruppo o area di studio configurato per la cartella di restituzione. Per la cartella di restituzione (sotto "Accesso") occorre configurare almeno un gruppo o un'area di studio. -error.returnbox.missing.group.short=Nessun gruppo o area di studio configurati per la cartella di restituzione. Per la cartella di restituzione occurre configurare almeno un gruppo o un'area di studio (sotto "Accesso"). -error.scoring.missing.group.long=Nessun gruppo o area di studio configurati per la valutazione. La valutazione (sotto "Accesso") richiede la configurazione di almeno un gruppo o un'area di studio. -error.scoring.missing.group.short=Nessun gruppo o area di studio configurati per la valutazione. La valutazione (sotto "Accesso") richiede la configurazione di almeno un gruppo o un'area di studio. -error.solution.missing.group.long=Nessun gruppo o area di studio configurati per la soluzione modello. La soluzione modello (sotto "Accesso") richiede la configurazione di almeno un gruppo o un'area di studio. -error.solution.missing.group.short=Nessun gruppo o area di studio configurati per la soluzione modello. La soluzione modello (sotto "Accesso") richiede la configurazione di almeno un gruppo o un'area di studio. fieldset.dropbox.title=Conferma di consegna folder.close=Chiudere cartella dei compiti form.dropbox.confirmation=Testo dopo consegna avvenuta diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_nl_NL.properties index 094ea353178538aab2fd99fc3856c2c5e1d540ca..84db38a26f268dcafb1aec04e1d28069ffc8e2ff 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_nl_NL.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_nl_NL.properties @@ -44,19 +44,9 @@ dropbox.notifications.header=Drop box in cursus "{0}" dropbox.title=Drop box dropbox.upload=Bestand uploaden dropbox.upload.failed=Bestand kon niet ge\u00FCpload worden -error.dropbox.missing.group.long=Geen leergroepen of leerruimtes geconfigureerd. U moet tenminste \u00E9\u00E9n leergroep of leerruimte configureren voordat u een drop box aanmaakt (via 'Toegang). -error.dropbox.missing.group.short=Geen leergroep of leerruimte geconfigureerd. U moet tenminste \u00E9\u00E9n leergroep of leerruimte configureren voordat u een drop box aanmaakt (via 'Toegang'). -error.missing.group.long=Geen leergroepen of leerruimtes geconfigureerd. U moet tenminste \u00E9\u00E9n leergroep of leerruimte configureren. -error.missing.group.short=Geen leergroep of leerruimte geconfigureerd. U moet tenminste \u00E9\u00E9n leergroep of leerruimte aanmaken. error.missingscoreconfig.long=Open de tab 'Beoordeling' voor de verbetering van "{0}". error.missingscoreconfig.short=De beoordeling voor "{0}" is niet juist geconfigureerd. error.nomailbody=U moet tekst aanduiden om een e-mail te verzenden. -error.returnbox.missing.group.long=Geen leergroepen of leerruimtes voor de return box. Er moet tenminste \u00E9\u00E9n leergroep of leerruimte geconfigureerd worden voor uw return box (via "Toegang"). -error.returnbox.missing.group.short=Geen leergroepen of leerruimtes voor de return box. Er moet tenminste \u00E9\u00E9n leergroep of leerruimte geconfigureerd worden voor uw return box (sectie\: "Toegang"). -error.scoring.missing.group.long=Geen leergroepen of leerruimtes voor de return box. Er moet tenminste \u00E9\u00E9n leergroep of leerruimte geconfigureerd worden v\u00F3\u00F3r de beoordeling (via 'Toegang'). -error.scoring.missing.group.short=Geen leergroep of leerruimte geconfigureerd. U moet tenminste \u00E9\u00E9n leergroep of leerruimte configureren voordat u beoordeelt (via 'Toegang'). -error.solution.missing.group.long=Geen leergroepen of leerruimtes voor de return box. Er moet tenminste \u00E9\u00E9n leergroep of leerruimte geconfigureerd worden voordat u een voorbeeldoplossing aanmaakt (via "Toegang"). -error.solution.missing.group.short=Geen leergroep of leerruimte geconfigureerd. U moet tenminste \u00E9\u00E9n leergroep of leerruimte configureren voordat u een voorbeeldoplossing aanmaakt (via 'Toegang'). fieldset.dropbox.title=Bevestiging van inlevering folder.close=Sluit takenmap form.dropbox.confirmation=Tekst na het inleveren diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pl.properties index e6911c69845b00994477e689f87272ff657b116f..67fe4ec5a1dd25ee1afe439fb4339925baef00f2 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pl.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pl.properties @@ -44,19 +44,9 @@ dropbox.notifications.header=Nast\u0119puj\u0105ce pliki zosta\u0142y przes\u014 dropbox.title=Folder danych wej\u015Bciowych dropbox.upload=Przeka\u017C plik dropbox.upload.failed=Nie uda\u0142o si\u0119 za\u0142adowa\u0107 pliku -error.dropbox.missing.group.long=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a drop box (via 'Access'). -error.dropbox.missing.group.short=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a drop box (via 'Access'). -error.missing.group.long=No learning group or learning area available. You have to create at least one learning group or learning area first. -error.missing.group.short=No learning group or learning area available. You have to create at least one learning group or learning area first. error.missingscoreconfig.long=Otw\u00F3rz zak\u0142adk\u0119 "Ocena" w celu skorygowania "{0}". error.missingscoreconfig.short=Ocena dla "{0}" jest niepoprawnie skonfigurowana. error.nomailbody=Powiniene\u015B umie\u015Bci\u0107 jaki\u015B tekst, \u017Ceby wys\u0142a\u0107 maila. -error.returnbox.missing.group.long=Nie skonfigurowano grupy edukacyjnej lub obszaru edukacyjnego dla folderu zwrotnego. Przynajmniej jedna grupa edukacyjna lub jeden obszar edukacyjny powinny by\u0107 przypisane do folderu zwrotnego (opcja Dost\u0119p). -error.returnbox.missing.group.short=Nie skonfigurowano grupy edukacyjnej lub obszaru edukacyjnego dla folderu danych wej\u015Bciowych. Przynajmniej jedna grupa edukacyjna lub jeden obszar edukacyjny powinny by\u0107 przypisane do folderu danych wej\u015Bciowych (sekcja Dost\u0119p). -error.scoring.missing.group.long=No learning group or learning area configured. You have to configure at least one learning group or learning area before assessing (via 'Access'). -error.scoring.missing.group.short=No learning group or learning area configured. You have to configure at least one learning group or learning area before assessing (via 'Access'). -error.solution.missing.group.long=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a sample solution (via 'Access'). -error.solution.missing.group.short=No learning group or learning area configured. You have to configure at least one learning group or learning area before creating a sample solution (via 'Access'). fieldset.dropbox.title=Potwierdzenie wprowadzenia danych folder.close=Zamknij folder zadania form.dropbox.confirmation=Tekst po wprowadzeniu danych diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_BR.properties index 05eea0ce6e9b3be3b151da72e22d2c4f97c69052..06cc62399f67eb1be56338a01d0678a632fc5a48 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_BR.properties @@ -44,19 +44,9 @@ dropbox.notifications.header=Os seguintes arquivos de resolu\u00E7\u00E3o foram dropbox.title=Resolu\u00E7\u00E3o da tarefa dropbox.upload=Carregar arquivo dropbox.upload.failed=Arquivo n\u00E3o pode ser enviado -error.dropbox.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma caixa resolu\u00E7\u00E3o de tarefa (via 'Acesso'). -error.dropbox.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma caixa de resolu\u00E7\u00E3o de tarefa (via 'Acesso'). -error.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino dispon\u00EDvel. Voc\u00EA tem que criar pelo menos um grupo de estudo ou \u00E1rea de ensino primeiro. -error.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino dispon\u00EDvel. Voc\u00EA tem que criar pelo menos um grupo de estudo ou \u00E1rea de ensino primeiro. error.missingscoreconfig.long=Abrir o guia "Avalia\u00E7\u00E3o" para a corre\u00E7\u00E3o de "{0}". error.missingscoreconfig.short=A avalia\u00E7\u00E3o para "{0}" est\u00E1 configurada corretamente. error.nomailbody=Voc\u00EA tem que indicar algum texto para enviar um e-mail. -error.returnbox.missing.group.long=Data de in\u00EDcio ap\u00F3s o prazo -error.returnbox.missing.group.short=Prazo -error.scoring.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de acessar (via 'Acesso'). -error.scoring.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de acessar (via 'Acesso'). -error.solution.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma amostra de solu\u00E7\u00E3o (via 'Acesso'). -error.solution.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma amostra de solu\u00E7\u00E3o (via 'Acesso'). fieldset.dropbox.title=Confirma\u00E7\u00E3o de entrega folder.close=Fechar pasta de tarefa form.dropbox.confirmation=Texto ap\u00F3s entrega diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_PT.properties index dd6b9615c46ffe7ffcd0251e517faa737db207e5..dc1ca9e04f56e02f690efc39ad61d40f56d111f6 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_PT.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_pt_PT.properties @@ -42,16 +42,8 @@ dropbox.notifications.entry=Arquivo\={0} Usu\u00E1rio\={1} Manipulado em\={2} dropbox.notifications.header=Os seguintes arquivos de resolu\u00E7\u00E3o foram entregues\: dropbox.title=Resolu\u00E7\u00E3o da tarefa dropbox.upload=Carregar arquivo -error.dropbox.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma caixa resolu\u00E7\u00E3o de tarefa (via 'Acesso'). -error.dropbox.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma caixa de resolu\u00E7\u00E3o de tarefa (via 'Acesso'). -error.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino dispon\u00EDvel. Voc\u00EA tem que criar pelo menos um grupo de estudo ou \u00E1rea de ensino primeiro. -error.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino dispon\u00EDvel. Voc\u00EA tem que criar pelo menos um grupo de estudo ou \u00E1rea de ensino primeiro. error.missingscoreconfig.long=Abrir o guia "Avalia\u00E7\u00E3o" para a corre\u00E7\u00E3o de "{0}". error.missingscoreconfig.short=A avalia\u00E7\u00E3o para "{0}" est\u00E1 configurada corretamente. -error.scoring.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de acessar (via 'Acesso'). -error.scoring.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de acessar (via 'Acesso'). -error.solution.missing.group.long=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma amostra de solu\u00E7\u00E3o (via 'Acesso'). -error.solution.missing.group.short=Nenhum grupo de estudo ou \u00E1rea de ensino configurado. Voc\u00EA tem que configurar pelo menos um grupo de estudo ou \u00E1rea de ensino antes de criar uma amostra de solu\u00E7\u00E3o (via 'Acesso'). fieldset.dropbox.title=Confirma\u00E7\u00E3o de entrega folder.close=Fechar pasta de tarefa form.dropbox.confirmation=Texto ap\u00F3s entrega diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ru.properties index e08f747a9b17dcf6eeb4492150512bcac83e914c..292197783f80c4231f627899bab3185acb72c9b7 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ru.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_ru.properties @@ -28,16 +28,8 @@ dropbox.notifications.entry=\u0424\u0430\u0439\u043B\={0} \u041F\u043E\u043B\u0 dropbox.notifications.header=\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B \u0431\u044B\u043B\u0438 \u0441\u0434\u0430\u043D\u044B\: dropbox.title=\u041F\u0430\u043F\u043A\u0430 \u0441\u0434\u0430\u0447\u0438 dropbox.upload=\u041F\u0435\u0440\u0435\u0441\u043B\u0430\u0442\u044C \u0444\u0430\u0439\u043B -error.dropbox.missing.group.long=\u0414\u043B\u044F \u043F\u0430\u043F\u043A\u0438 \u0441\u0434\u0430\u0447\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0433\u0440\u0443\u043F\u043F\u044B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. \u0414\u043B\u044F \u043F\u0430\u043F\u043A\u0438 \u0441\u0434\u0430\u0447\u0438 (\u0432\u043A\u043B\u0430\u0434\u043A\u0430 "\u0414\u043E\u0441\u0442\u0443\u043F") \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. -error.dropbox.missing.group.short=\u0414\u043B\u044F \u043F\u0430\u043F\u043A\u0438 \u0441\u0434\u0430\u0447\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0433\u0440\u0443\u043F\u043F\u044B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. \u0414\u043B\u044F \u043F\u0430\u043F\u043A\u0438 \u0441\u0434\u0430\u0447\u0438 (\u0432\u043A\u043B\u0430\u0434\u043A\u0430 "\u0414\u043E\u0441\u0442\u0443\u043F") \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. -error.missing.group.long=\u0413\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u0414\u043B\u044F \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 "\u0417\u0430\u0434\u0430\u043D\u0438\u0435" \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043E\u0437\u0434\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. -error.missing.group.short=\u0413\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442. \u0414\u043B\u044F \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u043D\u043E\u0433\u043E \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430 "\u0417\u0430\u0434\u0430\u043D\u0438\u0435" \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043E\u0437\u0434\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. error.missingscoreconfig.long=\u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 \u0432\u043A\u043B\u0430\u0434\u043A\u0443 "\u041E\u0446\u0435\u043D\u043A\u0430", \u0447\u0442\u043E\u0431\u044B \u0438\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044E "{0}". error.missingscoreconfig.short=\u041E\u0446\u0435\u043D\u043A\u0430 "{0}" \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043D\u0435\u0432\u0435\u0440\u043D\u043E. -error.scoring.missing.group.long=\u0414\u043B\u044F \u043E\u0446\u0435\u043D\u043A\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0433\u0440\u0443\u043F\u043F\u044B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. \u0414\u043B\u044F \u043E\u0446\u0435\u043D\u043A\u0438 (\u0432\u043A\u043B\u0430\u0434\u043A\u0430 "\u0414\u043E\u0441\u0442\u0443\u043F") \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. -error.scoring.missing.group.short=\u0414\u043B\u044F \u043E\u0446\u0435\u043D\u043A\u0438 \u043D\u0435 \u0431\u044B\u043B\u043E \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0433\u0440\u0443\u043F\u043F\u044B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. \u0414\u043B\u044F \u043E\u0446\u0435\u043D\u043A\u0438 (\u0432\u043A\u043B\u0430\u0434\u043A\u0430 "\u0414\u043E\u0441\u0442\u0443\u043F") \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. -error.solution.missing.group.long=\u0414\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u0439 \u043D\u0435 \u0431\u044B\u043B\u043E \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0433\u0440\u0443\u043F\u043F\u044B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. \u0414\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u0439 (\u0432\u043A\u043B\u0430\u0434\u043A\u0430 "\u0414\u043E\u0441\u0442\u0443\u043F") \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. -error.solution.missing.group.short=\u0414\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u0439 \u043D\u0435 \u0431\u044B\u043B\u043E \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0433\u0440\u0443\u043F\u043F\u044B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u0438 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. \u0414\u043B\u044F \u0440\u0435\u0448\u0435\u043D\u0438\u0439 (\u0432\u043A\u043B\u0430\u0434\u043A\u0430 "\u0414\u043E\u0441\u0442\u0443\u043F") \u0434\u043E\u043B\u0436\u043D\u0430 \u0431\u044B\u0442\u044C \u0441\u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u0430 \u043A\u0430\u043A \u043C\u0438\u043D\u0438\u043C\u0443\u043C \u043E\u0434\u043D\u0430 \u0433\u0440\u0443\u043F\u043F\u0430 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F \u0438\u043B\u0438 \u043E\u0431\u043B\u0430\u0441\u0442\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F. fieldset.dropbox.title=\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u0435 \u0441\u0434\u0430\u0447\u0438 folder.close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u043F\u0430\u043F\u043A\u0443 \u0437\u0430\u0434\u0430\u043D\u0438\u0439 form.dropbox.confirmation=\u0422\u0435\u043A\u0441\u0442 \u043F\u043E\u0441\u043B\u0435 \u043F\u0440\u043E\u0438\u0437\u0432\u0435\u0434\u0451\u043D\u043D\u043E\u0439 \u0441\u0434\u0430\u0447\u0438 diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_sq.properties index 0b32135c6df4e9a4e5240ec13edffa3d5ab37643..29575a3cd0c940be747dd59347898dd9b9c543fc 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_sq.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_sq.properties @@ -42,16 +42,8 @@ dropbox.notifications.entry=Skedar\={0} Shfryt\u00EBzues\={1} T\u00EB dor\u00E dropbox.notifications.header=Skedar\u00EBt n\u00EB vijim jan\u00EB dor\u00EBzuar n\u00EB\: dropbox.title=Dosja pranimit dropbox.upload=Transfero skedar\u00EBt -error.dropbox.missing.group.long=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB konfigururara. Ju duhet q\u00EB s\u00EB pari t\u00EB konfiguroni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi para krijimin t\u00EB kutis\u00EB s\u00EB l\u00EBshimit (p\u00EBrmes '\u00C7asjes'). -error.dropbox.missing.group.short=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB konfigururara. Ju duhet q\u00EB s\u00EB pari t\u00EB konfiguroni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi para krijimin t\u00EB kutis\u00EB s\u00EB l\u00EBshimit (p\u00EBrmes '\u00C7asjes'). -error.missing.group.long=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB gatshme. Ju duhet q\u00EB s\u00EB pari t\u00EB krijoni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi. -error.missing.group.short=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB gatshme. Ju duhet q\u00EB s\u00EB pari t\u00EB krijoni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi. error.missingscoreconfig.long=Hape tabin "Vler\u00EBsimi" p\u00EBr korrigjimin e "{0}". error.missingscoreconfig.short=Vler\u00EBsimi p\u00EBr "{0}" \u00EBsht\u00EB konfiguruar me sakt\u00EBsi. -error.scoring.missing.group.long=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB konfigururara. Ju duhet q\u00EB s\u00EB pari t\u00EB konfiguroni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi para qasjes (p\u00EBrmes '\u00C7asjes'). -error.scoring.missing.group.short=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB konfigururara. Ju duhet q\u00EB s\u00EB pari t\u00EB konfiguroni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi para qasjes (p\u00EBrmes '\u00C7asjes'). -error.solution.missing.group.long=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB konfigururara. Ju duhet q\u00EB s\u00EB pari t\u00EB konfiguroni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi para krijimin t\u00EB nj\u00EB shembull zgjidhjeje (p\u00EBrmes '\u00C7asjes'). -error.solution.missing.group.short=Nuk ka grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi t\u00EB konfigururara. Ju duhet q\u00EB s\u00EB pari t\u00EB konfiguroni t\u00EB pakt\u00EBn nj\u00EB grup m\u00EBsimi ose hap\u00EBsir\u00EB m\u00EBsimi para krijimin t\u00EB nj\u00EB shembull zgjidhjeje (p\u00EBrmes '\u00C7asjes'). fieldset.dropbox.title=Miratimi i pranimit folder.close=Mbylle dosjen e detyrave form.dropbox.confirmation=Tekst pas pranimit diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_CN.properties index b7c7ab62a5a8543417c1f81885ee93e5103b5836..538ab5cdc31c166664a5355c409743c6551b8da6 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_CN.properties @@ -42,19 +42,9 @@ dropbox.notifications.entry={1}\u7684\u6587\u4EF6"{0}" dropbox.notifications.header=\u5DF2\u7ECF\u63D0\u4EA4\u4E86\u4EE5\u4E0B\u6587\u4EF6\: dropbox.title=\u63D0\u4EA4\u7BB1 dropbox.upload=\u4E0A\u4F20\u6587\u4EF6 -error.dropbox.missing.group.long=\u672A\u914D\u7F6E\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. \u4F60\u5FC5\u987B\u5728\u521B\u5EFA\u63D0\u4EA4\u7BB1(\u901A\u8FC7"\u8BBF\u95EE\u6027")\u524D\u5148\u914D\u7F6E\u81F3\u5C11\u4E00\u4E2A\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. -error.dropbox.missing.group.short=\u672A\u914D\u7F6E\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. \u4F60\u5FC5\u987B\u5728\u521B\u5EFA\u63D0\u4EA4\u7BB1(\u901A\u8FC7"\u8BBF\u95EE\u6027")\u524D\u5148\u914D\u7F6E\u81F3\u5C11\u4E00\u4E2A\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. -error.missing.group.long=\u6CA1\u6709\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. \u4F60\u5FC5\u987B\u81F3\u5C11\u5148\u521B\u5EFA\u4E00\u4E2A\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. -error.missing.group.short=\u6CA1\u6709\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. \u4F60\u5FC5\u987B\u81F3\u5C11\u5148\u521B\u5EFA\u4E00\u4E2A\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. error.missingscoreconfig.long=\u6253\u5F00"\u8BC4\u4F30"\u6807\u7B7E\u66F4\u6B63"{0}". error.missingscoreconfig.short=\u5DF2\u6B63\u786E\u914D\u7F6E "{0}"\u7684\u8BC4\u4F30. error.nomailbody=E-Mail\u4E0D\u80FD\u4E3A\u7A7A\u3002 -error.returnbox.missing.group.long=\u6CA1\u6709\u4E3A\u8FD4\u56DE\u6846\u8FDB\u884C\u5B66\u4E60\u7FA4\u7EC4\u6216\u533A\u57DF\u7684\u914D\u7F6E\u3002\u81F3\u5C11\u8981\u4E3A\u60A8\u7684\u8FD4\u56DE\u6846\u8FDB\u884C\u4E00\u4E2A\u5B66\u4E60\u7FA4\u7EC4\u6216\u533A\u57DF\u7684\u914D\u7F6E(\u901A\u8FC7"\u8BBF\u95EE")\u3002 -error.returnbox.missing.group.short=\u5BF9\u4E8E\u6B64\u4E0B\u62C9\u6846\u6CA1\u6709\u8FDB\u884C\u5B66\u4E60\u7FA4\u7EC4\u6216\u8005\u533A\u57DF\u7684\u914D\u7F6E\u3002\u60A8\u81F3\u5C11\u8981\u914D\u7F6E\u4E0B\u62C9\u6846\u4E2D\u4E00\u4E2A\u5B66\u4E60\u7FA4\u7EC4\u6216\u8005\u5B66\u4E60\u533A\u57DF(\u90E8\u5206\uFF1A\u8BBF\u95EE) -error.scoring.missing.group.long=No learning group or learning area configured. You have to configure at least one learning group or learning area before assessing (via 'Access'). -error.scoring.missing.group.short=No learning group or learning area configured. You have to configure at least one learning group or learning area before assessing (via 'Access'). -error.solution.missing.group.long=\u672A\u914D\u7F6E\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. \u4F60\u5FC5\u987B\u5728\u521B\u5EFA\u4EFB\u52A1\u5B58\u653E\u6587\u4EF6\u5939(\u901A\u8FC7"\u8BBF\u95EE\u6027")\u524D\u5148\u914D\u7F6E\u81F3\u5C11\u4E00\u4E2A\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. -error.solution.missing.group.short=\u672A\u914D\u7F6E\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. \u4F60\u5FC5\u987B\u5728\u521B\u5EFA\u4EFB\u52A1\u5B58\u653E\u6587\u4EF6\u5939(\u901A\u8FC7"\u8BBF\u95EE\u6027")\u524D\u5148\u914D\u7F6E\u81F3\u5C11\u4E00\u4E2A\u5B66\u4E60\u7EC4\u6216\u5B66\u4E60\u533A\u57DF. fieldset.dropbox.title=\u63D0\u4EA4\u786E\u8BA4 folder.close=\u5173\u95ED\u4EFB\u52A1\u5939 form.dropbox.confirmation=\u4EFB\u52A1\u63D0\u4EA4\u786E\u8BA4\u4FE1\u606F diff --git a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_TW.properties index 6f2ed065690350cc0db6829354230e1205e0000a..c593f40b95d2c3194f6e9c08c95710be8fedf7ab 100644 --- a/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_TW.properties +++ b/src/main/java/org/olat/course/nodes/ta/_i18n/LocalStrings_zh_TW.properties @@ -13,16 +13,6 @@ dropbox.notifications.entry=\u6A94\u6848\={0} \u4F7F\u7528\u8005\={1} \u7E73\u dropbox.notifications.header=\u4E0B\u5217\u7684\u6A94\u6848\u5DF2\u88AB\u7E73\u4EA4\uFF1A dropbox.title=\u7E73\u4EA4\u7BB1 dropbox.upload=\u4E0A\u50B3\u6A94\u6848 -error.dropbox.missing.group.long=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u88AB\u8A2D\u5B9A\u3002\u60A8\u5FC5\u9808\u5148\u8A2D\u5B9A\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u518D\u5EFA\u7ACB\u4E00\u500B\u7E73\u4EA4\u7BB1\uFF08\u900F\u904E'\u5B58\u53D6'\uFF09\u3002 -error.dropbox.missing.group.short=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u88AB\u8A2D\u5B9A\u3002\u60A8\u5FC5\u9808\u5148\u8A2D\u5B9A\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u518D\u5EFA\u7ACB\u4E00\u500B\u7E73\u4EA4\u7BB1\uFF08\u900F\u904E'\u5B58\u53D6'\uFF09\u3002 -error.missing.group.long=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u53EF\u7528\u3002\u60A8\u5FC5\u9808\u5148\u5EFA\u7ACB\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u3002 -error.missing.group.short=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u53EF\u7528\u3002\u60A8\u5FC5\u9808\u5148\u5EFA\u7ACB\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u3002 -error.missingscoreconfig.long=\u958B\u555F"\u8A55\u4F30"\u9801\u7C64\u4EE5\u4FEE\u6B63"{0}"\u3002 -error.missingscoreconfig.short="{0}"\u7684\u8A55\u4F30\u6C92\u6709\u8A2D\u5B9A\u6B63\u78BA\u3002 -error.scoring.missing.group.long=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u88AB\u8A2D\u5B9A\u3002\u60A8\u5FC5\u9808\u5148\u8A2D\u5B9A\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u518D\u8A55\u4F30\uFF08\u900F\u904E'\u5B58\u53D6'\uFF09\u3002 -error.scoring.missing.group.short=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u88AB\u8A2D\u5B9A\u3002\u60A8\u5FC5\u9808\u5148\u8A2D\u5B9A\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u518D\u8A55\u4F30\uFF08\u900F\u904E'\u5B58\u53D6'\uFF09\u3002 -error.solution.missing.group.long=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u88AB\u8A2D\u5B9A\u3002\u60A8\u5FC5\u9808\u5148\u8A2D\u5B9A\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u57DF\u518D\u5EFA\u7ACB\u4E00\u500B\u7BC4\u4F8B\u89E3\u7B54\uFF08\u900F\u904E'\u5B58\u53D6'\uFF09\u3002 -error.solution.missing.group.short=\u6C92\u6709\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u88AB\u8A2D\u5B9A\u3002\u60A8\u5FC5\u9808\u5148\u8A2D\u5B9A\u81F3\u5C11\u4E00\u500B\u5B78\u7FD2\u7FA4\u7D44\u6216\u5B78\u7FD2\u5340\u518D\u5EFA\u7ACB\u4E00\u500B\u7BC4\u4F8B\u89E3\u7B54\uFF08\u900F\u904E'\u5B58\u53D6'\uFF09\u3002 fieldset.dropbox.title=\u7E73\u4EA4\u78BA\u8A8D folder.close=\u95DC\u9589\u4EFB\u52D9\u8CC7\u6599\u593E form.dropbox.confirmation=\u7E73\u4EA4\u5F8C\u7684\u6587\u5B57 diff --git a/src/main/java/org/olat/course/properties/CoursePropertyManager.java b/src/main/java/org/olat/course/properties/CoursePropertyManager.java index 8b1d9fd19e303a66cb4bc946301a0d88ab504b42..ef612e938299e999083c17c6a528235b0647db81 100644 --- a/src/main/java/org/olat/course/properties/CoursePropertyManager.java +++ b/src/main/java/org/olat/course/properties/CoursePropertyManager.java @@ -82,7 +82,7 @@ public interface CoursePropertyManager extends IdentityAnonymizerCallback { * @param name * @return all course node properties */ - public List listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name); + public List<Property> listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name); /** * Find course node properties (exact match. I.e. null values are taken into account) diff --git a/src/main/java/org/olat/course/properties/PersistingCoursePropertyManager.java b/src/main/java/org/olat/course/properties/PersistingCoursePropertyManager.java index 0291d74a037368f1e6d269f7aa7b7fa5e914e954..30098ee3786caab993e3967777addd73b0c92ee8 100644 --- a/src/main/java/org/olat/course/properties/PersistingCoursePropertyManager.java +++ b/src/main/java/org/olat/course/properties/PersistingCoursePropertyManager.java @@ -120,7 +120,7 @@ public class PersistingCoursePropertyManager extends BasicManager implements Cou * org.olat.core.id.Identity, org.olat.group.BusinessGroup, * java.lang.String) */ - public List listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { + public List<Property> listCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { String myCategory = buildCourseNodePropertyCategory(node); return pm.listProperties(identity, grp, myCategory, name); } @@ -130,7 +130,7 @@ public class PersistingCoursePropertyManager extends BasicManager implements Cou * org.olat.core.id.Identity, org.olat.group.BusinessGroup, * java.lang.String) */ - public List findCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { + public List<Property> findCourseNodeProperties(CourseNode node, Identity identity, BusinessGroup grp, String name) { String myCategory = buildCourseNodePropertyCategory(node); return pm.findProperties(identity, grp, myCategory, name); } diff --git a/src/main/java/org/olat/group/site/GroupsManagementSite.java b/src/main/java/org/olat/group/site/GroupsManagementSite.java index fa50be2a580498002914f507222696adb34249ad..bc61e0370c92fd4a12fee92e7874782897a7bc7a 100644 --- a/src/main/java/org/olat/group/site/GroupsManagementSite.java +++ b/src/main/java/org/olat/group/site/GroupsManagementSite.java @@ -40,9 +40,11 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.StateSite; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; import org.olat.core.util.resource.OresHelper; import org.olat.group.ui.context.BGContextManagementController; +import org.olat.util.logging.activity.LoggingResourceable; /** * Description:<br> @@ -83,6 +85,7 @@ public class GroupsManagementSite implements SiteInstance { public MainLayoutController createController(UserRequest ureq, WindowControl wControl) { //fxdiff BAKS-7 Resume function OLATResourceable ores = OresHelper.createOLATResourceableInstance(GroupsManagementSite.class, 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, new StateSite(this), wControl, true); MainLayoutController c = ControllerFactory.createLaunchController(ORES_GROUPSMANAGEMENT, null, ureq, bwControl, true); return c; diff --git a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java index 44cd753186b3408f3765fd890d27a466844b6c3b..3ec6de5492f9cb679d2da480b4b7e11ddf298b91 100644 --- a/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java +++ b/src/main/java/org/olat/group/ui/run/BusinessGroupMainRunController.java @@ -713,6 +713,7 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im WindowControl bwControl = getWindowControl(); // calculate the new businesscontext for the forum clicked ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(ORES_TOOLCAL); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ce.getOLATResourceable())); bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ce, bwControl); collabToolCtr = collabTools.createCalendarController(ureq, bwControl, this.businessGroup, isAdmin); @@ -721,6 +722,7 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im } else if (ACTIVITY_MENUSELECT_INFORMATION.equals(cmd)) { //fxdiff BAKS-7 Resume function ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(ORES_TOOLMSG); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ce.getOLATResourceable())); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ce, getWindowControl()); collabToolCtr = collabTools.createNewsController(ureq, bwControl); listenTo(collabToolCtr); @@ -733,6 +735,7 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im WindowControl bwControl = getWindowControl(); // calculate the new businesscontext for the forum clicked ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(ORES_TOOLFOLDER); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ce.getOLATResourceable())); bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ce, bwControl); //fxdiff VCRP-8: collaboration tools folder access control collabToolCtr = collabTools.createFolderController(ureq, bwControl, businessGroup, isAdmin, sc); @@ -777,6 +780,7 @@ public class BusinessGroupMainRunController extends MainLayoutBasicController im private void doAdministration(UserRequest ureq) { removeAsListenerAndDispose(bgEditCntrllr); //fxdiff BAKS-7 Resume function + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ORES_TOOLADMIN)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ORES_TOOLADMIN, null, getWindowControl()); collabToolCtr = bgEditCntrllr = BGControllerFactory.getInstance().createEditControllerFor(ureq, bwControl, businessGroup); listenTo(bgEditCntrllr); diff --git a/src/main/java/org/olat/home/HomeSite.java b/src/main/java/org/olat/home/HomeSite.java index a57a88d94e12dc39eea49bc13c641b0833a95659..997b0e026fbfb35b4c22999e8d92f5c90cdc49a4 100644 --- a/src/main/java/org/olat/home/HomeSite.java +++ b/src/main/java/org/olat/home/HomeSite.java @@ -30,8 +30,10 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.StateSite; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; import org.olat.core.util.resource.OresHelper; +import org.olat.util.logging.activity.LoggingResourceable; /** * <h3>Description:</h3> Instantiates the genericmainctrl for a minimal home @@ -62,6 +64,7 @@ public class HomeSite implements SiteInstance { @Override public MainLayoutController createController(UserRequest ureq, WindowControl wControl) { OLATResourceable ores = OresHelper.createOLATResourceableInstance(HomeSite.class, ureq.getIdentity().getKey()); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, new StateSite(this), wControl, true); MainLayoutController c = new HomeMainController(ureq, bwControl); return c; diff --git a/src/main/java/org/olat/home/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/home/_i18n/LocalStrings_de.properties index f0f4002e071d1b10fa9637e60a054e9c3024c3ee..44ff8fe24990ef57db8bdbddcdcbae0715660fc1 100644 --- a/src/main/java/org/olat/home/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/home/_i18n/LocalStrings_de.properties @@ -14,15 +14,15 @@ chelp.rssWhere4=F\u00FCgen Sie die Webadresse dann in Ihren RSS-Reader ein. chelp.rssWhy=Warum sollte ich wissen, was RSS ist? chelp.rssWhy1=Dank RSS sind Sie schnell und komfortabel \u00FCber \u00C4nderungen in von Ihnen abonnierten Foren und Ordnern informiert. chelp.rssWhy2=Auf einem Blick sehen Sie die \u00DCberschriften neuer Beitr\u00E4ge und was seit Ihrem letzten Besuch geschehen ist. -chelp.rssWhy3=Ausserdem erhalten Sie die entsprechenden Links, um direkt an den "Ort des Geschehens" in OLAT zu springen. +chelp.rssWhy3=Ausserdem erhalten Sie die entsprechenden Links, um direkt an den "Ort des Geschehens" in OpenOLAT zu springen. chelp.rssWhy4=Alles was Sie f\u00FCr diesen Service ben\u00F6tigen, ist die Internet-Adresse der f\u00FCr Sie bereitgestellten RSS-Datei und einen sogenannten RSS-Reader. chelp.selfInfo=Wenn Sie selbst nach Produkten suchen m\u00F6chten, empfehlen wir folgende Suchbegriffe\: chelp.windows=Windows command.portal.back=Konfiguration beenden command.portal.edit=Seite konfigurieren -email.disabled=Ihre derzeit in OLAT eingetragene E-Mail-Adresse wurde von einem OLAT-Benutzerverwalter gesperrt. Ihnen k\u00F6nnen somit derzeit keine Nachrichten \u00FCber OLAT zugestellt werden. Um diese Sperre aufzuheben, \u00E4ndern Sie bitte Ihre E-Mail-Adresse im Bereich Home -> Einstellungen -> Profil. +email.disabled=Ihre derzeit in OpenOLAT eingetragene E-Mail-Adresse wurde von einem OpenOLAT-Benutzerverwalter gesperrt. Ihnen k\u00F6nnen somit derzeit keine Nachrichten \u00FCber OpenOLAT zugestellt werden. Um diese Sperre aufzuheben, \u00E4ndern Sie bitte Ihre E-Mail-Adresse im Bereich Home -> Einstellungen -> Profil. guestinfo.header=Informationen -guestinfo.message=Der Gastzugang gew\u00E4hrt Ihnen einen Einblick in OLAT mit eingeschr\u00E4nkter Funktionalit\u00E4t.<br><br>Sie haben nur Zugang zu Lerninhalten, die ausdr\u00FCcklich f\u00FCr G\u00E4ste freigegeben sind.<br><br>Um Zugang zu weiteren Lernmaterialien zu erhalten, m\u00FCssen Sie sich registrieren. +guestinfo.message=Der Gastzugang gew\u00E4hrt Ihnen einen Einblick in OpenOLAT mit eingeschr\u00E4nkter Funktionalit\u00E4t.<br><br>Sie haben nur Zugang zu Lerninhalten, die ausdr\u00FCcklich f\u00FCr G\u00E4ste freigegeben sind.<br><br>Um Zugang zu weiteren Lernmaterialien zu erhalten, m\u00FCssen Sie sich registrieren. guestwelcome.header=Willkommen bei OpenOLAT guestwelcome.message=Willkommen bei OpenOLAT, dem Open-Source-LMS. Happy E-Learning\! guestwelcome.quicklink=Benutzen Sie den Link <a href\="{0}">Lernressourcen</a>, um zum Lernangebot zu gelangen. @@ -39,17 +39,17 @@ menu.calendar.alt=Mein pers\u00F6nlicher Kalender menu.efficiencyStatements=Leistungsnachweise menu.efficiencyStatements.alt=Alle Leistungsnachweise menu.fulltextsearch=Volltextsuche -menu.fulltextsearch.alt=Volltextsuche im OLAT +menu.fulltextsearch.alt=Volltextsuche im OpenOLAT menu.guest=Gasthome menu.guest.alt=Home des Gastbenutzers menu.guestinfo=Informationen -menu.guestinfo.alt=Informationen \u00FCber die OLAT-Bedienung +menu.guestinfo.alt=Informationen \u00FCber die OpenOLAT-Bedienung menu.guestwelcome=Willkommen -menu.guestwelcome.alt=Willkommen bei OLAT +menu.guestwelcome.alt=Willkommen bei OpenOLAT menu.mail=E-Mails menu.mail.alt=Mailbereich menu.mysettings=Einstellungen -menu.mysettings.alt=Meine OLAT-Einstellungen +menu.mysettings.alt=Meine OpenOLAT-Einstellungen menu.note=Notizen menu.note.alt=Meine Notizen menu.notifications=Abonnements @@ -69,8 +69,8 @@ menu.portfolio.mystructuredmaps.alt=Alle meine Sammelmappen aus einer Portfolioa menu.portfolio.othermaps=Freigegebene Sammelmappen menu.portfolio.othermaps.alt=Von anderen Benutzern für mich freigegebene Sammelmappen main.menu.title=Home -main.menu.title.alt=Ihre Einstiegsseite in OLAT -warn.session.was.killed=Sie hatten OLAT bereits in einem anderen Browser offen. Man kann sich in OLAT nicht gleichzeitig mehrmals einloggen. Ihre bisherige Sitzung wurde beendet. +main.menu.title.alt=Ihre Einstiegsseite in OpenOLAT +warn.session.was.killed=Sie hatten OpenOLAT bereits in einem anderen Browser offen. Man kann sich in OpenOLAT nicht gleichzeitig mehrmals einloggen. Ihre bisherige Sitzung wurde beendet. welcome.header=Willkommen bei OpenOLAT welcome.intro=<\!-- --> welcome.rss=Lesen Sie Ihre pers\u00F6nlichen News als RSS-Feed diff --git a/src/main/java/org/olat/home/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/home/_i18n/LocalStrings_en.properties index 9249a62132b14a6704f1320d8d19d4ca838ad0a0..83cd7f5c7fe7b4dcc8b094002529fca0f7e1211b 100644 --- a/src/main/java/org/olat/home/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/home/_i18n/LocalStrings_en.properties @@ -14,15 +14,15 @@ chelp.rssWhere4=Then paste the URL to your RSS reader. chelp.rssWhy=Why should I know what RSS is? chelp.rssWhy1=By means of RSS you will quickly and comfortably get information on modifications of forums and folders you have subscribed to. chelp.rssWhy2=Just one look and you will see the titles of new entries as well as what has happend since your last login. -chelp.rssWhy3=Furthermore, you will receive relevant links in order to get directly to the new stuff in OLAT. +chelp.rssWhy3=Furthermore, you will receive relevant links in order to get directly to the new stuff in OpenOLAT. chelp.rssWhy4=All you need to get this service is the Internet address of the RSS files provided for you and a so-called RSS reader. chelp.selfInfo=If you want to look for products on your own, we suggest the following terms\: chelp.windows=Windows command.portal.back=End configuration command.portal.edit=Configure page -email.disabled=Your e-mail address has been disabled by an OLAT user manager. You cannot receive any messages via OLAT. To enable your e-mail address, please go to Home -> Settings -> Profile to set a new e-mail address. +email.disabled=Your e-mail address has been disabled by an OpenOLAT user manager. You cannot receive any messages via OpenOLAT. To enable your e-mail address, please go to Home -> Settings -> Profile to set a new e-mail address. guestinfo.header=Information -guestinfo.message=This guest account offers you an insight into OLAT with limited functionality.<br><br>You have only access to learning resources that are explicitly available for guests.<br><br> In order to have access to other learning material you have to register. +guestinfo.message=This guest account offers you an insight into OpenOLAT with limited functionality.<br><br>You have only access to learning resources that are explicitly available for guests.<br><br> In order to have access to other learning material you have to register. guestwelcome.header=Welcome to OpenOLAT guestwelcome.message=Welcome to OpenOLAT, the open-source LMS. Happy E-Learning\! guestwelcome.quicklink=Please use <a href\="{0}">Learning resources</a> in order to access the learning content. @@ -39,17 +39,17 @@ menu.calendar.alt=My personal calendar menu.efficiencyStatements=Evidences of achievement menu.efficiencyStatements.alt=All evidences of achievements menu.fulltextsearch=Full-text search -menu.fulltextsearch.alt=Full-text search in OLAT +menu.fulltextsearch.alt=Full-text search in OpenOLAT menu.guest=Guest home menu.guest.alt=Home of guest user menu.guestinfo=Information -menu.guestinfo.alt=Information on how to use OLAT +menu.guestinfo.alt=Information on how to use OpenOLAT menu.guestwelcome=Welcome -menu.guestwelcome.alt=Welcome to OLAT +menu.guestwelcome.alt=Welcome to OpenOLAT menu.mail=E-mails menu.mail.alt=Mail area menu.mysettings=Settings -menu.mysettings.alt=My personal OLAT settings +menu.mysettings.alt=My personal OpenOLAT settings menu.note=Notes menu.note.alt=My notes menu.notifications=Subscriptions @@ -69,8 +69,8 @@ menu.portfolio.mystructuredmaps.alt=Show and manage all my accumulative folders menu.portfolio.othermaps=Released accumulative folders menu.portfolio.othermaps.alt=Accumulative folders released for me by others main.menu.title=Home -main.menu.title.alt=Your personal home page in OLAT -warn.session.was.killed=You are using OLAT in another browser. You cannot log in several times at once. Your previous session has been terminated. +main.menu.title.alt=Your personal home page in OpenOLAT +warn.session.was.killed=You are using OpenOLAT in another browser. You cannot log in several times at once. Your previous session has been terminated. welcome.header=Welcome to OpenOLAT welcome.intro=<\!-- --> welcome.rss=Read your personal news as RSS Feed diff --git a/src/main/java/org/olat/home/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/home/_i18n/LocalStrings_fr.properties index 599b5c4148068feef0d7e42ecbcf3e39a253adfe..cd3bd1c229e859c609e7bce33442ddc3a4e36080 100644 --- a/src/main/java/org/olat/home/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/home/_i18n/LocalStrings_fr.properties @@ -20,9 +20,9 @@ chelp.selfInfo=Si vous souhaitez lancer vous m\u00EAme un recherche pour des pro chelp.windows=Windows command.portal.back=Terminer configuration command.portal.edit=Configurer la page -email.disabled=Votre adresse e-mail indiqu\u00E9e dans OLAT a \u00E9t\u00E9 bloqu\u00E9e par un administrateur d'utilisateurs OLAT. Vous ne pouvez pas recevoir des messages via OLAT. Pour d\u00E9bloquer l'adresse, veuillez modifier votre adresse dans Accueil -> R\u00E9glages -> Profil. +email.disabled=Votre adresse e-mail indiqu\u00E9e dans OpenOLAT a \u00E9t\u00E9 bloqu\u00E9e par un administrateur d'utilisateurs OpenOLAT. Vous ne pouvez pas recevoir des messages via OpenOLAT. Pour d\u00E9bloquer l'adresse, veuillez modifier votre adresse dans Accueil -> R\u00E9glages -> Profil. guestinfo.header=Informations -guestinfo.message=Le compte invit\u00E9 vous offre un aper\u00E7u de OLAT avec des fonctionnalit\u00E9s limit\u00E9es.<br><br>Vous n'avez acc\u00E8s qu'aux contenus didactiques qui sont express\u00E9ment en libre acc\u00E8s pour les invit\u00E9s.<br><br>Pour pouvoir acc\u00E9der aux autres ressources didactiques, vous devez vous enregistrer. +guestinfo.message=Le compte invit\u00E9 vous offre un aper\u00E7u de OpenOLAT avec des fonctionnalit\u00E9s limit\u00E9es.<br><br>Vous n'avez acc\u00E8s qu'aux contenus didactiques qui sont express\u00E9ment en libre acc\u00E8s pour les invit\u00E9s.<br><br>Pour pouvoir acc\u00E9der aux autres ressources didactiques, vous devez vous enregistrer. guestwelcome.header=Bienvenue \u00E0 OpenOLAT guestwelcome.message=Bienvenue \u00E0 OpenOLAT, le LMS Open-Source. Bon E-Learning\! guestwelcome.quicklink=Utilisez le lien <a href\="{0}">Ressources didactiques</a>, pour acc\u00E9der au contenu d'\u00E9tude. @@ -39,15 +39,15 @@ menu.calendar.alt=Mon calendrier personnel menu.efficiencyStatements=Attestation de performance menu.efficiencyStatements.alt=Toutes les attestations de performance menu.fulltextsearch=Recherche plein texte -menu.fulltextsearch.alt=Recherche plein texte ds OLAT +menu.fulltextsearch.alt=Recherche plein texte ds OpenOLAT menu.guest=Page d'accueil invit\u00E9(e) menu.guest.alt=Page d'accueil invit\u00E9(e) menu.guestinfo=Informations -menu.guestinfo.alt=Informations sur l'utilisation de OLAT +menu.guestinfo.alt=Informations sur l'utilisation de OpenOLAT menu.guestwelcome=Bienvenue -menu.guestwelcome.alt=Bienvenue \u00E0 OLAT +menu.guestwelcome.alt=Bienvenue \u00E0 OpenOLAT menu.mysettings=R\u00E9glages -menu.mysettings.alt=Mes r\u00E9glages OLAT +menu.mysettings.alt=Mes r\u00E9glages OpenOLAT menu.note=Mes feuilles de notes menu.note.alt=Mes notes menu.notifications=Abonnements @@ -65,8 +65,8 @@ menu.portfolio.mystructuredmaps.alt=Afficher et g\u00E9rer tous mes classeurs \u menu.portfolio.othermaps=Classeurs partag\u00E9s menu.portfolio.othermaps.alt=Classeurs partag\u00E9s par d'autres utilisateurs main.menu.title=Accueil -main.menu.title.alt=Votre page d'accueil personnelle dans OLAT -warn.session.was.killed=Vous aviez ouvert OLAT d\u00E9j\u00E0 dans un autre navigateur. On ne peut pas entrer dans OLAT plusieurs fois en m\u00EAme temps. Votre session actuelle a \u00E9t\u00E9 termin\u00E9e. +main.menu.title.alt=Votre page d'accueil personnelle dans OpenOLAT +warn.session.was.killed=Vous aviez ouvert OpenOLAT d\u00E9j\u00E0 dans un autre navigateur. On ne peut pas entrer dans OpenOLAT plusieurs fois en m\u00EAme temps. Votre session actuelle a \u00E9t\u00E9 termin\u00E9e. welcome.header=Bienvenue \u00E0 OpenOLAT welcome.intro=<\!-- --> welcome.rss=Lire vos nouvelles personnelles en format RSS diff --git a/src/main/java/org/olat/home/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/home/_i18n/LocalStrings_it.properties index 0c4d0facb6352648a6d93d31ef64b32c0c870f13..0f8f9b07a5e632bfb73fbc52e3fac071eaa56855 100644 --- a/src/main/java/org/olat/home/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/home/_i18n/LocalStrings_it.properties @@ -20,9 +20,9 @@ chelp.selfInfo=Se preferisce avviare una ricerca personale del prodotto, Le cons chelp.windows=Windows command.portal.back=Chiudere configurazione command.portal.edit=Configurare pagina -email.disabled=L'indirizzo e-mail da Lei indicato in OLAT \u00E8 stato bloccato da un amministratore degli utenti OLAT. Non \u00E8 possibile inviarLe messaggi attravero OLAT. Per sbloccare il servizio di posta elettronica modifichi il Suo indirizzo e-mail andando alla pagina iniziale -> preferenze - > profilo. +email.disabled=L'indirizzo e-mail da Lei indicato in OpenOLAT \u00E8 stato bloccato da un amministratore degli utenti OpenOLAT. Non \u00E8 possibile inviarLe messaggi attravero OpenOLAT. Per sbloccare il servizio di posta elettronica modifichi il Suo indirizzo e-mail andando alla pagina iniziale -> preferenze - > profilo. guestinfo.header=Informazioni -guestinfo.message=L'accesso come ospite Le permette una consultazione a funzionalit\u00E0 limitata di OLAT.<br><br>Lei ha accesso a contenuti didattici espressamente disponibili agli ospiti.<br><br>Per accedere a ulteriori materiali didattici \u00E8 necessario registrasi. +guestinfo.message=L'accesso come ospite Le permette una consultazione a funzionalit\u00E0 limitata di OpenOLAT.<br><br>Lei ha accesso a contenuti didattici espressamente disponibili agli ospiti.<br><br>Per accedere a ulteriori materiali didattici \u00E8 necessario registrasi. guestwelcome.header=Benvenuti a OpenOLAT guestwelcome.message=Benvenuti a OpenOLAT, l'open-source LMS. Buon e-learning\! guestwelcome.quicklink=Utilizzi la connessione <a href\="{0}">Risorse didattiche</a> per accedere alle offerte didattiche. @@ -39,15 +39,15 @@ menu.calendar.alt=Il mio calendario menu.efficiencyStatements=Attestati di efficienza menu.efficiencyStatements.alt=Tutti gli attestati di efficienza menu.fulltextsearch=Ricerca testo intero -menu.fulltextsearch.alt=Ricerca testo intero in OLAT +menu.fulltextsearch.alt=Ricerca testo intero in OpenOLAT menu.guest=Pagina iniziale ospiti menu.guest.alt=Pagina iniziale dell'utente ospite menu.guestinfo=Informazioni -menu.guestinfo.alt=Informazioni sull'utilizzazione di OLAT +menu.guestinfo.alt=Informazioni sull'utilizzazione di OpenOLAT menu.guestwelcome=Benvenuta/o -menu.guestwelcome.alt=Benvenuta/o a OLAT +menu.guestwelcome.alt=Benvenuta/o a OpenOLAT menu.mysettings=Preferenze -menu.mysettings.alt=Le mie preferenze OLAT +menu.mysettings.alt=Le mie preferenze OpenOLAT menu.note=Appunti menu.note.alt=I miei appunti menu.notifications=Abbonamenti @@ -65,8 +65,8 @@ menu.portfolio.mystructuredmaps.alt=Mostrare e gestire tutti i miei raccoglitori menu.portfolio.othermaps=Raccoglitori condivisi menu.portfolio.othermaps.alt=Raccoglitori di altri utenti condivisi con me main.menu.title=Pagina iniziale -main.menu.title.alt=La Sua pagina iniziale OLAT -warn.session.was.killed=OLAT era aperto in un altro browser. Non \u00E8 permesso connettersi a OLAT pi\u00F9 volte contemporaneamente. La Sua seduta \u00E8 stata chiusa. +main.menu.title.alt=La Sua pagina iniziale OpenOLAT +warn.session.was.killed=OpenOLAT era aperto in un altro browser. Non \u00E8 permesso connettersi a OpenOLAT pi\u00F9 volte contemporaneamente. La Sua seduta \u00E8 stata chiusa. welcome.header=Benvenuta/o a OpenOLAT welcome.intro=<\!-- --> welcome.rss=Legga le Sue novit\u00E0 personali come RSS-Feed. diff --git a/src/main/java/org/olat/instantMessaging/groupchat/InstantMessagingGroupChatController.java b/src/main/java/org/olat/instantMessaging/groupchat/InstantMessagingGroupChatController.java index 02a5e81aaac6e7a2de77cf7c0eed21b0af71e9ec..c1217dc4efa5cada8c71c23b1c7fb982dab97420 100644 --- a/src/main/java/org/olat/instantMessaging/groupchat/InstantMessagingGroupChatController.java +++ b/src/main/java/org/olat/instantMessaging/groupchat/InstantMessagingGroupChatController.java @@ -30,6 +30,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; + import org.jivesoftware.smack.PacketListener; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; @@ -393,7 +394,13 @@ public class InstantMessagingGroupChatController extends BasicController impleme } if (muc != null && muc.isJoined()) { - muc.changeAvailabilityStatus("chatOpen", Presence.Mode.available); + try { + muc.changeAvailabilityStatus("chatOpen", Presence.Mode.available); + } catch (IllegalStateException e) { + logWarn("Could not change chat status from" + getIdentity().getName(), e); + showWarning("groupchat.not.available"); + } + } else { addMeToRosterList(anonymousInChatroom ? NICKNAME_ANONYMOUS : getIdentity().getName()); } diff --git a/src/main/java/org/olat/modules/ModuleConfiguration.java b/src/main/java/org/olat/modules/ModuleConfiguration.java index d87e7ed449911ff190a2bbb411b53403cad1b018..29d104f976d6ab46c64f150b38ceeb4be50dc71b 100644 --- a/src/main/java/org/olat/modules/ModuleConfiguration.java +++ b/src/main/java/org/olat/modules/ModuleConfiguration.java @@ -102,8 +102,9 @@ public class ModuleConfiguration implements Serializable { */ public Boolean getBooleanEntry(String config_key) { // boolean are stored either as null (no val yet), "true", or "false" (Strings) - String val = (String) get(config_key); + Object val = get(config_key); if (val == null) return null; + if( val instanceof Boolean) return (Boolean)val; Boolean set = val.equals("true")? Boolean.TRUE : Boolean.FALSE; return set; } diff --git a/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java b/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java index b54821c86c88201ec0e5a53b4a0fb2a8a57e0a26..5684eb5cdef71e827312020f9cfc05ecc45939fc 100644 --- a/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java +++ b/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java @@ -308,10 +308,15 @@ public class OLATApiAdapter extends LogDelegator implements ch.ethz.pfplms.scorm // </OLATCE-289> } - lmsDataBean.setDataAsMap(cmiData); - odatahandler = new LMSDataHandler(scormManager, lmsDataBean, scormSettingsHandler); - odatahandler.updateCMIData(olatScoId); - return "true"; + try { + lmsDataBean.setDataAsMap(cmiData); + odatahandler = new LMSDataHandler(scormManager, lmsDataBean, scormSettingsHandler); + odatahandler.updateCMIData(olatScoId); + return "true"; + } catch (Exception e) { + logError("Error during commit", e); + return "false"; + } } /** diff --git a/src/main/java/org/olat/modules/scorm/server/beans/LMSDataHandler.java b/src/main/java/org/olat/modules/scorm/server/beans/LMSDataHandler.java index a367de0ae4857964c67fac43d51d08b50b734f00..07086e85837bfadded488976e0e2405540e44084 100644 --- a/src/main/java/org/olat/modules/scorm/server/beans/LMSDataHandler.java +++ b/src/main/java/org/olat/modules/scorm/server/beans/LMSDataHandler.java @@ -118,6 +118,9 @@ public class LMSDataHandler { // next update the model with the results from browser. // updateClientModel(itemId, cmiStrings); // update prerequisite table + if(status == null) { + status = SequencerModel.ITEM_NOT_ATTEMPTED; + } addtoPrereqTable(itemId, status, true); // If an LMSFinish() was made by the sco then we do not need to update // anything client side diff --git a/src/main/java/org/olat/portal/macartney/MacartneyPortlet.java b/src/main/java/org/olat/portal/macartney/MacartneyPortlet.java deleted file mode 100644 index 9cf2a0d947b3c78843bd88a0c5bfe462f3b61fe8..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/MacartneyPortlet.java +++ /dev/null @@ -1,107 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.portal.macartney; - -import java.util.Map; - -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.control.Controller; -import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.control.generic.portal.AbstractPortlet; -import org.olat.core.gui.control.generic.portal.Portlet; -import org.olat.core.gui.translator.PackageTranslator; -import org.olat.core.util.Util; - -/** - * Description:<br> - * Displays the the macartney of the day comic strip - * <P> - * Initial Date: 24.08.2005 <br> - * @author gnaegi - */ -public class MacartneyPortlet extends AbstractPortlet { - private Controller runCtr; - - /** - * @see org.olat.gui.control.generic.portal.AbstractPortlet#createInstance(org.olat.core.gui.control.WindowControl, org.olat.core.gui.UserRequest, java.util.Map) - */ - public Portlet createInstance(WindowControl wControl, UserRequest ureq, Map configuration) { - Portlet p = new MacartneyPortlet(); - p.setName(this.getName()); - p.setConfiguration(configuration); - p.setTranslator(new PackageTranslator(Util.getPackageName(MacartneyPortlet.class), ureq.getLocale())); - return p; - } - - /** - * @see org.olat.gui.control.generic.portal.Portlet#getTitle() - */ - public String getTitle() { - return getTranslator().translate("macartney.title"); - } - - /** - * @see org.olat.gui.control.generic.portal.Portlet#getDescription() - */ - public String getDescription() { - return getTranslator().translate("macartney.description"); - } - - /** - * @see org.olat.gui.control.generic.portal.Portlet#getInitialRunComponent(org.olat.core.gui.control.WindowControl, org.olat.core.gui.UserRequest) - */ - public Component getInitialRunComponent(WindowControl wControl, UserRequest ureq) { - if(this.runCtr != null) runCtr.dispose(); - this.runCtr = new MacartneyPortletRunController(ureq, wControl, getConfiguration()); - return this.runCtr.getInitialComponent(); - } - - /** - * @see org.olat.core.gui.control.Disposable#dispose(boolean) - */ - public void dispose() { - disposeRunComponent(); - } - - /** - * @see org.olat.gui.control.generic.portal.Portlet#getCssClass() - */ - public String getCssClass() { - return "o_portlet_macartney"; - } - - /** - * @see org.olat.gui.control.generic.portal.Portlet#disposeRunComponent(boolean) - */ - public void disposeRunComponent() { - if (this.runCtr != null) { - this.runCtr.dispose(); - this.runCtr = null; - } - } - -} diff --git a/src/main/java/org/olat/portal/macartney/MacartneyPortletRunController.java b/src/main/java/org/olat/portal/macartney/MacartneyPortletRunController.java deleted file mode 100644 index eb9775919fcd74465ecaf6d7da10349466116cee..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/MacartneyPortletRunController.java +++ /dev/null @@ -1,141 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.portal.macartney; - -import java.text.DecimalFormat; -import java.util.Map; - -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.velocity.VelocityContainer; -import org.olat.core.gui.control.DefaultController; -import org.olat.core.gui.control.Event; -import org.olat.core.gui.control.WindowControl; -import org.olat.core.gui.translator.PackageTranslator; -import org.olat.core.gui.translator.Translator; -import org.olat.core.helpers.Settings; -import org.olat.core.util.Util; -import org.olat.core.util.coordinate.CoordinatorManager; -import org.olat.core.util.coordinate.SyncerExecutor; -import org.olat.core.util.resource.OresHelper; -import org.olat.properties.Property; -import org.olat.properties.PropertyManager; - -/** - * Description:<br> - * Run view controller of macartney portlet - * <P> - * Initial Date: 11.07.2005 <br> - * - * @author gnaegi - */ -public class MacartneyPortletRunController extends DefaultController { - - private static final String VELOCITY_ROOT = Util.getPackageVelocityRoot(MacartneyPortlet.class); - private Translator trans; - private VelocityContainer macartneyVC; - - private static final String PROPERTY_NAME = "comicStart"; - private static final String PROPERTY_CATEGORY = "macartneyPortal"; - - private static final int maxEpisodes = 468; - private static final long updateInterval = 86400000; // one day in milliseconds - - private static long comicStartDate = 0; - - /** - * Constructor - * - * @param ureq - * @param imageBaseUri - */ - //o_clusterOK by:se synchronized on MacartneyPortlet class as olatresourceable - protected MacartneyPortletRunController(UserRequest ureq, WindowControl wControl, Map configuration) { - super(wControl); - this.trans = new PackageTranslator(Util.getPackageName(MacartneyPortlet.class), ureq.getLocale()); - this.macartneyVC = new VelocityContainer("macartneyVC", VELOCITY_ROOT + "/macartneyPortlet.html", trans, this); - - if (comicStartDate == 0) { - CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync( - OresHelper.createOLATResourceableType(MacartneyPortletRunController.class.getSimpleName()), - new SyncerExecutor() { - - @SuppressWarnings("synthetic-access") - public void execute() { - if (comicStartDate!=0) { - // then we shouldn't have gotten here in the first place, but we were - // racing with another userrequest in the same VM! - // let's quit quickly ;) - return; - } - // load comic start date only once - PropertyManager pm = PropertyManager.getInstance(); - Property p = pm.findProperty(null, null, null, PROPERTY_CATEGORY, PROPERTY_NAME); - if (p == null) { - // wow first time ever, save current date - p = pm.createPropertyInstance(null, null, null, PROPERTY_CATEGORY, PROPERTY_NAME, null, null, null, null); - pm.saveProperty(p); - } - comicStartDate = p.getCreationDate().getTime(); - } - - }); - } - - // time between comic start and now - long timeDelta = (System.currentTimeMillis() - comicStartDate); - // number of increments since comic start - long incrementNumber = (timeDelta / updateInterval); - // module with max episodes to start over again when finished - // + 1 since comic starts at position 1 and not 0 - long imageNumber = (incrementNumber % maxEpisodes) + 1; - - // calculate current episode url and push to velocity - DecimalFormat df = new DecimalFormat("0000"); - String currentEpisodeImage = "loge_" + df.format(imageNumber) + ".jpg"; - final String configuredImageBaseUri = (String) configuration.get("imageBaseUri"); - if (configuredImageBaseUri.startsWith("http://") || configuredImageBaseUri.startsWith("https://")) { - // feature: if the configured imageBaseUri contains http: or https: already, don't do - // magic "trying-to-detect-the-correct-protocol-via-olat.properties" but use it right away - this.macartneyVC.contextPut("imageBaseUri", configuredImageBaseUri); - } else { - // otherwise do the old magic - this.macartneyVC.contextPut("imageBaseUri", Settings.getURIScheme() + configuredImageBaseUri); - } - this.macartneyVC.contextPut("currentEpisodeImage", currentEpisodeImage); - - setInitialComponent(this.macartneyVC); - } - - public void event(UserRequest ureq, Component source, Event event) { - // no events to catch - } - - protected void doDispose() { - // nothing to dispose - } - -} diff --git a/src/main/java/org/olat/portal/macartney/_content/macartneyPortlet.html b/src/main/java/org/olat/portal/macartney/_content/macartneyPortlet.html deleted file mode 100644 index c53733ed530dc7159e17b8be18d881414a039d45..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_content/macartneyPortlet.html +++ /dev/null @@ -1,32 +0,0 @@ -<!-- Copyright by Alex Macartney, www.macartney.ch - Thanks Alex for supporting OLAT with you comic --> -<a href="http://www.macartney.ch" target="_blank"> - <img src="${imageBaseUri}klein/${currentEpisodeImage}" id="o_macartney" border="0" width="100%" alt="Macartney Comic" /> -</a> -<br /> -<div id="o_macartney_open" class="b_float_right"></div> -<i><a class="b_link_extern" href="http://www.macartney.ch" target="_blank">$r.translate("macartney.copyright")</a></i> - -<script type="text/javascript"> -/* <![CDATA[ */ -Ext.onReady(function(){ - ## Add large image version at the top of the page. Uses the Prototype library - new Insertion.Top($('b_page_margins'), "<div id='o_macartney_large' style='display: none;'><img src='${imageBaseUri}gross/${currentEpisodeImage}' border='0' alt='Macartney Comic'/><div id='o_macartney_close'></div></div>"); - - ## Add event handlers to slide large image in and out. Uses the Extjs library - ## show image when user has mouse over loop tool - Ext.get('o_macartney_open').hover( - function(){ Ext.get('o_macartney_large').fadeIn(); }, - function(){ Ext.get('o_macartney_large').fadeOut(); } - ); - ## close fallback: - ## close when user hovers over close icon - Ext.get('o_macartney_close').on('mouseover', function(e){ - Ext.get('o_macartney_large').slideOut(); - }); - ## close when user clicks on large image - Ext.get('o_macartney_large').on('click', function(e){ - Ext.get('o_macartney_large').slideOut(); - }); -}); -/* ]]> */ -</script> \ No newline at end of file diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_ar.properties deleted file mode 100644 index 812a63dfaeafb2c12679a96f6bd2531776da121a..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_ar.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Fri Feb 19 23:40:50 CET 2010 -macartney.copyright=macartney.ch \u062D\u0642\u0648\u0642 \u0627\u0644\u062A\u0623\u0644\u064A\u0641 \u0648\u0627\u0644\u0646\u0634\u0631 \u0645\u062D\u0641\u0648\u0638\u0629 \u0644\u0640 -macartney.description=\u0643\u0644 \u064A\u0648\u0645 \u0647\u0632\u0644\u064A\u0629 \u062C\u062F\u064A\u062F\u0629 \u0644\u0645\u0627\u0643\u0627\u0631\u062A\u0646\u0649 -macartney.title="Die Loge" \:\u0647\u0632\u0644\u064A\u0629 \u0645\u0643\u0627\u0631\u062A\u0646\u0649 diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_bg.properties deleted file mode 100644 index f764db69787791bf68dbc1dfd5884b33106d6e9b..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_bg.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Sun May 24 21:10:48 CEST 2009 -macartney.copyright=\u0410\u0432\u0442\u043E\u0440\u0441\u043A\u043E \u043F\u0440\u0430\u0432\u043E\: macartney.ch -macartney.description=\u0414\u043D\u0435\u0432\u043D\u0438\u044F\u0442 \u043A\u043E\u043C\u0438\u043A\u0441 \u043E\u0442 Macartney -macartney.title=Macartney \u043A\u043E\u043C\u0438\u043A\u0441\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_cs.properties deleted file mode 100644 index 085e340ebfea926048dec919ba2d9b9b861d5fc8..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_cs.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:14 CET 2009 -macartney.copyright=Copyright by macartney.ch -macartney.description=Denn\u011B comics od Macartneyho -macartney.title=Macartney Comic\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_da.properties deleted file mode 100644 index b3839ceb3d5d42e47be1325b72341fe8ab5497ca..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_da.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:09 CET 2009 -macartney.copyright=Copyright macartney.ch -macartney.description=En daglig Macartney tegneseriestribe -macartney.title=Macartney Comic\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_de.properties deleted file mode 100644 index e70b2097f6f42a18e2cbea6d271bdb65ce06909a..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_de.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:04 CET 2009 -macartney.copyright=Eigentum von macartney.ch -macartney.description=T\u00E4glich ein neuer Macartney Comic -macartney.title=Macartney Comic\: Die Loge diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_el.properties deleted file mode 100644 index 0553065d372d426129b9148b66093a1ab236c828..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_el.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:16 CET 2009 -macartney.copyright=Copyright by macartney.ch -macartney.description=\u039A\u03B1\u03B8\u03B7\u03BC\u03B5\u03C1\u03B9\u03BD\u03CC \u03C3\u03C4\u03B9\u03B3\u03BC\u03C5\u03CC\u03C4\u03C5\u03C0\u03BF \u03BA\u03B1\u03C1\u03C4\u03BF\u03CD\u03BD Macartney -macartney.title=\u039A\u03B1\u03C1\u03C4\u03BF\u03CD\u03BD Macartney \: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_en.properties deleted file mode 100644 index fb9e3383f65f465beafd4806ace41b67bbc6a6ab..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_en.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:18 CET 2009 -macartney.copyright=Copyright by macartney.ch -macartney.description=A daily Macartney comic strip -macartney.title=Macartney Comic\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_es.properties deleted file mode 100644 index a047aade66f1833e83cb379f70df22eab0a6c7fc..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_es.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:21 CET 2009 -macartney.copyright=Copyright by macartney.ch -macartney.description=Cada d\u00EDa un nuevo comic de Macartney -macartney.title=Macartney Comic\: Die Loge diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_fa.properties deleted file mode 100644 index ec4473aa96b16b75115eb312d1a4af704a90dc42..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_fa.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:13 CET 2009 -macartney.copyright=macartney.ch \u062D\u0642 \u0686\u0627\u067E -macartney.description=\u06CC\u06A9 \u06A9\u0627\u0631\u062A\u0648\u0646 \u06A9\u0645\u062F\u06CC \u0631\u0648\u0632\u0627\u0646\u0647 \u0627\u0632 \u0645\u06A9\u0627\u0631\u062A\u0646\u06CC -macartney.title=Macartney Comic\: "Die Loge"/\u06A9\u0645\u062F\u06CC \u0645\u06A9\u0627\u0631\u062A\u0646\u06CC diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_fr.properties deleted file mode 100644 index 6b54ef21177edabc2f1a303a2cbdfcf715e6b4b6..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_fr.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:08 CET 2009 -macartney.copyright=Propri\u00E9t\u00E9 de macartney.ch -macartney.description=Tous les jours une nouvelle B.D. de Macartney -macartney.title=B.D. Macartney\: Die Loge diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_it.properties deleted file mode 100644 index 7ea3fbea022c728e249e83dd35c3b7c384a12b0f..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_it.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:10 CET 2009 -macartney.copyright=Propriet\u00E0 di macartney.ch -macartney.description=Tutti i giorni una nuova vignetta Macartney -macartney.title=Vignetta Macartney diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_jp.properties deleted file mode 100644 index 318b1ff2f6c67b76efc8a376d3d95a857ef4518f..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_jp.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Thu Apr 16 22:42:13 CEST 2009 -macartney.copyright=macartney.ch\u306E\u8457\u4F5C\u6A29 -macartney.description=\u30C7\u30A4\u30EA\u30FCMacartney\u30B3\u30DF\u30C3\u30AF\u30B9\u30C8\u30EA\u30C3\u30D7 -macartney.title=Macartney\u30B3\u30DF\u30C3\u30AF\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_lt.properties deleted file mode 100644 index c717291f5f972534ea89a33bb1b0a77f60cb6048..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_lt.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:02 CET 2009 -macartney.copyright=Autoriaus teis\u0117s priklauso macartney.ch -macartney.description=Kasdieninei Macartney komiksai -macartney.title=Macartney Comic\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_nl_NL.properties deleted file mode 100644 index 5f66ee22a60a0426acf1513c7ca0b5d6d6b47e84..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_nl_NL.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon May 31 14:05:55 CEST 2010 -macartney.copyright=Copyright by macartney.ch -macartney.description=Dagelijks een nieuw Macartney stripverhaal -macartney.title=Macartney Stripverhaal\: "De Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pl.properties deleted file mode 100644 index 0e8d9f7c1d557cbc15a10470da72e3206903f9d9..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pl.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:17 CET 2009 -macartney.copyright=Prawa autorskie macartney.ch -macartney.description=Komiks Macartney'a -macartney.title=Komiks Macartney'a\: Die Loge diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pt_BR.properties deleted file mode 100644 index fef9f5df587d4af0eb92b7c61c595650ac6d7d03..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pt_BR.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:00 CET 2009 -macartney.copyright=Direitos Reservados por macartney.ch -macartney.description=Tira di\u00E1ria dos quadrinhos Macartney -macartney.title=Quadrinhos Macartney\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pt_PT.properties deleted file mode 100644 index 97e568b41747557e6d89ac88fa6dd424d212bc50..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_pt_PT.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:05 CET 2009 -macartney.copyright=Direitos Reservados por macartney.ch -macartney.description=Tira di\u00E1ria dos quadrinhos Macartney -macartney.title=Quadrinhos Macartney\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_ru.properties deleted file mode 100644 index b869989650887fa9ca9c8dfbbb5ffa6af816fc30..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_ru.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:19 CET 2009 -macartney.copyright=\u0421\u043E\u0431\u0441\u0442\u0432\u0435\u043D\u043D\u043E\u0441\u0442\u044C macartney.ch -macartney.description=\u0415\u0436\u0435\u0434\u043D\u0435\u0432\u043D\u043E \u043D\u043E\u0432\u044B\u0439 Macartney \u043A\u043E\u043C\u0438\u043A\u0441 -macartney.title=Macartney \u043A\u043E\u043C\u0438\u043A\u0441 diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_sq.properties deleted file mode 100644 index 6717e58645f4b652f440311d6472e1539d4e241d..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_sq.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:12 CET 2009 -macartney.copyright=E drejta e kopjes macartney.ch -macartney.description=Nj\u00EB strip komik ditor nga Macartney -macartney.title=Macartney Komik\u00EBt\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_zh_CN.properties deleted file mode 100644 index 6de36563a1dcfb1eaaa50bc66c600193b15b82a7..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_zh_CN.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:03 CET 2009 -macartney.copyright=\u7248\u6743\u6240\u5C5Emacartney.ch -macartney.description=Macartney\u6BCF\u65E5\u4E3B\u6253\u6F2B\u753B -macartney.title=Macartney\u6F2B\u753B\: "Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_zh_TW.properties deleted file mode 100644 index 33159fedd029a3c2ffeadd896b58e0a5a766e4c0..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/LocalStrings_zh_TW.properties +++ /dev/null @@ -1,4 +0,0 @@ -#Mon Mar 02 09:54:06 CET 2009 -macartney.copyright=macartney.ch \u7248\u6B0A\u6240\u6709 -macartney.description=Macartney \u6BCF\u65E5\u9023\u74B0\u6F2B\u756B -macartney.title=Macartney \u6F2B\u756B\uFF1A"Die Loge" diff --git a/src/main/java/org/olat/portal/macartney/_i18n/i18nBundleMetadata.properties b/src/main/java/org/olat/portal/macartney/_i18n/i18nBundleMetadata.properties deleted file mode 100644 index 49a9f95c33e99e5cfa403e601e932ac39f83cde8..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/portal/macartney/_i18n/i18nBundleMetadata.properties +++ /dev/null @@ -1 +0,0 @@ -bundle.priority = 450 diff --git a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java index cb9cb9f2613ec6644ec8e35d1d14e7ecf64b2e82..7ed1ba07926e6509219d56286397e38ba7431c1c 100644 --- a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java +++ b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java @@ -345,8 +345,14 @@ public class EPStructureDetailsController extends FormBasicController { final TextElement amountElement = amountElements.get(i); final CollectRestriction cr = (CollectRestriction) restrictionElement.getUserObject(); - final String restriction = restrictionElement.getSelectedKey(); - final String artefactType = restrictToArtefactElement.getSelectedKey(); + String restriction = ""; + if(restrictionElement.isOneSelected()) { + restriction = restrictionElement.getSelectedKey(); + } + String artefactType = ""; + if(restrictToArtefactElement.isOneSelected()) { + artefactType = restrictToArtefactElement.getSelectedKey(); + } final String amount = amountElement.getValue(); cr.setRestriction(restriction); diff --git a/src/main/java/org/olat/properties/NarrowedPropertyManager.java b/src/main/java/org/olat/properties/NarrowedPropertyManager.java index eca30e220339a253bff4eb7820c9921feeb94200..58099d16644109890530650bdbcf6cba58e70fde 100644 --- a/src/main/java/org/olat/properties/NarrowedPropertyManager.java +++ b/src/main/java/org/olat/properties/NarrowedPropertyManager.java @@ -114,7 +114,7 @@ public class NarrowedPropertyManager { * @param name * @return a list of Property objects */ - public List listProperties(Identity identity, BusinessGroup grp, String category, String name) { + public List<Property> listProperties(Identity identity, BusinessGroup grp, String category, String name) { return pm.listProperties(identity, grp, resourceable, category, name); } @@ -128,7 +128,7 @@ public class NarrowedPropertyManager { * @param name * @return a list of Property objects */ - public List findProperties(Identity identity, BusinessGroup grp, String category, String name) { + public List<Property> findProperties(Identity identity, BusinessGroup grp, String category, String name) { return pm.findProperties(identity, grp, resourceable, category, name); } diff --git a/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties index a9c623efb474a10f651d3e9492c06f36f4fc9993..4e2d1268f3d33beabafcf05b269aa619a3ad27b4 100644 --- a/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties @@ -74,7 +74,7 @@ step3.pw.text=Bitte beachten Sie bei der Eingabe des neuen OpenOLAT-Passwortes f step3.reg.text=Um die Registrierung abzuschliessen, f\u00FCllen Sie bitte das Formular mit Ihren Angaben aus. step4.pw.text=Sie haben Ihr OpenOLAT-Passwort neu gesetzt. step4.reg.text=<b>Bitte akzeptieren Sie die Nutzungsbedingungen, bevor Sie fortfahren.</b> -step5.reg.text=<p><b>Willkommen bei OpenOLAT\!</b><p>Sie k\u00F6nnen sich nun <a href\="{0}/">mit Ihrem Benutzernamen <b>{1}</b> und Passwort anmelden.</a> +step5.reg.text=Sie k\u00F6nnen sich nun mit Ihrem Benutzernamen <b>{1}</b> und Passwort anmelden: step5.reg.yourdata=Zusammenfassung Ihrer Angaben\: pwchange.homelink=Klicken Sie hier um sich anzumelden submit.accept=Akzeptieren diff --git a/src/main/java/org/olat/repository/site/RepositorySite.java b/src/main/java/org/olat/repository/site/RepositorySite.java index 21ee689d83c98c8169a6019736103a5db3f8a6d5..30d763f1cccaa0cadbaabffe579df5d87a5268da 100644 --- a/src/main/java/org/olat/repository/site/RepositorySite.java +++ b/src/main/java/org/olat/repository/site/RepositorySite.java @@ -40,9 +40,11 @@ import org.olat.core.gui.translator.Translator; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.id.context.StateSite; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; import org.olat.core.util.resource.OresHelper; import org.olat.repository.controllers.RepositoryMainController; +import org.olat.util.logging.activity.LoggingResourceable; /** * Description:<br> * TODO: Felix Jost Class Description for HomeSite @@ -85,6 +87,7 @@ public class RepositorySite implements SiteInstance { // for existing controller which are part of the main olat -> use the controllerfactory //fxdiff BAKS-7 Resume function OLATResourceable ores = OresHelper.createOLATResourceableInstance(RepositorySite.class, 0l); + ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores)); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ureq, ores, new StateSite(this), wControl, true); MainLayoutController c = ControllerFactory.createLaunchController(ORES_REPO, null, ureq, bwControl, true); return c; diff --git a/src/main/java/org/olat/user/ChangePrefsController.java b/src/main/java/org/olat/user/ChangePrefsController.java index fe414dbc7709ed5b06cf2be4c18b24401dab5609..7a2b9ea8240e95035163fe30963055a483d98919 100644 --- a/src/main/java/org/olat/user/ChangePrefsController.java +++ b/src/main/java/org/olat/user/ChangePrefsController.java @@ -206,19 +206,20 @@ class SpecialPrefsForm extends FormBasicController { } if (useAjaxCheckbox) { - prefs.putAndSave(WindowManager.class, "ajax-beta-on", prefsElement.getSelectedKeys().contains("ajax")); + prefs.put(WindowManager.class, "ajax-beta-on", prefsElement.getSelectedKeys().contains("ajax")); } prefs.putAndSave(WindowManager.class, "web2a-beta-on", prefsElement.getSelectedKeys().contains("web2a")); //fxdiff BAKS-7 Resume function if(resumeElement != null) { - prefs.putAndSave(WindowManager.class, "resume-prefs", resumeElement.getSelectedKey()); + prefs.put(WindowManager.class, "resume-prefs", resumeElement.getSelectedKey()); } if(backElement != null) { - prefs.putAndSave(WindowManager.class, "back-enabled", backElement.isSelected(0)); + prefs.put(WindowManager.class, "back-enabled", backElement.isSelected(0)); } if (ureq.getIdentity().equalsByPersistableKey(tobeChangedIdentity)) { showInfo("preferences.successful"); } + prefs.save(); } @Override diff --git a/src/main/java/org/olat/user/UserInfoMainController.java b/src/main/java/org/olat/user/UserInfoMainController.java index 22949ed3e42bbc388057ebfe028bd36bacc7a09a..694302e2d712a27e7fbca54670b37917c4d4b3df 100644 --- a/src/main/java/org/olat/user/UserInfoMainController.java +++ b/src/main/java/org/olat/user/UserInfoMainController.java @@ -21,6 +21,9 @@ * OpenOLAT - Online Learning and Training</a><br> * This file has been modified by the OpenOLAT community. Changes are licensed * under the Apache 2.0 license as the original file. +* <p> +* Initial code contributed and copyrighted by<br> +* 2012 by frentix GmbH, http://www.frentix.com */ package org.olat.user; @@ -28,6 +31,7 @@ package org.olat.user; import java.util.ArrayList; import java.util.List; +import org.olat.basesecurity.BaseSecurityManager; import org.olat.commons.calendar.CalendarManager; import org.olat.commons.calendar.CalendarManagerFactory; import org.olat.commons.calendar.model.KalendarConfig; @@ -66,12 +70,15 @@ import org.olat.portfolio.EPUIFactory; import org.olat.portfolio.PortfolioModule; /** - * Initial Date: July 26, 2005 - * + * Initial Date: July 26, 2005 + * * @author Alexander Schneider + * @author Florian Gnägi * - * Comment: - * TODO as dokumentation + * Comment: Controller creates a main layout controller that represents + * the users visiting card. It has access to the users homepage, public + * folder, public calendar items, published eportfolios and an email + * form. * */ public class UserInfoMainController extends MainLayoutBasicController { @@ -191,7 +198,13 @@ public class UserInfoMainController extends MainLayoutBasicController { gtn.setAltText(translate("menu.homepage.alt")); root.addChild(gtn); - if ( !chosenIdentity.getStatus().equals(Identity.STATUS_DELETED) ) { + // following user info elements are only shown for undeleted and real + // users (not invited + // eportfolio users) + boolean isInvitee = BaseSecurityManager.getInstance().isIdentityInvited(chosenIdentity); + boolean isDeleted = chosenIdentity.getStatus().equals(Identity.STATUS_DELETED); + + if ( !isDeleted && ! isInvitee) { gtn = new GenericTreeNode(); gtn.setTitle(translate("menu.calendar")); gtn.setUserObject(CMD_CALENDAR); @@ -203,13 +216,15 @@ public class UserInfoMainController extends MainLayoutBasicController { gtn.setUserObject(CMD_FOLDER); gtn.setAltText(translate("menu.folder.alt")); root.addChild(gtn); - + } + if ( !isDeleted) { gtn = new GenericTreeNode(); gtn.setTitle(translate("menu.contact")); gtn.setUserObject(CMD_CONTACT); gtn.setAltText(translate("menu.contact.alt")); root.addChild(gtn); - + } + if ( !isDeleted && ! isInvitee) { PortfolioModule portfolioModule = (PortfolioModule) CoreSpringFactory.getBean("portfolioModule"); if (portfolioModule.isEnabled()) { gtn = new GenericTreeNode(); @@ -218,15 +233,7 @@ public class UserInfoMainController extends MainLayoutBasicController { gtn.setAltText(translate("menu.portfolio.alt")); root.addChild(gtn); } - - //TODO:gs only show weblog if user wants this and a weblog exists - //not yet active -// gtn = new GenericTreeNode(); -// gtn.setTitle(translate("menu.weblog")); -// gtn.setUserObject(CMD_WEBLOG); -// gtn.setAltText(translate("menu.weblog.alt")); -// root.addChild(gtn); - } + } return gtm; } diff --git a/src/main/java/org/olat/user/_content/homepagedisplay.html b/src/main/java/org/olat/user/_content/homepagedisplay.html index 7af7695ec82f1d0f813e16cb7e50b1ed449d99da..9807cd390b694634a77cf61fa2d723db7f85e471 100644 --- a/src/main/java/org/olat/user/_content/homepagedisplay.html +++ b/src/main/java/org/olat/user/_content/homepagedisplay.html @@ -12,16 +12,6 @@ </div> <table> - <tr> - <td> - <label> - $r.translate("form.username") - </label> - </td> - <td> - <strong>$userName</strong> - </td> - </tr> #foreach( $propertyHandler in $userPropertyHandlers ) #if($homepageConfig.isEnabled($propertyHandler.getName())) <tr> diff --git a/src/main/java/org/olat/user/restapi/ContactsWebService.java b/src/main/java/org/olat/user/restapi/ContactsWebService.java index e5cb782cdcfa70cdab72f08b85fc004afc425ce6..d4159e589f7541c307c0545bae20084097314581 100644 --- a/src/main/java/org/olat/user/restapi/ContactsWebService.java +++ b/src/main/java/org/olat/user/restapi/ContactsWebService.java @@ -76,7 +76,7 @@ public class ContactsWebService { int count = 0; UserVO[] userVOs = new UserVO[contacts.size()]; for(Identity contact:contacts) { - userVOs[count++] = link(get(contact), uriInfo); + userVOs[count++] = link(get(contact, null, true, false, true), uriInfo); } UserVOes voes = new UserVOes(); voes.setUsers(userVOs); diff --git a/src/main/java/org/olat/user/restapi/UserVOFactory.java b/src/main/java/org/olat/user/restapi/UserVOFactory.java index 0ff7484ad570b5c4b67e9e8a7356b3f72cae3548..370075558af382dc5cd0d39f7f1293e8f4a20305 100644 --- a/src/main/java/org/olat/user/restapi/UserVOFactory.java +++ b/src/main/java/org/olat/user/restapi/UserVOFactory.java @@ -193,16 +193,17 @@ public class UserVOFactory { public static UserVO link(UserVO userVO, UriInfo uriInfo) { if(uriInfo != null) { - UriBuilder baseUriBuilder = uriInfo.getBaseUriBuilder(); - URI getUri = baseUriBuilder.path("users").path(userVO.getKey().toString()).build(); + URI baseUri = uriInfo.getBaseUriBuilder().build(); + + URI getUri = UriBuilder.fromUri(baseUri).path("users").path(userVO.getKey().toString()).build(); userVO.getLink().add(new LinkVO("self", getUri.toString(), "")); userVO.getLink().add(new LinkVO("edit", getUri.toString(), "")); userVO.getLink().add(new LinkVO("delete", getUri.toString(), "")); - URI groupUri = baseUriBuilder.path("users").path(userVO.getKey().toString()).path("groups").build(); + URI groupUri = UriBuilder.fromUri(baseUri).path("users").path(userVO.getKey().toString()).path("groups").build(); userVO.getLink().add(new LinkVO("self", groupUri.toString(), "Groups")); - URI portraitUri = baseUriBuilder.path("users").path(userVO.getKey().toString()).path("portrait").build(); + URI portraitUri = UriBuilder.fromUri(baseUri).path("users").path(userVO.getKey().toString()).path("portrait").build(); userVO.getLink().add(new LinkVO("self", portraitUri.toString(), "Portrait")); } return userVO; diff --git a/src/main/java/org/olat/util/logging/activity/LoggingResourceable.java b/src/main/java/org/olat/util/logging/activity/LoggingResourceable.java index 3f9d6fb7fbf05c9963db7690facf9b3bb8d579fb..443fc21a36f0780b5439eb8c535cfac4c34f955b 100644 --- a/src/main/java/org/olat/util/logging/activity/LoggingResourceable.java +++ b/src/main/java/org/olat/util/logging/activity/LoggingResourceable.java @@ -127,6 +127,9 @@ public class LoggingResourceable implements ILoggingResourceable { /** the OlatResourceable if we have one - null otherwise. Used for equals() and the businessPath check mainly **/ private final OLATResourceable resourceable_; + + private final boolean ignorable; + /** * Restrict the given argument to the given number of bytes using UTF-8 encoding. * <p> @@ -193,12 +196,22 @@ public class LoggingResourceable implements ILoggingResourceable { * @param id the id to be stored to the database * @param name the name to be stored to the database */ - private LoggingResourceable(OLATResourceable resourceable, ILoggingResourceableType resourceableType, String type, String id, String name) { + private LoggingResourceable(OLATResourceable resourceable, ILoggingResourceableType resourceableType, String type, String id, String name, boolean ignorable) { type_ = restrictStringLength(type, MAX_TYPE_LEN, "type", true); id_ = restrictStringLength(id, MAX_ID_LEN, "id", true); name_ = restrictStringLength(name, MAX_NAME_LEN, "name", true); resourceable_ = resourceable; resourceableType_ = resourceableType; + this.ignorable = ignorable; + } + + /** + * These are ignored from the logging. + * @param olatResourceable + * @return + */ + public static LoggingResourceable wrapBusinessPath(OLATResourceable olatResourceable) { + return new LoggingResourceable(olatResourceable, OlatResourceableType.businessPath, "businessPath", "0", "", true); } // @@ -223,7 +236,7 @@ public class LoggingResourceable implements ILoggingResourceable { throw new IllegalArgumentException("olatResourceable must not be null"); } if (olatResourceable.equals(BusinessGroupMainRunController.ORES_TOOLWIKI)) { - return new LoggingResourceable(olatResourceable, OlatResourceableType.wiki, "wiki", "0", ""); + return new LoggingResourceable(olatResourceable, OlatResourceableType.wiki, "wiki", "0", "", false); } else { return wrap(olatResourceable, OlatResourceableType.wiki); } @@ -239,7 +252,7 @@ public class LoggingResourceable implements ILoggingResourceable { throw new IllegalArgumentException("olatResourceable must not be null"); } if (olatResourceable.equals(BusinessGroupMainRunController.ORES_TOOLPORTFOLIO)) { - return new LoggingResourceable(olatResourceable, OlatResourceableType.portfolio, "portfolio", "0", ""); + return new LoggingResourceable(olatResourceable, OlatResourceableType.portfolio, "portfolio", "0", "", false); } else { return wrap(olatResourceable, OlatResourceableType.portfolio); } @@ -262,14 +275,14 @@ public class LoggingResourceable implements ILoggingResourceable { } if (repoEntry!=null) { return new LoggingResourceable(repoEntry, type, repoEntry.getOlatResource().getResourceableTypeName(), - String.valueOf(repoEntry.getOlatResource().getResourceableId()), repoEntry.getDisplayname()); + String.valueOf(repoEntry.getOlatResource().getResourceableId()), repoEntry.getDisplayname(), false); } else if (olatResourceable instanceof OLATResource) { OLATResource olatResource = (OLATResource) olatResourceable; return new LoggingResourceable(olatResource, type, olatResource.getResourceableTypeName(), - String.valueOf(olatResource.getResourceableId()), String.valueOf(olatResource.getKey())); + String.valueOf(olatResource.getResourceableId()), String.valueOf(olatResource.getKey()), false); } else { return new LoggingResourceable(olatResourceable, type, olatResourceable.getResourceableTypeName(), - String.valueOf(olatResourceable.getResourceableId()), ""); + String.valueOf(olatResourceable.getResourceableId()), "", false); } } @@ -291,7 +304,7 @@ public class LoggingResourceable implements ILoggingResourceable { */ public static LoggingResourceable wrapNonOlatResource(StringResourceableType type, String idForDB, String nameForDB) { return new LoggingResourceable(null, type, - type.name(), idForDB, nameForDB); + type.name(), idForDB, nameForDB, false); } /** @@ -371,7 +384,7 @@ public class LoggingResourceable implements ILoggingResourceable { name = forumMessages.get(0).getTitle(); } return new LoggingResourceable(forum, OlatResourceableType.forum, forum.getResourceableTypeName(), - String.valueOf(forum.getResourceableId()), name); + String.valueOf(forum.getResourceableId()), name, false); } /** @@ -381,7 +394,7 @@ public class LoggingResourceable implements ILoggingResourceable { */ public static LoggingResourceable wrap(Message forumMessage) { return new LoggingResourceable(OresHelper.createOLATResourceableInstance(Message.class, forumMessage.getKey()), OlatResourceableType.forumMessage, OlatResourceableType.forumMessage.name(), - String.valueOf(forumMessage.getKey()), forumMessage.getTitle()); + String.valueOf(forumMessage.getKey()), forumMessage.getTitle(), false); } /** @@ -394,7 +407,7 @@ public class LoggingResourceable implements ILoggingResourceable { // truncate title after 230 chars if (title.length() > 230) title = title.substring(0, 229); return new LoggingResourceable(feed, OlatResourceableType.feed, feed.getResourceableTypeName(), - String.valueOf(feed.getResourceableId()), title); + String.valueOf(feed.getResourceableId()), title, false); } /** @@ -428,7 +441,7 @@ public class LoggingResourceable implements ILoggingResourceable { name = DEFAULT_COURSE_GROUP_CONTEXT_NAME; } return new LoggingResourceable(bgContext, OlatResourceableType.bgContext, bgContext.getGroupType(), - String.valueOf(bgContext.getResourceableId()), name); + String.valueOf(bgContext.getResourceableId()), name, false); } /** @@ -438,7 +451,7 @@ public class LoggingResourceable implements ILoggingResourceable { */ public static LoggingResourceable wrap(BusinessGroup group) { return new LoggingResourceable(group, OlatResourceableType.businessGroup, group.getResourceableTypeName(), - String.valueOf(group.getKey()), group.getName()); + String.valueOf(group.getKey()), group.getName(), false); } /** @@ -448,7 +461,7 @@ public class LoggingResourceable implements ILoggingResourceable { */ public static LoggingResourceable wrap(ICourse course) { return new LoggingResourceable(course, OlatResourceableType.course, course.getResourceableTypeName(), - String.valueOf(course.getResourceableId()), course.getCourseTitle()); + String.valueOf(course.getResourceableId()), course.getCourseTitle(), false); } /** @@ -465,10 +478,10 @@ public class LoggingResourceable implements ILoggingResourceable { Long id = Long.parseLong(ident); return new LoggingResourceable(OresHelper.createOLATResourceableInstance("CourseNode", id), OlatResourceableType.node, typeForLogging, - node.getIdent(), name); + node.getIdent(), name, false); } catch(NumberFormatException nfe) { return new LoggingResourceable(null, OlatResourceableType.node, typeForLogging, - node.getIdent(), name); + node.getIdent(), name, false); } } @@ -533,6 +546,11 @@ public class LoggingResourceable implements ILoggingResourceable { return resourceableType_; } + @Override + public boolean isIgnorable() { + return ignorable; + } + @Override public int hashCode() { return type_.hashCode()+(id_!=null ? id_.hashCode() : 1)+(resourceable_!=null ? resourceable_.getResourceableTypeName().hashCode()+(int)resourceable_.getResourceableId().longValue() : 0) + (resourceableType_!=null ? resourceableType_.hashCode() : 0); diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index 6af589577da479be3951fd1876d3dff86849b93d..4163248b14a224538b75e27a4e6c9590b1329671 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -228,7 +228,7 @@ instance.id=myopenolat # customize the OLAT application to your liking (see the example # theme for futher information. # you can also configure a theme via the admin GUI which takes precedence -layout.theme = openolat +layout.theme=openolat layout.coursetemplates.blacklist= # test user generation @@ -243,8 +243,6 @@ course.cache.elements=500 # required only for performance and functional testing allow.loadtest.mode=false # Portlets enabled by default -portlet.macartney.enabled=true -portlet.macartney.baseUri=//www.olat.org/macartney/loge/ portlet.didYouKnow.enabled=true portlet.groups.enabled=true portlet.bookmarks.enabled=true diff --git a/src/main/resources/serviceconfig/org/olat/_spring/portalContext.xml b/src/main/resources/serviceconfig/org/olat/_spring/portalContext.xml index 455198bb4ce81b1bfc70e904c0ffadf84401f48f..9e0435fcbdb3e016b9d70e450bf89cbb2bcbd4b8 100644 --- a/src/main/resources/serviceconfig/org/olat/_spring/portalContext.xml +++ b/src/main/resources/serviceconfig/org/olat/_spring/portalContext.xml @@ -42,16 +42,6 @@ </map> </property> </bean> - <bean id="Macartney" class="org.olat.portal.macartney.MacartneyPortlet" scope="prototype"> - <property name="name" value="Macartney" /> - <property name="enabled" value="${portlet.macartney.enabled}" /> - <property name="configuration"> - <map> - <!-- use protocol relativ URL to support http and https --> - <entry key="imageBaseUri" value="${portlet.macartney.baseUri}" /> - </map> - </property> - </bean> <bean id="DidYouKnow" class="org.olat.core.commons.portlets.didYouKnow.DidYouKnowPortlet" scope="prototype"> <property name="name" value="DidYouKnow" /> <property name="enabled" value="${portlet.didYouKnow.enabled}" /> @@ -151,8 +141,7 @@ <value>Information</value> <value>Zsuz</value> <value>Quickstart</value> - <value>DidYouKnow</value> - <value>Macartney</value> + <value>DidYouKnow</value> </list> <list> <value>RepositoryPortletStudent</value> @@ -182,7 +171,6 @@ <list> <value>Information</value> <value>DidYouKnow</value> - <value>Macartney</value> </list> </list> </property> diff --git a/src/main/webapp/static/themes/compiletheme.sh b/src/main/webapp/static/themes/compiletheme.sh index 68af44a71c02dd6d7fda010d7a94e602061b8142..d0d9c63fdec10b2b219573800958183166584cbd 100755 --- a/src/main/webapp/static/themes/compiletheme.sh +++ b/src/main/webapp/static/themes/compiletheme.sh @@ -4,15 +4,14 @@ # can be included into eclipse-project-build (project-properties --> "Builders") # -echo "compiling SASS..." -sass --version +style=compressed -#sass --style extended --update --load-path openolat openolat/all openolat/all/modules openolat/print openolat/mobile . +echo "compiling SASS: $style" +sass --version -#sass --style extended --update --load-path openolat openolat/all openolat/all/modules openolat/print openolat/mobile bzg -#sass --style extended --update --load-path openolat openolat/all openolat/all/modules openolat/print openolat/mobile zag -sass --style extended --update --load-path openolat openolat/all openolat/all/modules openolat/print openolat/mobile kantiwohlen +sass --style $style --update --load-path openolat openolat/all openolat/all/modules openolat/print openolat/mobile . echo "done" + diff --git a/src/main/webapp/static/themes/openolat/all/_basemod.scss b/src/main/webapp/static/themes/openolat/all/_basemod.scss index 7d8f3b3bf97c9a71da556067a4ce85422145fef2..a4f726039b57028dd47e7ea0ad9a049dfe7374f0 100644 --- a/src/main/webapp/static/themes/openolat/all/_basemod.scss +++ b/src/main/webapp/static/themes/openolat/all/_basemod.scss @@ -17,7 +17,6 @@ * ================================================= */ - @media all { @@ -479,29 +478,37 @@ h4.b_titled_wrapper span { padding-right: 3em; font-style: italic;} h5.b_titled_wrapper span { padding-right: 3em; font-style: italic;} div.b_titled_wrapper { - div.b_togglebox div.b_togglebox_content { background:#fff; border:0px; padding:0px; } + div.b_togglebox div.b_togglebox_content { background:transparent; border:0px; padding:0px; } a.b_togglebox_opened { z-index:10; display:block; width:16px; height:16px; position:absolute; top:5px; left:5px; background: url(../openolat/images/information-white.png) no-repeat 0 50%; padding:0; } a.b_togglebox_closed {display:block; width:20px; height:20px; background: url(../openolat/images/information-white.png) no-repeat top left; padding:0; @include o-opacity(60); } div.b_togglebox div.b_togglebox_content { position:relative; margin-bottom:1em; } a.b_togglebox_hide span { position:absolute; bottom:0; right:0; padding:0 6px 3px 0; } a.b_togglebox_hide:hover { text-decoration:underline; } } + /* Needed for IE6 */ div.b_titled_wrapper div.b_togglebox div.b_togglebox_content div.o_course_run_objectives { position:relative; } div.o_course_run_dropbox div.b_noti { position:relative; top:0; right:25px; border: 1px solid #FFFFFF;} div.o_course_run_returnbox div.b_noti { position:relative; top:0; right:25px; border: 1px solid #FFFFFF;} div.o_course_run_solutionbox div.b_noti { position:relative; top:0; right:25px; border: 1px solid #FFFFFF;} + /** ------------------ CATALOG ------------------------ **/ div.o_catalog { + div.o_catalog_link_title { + margin: 2em 0 0 0; + border-bottom:1px solid #ccc; + padding:0.3em; + } + div.o_catalog_title { display: none; //hide title } div.o_catalog_nav { font-size: 95%; - padding: 1px 0 1px 20px; + padding: 1px 0 2px 22px; border-bottom: 1px solid #EEE; - background: url(../openolat/images/folder_open.png) 0 50% no-repeat; + background: url(../openolat/images/folder_open.png) 2px 50% no-repeat; } div.o_catalog_links { margin-top: 1em; @@ -509,7 +516,6 @@ div.o_catalog { border-top: 1px solid #EEE; } } - /** -------------- TAGGING ---------------- **/ /* tagging */ @@ -577,3 +583,12 @@ div.o_catalog { } input.inputMessage { color: #AAA; font-size: 11px; } } + + +/* FLOTING STYLES */ +.b_float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; } +.b_float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; } +.b_center { text-align:center; margin: 0.5em auto } +/* CLEAR container: additonal to b_floatbox */ +.b_floatscrollbox { overflow-x: auto; overflow-y: hidden;} +.b_overflowscrollbox { overflow: auto;} diff --git a/src/main/webapp/static/themes/openolat/all/_mixins.scss b/src/main/webapp/static/themes/openolat/all/_mixins.scss index ea940727e9054c8ebe024a4d33d2fc260d1fb6b1..a231e503e0d83eaa6c1721dec7ec066a64aae116 100644 --- a/src/main/webapp/static/themes/openolat/all/_mixins.scss +++ b/src/main/webapp/static/themes/openolat/all/_mixins.scss @@ -115,6 +115,13 @@ -webkit-box-shadow: inset $a $b $c $color; box-shadow: inset $a $b $c $color; } +@mixin o-box-shadow-none(){ + moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} @mixin o-text-shadow($a,$b,$c,$color){ text-shadow: $a $b $c $color; diff --git a/src/main/webapp/static/themes/openolat/all/content.css b/src/main/webapp/static/themes/openolat/all/content.css index a7a64703fb18630862be21068e085abf5c97773f..7c5ec8bf8df32188267ff03a6d1ce163143becbf 100644 --- a/src/main/webapp/static/themes/openolat/all/content.css +++ b/src/main/webapp/static/themes/openolat/all/content.css @@ -1,736 +1 @@ -/* -* ================================================= -* -* content rules for OpenOLAT 8 -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 -* -* also read themes.README! -* -* (as of yaml compliance, contains css rules for -* styling fonts, colors, font-style, etc. ) -* -* this file is compiled to a separate css-file! (it is needed -* in iframes within course, tinyMCE, etc.) -* -* the resulting content.css is also included in layout.scss -* (as "default" css import, because of the relative image-links) -* ================================================= -*/ -/* -* ================================================= -* -* CONTAINS SOME SASS VARIABLES -* you can change these and compile the theme :) -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 -* -* -* also read themes.README! -* -* ================================================= -*/ -/* the base-color and variations (for openolat-theme this is the openolat-blue) */ -/* then we need a base-gray and some variations */ -/* here you can define the two small icons used in trees: + and - */ -/* the defaultfont used in : text, main content, etc. */ -/* the font used in : navigation (tabs + tree), headings */ -/* the overall default font-size */ -/* enable business / kmu mode */ -/* defines the body-background */ -/* -* ================================================= -* -* sass mixins for OpenOLAT 8 -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 -* -* also read themes.README! -* -* this file is included in layout.scss -* it is not compiled to a separate css-file... -* -* ================================================= -*/ -/** -* $percent is a number between 0 and 100 -* for opacity:0.5, you would use: @import o-opacity(50); -*/ -textarea, pre, tt, code { - font-family: Arial, sans-serif; - font-size: 90%; - color: inherit; - line-height: inherit; - margin: inherit; } - -body { - font-family: Arial, sans-serif; - font-size: 75%; - color: #444; } - -#b_header #b_topnav, #b_nav_main, div.b_tree { - font-family: Century Gothic, Apple Gothic, sans-serif; } - -/** ----------------- HEADERS ----------------- **/ -h1, h2, h3, h4, h5, h6 { - font-family: Century Gothic, Apple Gothic, sans-serif; - font-weight: bold; - margin: 0 0 0.25em 0; } - -h1 { - font-size: 200%; } - -/* 24px */ -h2 { - font-size: 166.67%; } - -/* 20px */ -h3 { - font-size: 150%; } - -/* 18px */ -h4 { - font-size: 133.33%; } - -/* 16px */ -h5 { - font-size: 116.67%; } - -/* 14px */ -h6 { - font-size: 116.67%; - font-style: italic; } - -/* 14px */ -/** ----------------- LINKS ----------------- **/ -a, a:visited { - text-decoration: none; - color: #025d8c; } - -a:hover { - text-decoration: underline; - color: #025d8c; } - -a.b_link_extern { - background: transparent url("../../openolat/images/external_link_trimmed.png") no-repeat right top; - padding-right: 13px; } - -.b_link_mailto { - background: transparent url("../../openolat/images/mail_small.png") no-repeat left center; - padding-left: 18px; } - -/* TEXT FORMATTING */ -cite, blockquote { - font-style: italic; } - -blockquote { - margin: 0 0 1em 1.5em; } - -strong, b { - font-weight: bold; } - -em, i { - font-style: italic; } - -textarea, pre, tt, code { - font-family: monospace; - font-size: 1.2em; } - -acronym, abbr { - letter-spacing: .07em; - border-bottom: .1em dashed #c00; - cursor: help; } - -legend { - padding: 0 5px; - color: #504D4E; } - -hr { - color: #fff; - background: transparent; - margin: 0 0 0.5em 0; - padding: 0 0 0.5em 0; - border: 0; - border-bottom: 1px #eee solid; } - -p { - margin: 0 0 1em 0; } - -dt { - font-weight: bold; } - -dd { - margin: 0 0 1em 2em; } - -/** ----------------- CONTENT CLASSES ----------------- **/ -/* content boxes */ -.b_info { - background: #e9eaef url(../../openolat/images/information-white.png) no-repeat 5px 5px; - padding: 5px 5px 5px 30px; - border: 1px solid #C5C4C4; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; } - -.b_note { - background: #E2E2E2; - padding: 1em; - border: 2px #B5B5B5 solid; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; } - -.b_important { - background: #FFF1A4; - padding: 1em; - border: 2px #F4D000 solid; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; } - -.b_warning { - background: #FFD5AA; - padding: 1em; - border: 2px #FF9E3E solid; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; } - -div.b_note, div.b_important, div.b_warning, div.b_info { - margin: 1em 0; } - -.b_border_box { - border: 1px solid #ACAAAA; - padding: 1em; } - -/* font */ -.b_disabled { - color: #ACAAAA; } - -.b_deleted { - text-decoration: line-through; } - -.b_selected { - font-weight: bold; } - -/* font sizes relative to parent object */ -.b_small, small { - font-size: 90%; } - -.b_xsmall, sup, sub { - font-size: 80%; } - -.b_large { - font-size: 110%; } - -.b_xlarge, big { - font-size: 120%; } - -/* text alignment: normal flow in a LTR language is left, in a RTL language it is right */ -.b_align_normal { - text-align: left; } - -.b_align_center { - text-align: center; } - -.b_align_inverse { - text-align: right; } - -.b_quote_wrapper { - position: relative; - margin: 20px; } - -.b_quote_author { - background: url(../../openolat/images/forum/quote.gif) no-repeat left bottom; - padding: 10px 5px 15px 11px; - position: relative; - top: 1px; - font-style: italic; - color: #A2A2A2; } - -blockquote.b_quote { - margin: 0; - border: 1px solid #e5e5e5; - color: black; - padding: 8px 10px 6px; - color: #646464; - background: #fff; } - -.b_border_box { - border: 1px solid #ccc; - padding: 1em; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - -o-border-radius: 2px; } - -.b_warning { - padding: 1em; - border: 2px #ffc659 solid; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; - background: #ffe49c; - background: -moz-linear-gradient(top, #ffe49c 0%, #fff4da 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffe49c), color-stop(100%, #fff4da)); - background: -webkit-linear-gradient(top, #ffe49c 0%, #fff4da 100%); - background: -o-linear-gradient(top, #ffe49c 0%, #fff4da 100%); - background: -ms-linear-gradient(top, #ffe49c 0%, #fff4da 100%); - background: linear-gradient(top, #ffe49c 0%, #fff4da 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe49c', endColorstr='#fff4da',GradientType=0 ); } - -.b_dimmed { - /* Required for IE 5, 6, 7 */ - /* ...or something to trigger hasLayout, like zoom: 1; */ - zoom: 1; - /* Theoretically for IE 8 & 9 (more valid) */ - /* ...but not required as filter works too */ - /* should come BEFORE filter */ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=$percent)"; - /* This works in IE 8 & 9 too */ - /* ... but also 5, 6, 7 */ - filter: alpha(opacity=40); - /* Older than Firefox 0.9 */ - -moz-opacity: 0.4; - /* Safari 1.x (pre WebKit!) */ - -khtml-opacity: 0.4; - /* Modern! - /* Firefox 0.9+, Safari 2?, Chrome any? - /* Opera 9+, IE 9+ */ - opacity: 0.4; } - -.o_ochre { - color: #c8a959; } - -/* FLOTING STYLES */ -.b_float_left { - float: left; - display: inline; - margin-right: 1em; - margin-bottom: 0.15em; } - -.b_float_right { - float: right; - display: inline; - margin-left: 1em; - margin-bottom: 0.15em; } - -.b_center { - text-align: center; - margin: 0.5em auto; } - -/* CLEAR container: additonal to b_floatbox */ -.b_floatscrollbox { - overflow-x: auto; - overflow-y: hidden; } - -.b_overflowscrollbox { - overflow: auto; } - -/* =============================================================================== **/ -/* HELP, context sensitive */ -div.b_contexthelp_wrapper { - position: relative; } - -a.b_contexthelp { - display: block; - width: 16px; - height: 16px; - background: url(../../openolat/images/help.png) no-repeat; - line-height: 0; - cursor: help; } - -div.b_contexthelp_wrapper a.b_contexthelp { - position: absolute; - top: 0; - right: 0; } - -fieldset a.b_contexthelp, fieldset div.b_contexthelp_wrapper a.b_contexthelp { - position: absolute; - top: -1.5em; - right: -0.8em; } - -#b_contexthelp_content { - padding: 0; } - -#b_ch_topnav_search div.b_form_element_wrapper.b_form_horizontal { - margin: 2px 0 0 0; } - -#b_contexthelp_rating { - text-align: center; - margin-top: 20px; - padding: 10px; - border-top: 1px #ACAAAA solid; } -#b_contexthelp_rating h4 { - font-size: 90%; - margin: 0; - font-style: italic; } -#b_contexthelp_rating table { - display: inline-block; } -#b_contexthelp_rating table td { - width: 50%; } - -.b_contexthelp_icon { - background-image: url(../../openolat/images/help.png); } - -/* USER COMMENTS */ -div.b_ratings_and_comments { - margin: 4em 0 1.5em 0; - padding-bottom: 0.5em; - border-bottom: 1px solid #eee; - font-size: 0.9em; - position: relative; } -div.b_ratings_and_comments div.b_rating_wrapper { - position: absolute; - right: 0; - bottom: 0; - width: 150px; - height: 4em; } -div.b_ratings_and_comments div.b_rating { - background: none; - border: none; - padding: 0; - margin: 0; - position: absolute; - left: 0; - bottom: 2px; - width: 100%; } -div.b_ratings_and_comments div.b_rating_personal { - background: #fff; - z-index: 5; } - -div.b_ratings_and_comments a.b_comments, div.b_eportfolio_map a.b_comments { - background: url(../../openolat/images/comment.png) 3px 50% no-repeat; - padding: 3px 0 1px 23px; - vertical-align: middle; - min-height: 18px; } - -div.b_comments { - font-size: 0.9em; } -div.b_comments div.b_comment_wrapper { - border: 1px solid #eee; - padding: 10px 10px 5px 10px; - margin-bottom: 2em; - background: #fbfbfb; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; } -div.b_comments div.b_comment_wrapper div.b_avatar img { - border: 1px solid #aaa; } -div.b_comments div.b_comment_wrapper h5 { - font-size: 1em; - background: url(../../openolat/images/user.png) 0 50% no-repeat; - padding: 1px 0 1px 20px; - vertical-align: middle; - min-height: 16px; } -div.b_comments div.b_comment_wrapper span.b_date { - color: #aaaaaa; - font-weight: normal; - display: block; - margin-top: 5px; } -div.b_comments div.b_comment_wrapper div.b_comment_wrapper { - margin-left: 7px; - background: #fff; } -div.b_comments div.b_comment_wrapper div.b_comment_wrapper div.b_comment_wrapper { - background: #fbfbfb; } -div.b_comments div.b_comment_wrapper div.b_comment_wrapper div.b_comment_wrapper div.b_comment_wrapper { - background: #fff; } -div.b_comments blockquote.b_comment { - padding: 3px 0 0 0px; - margin: 0; } -div.b_comments div.b_form { - padding: 10px; - border: 1px solid #eee; - margin: 2em 0 2em 0; - background: white; - background: -moz-linear-gradient(top, white 80%, #f8f8f8 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(80%, white), color-stop(100%, #f8f8f8)); - background: -webkit-linear-gradient(top, white 80%, #f8f8f8 100%); - background: -o-linear-gradient(top, white 80%, #f8f8f8 100%); - background: -ms-linear-gradient(top, white 80%, #f8f8f8 100%); - background: linear-gradient(top, white 80%, #f8f8f8 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='white', endColorstr='#f8f8f8',GradientType=0 ); - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; } -div.b_comments div.b_form h5 { - font-size: 1em; - margin-bottom: 0.5em; } -div.b_comments div.b_form div.b_button_group { - text-align: center; } - -.b_comment_icon { - background-image: url(../../openolat/images/comment.png); } - -#b_comment_form_link { - font-size: 0.9em; - position: relative; - top: -15px; - left: 23px; } - -/* DATE COMPONENT */ -div.b_datecomp { - width: 2.5em; - height: 3em; - position: relative; - margin-right: 5px; - font-weight: normal; - color: white; - text-align: center; - vertical-align: middle; - border: 1px solid #000; - font-size: 85%; } -div.b_datecomp div { - width: 100%; - position: absolute; - left: 0; } -div.b_datecomp div.b_year { - height: 1em; - top: -1.5em; - font-size: 80%; - font-weight: normal; - color: #000; } -div.b_datecomp div.b_month { - background: #BE5B5D; - height: 40%; - top: 0; - font-size: 80%; - font-weight: normal; - color: white; } -div.b_datecomp div.b_day { - background: #fff; - height: 60%; - bottom: 0; - font-size: 120%; - font-weight: bold; - color: #000; - border-top: 1px solid #000; - border-bottom: 1px solid #aaaaaa; } - -/* RATING */ -div.b_rating { - margin: 10px; - padding: 5px; - font-size: 80%; - white-space: nowrap; - text-align: left; - background: #EEE; - border: 1px solid #ACAAAA; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -o-border-radius: 4px; } -div.b_rating div.b_rating_title { - font-weight: bold; } -div.b_rating div.b_rating_items { - vertical-align: middle; - line-height: 18px; } -div.b_rating div.b_rating_items a { - float: left; - display: inline; - width: 16px; - height: 16px; - background-repeat: no-repeat; - background-position: 0 0; - margin: 1px 4px 1px 0; } -div.b_rating div.b_rating_items a.b_rating_item_on { - background-image: url(../../openolat/images/star.png); } -div.b_rating div.b_rating_items a.b_rating_item_off { - background-image: url(../../openolat/images/star_grey.png); } -div.b_rating div.b_rating_items a:hover { - cursor: default; } -div.b_rating div.b_rating_items.b_enabled a:hover { - cursor: pointer; } -div.b_rating div.b_rating_items.b_enabled a.b_rating_item_off:hover { - background-image: url(../../openolat/images/star.png); } -div.b_rating div.b_rating_explanation { - clear: both; - font-size: 90%; } - -/* AJAX AUTOCOMPLETER only color styles override */ -div.b_form_auto_completer input { - border: 1px solid #ACAAAA; - background: #F6F6F6; - line-height: 1.3em; - margin: 0px; - padding: 0; } - -div.b_form_auto_completer input:focus { - border: 1px solid #504D4E; - background: #FFF; } - -div.b_form_auto_completer_item { - background-color: #FFF; - text-align: left; - padding-top: 2px; - padding-bottom: 2px; } - -div.b_form_auto_completer_item.x-combo-selected { - background-color: #f3feff; - border-left: 0 !important; - border-right: 0 !important; } - -div.b_form_auto_completer_item span.b_key { - color: #999; - margin-right: 2px; } - -div.b_form_auto_completer_item.b_error_icon { - color: #990000; - font-style: italic; } - -/* ---------- smilies / emoticons in tinyMCE ------------------------ */ -/* i know, these are icons... but they must be in content.css, 'cause tinyMCE needs 'em... */ -img.b_emoticons_angel { - background: url(../../openolat/images/emoticons/smiley-angel.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_angry { - background: url(../../openolat/images/emoticons/smiley-mad.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_blushing { - background: url(../../openolat/images/emoticons/smiley-red.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_confused { - background: url(../../openolat/images/emoticons/smiley-confuse.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_cool { - background: url(../../openolat/images/emoticons/smiley-cool.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_cry { - background: url(../../openolat/images/emoticons/smiley-cry.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_devil { - background: url(../../openolat/images/emoticons/smiley-evil.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_grin { - background: url(../../openolat/images/emoticons/smiley-grin.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_kiss { - background: url(../../openolat/images/emoticons/smiley-kiss.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_ohoh { - background: url(../../openolat/images/emoticons/smiley-eek.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_sad { - background: url(../../openolat/images/emoticons/smiley-sad.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_sick { - background: url(../../openolat/images/emoticons/smiley-sad-blue.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_smile { - background: url(../../openolat/images/emoticons/smiley.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_tongue { - background: url(../../openolat/images/emoticons/smiley-razz.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_ugly { - background: url(../../openolat/images/emoticons/smiley-money.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_weird { - background: url(../../openolat/images/emoticons/smiley-nerd.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_wink { - background: url(../../openolat/images/emoticons/smiley-wink.png) no-repeat; - width: 18px; - height: 18px; } - -img.b_emoticons_worried { - background: url(../../openolat/images/emoticons/smiley-roll-blue.png) no-repeat; - width: 18px; - height: 18px; } - -/** ---------------------- EXT JS PATCHES ------------------ **/ -/* (are needed here in content.css , e.g. glossary tooltip in iframes...) */ -div.b_ext_elem ol, div.b_ext_elem ul, div.b_ext_elem li { - list-style: none; - padding: 0; - margin: 0; } - -div.b_ext_elem.x-tree .x-panel-body { - background: transparent; } - -div.b_ext_tooltip_wrapper { - padding: 1px; } - -.x-window-mc { - font-size: 100%; } - -/* EXT TREE */ -div.b_ext_elem .x-tree-lines .x-tree-elbow-minus { - background-image: url("../openolat/images/toggle-small.png"); - background-position: 50% 50%; } - -div.b_ext_elem .x-tree-lines .x-tree-elbow-plus { - background-image: url("../openolat/images/toggle-small-expand.png"); - background-position: 50% 50%; } - -div.b_ext_elem .x-tree-lines .x-tree-elbow-end-minus { - background-image: url("../openolat/images/toggle-small.png"); - background-position: 50% 50%; } - -div.b_ext_elem .x-tree-lines .x-tree-elbow-end-plus { - background-image: url("../openolat/images/toggle-small-expand.png"); - background-position: 50% 50%; } - -div.b_ext_elem .x-tree-node-collapsed .x-tree-node-icon { - background-image: url(../openolat/images/folder.png); } - -div.b_ext_elem .x-tree-node-expanded .x-tree-node-icon { - background-image: url(../openolat/images/folder_open.png); } - -div.b_ext_elem .x-tree-node-leaf .x-tree-node-icon { - background-image: url(../openolat/images/docs/document_plain.png); } - -div.b_ext_elem .x-tree-selected a.x-tree-node-anchor { - border: 1px dotted #444; - text-decoration: none; } - -div.b_ext_elem .x-tree-node .x-tree-selected { - background-color: #FFC266; } - -/* fix margins in tooltip */ -.x-tip dl, .x-tip dd, .x-tip-body dl, .x-tip-body dd { - margin: 0 !important; } -.x-tip dl, .x-tip-body dl { - padding: 1px; } +@charset "UTF-8";@media print{.o_noprint{display:none !important;visibility:hidden !important;height:0px !important;width:0px !important}body{font-size:10pt}div.o_wiki_wrapper div.b_subcolumns div.b_c20l{display:none}div.o_wiki_wrapper div.b_subcolumns div.b_c80r div.b_tabbedpane_tabs{display:none}#b_main.o_loginscreen{background-image:none}#b_main.o_home{background-image:none}#b_main.o_editor{background-image:none}#b_main{moz-box-shadow:0 0 0 transparent;-ms-box-shadow:0 0 0 transparent;-o-box-shadow:0 0 0 transparent;-webkit-box-shadow:0 0 0 transparent;box-shadow:0 0 0 transparent;border:none}body,#b_page_margins,#b_page,#b_main,#b_page_wrapper{margin:0;padding:0;border:0}body *{font-family:"Times New Roman", Times, serif}code,pre{font-family:"Courier New", Courier, mono}#b_page_margins,#b_page{width:100% !important;min-width:0;max-width:none}#b_footer,#b_topnav,#b_nav,#search{display:none}#b_col1,#b_col2{display:none}#b_col3{margin:0 !important;border:none !important}.b_c25l,.b_c33l,.b_c38l,.b_c50l,.b_c62l,.b_c66l,.b_c75l,.b_c25r,.b_c33r,.b_c38r,.b_c50r,.b_c62r,.b_c66r,.b_c75r{width:100%;margin:0;float:none;overflow:visible;display:table}.b_subc,.b_subcl,.b_subcr{margin:0;padding:0}h1,h2,h3,h4,h5,h6{page-break-after:avoid}#b_page a[href^="http:"],#b_page a[href^="https:"]{padding-left:0;background-image:none}#b_col1_content:before,#b_col2_content:before,#b_col3_content:before{content:"";color:#888;background:inherit;display:block;font-weight:700;font-size:1.5em}.b_floatbox,.b_subcolumns,.b_subcolums_oldgecko{overflow:visible;display:table}#jsMath_PrintWarning{display:none !important;visibility:hidden !important;height:0px !important;width:0px !important}}textarea,pre,tt,code{font-family:Arial, sans-serif;font-size:90%;color:inherit;line-height:inherit;margin:inherit}body{font-family:Arial, sans-serif;font-size:75%;color:#444}#b_header #b_topnav,#b_nav_main,div.b_tree{font-family:Century Gothic, Apple Gothic, sans-serif}h1,h2,h3,h4,h5,h6{font-family:Century Gothic, Apple Gothic, sans-serif;font-weight:bold;margin:0 0 0.25em 0}h1{font-size:200%}h2{font-size:166.67%}h3{font-size:150%}h4{font-size:133.33%}h5{font-size:116.67%}h6{font-size:116.67%;font-style:italic}a,a:visited{text-decoration:none;color:#025d8c}a:hover{text-decoration:underline;color:#025d8c}a.b_link_extern{background:transparent url("../../openolat/images/external_link_trimmed.png") no-repeat right top;padding-right:13px}.b_link_mailto{background:transparent url("../../openolat/images/mail_small.png") no-repeat left center;padding-left:18px}cite,blockquote{font-style:italic}blockquote{margin:0 0 1em 1.5em}strong,b{font-weight:bold}em,i{font-style:italic}textarea,pre,tt,code{font-family:monospace;font-size:1.2em}acronym,abbr{letter-spacing:.07em;border-bottom:.1em dashed #c00;cursor:help}legend{padding:0 5px;color:#504D4E}hr{color:#fff;background:transparent;margin:0 0 0.5em 0;padding:0 0 0.5em 0;border:0;border-bottom:1px #eee solid}p{margin:0 0 1em 0}dt{font-weight:bold}dd{margin:0 0 1em 2em}.b_info{background:#e9eaef url(../../openolat/images/information-white.png) no-repeat 5px 5px;padding:5px 5px 5px 30px;border:1px solid #C5C4C4;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px}.b_note{background:#E2E2E2;padding:1em;border:2px #B5B5B5 solid;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px}.b_important{background:#FFF1A4;padding:1em;border:2px #F4D000 solid;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px}.b_warning{background:#FFD5AA;padding:1em;border:2px #FF9E3E solid;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px}div.b_note,div.b_important,div.b_warning,div.b_info{margin:1em 0}.b_border_box{border:1px solid #ACAAAA;padding:1em}.b_disabled{color:#ACAAAA}.b_deleted{text-decoration:line-through}.b_selected{font-weight:bold}.b_small,small{font-size:90%}.b_xsmall,sup,sub{font-size:80%}.b_large{font-size:110%}.b_xlarge,big{font-size:120%}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_quote_wrapper{position:relative;margin:20px}.b_quote_author{background:url(../../openolat/images/forum/quote.gif) no-repeat left bottom;padding:10px 5px 15px 11px;position:relative;top:1px;font-style:italic;color:#A2A2A2}blockquote.b_quote{margin:0;border:1px solid #e5e5e5;color:black;padding:8px 10px 6px;color:#646464;background:#fff}.b_border_box{border:1px solid #ccc;padding:1em;border-radius:2px;-webkit-border-radius:2px;-moz-border-radius:2px;-o-border-radius:2px}.b_warning{padding:1em;border:2px #ffc659 solid;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px;background:#ffe49c;background:-moz-linear-gradient(top, #ffe49c 0%, #fff4da 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffe49c), color-stop(100%, #fff4da));background:-webkit-linear-gradient(top, #ffe49c 0%, #fff4da 100%);background:-o-linear-gradient(top, #ffe49c 0%, #fff4da 100%);background:-ms-linear-gradient(top, #ffe49c 0%, #fff4da 100%);background:linear-gradient(top, #ffe49c 0%, #fff4da 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe49c', endColorstr='#fff4da',GradientType=0 )}.b_dimmed{zoom:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=$percent)";filter:alpha(opacity=40);-moz-opacity:0.4;-khtml-opacity:0.4;opacity:0.4}.o_ochre{color:#c8a959}div.b_contexthelp_wrapper{position:relative}a.b_contexthelp{display:block;width:16px;height:16px;background:url(../../openolat/images/help.png) no-repeat;line-height:0;cursor:help}div.b_contexthelp_wrapper a.b_contexthelp{position:absolute;top:0;right:0}fieldset a.b_contexthelp,fieldset div.b_contexthelp_wrapper a.b_contexthelp{position:absolute;top:-1.5em;right:-0.8em}#b_contexthelp_content{padding:0}#b_ch_topnav_search div.b_form_element_wrapper.b_form_horizontal{margin:2px 0 0 0}#b_contexthelp_rating{text-align:center;margin-top:20px;padding:10px;border-top:1px #ACAAAA solid}#b_contexthelp_rating h4{font-size:90%;margin:0;font-style:italic}#b_contexthelp_rating table{display:inline-block}#b_contexthelp_rating table td{width:50%}.b_contexthelp_icon{background-image:url(../../openolat/images/help.png)}div.b_ratings_and_comments{margin:4em 0 1.5em 0;padding-bottom:0.5em;border-bottom:1px solid #eee;font-size:0.9em;position:relative}div.b_ratings_and_comments div.b_rating_wrapper{position:absolute;right:0;bottom:0;width:150px;height:4em}div.b_ratings_and_comments div.b_rating{background:none;border:none;padding:0;margin:0;position:absolute;left:0;bottom:2px;width:100%}div.b_ratings_and_comments div.b_rating_personal{background:#fff;z-index:5}div.b_ratings_and_comments a.b_comments,div.b_eportfolio_map a.b_comments{background:url(../../openolat/images/comment.png) 3px 50% no-repeat;padding:3px 0 1px 23px;vertical-align:middle;min-height:18px}div.b_comments{font-size:0.9em}div.b_comments div.b_comment_wrapper{border:1px solid #eee;padding:10px 10px 5px 10px;margin-bottom:2em;background:#fbfbfb;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px}div.b_comments div.b_comment_wrapper div.b_avatar img{border:1px solid #aaa}div.b_comments div.b_comment_wrapper h5{font-size:1em;background:url(../../openolat/images/user.png) 0 50% no-repeat;padding:1px 0 1px 20px;vertical-align:middle;min-height:16px}div.b_comments div.b_comment_wrapper span.b_date{color:#aaaaaa;font-weight:normal;display:block;margin-top:5px}div.b_comments div.b_comment_wrapper div.b_comment_wrapper{margin-left:7px;background:#fff}div.b_comments div.b_comment_wrapper div.b_comment_wrapper div.b_comment_wrapper{background:#fbfbfb}div.b_comments div.b_comment_wrapper div.b_comment_wrapper div.b_comment_wrapper div.b_comment_wrapper{background:#fff}div.b_comments blockquote.b_comment{padding:3px 0 0 0px;margin:0}div.b_comments div.b_form{padding:10px;border:1px solid #eee;margin:2em 0 2em 0;background:white;background:-moz-linear-gradient(top, white 80%, #f8f8f8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(80%, white), color-stop(100%, #f8f8f8));background:-webkit-linear-gradient(top, white 80%, #f8f8f8 100%);background:-o-linear-gradient(top, white 80%, #f8f8f8 100%);background:-ms-linear-gradient(top, white 80%, #f8f8f8 100%);background:linear-gradient(top, white 80%, #f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='white', endColorstr='#f8f8f8',GradientType=0 );border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px}div.b_comments div.b_form h5{font-size:1em;margin-bottom:0.5em}div.b_comments div.b_form div.b_button_group{text-align:center}.b_comment_icon{background-image:url(../../openolat/images/comment.png)}#b_comment_form_link{font-size:0.9em;position:relative;top:-15px;left:23px}div.b_datecomp{width:2.5em;height:3em;position:relative;margin-right:5px;font-weight:normal;color:white;text-align:center;vertical-align:middle;border:1px solid #000;font-size:85%}div.b_datecomp div{width:100%;position:absolute;left:0}div.b_datecomp div.b_year{height:1em;top:-1.5em;font-size:80%;font-weight:normal;color:#000}div.b_datecomp div.b_month{background:#BE5B5D;height:40%;top:0;font-size:80%;font-weight:normal;color:white}div.b_datecomp div.b_day{background:#fff;height:60%;bottom:0;font-size:120%;font-weight:bold;color:#000;border-top:1px solid #000;border-bottom:1px solid #aaaaaa}div.b_rating{margin:10px;padding:5px;font-size:80%;white-space:nowrap;text-align:left;background:#EEE;border:1px solid #ACAAAA;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-o-border-radius:4px}div.b_rating div.b_rating_title{font-weight:bold}div.b_rating div.b_rating_items{vertical-align:middle;line-height:18px}div.b_rating div.b_rating_items a{float:left;display:inline;width:16px;height:16px;background-repeat:no-repeat;background-position:0 0;margin:1px 4px 1px 0}div.b_rating div.b_rating_items a.b_rating_item_on{background-image:url(../../openolat/images/star.png)}div.b_rating div.b_rating_items a.b_rating_item_off{background-image:url(../../openolat/images/star_grey.png)}div.b_rating div.b_rating_items a:hover{cursor:default}div.b_rating div.b_rating_items.b_enabled a:hover{cursor:pointer}div.b_rating div.b_rating_items.b_enabled a.b_rating_item_off:hover{background-image:url(../../openolat/images/star.png)}div.b_rating div.b_rating_explanation{clear:both;font-size:90%}div.b_form_auto_completer input{border:1px solid #ACAAAA;background:#F6F6F6;line-height:1.3em;margin:0px;padding:0}div.b_form_auto_completer input:focus{border:1px solid #504D4E;background:#FFF}div.b_form_auto_completer_item{background-color:#FFF;text-align:left;padding-top:2px;padding-bottom:2px}div.b_form_auto_completer_item.x-combo-selected{background-color:#f3feff;border-left:0 !important;border-right:0 !important}div.b_form_auto_completer_item span.b_key{color:#999;margin-right:2px}div.b_form_auto_completer_item.b_error_icon{color:#990000;font-style:italic}img.b_emoticons_angel{background:url(../../openolat/images/emoticons/smiley-angel.png) no-repeat;width:18px;height:18px}img.b_emoticons_angry{background:url(../../openolat/images/emoticons/smiley-mad.png) no-repeat;width:18px;height:18px}img.b_emoticons_blushing{background:url(../../openolat/images/emoticons/smiley-red.png) no-repeat;width:18px;height:18px}img.b_emoticons_confused{background:url(../../openolat/images/emoticons/smiley-confuse.png) no-repeat;width:18px;height:18px}img.b_emoticons_cool{background:url(../../openolat/images/emoticons/smiley-cool.png) no-repeat;width:18px;height:18px}img.b_emoticons_cry{background:url(../../openolat/images/emoticons/smiley-cry.png) no-repeat;width:18px;height:18px}img.b_emoticons_devil{background:url(../../openolat/images/emoticons/smiley-evil.png) no-repeat;width:18px;height:18px}img.b_emoticons_grin{background:url(../../openolat/images/emoticons/smiley-grin.png) no-repeat;width:18px;height:18px}img.b_emoticons_kiss{background:url(../../openolat/images/emoticons/smiley-kiss.png) no-repeat;width:18px;height:18px}img.b_emoticons_ohoh{background:url(../../openolat/images/emoticons/smiley-eek.png) no-repeat;width:18px;height:18px}img.b_emoticons_sad{background:url(../../openolat/images/emoticons/smiley-sad.png) no-repeat;width:18px;height:18px}img.b_emoticons_sick{background:url(../../openolat/images/emoticons/smiley-sad-blue.png) no-repeat;width:18px;height:18px}img.b_emoticons_smile{background:url(../../openolat/images/emoticons/smiley.png) no-repeat;width:18px;height:18px}img.b_emoticons_tongue{background:url(../../openolat/images/emoticons/smiley-razz.png) no-repeat;width:18px;height:18px}img.b_emoticons_ugly{background:url(../../openolat/images/emoticons/smiley-money.png) no-repeat;width:18px;height:18px}img.b_emoticons_weird{background:url(../../openolat/images/emoticons/smiley-nerd.png) no-repeat;width:18px;height:18px}img.b_emoticons_wink{background:url(../../openolat/images/emoticons/smiley-wink.png) no-repeat;width:18px;height:18px}img.b_emoticons_worried{background:url(../../openolat/images/emoticons/smiley-roll-blue.png) no-repeat;width:18px;height:18px}div.b_ext_elem ol,div.b_ext_elem ul,div.b_ext_elem li{list-style:none;padding:0;margin:0}div.b_ext_elem.x-tree .x-panel-body{background:transparent}div.b_ext_tooltip_wrapper{padding:1px}.x-window-mc{font-size:100%}div.b_ext_elem .x-tree-lines .x-tree-elbow-minus{background-image:url("../openolat/images/toggle-small.png");background-position:50% 50%}div.b_ext_elem .x-tree-lines .x-tree-elbow-plus{background-image:url("../openolat/images/toggle-small-expand.png");background-position:50% 50%}div.b_ext_elem .x-tree-lines .x-tree-elbow-end-minus{background-image:url("../openolat/images/toggle-small.png");background-position:50% 50%}div.b_ext_elem .x-tree-lines .x-tree-elbow-end-plus{background-image:url("../openolat/images/toggle-small-expand.png");background-position:50% 50%}div.b_ext_elem .x-tree-node-collapsed .x-tree-node-icon{background-image:url(../openolat/images/folder.png)}div.b_ext_elem .x-tree-node-expanded .x-tree-node-icon{background-image:url(../openolat/images/folder_open.png)}div.b_ext_elem .x-tree-node-leaf .x-tree-node-icon{background-image:url(../openolat/images/docs/document_plain.png)}div.b_ext_elem .x-tree-selected a.x-tree-node-anchor{border:1px dotted #444;text-decoration:none}div.b_ext_elem .x-tree-node .x-tree-selected{background-color:#FFC266}.x-tip dl,.x-tip dd,.x-tip-body dl,.x-tip-body dd{margin:0 !important}.x-tip dl,.x-tip-body dl{padding:1px} diff --git a/src/main/webapp/static/themes/openolat/all/content.scss b/src/main/webapp/static/themes/openolat/all/content.scss index f1d91529f2a82dd30dec1d3cdf1ebaded888aae8..79df1398d90ff8af7f278e375d0c92ebb217a5c5 100644 --- a/src/main/webapp/static/themes/openolat/all/content.scss +++ b/src/main/webapp/static/themes/openolat/all/content.scss @@ -24,6 +24,10 @@ @import "mixins"; + +// we need print-styles also (for printing iframes) +@import "p_basemod"; + textarea, pre, tt, code { font-family: $defaultfont; font-size: 90%; color:inherit; line-height:inherit;margin:inherit;} body { @@ -116,15 +120,8 @@ blockquote.b_quote { margin: 0; border: 1px solid rgb(229, 229, 229);color: blac .b_dimmed { @include o-opacity(40); } .o_ochre { color: #c8a959; } -/* FLOTING STYLES */ -.b_float_left { float: left; display:inline; margin-right: 1em; margin-bottom: 0.15em; } -.b_float_right { float: right; display:inline; margin-left: 1em; margin-bottom: 0.15em; } -.b_center { text-align:center; margin: 0.5em auto } -/* CLEAR container: additonal to b_floatbox */ -.b_floatscrollbox { overflow-x: auto; overflow-y: hidden;} -.b_overflowscrollbox { overflow: auto;} - - + + /* =============================================================================== **/ /* HELP, context sensitive */ diff --git a/src/main/webapp/static/themes/openolat/all/modules/_dialogs.scss b/src/main/webapp/static/themes/openolat/all/modules/_dialogs.scss index 574abfa861ccf887c4d90d229be8c79ddc805980..9ac276d62bd165375b96ebb7ba0665c85517f5da 100644 --- a/src/main/webapp/static/themes/openolat/all/modules/_dialogs.scss +++ b/src/main/webapp/static/themes/openolat/all/modules/_dialogs.scss @@ -152,11 +152,6 @@ div.b_msg_error_winicon { background: url(../openolat/images/icon_error_32.png) } } - -/* OPEN / CLOSE BOX TOGGLER */ -a.b_togglebox_closed {background: url(../openolat/images/toggle-small-expand.png) no-repeat 0 50%; padding: 1px 0 1px 14px; vertical-align: middle;} -a.b_togglebox_opened {background: url(../openolat/images/toggle-small.png) no-repeat 0 50%; padding: 1px 0 1px 14px; vertical-align: middle;} -div.b_togglebox div.b_togglebox_content { padding: 1em; border: 1px solid #ACAAAA; background: #fff; } /** ----------------- WIZARD ----------------- **/ div.b_wizard { diff --git a/src/main/webapp/static/themes/openolat/all/modules/_eportfolio.scss b/src/main/webapp/static/themes/openolat/all/modules/_eportfolio.scss index 0f1e5c0a5e59f71d952583eff91b7a436001342a..1f688d55c8dc93e07597dcd3d32e798a393dfcbb 100644 --- a/src/main/webapp/static/themes/openolat/all/modules/_eportfolio.scss +++ b/src/main/webapp/static/themes/openolat/all/modules/_eportfolio.scss @@ -157,7 +157,7 @@ div.b_eportfolio_restriction_wrapper { a.b_togglebox_opened { z-index:10; display:block; width:9px; height:9px; padding:0; margin-left:12px; } a.b_togglebox_closed { display:block; width:9px; height:9px; padding:0; margin-left:12px; } p { padding:0 0 0 15px; margin:0; } - div.b_togglebox div.b_togglebox_content { padding:3px 3px 3px 3px; margin:0; border:1px solid red; background-image:none; background-color:transparent; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } + div.b_togglebox div.b_togglebox_content { padding:3px 3px 3px 3px; margin:0; border:1px solid red; background-image:none; background-color:transparent; @include o-border-radius(3px); } } div.b_eportfolio_restriction_error div.b_tooglebox_opened div.b_togglebox_content { border:1px solid #FF9900 !important; background:#FFF5CC url(../openolat/images/decorator/deco_warn.png) no-repeat 3px 2px !important; } diff --git a/src/main/webapp/static/themes/openolat/all/modules/_portlets_boxes.scss b/src/main/webapp/static/themes/openolat/all/modules/_portlets_boxes.scss index 3f2b701a7f57a58d35514fcdb24ddf3c6ee73cdd..c0a9066a8137a84a14c2eedb769cd94be415b127 100644 --- a/src/main/webapp/static/themes/openolat/all/modules/_portlets_boxes.scss +++ b/src/main/webapp/static/themes/openolat/all/modules/_portlets_boxes.scss @@ -30,25 +30,6 @@ div.o_home_rsslink { display: inline; margin: 10px 0; } -#o_macartney_open { - width: 20px; - bottom: 0; - left: 0; - height: 16px; - background: white url(../openolat/images/magnifier-zoom.png) no-repeat 4px 0; -} -#o_macartney_large { - position: fixed; - top: 10%; - left: 10%; - width: 80%; - z-index: 10; - border: 1px solid black; - background: white; - padding: 5px; -} -#o_macartney_large img { width: 100%; } -#o_macartney_close {position: absolute; width: 16px; top: 0; right: 0; height: 16px; border-left: 1px solid #000; border-bottom: 1px solid #000; background: #fff url(../openolat/images/close.png)} /** ----------------- PORTLETS & BOXES ----------------- **/ @@ -146,7 +127,6 @@ div.o_portlet_calendar.o_day_30 div.b_portlet_header strong:before { content:"3 div.o_portlet_calendar.o_day_31 div.b_portlet_header strong:before { content:"31"; font-size:smaller;padding-right: $pdgr_calendar; } div.o_portlet_infomsg div.b_portlet_header { background-image: url(../openolat/images/comment.png); } -div.o_portlet_macartney div.b_portlet_header { background-image: url(../openolat/images/macartney.png); } div.o_portlet_quickstart div.b_portlet_header { background-image: url(../openolat/images/mouse.png); } div.o_portlet_bookmark div.b_portlet_header { background-image: url(../openolat/images/book-open-bookmark.png); } div.o_portlet_groups div.b_portlet_header { background-image: url(../openolat/images/users.png); } diff --git a/src/main/webapp/static/themes/openolat/images/macartney.png b/src/main/webapp/static/themes/openolat/images/macartney.png deleted file mode 100644 index 5301aa268c461bf2faa15ab3859df7379e033bb6..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/themes/openolat/images/macartney.png and /dev/null differ diff --git a/src/main/webapp/static/themes/openolat/layout.css b/src/main/webapp/static/themes/openolat/layout.css index 33f7815e4a12f7e9127b2ebfd6066c4ddb2636a0..c5c73d80371e9b7e37455218addeb29a8d6b5066 100644 --- a/src/main/webapp/static/themes/openolat/layout.css +++ b/src/main/webapp/static/themes/openolat/layout.css @@ -87,1129 +87,284 @@ /* * ================================================= * -* basemod rules for OpenOLAT 8 +* ICON Rules for the OpenOLAT theme * * @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 +* @date Dez. 2011 * * also read themes.README! * -* (as of yaml compliance, contains css rules for -* positioning and sizing elements) -* -* this file is included in layout.scss -* it is not compiled to a separate css-file... * * ================================================= */ -@media all { - html { - min-height: 100%; } +.b_with_small_icon_left { + padding: 2px 0 2px 20px; + min-height: 16px; + background-position: 0 50%; + background-repeat: no-repeat; } - /** ----------------- MAIN LAYOUT ----------------- **/ - /** - * (en) Forcing vertical scrollbars in IE8, Firefox, Webkit & Opera - * (de) Erzwingen vertikaler Scrollbalken in IE8, Firefox, Webkit & Opera - * - * @workaround - * @affected IE8, FF, Webkit, Opera - * @css-for all - * @valid CSS3 - */ - body { - min-height: 100%; - overflow-y: scroll; - background: #ececec url("../openolat/images/sky.png") repeat-x left 88px; } +option.b_with_small_icon_left { + padding: 0 0 0 20px; + vertical-align: middle; + min-height: 11px; + background-position: 0 50%; + background-repeat: no-repeat; } - #b_page_margins { - min-width: 740px; - max-width: 1324px; - margin: 0 auto; - width: 100%; - height: 100%; } +.b_with_small_icon_right { + padding: 1px 20px 1px 0px; + min-height: 16px; + background-position: 100% 50%; + background-repeat: no-repeat; } - #b_page_wrapper { - border-bottom: 1px solid lightGrey; } +.b_small_icon { + float: left; + display: inline; + width: 16px; + height: 16px; + background-position: 0 50%; + background-repeat: no-repeat; } - #b_main { - background: #fff; - clear: both; - moz-box-shadow: 0 0 14px #d3d3d3; - -ms-box-shadow: 0 0 14px #d3d3d3; - -o-box-shadow: 0 0 14px #d3d3d3; - -webkit-box-shadow: 0 0 14px #d3d3d3; - box-shadow: 0 0 14px #d3d3d3; } +a.b_small_icon:hover { + text-decoration: none; } - #b_page a#b_toplink { - position: absolute; - bottom: 1em; - right: 1em; - background: transparent url(../openolat/images/arrow_up.png) 0 50% no-repeat; - padding-left: 14px; - z-index: 5; } +/* ------- misc icons --------- */ +.b_info_icon { + background-image: url("../openolat/images/comment.png"); } - #b_header, #b_page, #b_col1_content, #b_col2_content, #b_col3_content, #b_col3_content_inner { - position: relative; } +.b_warn_icon { + background-image: url("../openolat/images/exclamation.png"); } - #b_col1 { - overflow: hidden; } +.b_error_icon { + background-image: url("../openolat/images/cross-circle.png"); } - #b_col1_content { - padding: 1em 10px 1em 0px; } +.b_new_icon { + background-image: url("../openolat/images/new-text.png"); } - #b_col3 { - border-left: 1px #DDD dotted; - border-right: 1px #DDD dotted; } +.b_institution_icon { + background-image: url("../openolat/images/home.png"); } - #b_col3_content { - min-height: 450px; - padding: 20px 20px 30px 20px; } +.b_group_icon { + background-image: url("../openolat/images/users.png"); } - #b_col2_content { - overflow: hidden; - padding: 1em 0; } +.b_user_icon { + background-image: url("../openolat/images/user.png"); } - .b_hidecol2 #b_col3 { - margin-right: 0 !important; - border-right: none; } +.b_move_left_icon { + background-image: url("../openolat/images/arrow_left_big.png"); } - .b_hidecol1 #b_col3 { - margin-left: 0 !important; - border-left: none; } +.b_move_right_icon { + background-image: url("../openolat/images/arrow_right_big.png"); } - .b_hideboth #b_col3 { - margin-left: 0 !important; - margin-right: 0 !important; - border-left: none; - border-right: none; } +.b_move_down_icon { + background-image: url("../openolat/images/arrow_down_big.png"); } - .b_hideboth #b_col1, .b_hideboth #b_col2, .b_hidecol1 #b_col1, .b_hidecol2 #b_col2, #b_ie_clearing { - display: none; } +.b_move_up_icon { + background-image: url("../openolat/images/arrow_up_big.png"); } - .b_c15r, .b_c20r, .b_c80r, .b_c85r { - float: right; - margin-left: -5px; } +.b_delete_icon { + background-image: url("../openolat/images/bin-metal-full.png"); } - .b_c15l, .b_c15r { - width: 15%; } +.b_share_icon { + background-image: url("../openolat/images/share.png"); } - .b_c20l, .b_c20r { - width: 20%; } +.b_status_enabled_icon { + background-image: url("../openolat/images/tick.png"); } - .b_c80l, .b_c80r { - width: 80%; } +.b_status_disabled_icon { + background-image: url("../openolat/images/cross.png"); } - .b_c85l, .b_c85r { - width: 85%; } +.b_edit_icon { + background-image: url("../openolat/images/docs/document--pencil.png"); } - .b_subcolumns_oldgecko, .b_c20l, .b_c15l, .b_c80l, .b_c85l { - float: left; } +.b_add_icon { + background-image: url("../openolat/images/plus-circle.png"); } - /* IFRAME */ - div.b_iframe_wrapper iframe { - width: 100%; - position: relative; - top: 0; - left: 0; - border: none; - margin: 0; - padding: 0; - background: transparent; } +.b_open_icon { + background-image: url("../openolat/images/control/control.png"); } - /* RedScreen View */ - #b_main.b_exception { - padding-left: 165px; - padding-right: 165px; } +.o_fulltext_search_button { + background-image: url("../openolat/images/magnifier-zoom.png"); } - /** ----------------- HEADER AND TOP NAVIGATION ----------------- **/ - #b_header { - height: auto; - min-height: 30px; - overflow: hidden; - position: relative; - /* the top-navigation */ } - #b_header #b_topnav { - position: absolute; - right: 0px; - top: 0px; - padding: 4px 15px 0px 0px; } - #b_header #b_topnav ul { - margin: 0; } - #b_header #b_topnav #o_topnav_search input { - line-height: 1.3em; - margin: 0; - width: 10em; } - #b_header #b_topnav #o_topnav_printview a { - background: url(../openolat/images/printer.png) no-repeat top right; - padding: 2px 20px 2px 0; - margin: 0; } - #b_header #b_topnav #o_topnav_logout a { - background: url("../openolat/images/control/control-power.png") no-repeat top right; - padding: 2px 20px 2px 0; - margin: 0; - font-weight: bold; } - #b_header #b_topnav li { - float: left; - list-style: none; - margin-left: 1.7em; } - #b_header #b_topnav li div.b_form_element_wrapper.b_form_horizontal { - margin: 0; } - #b_header #b_topnav li#o_topnav_imclient li { - margin-left: 0.5em; } +.o_help_icon { + background-image: url("../openolat/images/help.png"); } - /** ----------------- MAIN NAVIGATION ( TABS ) ----------------- **/ - #b_nav_main { - float: left; } - #b_nav_main ul { - padding-left: 40px; - margin: 0; } - #b_nav_main ul li { - float: left; - position: relative; - list-style: none; - margin: 0px; - padding: 4px 3px 4px 12px; - margin-right: 2px; - -webkit-border-top-left-radius: 6px; - -webkit-border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 0; - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-topleft: 6px; - -moz-border-radius-topright: 6px; - -moz-border-radius-bottomright: 0; - -moz-border-radius-bottomleft: 0; - border-top-left-radius: 6px; - border-top-right-radius: 6px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - background: #fff; - background: rgba(255, 255, 255, 0.5); - /* -- SITES ( home, users, groups, etc. ) -- */ - /* -- TABS ( courses, wiki, etc.) -- */ - /* -- THE SPACER -- */ } - #b_nav_main ul li a { - /* "bloat" the links (better for touch) */ - padding: 4px 12px 4px 3px; } - #b_nav_main ul li a:hover { - text-decoration: none; } - #b_nav_main ul li.b_nav_site { - /** sites icons **/ } - #b_nav_main ul li.b_nav_site.b_nav_active, #b_nav_main ul li.b_nav_site:hover, #b_nav_main ul li.b_nav_site.b_exception { - moz-box-shadow: 0 -4px 8px -1px #d3d3d3; - -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; - -o-box-shadow: 0 -4px 8px -1px #d3d3d3; - -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; - box-shadow: 0 -4px 8px -1px #d3d3d3; - background: #fff; } - #b_nav_main ul li.b_nav_site.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_site:hover a.b_nav_tab_close, #b_nav_main ul li.b_nav_site.b_exception a.b_nav_tab_close { - background-image: url(../openolat/images/cross_small_trimmed_blue.png); } - #b_nav_main ul li.b_nav_site > div { - padding-left: 16px; - background-repeat: no-repeat; - background-position: 0% 50%; - background-image: url("../openolat/images/application.png"); } - #b_nav_main ul li.b_nav_site.o_site_home > div { - background-image: url("../openolat/images/home.png"); } - #b_nav_main ul li.b_nav_site.o_site_admin > div { - background-image: url("../openolat/images/wrench-screwdriver.png"); } - #b_nav_main ul li.b_nav_site.o_site_useradmin > div { - background-image: url("../openolat/images/user_conf.png"); } - #b_nav_main ul li.b_nav_site.o_site_groupsmanagement > div { - background-image: url("../openolat/images/users_conf.png"); } - #b_nav_main ul li.b_nav_site.o_site_repository > div { - background-image: url("../openolat/images/books-stack.png"); } - #b_nav_main ul li.b_nav_site.o_site_groups > div { - background-image: url("../openolat/images/users.png"); } - #b_nav_main ul li.b_nav_site.site_demo_icon > div { - background-image: url("../openolat/images/information-white.png"); } - #b_nav_main ul li.b_nav_site.f_site_library > div { - background-image: url("../openolat/images/library.png"); } - #b_nav_main ul li.b_nav_site.fx_members > div { - background-image: url("../openolat/images/users_members.png"); } - #b_nav_main ul li.b_nav_site.o_site_guidemo div { - background-image: url("../openolat/images/light-bulb.png"); } - #b_nav_main ul li.b_nav_site.b_resource_GroupInfoMainController div { - background-image: url(../openolat/images/users.png); } - #b_nav_main ul li.b_nav_tab { - margin-right: 4px; } - #b_nav_main ul li.b_nav_tab a.b_nav_tab_close { - position: absolute; - top: 3px; - right: 4px; - width: 13px; - height: 13px; - line-height: 0; - padding: 0; - margin: 0; - background: transparent url(../openolat/images/cross_small_trimmed_grey.png) no-repeat right top; } - #b_nav_main ul li.b_nav_tab.b_nav_active, #b_nav_main ul li.b_nav_tab:hover { - moz-box-shadow: 0 -4px 8px -1px #d3d3d3; - -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; - -o-box-shadow: 0 -4px 8px -1px #d3d3d3; - -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; - box-shadow: 0 -4px 8px -1px #d3d3d3; - background: #fff; } - #b_nav_main ul li.b_nav_tab.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_tab:hover a.b_nav_tab_close { - background-image: url(../openolat/images/cross_small_trimmed_blue.png); } - #b_nav_main ul li#b_nav_spacer { - background: none; - border: none; - width: 20px; - height: 1px; - padding: 0; } +.o_rss_icon { + background-image: url("../openolat/images/feed.png"); } - /** ----------------- SUB NAVIGATION (TREE) ----------------- **/ - /* note: the markup will be the one from OLATpro, has to be merged yet */ - div.b_tree { - font-size: 100%; - padding: 0; - /* the open/close node icons */ } - div.b_tree ul { - position: relative; - padding: 0; - margin: 0 0 0 1em; - list-style: none; - white-space: nowrap; - /* link to select the item with icon */ } - div.b_tree ul li { - position: relative; - background: transparent; - margin-left: 0; - padding-left: 0; - line-height: 1.7em; - /* selected, hovered, active <a> tag */ - /* icon positioning */ - /* decorators in tree (e.g. course-editor ) */ } - div.b_tree ul li a.b_tree_icon { - padding-left: 20px; - padding-top: 2px; - position: relative; - background-position: 0 50%; - background-repeat: no-repeat; } - div.b_tree ul li a { - color: #555555; } - div.b_tree ul li a.b_tree_l1 { - padding-left: 16px; } - div.b_tree ul li .b_tree_oc_l1 { - position: absolute; - top: 0px; - left: 0px; - z-index: 9; } - div.b_tree ul li a:focus, div.b_tree ul li a:hover { - color: #025d8c; - background-color: transparent; - text-decoration: underline; } - div.b_tree ul li a.b_tree_selected, div.b_tree ul li a:active { - color: #025d8c; - background-color: transparent; - text-decoration: none; } - div.b_tree ul li li a.b_tree_selected_parents, div.b_tree ul li a.b_tree_l0, div.b_tree ul li strong { - color: #025d8c; - font-weight: bold; } - div.b_tree ul li .b_tree_oc_l1 { - position: absolute; - top: 0px; - left: 1px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l2 { - position: absolute; - top: 0px; - left: 11px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l3 { - position: absolute; - top: 0px; - left: 21px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l4 { - position: absolute; - top: 0px; - left: 31px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l5 { - position: absolute; - top: 0px; - left: 41px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l6 { - position: absolute; - top: 0px; - left: 51px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l7 { - position: absolute; - top: 0px; - left: 61px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l8 { - position: absolute; - top: 0px; - left: 71px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l9 { - position: absolute; - top: 0px; - left: 81px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l10 { - position: absolute; - top: 0px; - left: 91px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l11 { - position: absolute; - top: 0px; - left: 101px; - z-index: 9; } - div.b_tree ul li a.b_tree_l0 { - padding-left: 5px; } - div.b_tree ul li a.b_tree_l1 { - padding-left: 15px; } - div.b_tree ul li a.b_tree_l2 { - padding-left: 25px; } - div.b_tree ul li a.b_tree_l3 { - padding-left: 35px; } - div.b_tree ul li a.b_tree_l4 { - padding-left: 45px; } - div.b_tree ul li a.b_tree_l5 { - padding-left: 55px; } - div.b_tree ul li a.b_tree_l6 { - padding-left: 65px; } - div.b_tree ul li a.b_tree_l7 { - padding-left: 75px; } - div.b_tree ul li a.b_tree_l8 { - padding-left: 85px; } - div.b_tree ul li a.b_tree_l9 { - padding-left: 95px; } - div.b_tree ul li a.b_tree_l10 { - padding-left: 105px; } - div.b_tree ul li a.b_tree_l11 { - padding-left: 115px; } - div.b_tree ul li span.b_tree_icon_decorator { - width: 12px; - height: 12px; - float: right; - display: inline; - position: static; - background-repeat: no-repeat; } - div.b_tree ul.b_tree_l0 a.b_tree_icon { - padding-left: 26px; - background-position: 8px 50%; } - div.b_tree ul.b_tree_l1 a.b_tree_icon { - padding-left: 36px; - background-position: 18px 50%; } - div.b_tree ul.b_tree_l2 a.b_tree_icon { - padding-left: 46px; - background-position: 28px 50%; } - div.b_tree ul.b_tree_l3 a.b_tree_icon { - padding-left: 56px; - background-position: 38px 50%; } - div.b_tree ul.b_tree_l4 a.b_tree_icon { - padding-left: 66px; - background-position: 48px 50%; } - div.b_tree ul.b_tree_l5 a.b_tree_icon { - padding-left: 76px; - background-position: 58px 50%; } - div.b_tree ul.b_tree_l6 a.b_tree_icon { - padding-left: 86px; - background-position: 68px 50%; } - div.b_tree ul.b_tree_l7 a.b_tree_icon { - padding-left: 96px; - background-position: 78px 50%; } - div.b_tree ul.b_tree_l8 a.b_tree_icon { - padding-left: 106px; - background-position: 88px 50%; } - div.b_tree ul.b_tree_l9 a.b_tree_icon { - padding-left: 116px; - background-position: 98px 50%; } - div.b_tree ul.b_tree_l10 a.b_tree_icon { - padding-left: 126px; - background-position: 108px 50%; } - div.b_tree ul.b_tree_l11 a.b_tree_icon { - padding-left: 136px; - background-position: 118px 50%; } - div.b_tree a.b_tree_level_close span { - background: url("../openolat/images/toggle-small.png") no-repeat 0% 50%; - padding-right: 8px; } - div.b_tree a.b_tree_level_open span { - background: url("../openolat/images/toggle-small-expand.png") no-repeat 0% 50%; - padding-right: 8px; } - div.b_tree a.b_tree_level_close:hover, div.b_tree a.b_tree_level_open:hover { - text-decoration: none; } +.o_login_guests { + background-image: url("../openolat/images/user_silhouette.png"); } - /** ----------------- FOOTER ----------------- **/ - #b_footer { - color: #9D9D9D; - padding: 8px 20px; - margin-top: 12px; } - #b_footer .b_floatbox { - padding-top: 8px; - border-top: 1px solid #ddd; } - #b_footer #b_footer_user { - float: left; - line-height: 16px; } - #b_footer #b_footer_user a.b_ajax { - background: url(../openolat/images/ajax.png) no-repeat; - width: 20px; - height: 16px; - display: block; - float: left; } - #b_footer #b_footer_version { - float: right; - display: block; } - #b_footer #b_footer_powered { - text-align: center; - width: auto; - background: none; } - #b_footer #b_footer_powered a { - display: inline; } +.o_login_pwd { + background-image: url("../openolat/images/user_excl.png"); } - /* --------------- MENU TOOLBAR & BREADCRUMBS ------------ **/ - #b_main.b_menu_toolbar #b_col1_content { - padding-top: 0; - padding-right: 0; } +.o_login_register { + background-image: url("../openolat/images/user_register.png"); } - #b_main.b_menu_toolbar #b_col3_content { - padding: 0; } +.o_news_icon { + background-image: url("../openolat/images/information-white.png"); } - div.b_menu_toolbar { - background: #f9f9f9; - background: -moz-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f9f9f9), color-stop(100%, #d0d0d0)); - background: -webkit-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: -o-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: -ms-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#d0d0d0',GradientType=0 ); - border-bottom: 1px solid #7D7D7D; - padding: 5px 5px 2px 0; } +.o_course_icon { + background-image: url("../openolat/images/le_resources/book-open-text-image.png"); } - /* breadcrumbs */ - div.b_breadcumb_path { - padding: 0; - margin: 0; - float: left; - display: inline; } - div.b_breadcumb_path ul { - padding: 0; - margin: 0; - list-style: none; - float: left; - display: inline; } - div.b_breadcumb_path ul li { - padding: 0 7px 0 14px; - margin: 0; - list-style: none; - float: left; - display: inline; - background: url(../openolat/images/breadcrumb-separator.png) no-repeat left center; } - div.b_breadcumb_path ul li.b_first { - background: url(../openolat/images/home.png) no-repeat top left; - padding-left: 25px; } - div.b_breadcumb_path ul li a { - color: #464444; } - div.b_breadcumb_path ul li span.b_disabled { - color: #000; - padding: 0 10px 0 0; - margin: 0; } +.o_chat_icon { + background-image: url("../openolat/images/balloons-box.png"); } - div.b_breadcumb_content { - clear: both; - margin-top: 0.5em; - padding-top: 0.5em; - border-top: 1px solid #ACAAAA; } +.o_admin_icon { + background-image: url("../openolat/images/wrench-screwdriver.png"); } - /* NOTIFICATIONS */ - div.b_noti { - border: 1px solid #E9EAEF; - padding: 3px 23px 3px 3px; - float: right; - display: inline; - position: relative; - right: 0; - font-size: 95%; } - div.b_noti a.b_contexthelp { - position: absolute; - top: 2px; - right: 2px; } - div.b_noti a.b_noti_unsubscribe_link { - background: url(../openolat/images/mail--minus.png) no-repeat left 50%; - padding: 1px 0 1px 20px; } - div.b_noti a.b_noti_subscribe_link { - background: url(../openolat/images/mail--plus.png) no-repeat left 50%; - padding: 1px 0 1px 20px; } - div.b_noti a.b_noti_markedread_link { - background: url(../openolat/images/tick.png) no-repeat left 50%; - padding: 1px 0 1px 20px; } +.o_calendar_icon { + background-image: url("../openolat/images/calendar.png"); } - /* ---------- TITLE Wrapper --------------- */ - div.b_titled_wrapper div.b_noti { - position: absolute; - right: 25px; - top: 0px; } +/** ------- FLAGS ------ **/ +.b_flag_en { + background-image: url("../openolat/images/flags/gb.png"); } - div.b_titled_wrapper fieldset div.b_noti { - top: 12px; } +.b_flag_de { + background-image: url("../openolat/images/flags/de.png"); } - h1.b_titled_wrapper span { - padding-right: 4em; - font-style: italic; } +.b_flag_fr { + background-image: url("../openolat/images/flags/fr.png"); } - h2.b_titled_wrapper span { - padding-right: 4em; - font-style: italic; } +.b_flag_it { + background-image: url("../openolat/images/flags/it.png"); } - h3.b_titled_wrapper span { - padding-right: 4em; - font-style: italic; } +.b_flag_es { + background-image: url("../openolat/images/flags/es.png"); } - h4.b_titled_wrapper span { - padding-right: 3em; - font-style: italic; } +.b_flag_da { + background-image: url("../openolat/images/flags/dk.png"); } - h5.b_titled_wrapper span { - padding-right: 3em; - font-style: italic; } +.b_flag_cs { + background-image: url("../openolat/images/flags/cz.png"); } - div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { - background: #fff; - border: 0px; - padding: 0px; } - div.b_titled_wrapper a.b_togglebox_opened { - z-index: 10; - display: block; - width: 16px; - height: 16px; - position: absolute; - top: 5px; - left: 5px; - background: url(../openolat/images/information-white.png) no-repeat 0 50%; - padding: 0; } - div.b_titled_wrapper a.b_togglebox_closed { - display: block; - width: 20px; - height: 20px; - background: url(../openolat/images/information-white.png) no-repeat top left; - padding: 0; - /* Required for IE 5, 6, 7 */ - /* ...or something to trigger hasLayout, like zoom: 1; */ - zoom: 1; - /* Theoretically for IE 8 & 9 (more valid) */ - /* ...but not required as filter works too */ - /* should come BEFORE filter */ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=$percent)"; - /* This works in IE 8 & 9 too */ - /* ... but also 5, 6, 7 */ - filter: alpha(opacity=60); - /* Older than Firefox 0.9 */ - -moz-opacity: 0.6; - /* Safari 1.x (pre WebKit!) */ - -khtml-opacity: 0.6; - /* Modern! - /* Firefox 0.9+, Safari 2?, Chrome any? - /* Opera 9+, IE 9+ */ - opacity: 0.6; } - div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { - position: relative; - margin-bottom: 1em; } - div.b_titled_wrapper a.b_togglebox_hide span { - position: absolute; - bottom: 0; - right: 0; - padding: 0 6px 3px 0; } - div.b_titled_wrapper a.b_togglebox_hide:hover { - text-decoration: underline; } +.b_flag_el { + background-image: url("../openolat/images/flags/gr.png"); } - /* Needed for IE6 */ - div.b_titled_wrapper div.b_togglebox div.b_togglebox_content div.o_course_run_objectives { - position: relative; } +.b_flag_ru { + background-image: url("../openolat/images/flags/ru.png"); } - div.o_course_run_dropbox div.b_noti { - position: relative; - top: 0; - right: 25px; - border: 1px solid #FFFFFF; } +.b_flag_pl { + background-image: url("../openolat/images/flags/pl.png"); } - div.o_course_run_returnbox div.b_noti { - position: relative; - top: 0; - right: 25px; - border: 1px solid #FFFFFF; } +.b_flag_zh_CN { + background-image: url("../openolat/images/flags/cn.png"); } - div.o_course_run_solutionbox div.b_noti { - position: relative; - top: 0; - right: 25px; - border: 1px solid #FFFFFF; } +.b_flag_zh_TW { + background-image: url("../openolat/images/flags/tw.png"); } - /** ------------------ CATALOG ------------------------ **/ - div.o_catalog div.o_catalog_title { - display: none; } - div.o_catalog div.o_catalog_nav { - font-size: 95%; - padding: 1px 0 1px 20px; - border-bottom: 1px solid #EEE; - background: url(../openolat/images/folder_open.png) 0 50% no-repeat; } - div.o_catalog div.o_catalog_links { - margin-top: 1em; - padding-top: 1em; - border-top: 1px solid #EEE; } +.b_flag_lt { + background-image: url("../openolat/images/flags/lt.png"); } - /** -------------- TAGGING ---------------- **/ - /* tagging */ - .b_tag_list { - background: url(../openolat/images/tag-label-yellow.png) 0px 3px no-repeat !important; } +.b_flag_fa { + background-image: url("../openolat/images/flags/ir.png"); } - .b_tag_icon { - background-image: url(../openolat/images/tag-label-yellow.png); } +.b_flag_pt_PT { + background-image: url("../openolat/images/flags/pt.png"); } - div.b_tags { - margin: 2em 0; } - div.b_tags div { - padding: 0.5em 0 0 20px; } - div.b_tags span.b_tag { - font-size: 80%; - padding: 5px 2px 5px 2px; - line-height: 3em; - white-space: nowrap; } +.b_flag_pt_BR { + background-image: url("../openolat/images/flags/br.png"); } - div.o_ep_toc_editor div.b_subcl { - min-height: 35em; } +.b_flag_tr { + background-image: url("../openolat/images/flags/tr.png"); } - div.o_ep_struct_editor div.b_subcr { - min-height: 35em; - background: #FFF; - padding-right: 1em; - overflow-x: auto; } +.b_flag_hu { + background-image: url("../openolat/images/flags/hu.png"); } - div.b_struct_edit_btn { - float: right; - display: inline; } +.b_flag_sq { + background-image: url("../openolat/images/flags/al.png"); } - div.b_struct_submit_assess_btn { - float: right; - display: inline; } +.b_flag_in { + background-image: url("../openolat/images/flags/id.png"); } - /* TextboxList */ - *:first-child + html div.holder { - padding-bottom: 2px; } +.b_flag_ar { + background-image: url("../openolat/images/flags/eg.png"); } - * html div.holder { - padding-bottom: 2px; } +.b_flag_rm { + background-image: url("../openolat/images/flags/rm.png"); } - /* ie7 and below */ - .textbox-outer { - list-style-type: none; - margin-left: 0em; } +.b_flag_af { + background-image: url("../openolat/images/flags/za.png"); } - div.holder { - font-size: 80%; } +.b_flag_vi { + background-image: url("../openolat/images/flags/vn.png"); } - .textboxlist-auto { - position: absolute; - width: 300px; - overflow: show; } +.b_flag_mn { + background-image: url("../openolat/images/flags/mn.png"); } - /* autocompleter bitbox (item) holder */ - a.bit-box, span.b_tag { - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - border: 1px solid #CAD8F3; - background: #DEE7F8; - padding: 1px 5px 2px; - padding-right: 15px; - position: relative; } +.b_flag_iw { + background-image: url("../openolat/images/flags/il.png"); } - div.holder { - min-width: 200px; - width: auto; - margin: 0; - overflow: hidden; - height: auto !important; - height: 1%; - padding: 0px 0px 0; - cursor: text; - /* no left/right padding here please */ } - div.holder a { - float: left; - margin: 0 5px 4px 0; } - div.holder a.bit { - text-decoration: none; - color: black; } - div.holder a.bit:active, div.holder a.bit:focus { - outline: none; } - div.holder a.bit-box-focus { - border-color: #598BEC; - background: #598BEC; - color: #fff; } - div.holder a.bit-input input { - width: 100px; - margin: 0; - border: none; - background: white; - outline: 0; - padding: 3px 0 2px; } - div.holder a.bit-input input.smallinput { - width: 20px; } - div.holder a.bit-hover { - background: #BBCEF1; - border: 1px solid #6D95E0; } - div.holder a.bit-box-focus { - background: #598BEC; - color: #fff; } - div.holder a.bit-box a.closebutton { - position: absolute; - right: 0; - top: 5px; - display: block; - width: 7px; - height: 7px; - font-size: 1px; - background: url("../openolat/images/tag_x.gif"); } - div.holder a.bit-box a.closebutton:hover { - background-position: 7px; } - div.holder a.bit-box a.closebutton:active { - outline: none; } - div.holder a.bit-box-focus a.closebutton, div.holder a.bit-box-focus a.closebutton:hover { - background-position: bottom; } +.b_flag_ko { + background-image: url("../openolat/images/flags/kr.png"); } - .b_wizard .textbox-outer { - background: url(../openolat/images/tag-label-yellow.png) top left no-repeat; } - .b_wizard .textbox-outer li { - margin-left: 18px; } - .b_wizard div.holder a.bit-input input { - background: #f8f8f8; - padding: 0.4em; } +.b_flag_nl_NL { + background-image: url("../openolat/images/flags/nl.png"); } - /* Autocompleter for textboxlist */ - ol.textbox-outer { - margin: 0; - padding: 0; } +.b_flag_jp { + background-image: url("../openolat/images/flags/jp.png"); } - .textboxlist-auto { - display: none; - background: #eee; } - .textboxlist-auto .default { - padding: 5px 7px; - border: 1px solid #ccc; - border-width: 0 1px 1px; } - .textboxlist-auto ul { - display: none; - margin: 0; - padding: 0; - overflow: auto; } - .textboxlist-auto ul li { - padding: 5px 12px; - z-index: 1000; - cursor: pointer; - margin: 0; - list-style-type: none; - border: 1px solid #ccc; - border-width: 0 1px 1px; } - .textboxlist-auto ul li.loading-indicator { - padding-left: 30px; - background-position: 5px center; - cursor: defat; - font-size: 100.01% !important; - line-height: 1.5em; } - .textboxlist-auto ul li.more-indicator { - cursor: defat; - font-style: italic; } - .textboxlist-auto ul li em { - font-weight: bold; - font-style: normal; - background: #ccc; } - .textboxlist-auto ul li.auto-focus { - background: #4173CC; - color: #fff; } - .textboxlist-auto ul li.auto-focus em { - background: none; } +.b_flag_nb_NO { + background-image: url("../openolat/images/flags/no.png"); } - input.inputMessage { - color: #AAA; - font-size: 11px; } } -/* -* ================================================= -* -* ICON Rules for the OpenOLAT theme -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Dez. 2011 -* -* also read themes.README! -* -* -* ================================================= -*/ -.b_with_small_icon_left { - padding: 2px 0 2px 20px; - min-height: 16px; - background-position: 0 50%; - background-repeat: no-repeat; } +.b_flag_et_EE { + background-image: url("../openolat/images/flags/ee.png"); } -option.b_with_small_icon_left { - padding: 0 0 0 20px; - vertical-align: middle; - min-height: 11px; - background-position: 0 50%; - background-repeat: no-repeat; } +.b_flag_bg { + background-image: url("../openolat/images/flags/bg.png"); } -.b_with_small_icon_right { - padding: 1px 20px 1px 0px; - min-height: 16px; - background-position: 100% 50%; - background-repeat: no-repeat; } +.b_flag_hi_IN_ASIA { + background-image: url("../openolat/images/flags/in.png"); } -.b_small_icon { - float: left; - display: inline; - width: 16px; - height: 16px; - background-position: 0 50%; - background-repeat: no-repeat; } +.b_flag_ar_LB { + background-image: url("../openolat/images/flags/lb.png"); } -a.b_small_icon:hover { - text-decoration: none; } +.b_flag_de_FX_business { + background-image: url("../openolat/images/flags/de.png"); } -/* ------- misc icons --------- */ -.b_info_icon { - background-image: url("../openolat/images/comment.png"); } +.b_flag_de_FX_school { + background-image: url("../openolat/images/flags/de.png"); } -.b_warn_icon { - background-image: url("../openolat/images/exclamation.png"); } +.b_flag_en_FX_business { + background-image: url("../openolat/images/flags/gb.png"); } -.b_error_icon { - background-image: url("../openolat/images/cross-circle.png"); } +.b_flag_en_FX_school { + background-image: url("../openolat/images/flags/gb.png"); } -.b_new_icon { - background-image: url("../openolat/images/new-text.png"); } +/** ------- FILE TYPES ------- **/ +/* first the default that is used as base class. will be overriden by following classes */ +.b_filetype_file, .b_filetype_ico { + background-image: url("../openolat/images/docs/document_plain.png") !important; } -.b_institution_icon { - background-image: url("../openolat/images/home.png"); } +/* filesystem icons, mark important to override ext definitions */ +.b_filetype_avi_icon { + background-image: url("../openolat/images/docs/document-film.png") !important; } -.b_group_icon { - background-image: url("../openolat/images/users.png"); } +.b_filetype_bat_icon { + background-image: url("../openolat/images/docs/document-binary.png") !important; } -.b_user_icon { - background-image: url("../openolat/images/user.png"); } +.b_filetype_bmp { + background-image: url("../openolat/images/docs/document-image.png") !important; } -.b_move_left_icon { - background-image: url("../openolat/images/arrow_left_big.png"); } +.b_filetype_css { + background-image: url("../openolat/images/docs/document_tags.png") !important; } -.b_move_right_icon { - background-image: url("../openolat/images/arrow_right_big.png"); } +.b_filetype_doc, .b_filetype_docx { + background-image: url("../openolat/images/docs/document-word.png") !important; } -.b_move_down_icon { - background-image: url("../openolat/images/arrow_down_big.png"); } +.b_filetype_dvi { + background-image: url("../openolat/images/docs/document-film.png") !important; } -.b_move_up_icon { - background-image: url("../openolat/images/arrow_up_big.png"); } +.b_filetype_exe { + background-image: url("../openolat/images/docs/document-binary.png") !important; } -.b_delete_icon { - background-image: url("../openolat/images/bin-metal-full.png"); } +div.b_ext_elem .x-tree-node-expanded .x-tree-node-icon.b_filetype_folder, .b_filetype_folder_open { + background-image: url("../openolat/images/folder_open.png") !important; } -.b_share_icon { - background-image: url("../openolat/images/share.png"); } +.b_filetype_folder { + background-image: url("../openolat/images/folder.png") !important; } -.b_status_enabled_icon { - background-image: url("../openolat/images/tick.png"); } - -.b_status_disabled_icon { - background-image: url("../openolat/images/cross.png"); } - -.b_edit_icon { - background-image: url("../openolat/images/docs/document--pencil.png"); } - -.b_add_icon { - background-image: url("../openolat/images/plus-circle.png"); } - -.b_open_icon { - background-image: url("../openolat/images/control/control.png"); } - -.o_fulltext_search_button { - background-image: url("../openolat/images/magnifier-zoom.png"); } - -.o_help_icon { - background-image: url("../openolat/images/help.png"); } - -.o_rss_icon { - background-image: url("../openolat/images/feed.png"); } - -.o_login_guests { - background-image: url("../openolat/images/user_silhouette.png"); } - -.o_login_pwd { - background-image: url("../openolat/images/user_excl.png"); } - -.o_login_register { - background-image: url("../openolat/images/user_register.png"); } - -.o_news_icon { - background-image: url("../openolat/images/information-white.png"); } - -.o_course_icon { - background-image: url("../openolat/images/le_resources/book-open-text-image.png"); } - -.o_chat_icon { - background-image: url("../openolat/images/balloons-box.png"); } - -.o_admin_icon { - background-image: url("../openolat/images/wrench-screwdriver.png"); } - -.o_calendar_icon { - background-image: url("../openolat/images/calendar.png"); } - -/** ------- FLAGS ------ **/ -.b_flag_en { - background-image: url("../openolat/images/flags/gb.png"); } - -.b_flag_de { - background-image: url("../openolat/images/flags/de.png"); } - -.b_flag_fr { - background-image: url("../openolat/images/flags/fr.png"); } - -.b_flag_it { - background-image: url("../openolat/images/flags/it.png"); } - -.b_flag_es { - background-image: url("../openolat/images/flags/es.png"); } - -.b_flag_da { - background-image: url("../openolat/images/flags/dk.png"); } - -.b_flag_cs { - background-image: url("../openolat/images/flags/cz.png"); } - -.b_flag_el { - background-image: url("../openolat/images/flags/gr.png"); } - -.b_flag_ru { - background-image: url("../openolat/images/flags/ru.png"); } - -.b_flag_pl { - background-image: url("../openolat/images/flags/pl.png"); } - -.b_flag_zh_CN { - background-image: url("../openolat/images/flags/cn.png"); } - -.b_flag_zh_TW { - background-image: url("../openolat/images/flags/tw.png"); } - -.b_flag_lt { - background-image: url("../openolat/images/flags/lt.png"); } - -.b_flag_fa { - background-image: url("../openolat/images/flags/ir.png"); } - -.b_flag_pt_PT { - background-image: url("../openolat/images/flags/pt.png"); } - -.b_flag_pt_BR { - background-image: url("../openolat/images/flags/br.png"); } - -.b_flag_tr { - background-image: url("../openolat/images/flags/tr.png"); } - -.b_flag_hu { - background-image: url("../openolat/images/flags/hu.png"); } - -.b_flag_sq { - background-image: url("../openolat/images/flags/al.png"); } - -.b_flag_in { - background-image: url("../openolat/images/flags/id.png"); } - -.b_flag_ar { - background-image: url("../openolat/images/flags/eg.png"); } - -.b_flag_rm { - background-image: url("../openolat/images/flags/rm.png"); } - -.b_flag_af { - background-image: url("../openolat/images/flags/za.png"); } - -.b_flag_vi { - background-image: url("../openolat/images/flags/vn.png"); } - -.b_flag_mn { - background-image: url("../openolat/images/flags/mn.png"); } - -.b_flag_iw { - background-image: url("../openolat/images/flags/il.png"); } - -.b_flag_ko { - background-image: url("../openolat/images/flags/kr.png"); } - -.b_flag_nl_NL { - background-image: url("../openolat/images/flags/nl.png"); } - -.b_flag_jp { - background-image: url("../openolat/images/flags/jp.png"); } - -.b_flag_nb_NO { - background-image: url("../openolat/images/flags/no.png"); } - -.b_flag_et_EE { - background-image: url("../openolat/images/flags/ee.png"); } - -.b_flag_bg { - background-image: url("../openolat/images/flags/bg.png"); } - -.b_flag_hi_IN_ASIA { - background-image: url("../openolat/images/flags/in.png"); } - -.b_flag_ar_LB { - background-image: url("../openolat/images/flags/lb.png"); } - -.b_flag_de_FX_business { - background-image: url("../openolat/images/flags/de.png"); } - -.b_flag_de_FX_school { - background-image: url("../openolat/images/flags/de.png"); } - -.b_flag_en_FX_business { - background-image: url("../openolat/images/flags/gb.png"); } - -.b_flag_en_FX_school { - background-image: url("../openolat/images/flags/gb.png"); } - -/** ------- FILE TYPES ------- **/ -/* first the default that is used as base class. will be overriden by following classes */ -.b_filetype_file, .b_filetype_ico { - background-image: url("../openolat/images/docs/document_plain.png") !important; } - -/* filesystem icons, mark important to override ext definitions */ -.b_filetype_avi_icon { - background-image: url("../openolat/images/docs/document-film.png") !important; } - -.b_filetype_bat_icon { - background-image: url("../openolat/images/docs/document-binary.png") !important; } - -.b_filetype_bmp { - background-image: url("../openolat/images/docs/document-image.png") !important; } - -.b_filetype_css { - background-image: url("../openolat/images/docs/document_tags.png") !important; } - -.b_filetype_doc, .b_filetype_docx { - background-image: url("../openolat/images/docs/document-word.png") !important; } - -.b_filetype_dvi { - background-image: url("../openolat/images/docs/document-film.png") !important; } - -.b_filetype_exe { - background-image: url("../openolat/images/docs/document-binary.png") !important; } - -div.b_ext_elem .x-tree-node-expanded .x-tree-node-icon.b_filetype_folder, .b_filetype_folder_open { - background-image: url("../openolat/images/folder_open.png") !important; } - -.b_filetype_folder { - background-image: url("../openolat/images/folder.png") !important; } - -.b_filetype_gif { - background-image: url("../openolat/images/docs/document-image.png") !important; } +.b_filetype_gif { + background-image: url("../openolat/images/docs/document-image.png") !important; } .b_filetype_gz { background-image: url("../openolat/images/docs/document-zipper.png") !important; } @@ -1427,143 +582,1017 @@ li a.b_toolbox_publish { li a.b_toolbox_move { background-image: url("../openolat/images/docs/document_move.png"); } -li a.b_toolbox_close { - background-image: url("../openolat/images/close.png"); } +li a.b_toolbox_close { + background-image: url("../openolat/images/close.png"); } + +li a.b_toolbox_delete { + background-image: url("../openolat/images/bin-metal-full.png"); } + +li a.b_toolbox_copy, .b_copy_icon { + background-image: url("../openolat/images/docs/document-copy.png"); } + +/* --------- menu icon decorators -------- */ +.o_midlock { + top: 9px; + left: 9px; + background-image: url("../openolat/images/decorator/deco_condition.png"); } + +.o_miderr { + top: 8px; + left: -2px; + background-image: url("../openolat/images/decorator/deco_error.png"); } + +.o_midwarn { + top: 8px; + left: -2px; + background-image: url("../openolat/images/decorator/deco_warn.png"); } + +.o_midpub { + top: -2px; + left: 9px; + background-image: url("../openolat/images/decorator/deco_ok.png"); } + +/* --------- course building block icons ------------------- */ +.o_bc_icon { + background-image: url("../openolat/images/folder.png") !important; } + +.o_co_icon { + background-image: url("../openolat/images/mail.png") !important; } + +.o_cp_icon { + background-image: url("../openolat/images/le_resources/box.png") !important; } + +.o_cp_org { + background-image: url("../openolat/images/le_resources/box.png") !important; } + +.o_cp_item { + background-image: url("../openolat/images/docs/document-text.png") !important; } + +.o_dialog_icon { + background-image: url("../openolat/images/docs/document_discuss.png") !important; } + +.o_en_icon { + background-image: url("../openolat/images/enrol.png") !important; } + +.o_fo_icon { + background-image: url("../openolat/images/forum/forum.png") !important; } + +.o_iqself_icon { + background-image: url("../openolat/images/le_resources/selftest.png") !important; } + +.o_iqsurv_icon { + background-image: url("../openolat/images/le_resources/survey.png") !important; } + +.o_iqtest_icon { + background-image: url("../openolat/images/le_resources/test.png") !important; } + +.o_ms_icon { + background-image: url("../openolat/images/le_resources/thumb-up.png") !important; } + +.o_scorm_icon, .o_scorm_org { + background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + +.o_scorm_item { + background-image: url("../openolat/images/docs/document-text.png") !important; } + +.o_scorm_asset { + background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + +.o_sp_icon { + background-image: url("../openolat/images/docs/document-text.png") !important; } + +.o_st_icon { + background-image: url("../openolat/images/node-select-all.png") !important; } + +.o_ta_icon { + background-image: url("../openolat/images/docs/document-task.png") !important; } + +.o_tu_icon { + background-image: url("../openolat/images/docs/document-import.png") !important; } + +.o_wiki_icon { + background-image: url("../openolat/images/le_resources/wiki.png") !important; } + +.o_ll_icon { + background-image: url("../openolat/images/docs/document_linklist.png") !important; } + +.o_cl_icon { + background-image: url("../openolat/images/clipboard-task.png") !important; } + +.o_den_icon { + background-image: url("../openolat/images/clock.png") !important; } + +.o_projectbroker_icon { + background-image: url("../openolat/images/projectbroker.png") !important; } + +.o_podcast_icon { + background-image: url("../openolat/images/le_resources/media-player-cast.png") !important; } + +.o_blog_icon { + background-image: url("../openolat/images/le_resources/blog.png") !important; } + +.o_cal_icon { + background-image: url("../openolat/images/calendar.png") !important; } + +.o_lti_icon { + background-image: url("../openolat/images/docs/document-node.png") !important; } + +/* <OLATCE-103> */ +.o_vc_icon { + background-image: url("../openolat/images/projection-screen.png") !important; } + +/* </OLATCE-103> */ +.o_vitero_icon { + background-image: url("../openolat/images/vitero.png") !important; } + +.o_ep_icon, .o_EPStructuredMapTemplate_icon { + background-image: url("../openolat/images/le_resources/portfolio.png") !important; } + +.o_infomsg_icon { + background-image: url("../openolat/images/information-button.png") !important; } + +.o_cmembers_icon { + background-image: url("../openolat/images/users.png") !important; } + +.fx_members_icon { + background-image: url("../openolat/images/users_members.png") !important; } + +body#b_body .o_CourseModule_icon_closed { + background-image: url("../openolat/images/le_resources/book-open-text-image_locked.png"); } + +/* +* ================================================= +* +* basemod rules for OpenOLAT 8 +* +* @author strentini, sergio.trentini@frentix.com, www.frentix.com +* @date Nov. 2011 +* +* also read themes.README! +* +* (as of yaml compliance, contains css rules for +* positioning and sizing elements) +* +* this file is included in layout.scss +* it is not compiled to a separate css-file... +* +* ================================================= +*/ +@media all { + html { + min-height: 100%; } + + /** ----------------- MAIN LAYOUT ----------------- **/ + /** + * (en) Forcing vertical scrollbars in IE8, Firefox, Webkit & Opera + * (de) Erzwingen vertikaler Scrollbalken in IE8, Firefox, Webkit & Opera + * + * @workaround + * @affected IE8, FF, Webkit, Opera + * @css-for all + * @valid CSS3 + */ + body { + min-height: 100%; + overflow-y: scroll; + background: #ececec url("../openolat/images/sky.png") repeat-x left 88px; } + + #b_page_margins { + min-width: 740px; + max-width: 1324px; + margin: 0 auto; + width: 100%; + height: 100%; } + + #b_page_wrapper { + border-bottom: 1px solid lightGrey; } + + #b_main { + background: #fff; + clear: both; + moz-box-shadow: 0 0 14px #d3d3d3; + -ms-box-shadow: 0 0 14px #d3d3d3; + -o-box-shadow: 0 0 14px #d3d3d3; + -webkit-box-shadow: 0 0 14px #d3d3d3; + box-shadow: 0 0 14px #d3d3d3; } + + #b_page a#b_toplink { + position: absolute; + bottom: 1em; + right: 1em; + background: transparent url(../openolat/images/arrow_up.png) 0 50% no-repeat; + padding-left: 14px; + z-index: 5; } + + #b_header, #b_page, #b_col1_content, #b_col2_content, #b_col3_content, #b_col3_content_inner { + position: relative; } + + #b_col1 { + overflow: hidden; } + + #b_col1_content { + padding: 1em 10px 1em 0px; } + + #b_col3 { + border-left: 1px #DDD dotted; + border-right: 1px #DDD dotted; } + + #b_col3_content { + min-height: 450px; + padding: 20px 20px 30px 20px; } + + #b_col2_content { + overflow: hidden; + padding: 1em 0; } + + .b_hidecol2 #b_col3 { + margin-right: 0 !important; + border-right: none; } + + .b_hidecol1 #b_col3 { + margin-left: 0 !important; + border-left: none; } + + .b_hideboth #b_col3 { + margin-left: 0 !important; + margin-right: 0 !important; + border-left: none; + border-right: none; } + + .b_hideboth #b_col1, .b_hideboth #b_col2, .b_hidecol1 #b_col1, .b_hidecol2 #b_col2, #b_ie_clearing { + display: none; } + + .b_c15r, .b_c20r, .b_c80r, .b_c85r { + float: right; + margin-left: -5px; } + + .b_c15l, .b_c15r { + width: 15%; } + + .b_c20l, .b_c20r { + width: 20%; } + + .b_c80l, .b_c80r { + width: 80%; } + + .b_c85l, .b_c85r { + width: 85%; } + + .b_subcolumns_oldgecko, .b_c20l, .b_c15l, .b_c80l, .b_c85l { + float: left; } + + /* IFRAME */ + div.b_iframe_wrapper iframe { + width: 100%; + position: relative; + top: 0; + left: 0; + border: none; + margin: 0; + padding: 0; + background: transparent; } + + /* RedScreen View */ + #b_main.b_exception { + padding-left: 165px; + padding-right: 165px; } + + /** ----------------- HEADER AND TOP NAVIGATION ----------------- **/ + #b_header { + height: auto; + min-height: 30px; + overflow: hidden; + position: relative; + /* the top-navigation */ } + #b_header #b_topnav { + position: absolute; + right: 0px; + top: 0px; + padding: 4px 15px 0px 0px; } + #b_header #b_topnav ul { + margin: 0; } + #b_header #b_topnav #o_topnav_search input { + line-height: 1.3em; + margin: 0; + width: 10em; } + #b_header #b_topnav #o_topnav_printview a { + background: url(../openolat/images/printer.png) no-repeat top right; + padding: 2px 20px 2px 0; + margin: 0; } + #b_header #b_topnav #o_topnav_logout a { + background: url("../openolat/images/control/control-power.png") no-repeat top right; + padding: 2px 20px 2px 0; + margin: 0; + font-weight: bold; } + #b_header #b_topnav li { + float: left; + list-style: none; + margin-left: 1.7em; } + #b_header #b_topnav li div.b_form_element_wrapper.b_form_horizontal { + margin: 0; } + #b_header #b_topnav li#o_topnav_imclient li { + margin-left: 0.5em; } + + /** ----------------- MAIN NAVIGATION ( TABS ) ----------------- **/ + #b_nav_main { + float: left; } + #b_nav_main ul { + padding-left: 40px; + margin: 0; } + #b_nav_main ul li { + float: left; + position: relative; + list-style: none; + margin: 0px; + padding: 4px 3px 4px 12px; + margin-right: 2px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + background: #fff; + background: rgba(255, 255, 255, 0.5); + /* -- SITES ( home, users, groups, etc. ) -- */ + /* -- TABS ( courses, wiki, etc.) -- */ + /* -- THE SPACER -- */ } + #b_nav_main ul li a { + /* "bloat" the links (better for touch) */ + padding: 4px 12px 4px 3px; } + #b_nav_main ul li a:hover { + text-decoration: none; } + #b_nav_main ul li.b_nav_site { + /** sites icons **/ } + #b_nav_main ul li.b_nav_site.b_nav_active, #b_nav_main ul li.b_nav_site:hover, #b_nav_main ul li.b_nav_site.b_exception { + moz-box-shadow: 0 -4px 8px -1px #d3d3d3; + -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; + -o-box-shadow: 0 -4px 8px -1px #d3d3d3; + -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; + box-shadow: 0 -4px 8px -1px #d3d3d3; + background: #fff; } + #b_nav_main ul li.b_nav_site.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_site:hover a.b_nav_tab_close, #b_nav_main ul li.b_nav_site.b_exception a.b_nav_tab_close { + background-image: url(../openolat/images/cross_small_trimmed_blue.png); } + #b_nav_main ul li.b_nav_site > div { + padding-left: 16px; + background-repeat: no-repeat; + background-position: 0% 50%; + background-image: url("../openolat/images/application.png"); } + #b_nav_main ul li.b_nav_site.o_site_home > div { + background-image: url("../openolat/images/home.png"); } + #b_nav_main ul li.b_nav_site.o_site_admin > div { + background-image: url("../openolat/images/wrench-screwdriver.png"); } + #b_nav_main ul li.b_nav_site.o_site_useradmin > div { + background-image: url("../openolat/images/user_conf.png"); } + #b_nav_main ul li.b_nav_site.o_site_groupsmanagement > div { + background-image: url("../openolat/images/users_conf.png"); } + #b_nav_main ul li.b_nav_site.o_site_repository > div { + background-image: url("../openolat/images/books-stack.png"); } + #b_nav_main ul li.b_nav_site.o_site_groups > div { + background-image: url("../openolat/images/users.png"); } + #b_nav_main ul li.b_nav_site.site_demo_icon > div { + background-image: url("../openolat/images/information-white.png"); } + #b_nav_main ul li.b_nav_site.f_site_library > div { + background-image: url("../openolat/images/library.png"); } + #b_nav_main ul li.b_nav_site.fx_members > div { + background-image: url("../openolat/images/users_members.png"); } + #b_nav_main ul li.b_nav_site.o_site_guidemo div { + background-image: url("../openolat/images/light-bulb.png"); } + #b_nav_main ul li.b_nav_site.b_resource_GroupInfoMainController div { + background-image: url(../openolat/images/users.png); } + #b_nav_main ul li.b_nav_tab { + margin-right: 4px; } + #b_nav_main ul li.b_nav_tab a.b_nav_tab_close { + position: absolute; + top: 3px; + right: 4px; + width: 13px; + height: 13px; + line-height: 0; + padding: 0; + margin: 0; + background: transparent url(../openolat/images/cross_small_trimmed_grey.png) no-repeat right top; } + #b_nav_main ul li.b_nav_tab.b_nav_active, #b_nav_main ul li.b_nav_tab:hover { + moz-box-shadow: 0 -4px 8px -1px #d3d3d3; + -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; + -o-box-shadow: 0 -4px 8px -1px #d3d3d3; + -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; + box-shadow: 0 -4px 8px -1px #d3d3d3; + background: #fff; } + #b_nav_main ul li.b_nav_tab.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_tab:hover a.b_nav_tab_close { + background-image: url(../openolat/images/cross_small_trimmed_blue.png); } + #b_nav_main ul li#b_nav_spacer { + background: none; + border: none; + width: 20px; + height: 1px; + padding: 0; } + + /** ----------------- SUB NAVIGATION (TREE) ----------------- **/ + /* note: the markup will be the one from OLATpro, has to be merged yet */ + div.b_tree { + font-size: 100%; + padding: 0; + /* the open/close node icons */ } + div.b_tree ul { + position: relative; + padding: 0; + margin: 0 0 0 1em; + list-style: none; + white-space: nowrap; + /* link to select the item with icon */ } + div.b_tree ul li { + position: relative; + background: transparent; + margin-left: 0; + padding-left: 0; + line-height: 1.7em; + /* selected, hovered, active <a> tag */ + /* icon positioning */ + /* decorators in tree (e.g. course-editor ) */ } + div.b_tree ul li a.b_tree_icon { + padding-left: 20px; + padding-top: 2px; + position: relative; + background-position: 0 50%; + background-repeat: no-repeat; } + div.b_tree ul li a { + color: #555555; } + div.b_tree ul li a.b_tree_l1 { + padding-left: 16px; } + div.b_tree ul li .b_tree_oc_l1 { + position: absolute; + top: 0px; + left: 0px; + z-index: 9; } + div.b_tree ul li a:focus, div.b_tree ul li a:hover { + color: #025d8c; + background-color: transparent; + text-decoration: underline; } + div.b_tree ul li a.b_tree_selected, div.b_tree ul li a:active { + color: #025d8c; + background-color: transparent; + text-decoration: none; } + div.b_tree ul li li a.b_tree_selected_parents, div.b_tree ul li a.b_tree_l0, div.b_tree ul li strong { + color: #025d8c; + font-weight: bold; } + div.b_tree ul li .b_tree_oc_l1 { + position: absolute; + top: 0px; + left: 1px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l2 { + position: absolute; + top: 0px; + left: 11px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l3 { + position: absolute; + top: 0px; + left: 21px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l4 { + position: absolute; + top: 0px; + left: 31px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l5 { + position: absolute; + top: 0px; + left: 41px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l6 { + position: absolute; + top: 0px; + left: 51px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l7 { + position: absolute; + top: 0px; + left: 61px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l8 { + position: absolute; + top: 0px; + left: 71px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l9 { + position: absolute; + top: 0px; + left: 81px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l10 { + position: absolute; + top: 0px; + left: 91px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l11 { + position: absolute; + top: 0px; + left: 101px; + z-index: 9; } + div.b_tree ul li a.b_tree_l0 { + padding-left: 5px; } + div.b_tree ul li a.b_tree_l1 { + padding-left: 15px; } + div.b_tree ul li a.b_tree_l2 { + padding-left: 25px; } + div.b_tree ul li a.b_tree_l3 { + padding-left: 35px; } + div.b_tree ul li a.b_tree_l4 { + padding-left: 45px; } + div.b_tree ul li a.b_tree_l5 { + padding-left: 55px; } + div.b_tree ul li a.b_tree_l6 { + padding-left: 65px; } + div.b_tree ul li a.b_tree_l7 { + padding-left: 75px; } + div.b_tree ul li a.b_tree_l8 { + padding-left: 85px; } + div.b_tree ul li a.b_tree_l9 { + padding-left: 95px; } + div.b_tree ul li a.b_tree_l10 { + padding-left: 105px; } + div.b_tree ul li a.b_tree_l11 { + padding-left: 115px; } + div.b_tree ul li span.b_tree_icon_decorator { + width: 12px; + height: 12px; + float: right; + display: inline; + position: static; + background-repeat: no-repeat; } + div.b_tree ul.b_tree_l0 a.b_tree_icon { + padding-left: 26px; + background-position: 8px 50%; } + div.b_tree ul.b_tree_l1 a.b_tree_icon { + padding-left: 36px; + background-position: 18px 50%; } + div.b_tree ul.b_tree_l2 a.b_tree_icon { + padding-left: 46px; + background-position: 28px 50%; } + div.b_tree ul.b_tree_l3 a.b_tree_icon { + padding-left: 56px; + background-position: 38px 50%; } + div.b_tree ul.b_tree_l4 a.b_tree_icon { + padding-left: 66px; + background-position: 48px 50%; } + div.b_tree ul.b_tree_l5 a.b_tree_icon { + padding-left: 76px; + background-position: 58px 50%; } + div.b_tree ul.b_tree_l6 a.b_tree_icon { + padding-left: 86px; + background-position: 68px 50%; } + div.b_tree ul.b_tree_l7 a.b_tree_icon { + padding-left: 96px; + background-position: 78px 50%; } + div.b_tree ul.b_tree_l8 a.b_tree_icon { + padding-left: 106px; + background-position: 88px 50%; } + div.b_tree ul.b_tree_l9 a.b_tree_icon { + padding-left: 116px; + background-position: 98px 50%; } + div.b_tree ul.b_tree_l10 a.b_tree_icon { + padding-left: 126px; + background-position: 108px 50%; } + div.b_tree ul.b_tree_l11 a.b_tree_icon { + padding-left: 136px; + background-position: 118px 50%; } + div.b_tree a.b_tree_level_close span { + background: url("../openolat/images/toggle-small.png") no-repeat 0% 50%; + padding-right: 8px; } + div.b_tree a.b_tree_level_open span { + background: url("../openolat/images/toggle-small-expand.png") no-repeat 0% 50%; + padding-right: 8px; } + div.b_tree a.b_tree_level_close:hover, div.b_tree a.b_tree_level_open:hover { + text-decoration: none; } + + /** ----------------- FOOTER ----------------- **/ + #b_footer { + color: #9D9D9D; + padding: 8px 20px; + margin-top: 12px; } + #b_footer .b_floatbox { + padding-top: 8px; + border-top: 1px solid #ddd; } + #b_footer #b_footer_user { + float: left; + line-height: 16px; } + #b_footer #b_footer_user a.b_ajax { + background: url(../openolat/images/ajax.png) no-repeat; + width: 20px; + height: 16px; + display: block; + float: left; } + #b_footer #b_footer_version { + float: right; + display: block; } + #b_footer #b_footer_powered { + text-align: center; + width: auto; + background: none; } + #b_footer #b_footer_powered a { + display: inline; } -li a.b_toolbox_delete { - background-image: url("../openolat/images/bin-metal-full.png"); } + /* --------------- MENU TOOLBAR & BREADCRUMBS ------------ **/ + #b_main.b_menu_toolbar #b_col1_content { + padding-top: 0; + padding-right: 0; } -li a.b_toolbox_copy, .b_copy_icon { - background-image: url("../openolat/images/docs/document-copy.png"); } + #b_main.b_menu_toolbar #b_col3_content { + padding: 0; } -/* --------- menu icon decorators -------- */ -.o_midlock { - top: 9px; - left: 9px; - background-image: url("../openolat/images/decorator/deco_condition.png"); } + div.b_menu_toolbar { + background: #f9f9f9; + background: -moz-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f9f9f9), color-stop(100%, #d0d0d0)); + background: -webkit-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: -o-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: -ms-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#d0d0d0',GradientType=0 ); + border-bottom: 1px solid #7D7D7D; + padding: 5px 5px 2px 0; } -.o_miderr { - top: 8px; - left: -2px; - background-image: url("../openolat/images/decorator/deco_error.png"); } + /* breadcrumbs */ + div.b_breadcumb_path { + padding: 0; + margin: 0; + float: left; + display: inline; } + div.b_breadcumb_path ul { + padding: 0; + margin: 0; + list-style: none; + float: left; + display: inline; } + div.b_breadcumb_path ul li { + padding: 0 7px 0 14px; + margin: 0; + list-style: none; + float: left; + display: inline; + background: url(../openolat/images/breadcrumb-separator.png) no-repeat left center; } + div.b_breadcumb_path ul li.b_first { + background: url(../openolat/images/home.png) no-repeat top left; + padding-left: 25px; } + div.b_breadcumb_path ul li a { + color: #464444; } + div.b_breadcumb_path ul li span.b_disabled { + color: #000; + padding: 0 10px 0 0; + margin: 0; } -.o_midwarn { - top: 8px; - left: -2px; - background-image: url("../openolat/images/decorator/deco_warn.png"); } + div.b_breadcumb_content { + clear: both; + margin-top: 0.5em; + padding-top: 0.5em; + border-top: 1px solid #ACAAAA; } -.o_midpub { - top: -2px; - left: 9px; - background-image: url("../openolat/images/decorator/deco_ok.png"); } + /* NOTIFICATIONS */ + div.b_noti { + border: 1px solid #E9EAEF; + padding: 3px 23px 3px 3px; + float: right; + display: inline; + position: relative; + right: 0; + font-size: 95%; } + div.b_noti a.b_contexthelp { + position: absolute; + top: 2px; + right: 2px; } + div.b_noti a.b_noti_unsubscribe_link { + background: url(../openolat/images/mail--minus.png) no-repeat left 50%; + padding: 1px 0 1px 20px; } + div.b_noti a.b_noti_subscribe_link { + background: url(../openolat/images/mail--plus.png) no-repeat left 50%; + padding: 1px 0 1px 20px; } + div.b_noti a.b_noti_markedread_link { + background: url(../openolat/images/tick.png) no-repeat left 50%; + padding: 1px 0 1px 20px; } -/* --------- course building block icons ------------------- */ -.o_bc_icon { - background-image: url("../openolat/images/folder.png") !important; } + /* ---------- TITLE Wrapper --------------- */ + div.b_titled_wrapper div.b_noti { + position: absolute; + right: 25px; + top: 0px; } -.o_co_icon { - background-image: url("../openolat/images/mail.png") !important; } + div.b_titled_wrapper fieldset div.b_noti { + top: 12px; } -.o_cp_icon { - background-image: url("../openolat/images/le_resources/box.png") !important; } + h1.b_titled_wrapper span { + padding-right: 4em; + font-style: italic; } -.o_cp_org { - background-image: url("../openolat/images/le_resources/box.png") !important; } + h2.b_titled_wrapper span { + padding-right: 4em; + font-style: italic; } -.o_cp_item { - background-image: url("../openolat/images/docs/document-text.png") !important; } + h3.b_titled_wrapper span { + padding-right: 4em; + font-style: italic; } -.o_dialog_icon { - background-image: url("../openolat/images/docs/document_discuss.png") !important; } + h4.b_titled_wrapper span { + padding-right: 3em; + font-style: italic; } -.o_en_icon { - background-image: url("../openolat/images/enrol.png") !important; } + h5.b_titled_wrapper span { + padding-right: 3em; + font-style: italic; } -.o_fo_icon { - background-image: url("../openolat/images/forum/forum.png") !important; } + div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { + background: transparent; + border: 0px; + padding: 0px; } + div.b_titled_wrapper a.b_togglebox_opened { + z-index: 10; + display: block; + width: 16px; + height: 16px; + position: absolute; + top: 5px; + left: 5px; + background: url(../openolat/images/information-white.png) no-repeat 0 50%; + padding: 0; } + div.b_titled_wrapper a.b_togglebox_closed { + display: block; + width: 20px; + height: 20px; + background: url(../openolat/images/information-white.png) no-repeat top left; + padding: 0; + /* Required for IE 5, 6, 7 */ + /* ...or something to trigger hasLayout, like zoom: 1; */ + zoom: 1; + /* Theoretically for IE 8 & 9 (more valid) */ + /* ...but not required as filter works too */ + /* should come BEFORE filter */ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=$percent)"; + /* This works in IE 8 & 9 too */ + /* ... but also 5, 6, 7 */ + filter: alpha(opacity=60); + /* Older than Firefox 0.9 */ + -moz-opacity: 0.6; + /* Safari 1.x (pre WebKit!) */ + -khtml-opacity: 0.6; + /* Modern! + /* Firefox 0.9+, Safari 2?, Chrome any? + /* Opera 9+, IE 9+ */ + opacity: 0.6; } + div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { + position: relative; + margin-bottom: 1em; } + div.b_titled_wrapper a.b_togglebox_hide span { + position: absolute; + bottom: 0; + right: 0; + padding: 0 6px 3px 0; } + div.b_titled_wrapper a.b_togglebox_hide:hover { + text-decoration: underline; } -.o_iqself_icon { - background-image: url("../openolat/images/le_resources/selftest.png") !important; } + /* Needed for IE6 */ + div.b_titled_wrapper div.b_togglebox div.b_togglebox_content div.o_course_run_objectives { + position: relative; } -.o_iqsurv_icon { - background-image: url("../openolat/images/le_resources/survey.png") !important; } + div.o_course_run_dropbox div.b_noti { + position: relative; + top: 0; + right: 25px; + border: 1px solid #FFFFFF; } -.o_iqtest_icon { - background-image: url("../openolat/images/le_resources/test.png") !important; } + div.o_course_run_returnbox div.b_noti { + position: relative; + top: 0; + right: 25px; + border: 1px solid #FFFFFF; } -.o_ms_icon { - background-image: url("../openolat/images/le_resources/thumb-up.png") !important; } + div.o_course_run_solutionbox div.b_noti { + position: relative; + top: 0; + right: 25px; + border: 1px solid #FFFFFF; } -.o_scorm_icon, .o_scorm_org { - background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + /** ------------------ CATALOG ------------------------ **/ + div.o_catalog div.o_catalog_link_title { + margin: 2em 0 0 0; + border-bottom: 1px solid #ccc; + padding: 0.3em; } + div.o_catalog div.o_catalog_title { + display: none; } + div.o_catalog div.o_catalog_nav { + font-size: 95%; + padding: 1px 0 2px 22px; + border-bottom: 1px solid #EEE; + background: url(../openolat/images/folder_open.png) 2px 50% no-repeat; } + div.o_catalog div.o_catalog_links { + margin-top: 1em; + padding-top: 1em; + border-top: 1px solid #EEE; } -.o_scorm_item { - background-image: url("../openolat/images/docs/document-text.png") !important; } + /** -------------- TAGGING ---------------- **/ + /* tagging */ + .b_tag_list { + background: url(../openolat/images/tag-label-yellow.png) 0px 3px no-repeat !important; } -.o_scorm_asset { - background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + .b_tag_icon { + background-image: url(../openolat/images/tag-label-yellow.png); } -.o_sp_icon { - background-image: url("../openolat/images/docs/document-text.png") !important; } + div.b_tags { + margin: 2em 0; } + div.b_tags div { + padding: 0.5em 0 0 20px; } + div.b_tags span.b_tag { + font-size: 80%; + padding: 5px 2px 5px 2px; + line-height: 3em; + white-space: nowrap; } -.o_st_icon { - background-image: url("../openolat/images/node-select-all.png") !important; } + div.o_ep_toc_editor div.b_subcl { + min-height: 35em; } -.o_ta_icon { - background-image: url("../openolat/images/docs/document-task.png") !important; } + div.o_ep_struct_editor div.b_subcr { + min-height: 35em; + background: #FFF; + padding-right: 1em; + overflow-x: auto; } -.o_tu_icon { - background-image: url("../openolat/images/docs/document-import.png") !important; } + div.b_struct_edit_btn { + float: right; + display: inline; } -.o_wiki_icon { - background-image: url("../openolat/images/le_resources/wiki.png") !important; } + div.b_struct_submit_assess_btn { + float: right; + display: inline; } -.o_ll_icon { - background-image: url("../openolat/images/docs/document_linklist.png") !important; } + /* TextboxList */ + *:first-child + html div.holder { + padding-bottom: 2px; } -.o_cl_icon { - background-image: url("../openolat/images/clipboard-task.png") !important; } + * html div.holder { + padding-bottom: 2px; } -.o_den_icon { - background-image: url("../openolat/images/clock.png") !important; } + /* ie7 and below */ + .textbox-outer { + list-style-type: none; + margin-left: 0em; } -.o_projectbroker_icon { - background-image: url("../openolat/images/projectbroker.png") !important; } + div.holder { + font-size: 80%; } -.o_podcast_icon { - background-image: url("../openolat/images/le_resources/media-player-cast.png") !important; } + .textboxlist-auto { + position: absolute; + width: 300px; + overflow: show; } -.o_blog_icon { - background-image: url("../openolat/images/le_resources/blog.png") !important; } + /* autocompleter bitbox (item) holder */ + a.bit-box, span.b_tag { + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border: 1px solid #CAD8F3; + background: #DEE7F8; + padding: 1px 5px 2px; + padding-right: 15px; + position: relative; } -.o_cal_icon { - background-image: url("../openolat/images/calendar.png") !important; } + div.holder { + min-width: 200px; + width: auto; + margin: 0; + overflow: hidden; + height: auto !important; + height: 1%; + padding: 0px 0px 0; + cursor: text; + /* no left/right padding here please */ } + div.holder a { + float: left; + margin: 0 5px 4px 0; } + div.holder a.bit { + text-decoration: none; + color: black; } + div.holder a.bit:active, div.holder a.bit:focus { + outline: none; } + div.holder a.bit-box-focus { + border-color: #598BEC; + background: #598BEC; + color: #fff; } + div.holder a.bit-input input { + width: 100px; + margin: 0; + border: none; + background: white; + outline: 0; + padding: 3px 0 2px; } + div.holder a.bit-input input.smallinput { + width: 20px; } + div.holder a.bit-hover { + background: #BBCEF1; + border: 1px solid #6D95E0; } + div.holder a.bit-box-focus { + background: #598BEC; + color: #fff; } + div.holder a.bit-box a.closebutton { + position: absolute; + right: 0; + top: 5px; + display: block; + width: 7px; + height: 7px; + font-size: 1px; + background: url("../openolat/images/tag_x.gif"); } + div.holder a.bit-box a.closebutton:hover { + background-position: 7px; } + div.holder a.bit-box a.closebutton:active { + outline: none; } + div.holder a.bit-box-focus a.closebutton, div.holder a.bit-box-focus a.closebutton:hover { + background-position: bottom; } -.o_lti_icon { - background-image: url("../openolat/images/docs/document-node.png") !important; } + .b_wizard .textbox-outer { + background: url(../openolat/images/tag-label-yellow.png) top left no-repeat; } + .b_wizard .textbox-outer li { + margin-left: 18px; } + .b_wizard div.holder a.bit-input input { + background: #f8f8f8; + padding: 0.4em; } -/* <OLATCE-103> */ -.o_vc_icon { - background-image: url("../openolat/images/projection-screen.png") !important; } + /* Autocompleter for textboxlist */ + ol.textbox-outer { + margin: 0; + padding: 0; } -/* </OLATCE-103> */ -.o_vitero_icon { - background-image: url("../openolat/images/vitero.png") !important; } + .textboxlist-auto { + display: none; + background: #eee; } + .textboxlist-auto .default { + padding: 5px 7px; + border: 1px solid #ccc; + border-width: 0 1px 1px; } + .textboxlist-auto ul { + display: none; + margin: 0; + padding: 0; + overflow: auto; } + .textboxlist-auto ul li { + padding: 5px 12px; + z-index: 1000; + cursor: pointer; + margin: 0; + list-style-type: none; + border: 1px solid #ccc; + border-width: 0 1px 1px; } + .textboxlist-auto ul li.loading-indicator { + padding-left: 30px; + background-position: 5px center; + cursor: defat; + font-size: 100.01% !important; + line-height: 1.5em; } + .textboxlist-auto ul li.more-indicator { + cursor: defat; + font-style: italic; } + .textboxlist-auto ul li em { + font-weight: bold; + font-style: normal; + background: #ccc; } + .textboxlist-auto ul li.auto-focus { + background: #4173CC; + color: #fff; } + .textboxlist-auto ul li.auto-focus em { + background: none; } -.o_ep_icon, .o_EPStructuredMapTemplate_icon { - background-image: url("../openolat/images/le_resources/portfolio.png") !important; } + input.inputMessage { + color: #AAA; + font-size: 11px; } } +/* FLOTING STYLES */ +.b_float_left { + float: left; + display: inline; + margin-right: 1em; + margin-bottom: 0.15em; } -.o_infomsg_icon { - background-image: url("../openolat/images/information-button.png") !important; } +.b_float_right { + float: right; + display: inline; + margin-left: 1em; + margin-bottom: 0.15em; } -.o_cmembers_icon { - background-image: url("../openolat/images/users.png") !important; } +.b_center { + text-align: center; + margin: 0.5em auto; } -.fx_members_icon { - background-image: url("../openolat/images/users_members.png") !important; } +/* CLEAR container: additonal to b_floatbox */ +.b_floatscrollbox { + overflow-x: auto; + overflow-y: hidden; } -body#b_body .o_CourseModule_icon_closed { - background-image: url("../openolat/images/le_resources/book-open-text-image_locked.png"); } +.b_overflowscrollbox { + overflow: auto; } /* -------- modules -------- */ /* @@ -1938,22 +1967,6 @@ div.b_msg_error_winicon { min-height: 40px; background: url(../openolat/images/icon_warning_32.png) no-repeat 10px 10px; } -/* OPEN / CLOSE BOX TOGGLER */ -a.b_togglebox_closed { - background: url(../openolat/images/toggle-small-expand.png) no-repeat 0 50%; - padding: 1px 0 1px 14px; - vertical-align: middle; } - -a.b_togglebox_opened { - background: url(../openolat/images/toggle-small.png) no-repeat 0 50%; - padding: 1px 0 1px 14px; - vertical-align: middle; } - -div.b_togglebox div.b_togglebox_content { - padding: 1em; - border: 1px solid #ACAAAA; - background: #fff; } - /** ----------------- WIZARD ----------------- **/ div.b_wizard { background: #fff; @@ -4361,9 +4374,10 @@ div.b_eportfolio_restriction_wrapper div.b_togglebox div.b_togglebox_content { border: 1px solid red; background-image: none; background-color: transparent; + border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; - border-radius: 3px; } + -o-border-radius: 3px; } div.b_eportfolio_restriction_error div.b_tooglebox_opened div.b_togglebox_content { border: 1px solid #FF9900 !important; @@ -7160,7 +7174,17 @@ div.f_library_overview div.f_library_newest_files ul li a { * * ================================================= */ +/** +* hides any element +*/ @media print { + /** with the noprint class, you can hide any element in printout **/ + .o_noprint { + display: none !important; + visibility: hidden !important; + height: 0px !important; + width: 0px !important; } + /* (en) change font size unit to [pt] - avoiding problems with [px] unit in Gecko based browsers */ /* (de) Wechsel der der Schriftgrößen-Maßheinheit zu [pt] - Probleme mit Maßeinheit [px] in Gecko-basierten Browsern vermeiden */ body { @@ -7254,25 +7278,14 @@ div.f_library_overview div.f_library_newest_files ul li a { .b_floatbox, .b_subcolumns, .b_subcolums_oldgecko { overflow: visible; - display: table; } } -/* -* ================================================= -* -* content rules for OpenOLAT 8 (PRINT) -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 -* -* -* -* (as of yaml compliance, contains css rules for -* styling fonts, colors, font-style, etc. ) -* -* this file is included in layout.scss -* it is not compiled to a separate css-file... -* -* ================================================= -*/ + display: table; } + + /* hide jsMath print warning */ + #jsMath_PrintWarning { + display: none !important; + visibility: hidden !important; + height: 0px !important; + width: 0px !important; } } /* ------- mobile -------- */ /* * ================================================= diff --git a/src/main/webapp/static/themes/openolat/layout.scss b/src/main/webapp/static/themes/openolat/layout.scss index 7af567644f3aaeff9b854a28ea647f15d52c657a..438b49ee7cd0389d13e11132a189037ea3321ef2 100644 --- a/src/main/webapp/static/themes/openolat/layout.scss +++ b/src/main/webapp/static/themes/openolat/layout.scss @@ -22,17 +22,15 @@ // default css import @import url(../../yaml/core/slim_base.css); -//@import url(../../yaml/core/slim_print_base.css); @import url(all/content.css); - /* --------------- */ @import "definitions"; @import "mixins"; /* --------------- */ -@import "basemod"; @import "icons"; +@import "basemod"; /* -------- modules -------- */ @import "dd"; @@ -59,7 +57,6 @@ /* print & mobile, let's keep 'em down here... */ /* ------- print -------- */ @import "p_basemod"; -@import "p_content"; /* ------- mobile -------- */ @import "m_basemod"; diff --git a/src/main/webapp/static/themes/openolat/print/_p_basemod.scss b/src/main/webapp/static/themes/openolat/print/_p_basemod.scss index b9d8d42b4f1ea0f0f160140208f3e31f23af79b2..010cfc9dd2bfa1a54c37d0f2c1f2948744c5e124 100644 --- a/src/main/webapp/static/themes/openolat/print/_p_basemod.scss +++ b/src/main/webapp/static/themes/openolat/print/_p_basemod.scss @@ -19,9 +19,19 @@ * ================================================= */ +/** +* hides any element +*/ +@mixin o-ghost { + display:none !important; visibility: hidden !important; height:0px !important; width:0px !important; +} + @media print { + /** with the noprint class, you can hide any element in printout **/ + .o_noprint { @include o-ghost();} + /* (en) change font size unit to [pt] - avoiding problems with [px] unit in Gecko based browsers */ /* (de) Wechsel der der Schriftgrößen-Maßheinheit zu [pt] - Probleme mit Maßeinheit [px] in Gecko-basierten Browsern vermeiden */ body { font-size:10pt; } @@ -60,7 +70,11 @@ h1,h2,h3,h4,h5,h6{page-break-after:avoid} #b_page a[href^="http:"],#b_page a[href^="https:"]{padding-left:0;background-image:none} #b_col1_content:before,#b_col2_content:before,#b_col3_content:before{content:"";color:#888;background:inherit;display:block;font-weight:700;font-size:1.5em} - .b_floatbox,.b_subcolumns,.b_subcolums_oldgecko{overflow:visible;display:table} + .b_floatbox,.b_subcolumns,.b_subcolums_oldgecko{overflow:visible;display:table;} + + /* hide jsMath print warning */ + #jsMath_PrintWarning {@include o-ghost(); } + } diff --git a/src/main/webapp/static/themes/openolat/print/_p_content.scss b/src/main/webapp/static/themes/openolat/print/_p_content.scss deleted file mode 100644 index 05881930af4faf4e3c6f15042354de128bd62df2..0000000000000000000000000000000000000000 --- a/src/main/webapp/static/themes/openolat/print/_p_content.scss +++ /dev/null @@ -1,26 +0,0 @@ -@charset "UTF-8"; - -/* -* ================================================= -* -* content rules for OpenOLAT 8 (PRINT) -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 -* -* -* -* (as of yaml compliance, contains css rules for -* styling fonts, colors, font-style, etc. ) -* -* this file is included in layout.scss -* it is not compiled to a separate css-file... -* -* ================================================= -*/ - -@media print { - - - -} \ No newline at end of file diff --git a/src/main/webapp/static/themes/openolatexample/layout.css b/src/main/webapp/static/themes/openolatexample/layout.css index 51ebd5f3a107d8c7afb1636aedcd632e4dd76629..1976256b53b35d92605962c089faabdbb23a7cd2 100644 --- a/src/main/webapp/static/themes/openolatexample/layout.css +++ b/src/main/webapp/static/themes/openolatexample/layout.css @@ -73,1130 +73,278 @@ /* * ================================================= * -* basemod rules for OpenOLAT 8 +* ICON Rules for the OpenOLAT theme * * @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 +* @date Dez. 2011 * * also read themes.README! * -* (as of yaml compliance, contains css rules for -* positioning and sizing elements) -* -* this file is included in layout.scss -* it is not compiled to a separate css-file... * * ================================================= */ -@media all { - html { - min-height: 100%; } +.b_with_small_icon_left { + padding: 2px 0 2px 20px; + min-height: 16px; + background-position: 0 50%; + background-repeat: no-repeat; } - /** ----------------- MAIN LAYOUT ----------------- **/ - /** - * (en) Forcing vertical scrollbars in IE8, Firefox, Webkit & Opera - * (de) Erzwingen vertikaler Scrollbalken in IE8, Firefox, Webkit & Opera - * - * @workaround - * @affected IE8, FF, Webkit, Opera - * @css-for all - * @valid CSS3 - */ - body { - min-height: 100%; - overflow-y: scroll; - background: yellow; - background: -moz-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, yellow), color-stop(33%, red), color-stop(66%, blue), color-stop(100%, green)); - background: -webkit-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); - background: -o-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); - background: -ms-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); - background: linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='yellow', endColorstr='green',GradientType=0 ); } +option.b_with_small_icon_left { + padding: 0 0 0 20px; + vertical-align: middle; + min-height: 11px; + background-position: 0 50%; + background-repeat: no-repeat; } - #b_page_margins { - min-width: 740px; - max-width: 1324px; - margin: 0 auto; - width: 100%; - height: 100%; } +.b_with_small_icon_right { + padding: 1px 20px 1px 0px; + min-height: 16px; + background-position: 100% 50%; + background-repeat: no-repeat; } - #b_page_wrapper { - border-bottom: 1px solid lightGrey; } +.b_small_icon { + float: left; + display: inline; + width: 16px; + height: 16px; + background-position: 0 50%; + background-repeat: no-repeat; } - #b_main { - background: #fff; - clear: both; - moz-box-shadow: 0 0 14px #d3d3d3; - -ms-box-shadow: 0 0 14px #d3d3d3; - -o-box-shadow: 0 0 14px #d3d3d3; - -webkit-box-shadow: 0 0 14px #d3d3d3; - box-shadow: 0 0 14px #d3d3d3; } +a.b_small_icon:hover { + text-decoration: none; } - #b_page a#b_toplink { - position: absolute; - bottom: 1em; - right: 1em; - background: transparent url(../openolat/images/arrow_up.png) 0 50% no-repeat; - padding-left: 14px; - z-index: 5; } +/* ------- misc icons --------- */ +.b_info_icon { + background-image: url("../openolat/images/comment.png"); } - #b_header, #b_page, #b_col1_content, #b_col2_content, #b_col3_content, #b_col3_content_inner { - position: relative; } +.b_warn_icon { + background-image: url("../openolat/images/exclamation.png"); } - #b_col1 { - overflow: hidden; } +.b_error_icon { + background-image: url("../openolat/images/cross-circle.png"); } - #b_col1_content { - padding: 1em 10px 1em 0px; } +.b_new_icon { + background-image: url("../openolat/images/new-text.png"); } - #b_col3 { - border-left: 1px #DDD dotted; - border-right: 1px #DDD dotted; } +.b_institution_icon { + background-image: url("../openolat/images/home.png"); } - #b_col3_content { - min-height: 450px; - padding: 20px 20px 30px 20px; } +.b_group_icon { + background-image: url("../openolat/images/users.png"); } - #b_col2_content { - overflow: hidden; - padding: 1em 0; } +.b_user_icon { + background-image: url("../openolat/images/user.png"); } - .b_hidecol2 #b_col3 { - margin-right: 0 !important; - border-right: none; } +.b_move_left_icon { + background-image: url("../openolat/images/arrow_left_big.png"); } - .b_hidecol1 #b_col3 { - margin-left: 0 !important; - border-left: none; } +.b_move_right_icon { + background-image: url("../openolat/images/arrow_right_big.png"); } - .b_hideboth #b_col3 { - margin-left: 0 !important; - margin-right: 0 !important; - border-left: none; - border-right: none; } +.b_move_down_icon { + background-image: url("../openolat/images/arrow_down_big.png"); } - .b_hideboth #b_col1, .b_hideboth #b_col2, .b_hidecol1 #b_col1, .b_hidecol2 #b_col2, #b_ie_clearing { - display: none; } +.b_move_up_icon { + background-image: url("../openolat/images/arrow_up_big.png"); } - .b_c15r, .b_c20r, .b_c80r, .b_c85r { - float: right; - margin-left: -5px; } +.b_delete_icon { + background-image: url("../openolat/images/bin-metal-full.png"); } - .b_c15l, .b_c15r { - width: 15%; } +.b_share_icon { + background-image: url("../openolat/images/share.png"); } - .b_c20l, .b_c20r { - width: 20%; } +.b_status_enabled_icon { + background-image: url("../openolat/images/tick.png"); } - .b_c80l, .b_c80r { - width: 80%; } +.b_status_disabled_icon { + background-image: url("../openolat/images/cross.png"); } - .b_c85l, .b_c85r { - width: 85%; } +.b_edit_icon { + background-image: url("../openolat/images/docs/document--pencil.png"); } - .b_subcolumns_oldgecko, .b_c20l, .b_c15l, .b_c80l, .b_c85l { - float: left; } +.b_add_icon { + background-image: url("../openolat/images/plus-circle.png"); } - /* IFRAME */ - div.b_iframe_wrapper iframe { - width: 100%; - position: relative; - top: 0; - left: 0; - border: none; - margin: 0; - padding: 0; - background: transparent; } +.b_open_icon { + background-image: url("../openolat/images/control/control.png"); } - /* RedScreen View */ - #b_main.b_exception { - padding-left: 165px; - padding-right: 165px; } +.o_fulltext_search_button { + background-image: url("../openolat/images/magnifier-zoom.png"); } - /** ----------------- HEADER AND TOP NAVIGATION ----------------- **/ - #b_header { - height: auto; - min-height: 30px; - overflow: hidden; - position: relative; - /* the top-navigation */ } - #b_header #b_topnav { - position: absolute; - right: 0px; - top: 0px; - padding: 4px 15px 0px 0px; } - #b_header #b_topnav ul { - margin: 0; } - #b_header #b_topnav #o_topnav_search input { - line-height: 1.3em; - margin: 0; - width: 10em; } - #b_header #b_topnav #o_topnav_printview a { - background: url(../openolat/images/printer.png) no-repeat top right; - padding: 2px 20px 2px 0; - margin: 0; } - #b_header #b_topnav #o_topnav_logout a { - background: url("../openolat/images/control/control-power.png") no-repeat top right; - padding: 2px 20px 2px 0; - margin: 0; - font-weight: bold; } - #b_header #b_topnav li { - float: left; - list-style: none; - margin-left: 1.7em; } - #b_header #b_topnav li div.b_form_element_wrapper.b_form_horizontal { - margin: 0; } - #b_header #b_topnav li#o_topnav_imclient li { - margin-left: 0.5em; } +.o_help_icon { + background-image: url("../openolat/images/help.png"); } - /** ----------------- MAIN NAVIGATION ( TABS ) ----------------- **/ - #b_nav_main { - float: left; } - #b_nav_main ul { - padding-left: 40px; - margin: 0; } - #b_nav_main ul li { - float: left; - position: relative; - list-style: none; - margin: 0px; - padding: 4px 3px 4px 12px; - margin-right: 2px; - -webkit-border-top-left-radius: 6px; - -webkit-border-top-right-radius: 6px; - -webkit-border-bottom-right-radius: 0; - -webkit-border-bottom-left-radius: 0; - -moz-border-radius-topleft: 6px; - -moz-border-radius-topright: 6px; - -moz-border-radius-bottomright: 0; - -moz-border-radius-bottomleft: 0; - border-top-left-radius: 6px; - border-top-right-radius: 6px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - background: #fff; - background: rgba(255, 255, 255, 0.5); - /* -- SITES ( home, users, groups, etc. ) -- */ - /* -- TABS ( courses, wiki, etc.) -- */ - /* -- THE SPACER -- */ } - #b_nav_main ul li a { - /* "bloat" the links (better for touch) */ - padding: 4px 12px 4px 3px; } - #b_nav_main ul li a:hover { - text-decoration: none; } - #b_nav_main ul li.b_nav_site { - /** sites icons **/ } - #b_nav_main ul li.b_nav_site.b_nav_active, #b_nav_main ul li.b_nav_site:hover, #b_nav_main ul li.b_nav_site.b_exception { - moz-box-shadow: 0 -4px 8px -1px #d3d3d3; - -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; - -o-box-shadow: 0 -4px 8px -1px #d3d3d3; - -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; - box-shadow: 0 -4px 8px -1px #d3d3d3; - background: #fff; } - #b_nav_main ul li.b_nav_site.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_site:hover a.b_nav_tab_close, #b_nav_main ul li.b_nav_site.b_exception a.b_nav_tab_close { - background-image: url(../openolat/images/cross_small_trimmed_blue.png); } - #b_nav_main ul li.b_nav_site > div { - padding-left: 16px; - background-repeat: no-repeat; - background-position: 0% 50%; - background-image: url("../openolat/images/application.png"); } - #b_nav_main ul li.b_nav_site.o_site_home > div { - background-image: url("../openolat/images/home.png"); } - #b_nav_main ul li.b_nav_site.o_site_admin > div { - background-image: url("../openolat/images/wrench-screwdriver.png"); } - #b_nav_main ul li.b_nav_site.o_site_useradmin > div { - background-image: url("../openolat/images/user_conf.png"); } - #b_nav_main ul li.b_nav_site.o_site_groupsmanagement > div { - background-image: url("../openolat/images/users_conf.png"); } - #b_nav_main ul li.b_nav_site.o_site_repository > div { - background-image: url("../openolat/images/books-stack.png"); } - #b_nav_main ul li.b_nav_site.o_site_groups > div { - background-image: url("../openolat/images/users.png"); } - #b_nav_main ul li.b_nav_site.site_demo_icon > div { - background-image: url("../openolat/images/information-white.png"); } - #b_nav_main ul li.b_nav_site.f_site_library > div { - background-image: url("../openolat/images/library.png"); } - #b_nav_main ul li.b_nav_site.fx_members > div { - background-image: url("../openolat/images/users_members.png"); } - #b_nav_main ul li.b_nav_site.o_site_guidemo div { - background-image: url("../openolat/images/light-bulb.png"); } - #b_nav_main ul li.b_nav_site.b_resource_GroupInfoMainController div { - background-image: url(../openolat/images/users.png); } - #b_nav_main ul li.b_nav_tab { - margin-right: 4px; } - #b_nav_main ul li.b_nav_tab a.b_nav_tab_close { - position: absolute; - top: 3px; - right: 4px; - width: 13px; - height: 13px; - line-height: 0; - padding: 0; - margin: 0; - background: transparent url(../openolat/images/cross_small_trimmed_grey.png) no-repeat right top; } - #b_nav_main ul li.b_nav_tab.b_nav_active, #b_nav_main ul li.b_nav_tab:hover { - moz-box-shadow: 0 -4px 8px -1px #d3d3d3; - -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; - -o-box-shadow: 0 -4px 8px -1px #d3d3d3; - -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; - box-shadow: 0 -4px 8px -1px #d3d3d3; - background: #fff; } - #b_nav_main ul li.b_nav_tab.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_tab:hover a.b_nav_tab_close { - background-image: url(../openolat/images/cross_small_trimmed_blue.png); } - #b_nav_main ul li#b_nav_spacer { - background: none; - border: none; - width: 20px; - height: 1px; - padding: 0; } +.o_rss_icon { + background-image: url("../openolat/images/feed.png"); } - /** ----------------- SUB NAVIGATION (TREE) ----------------- **/ - /* note: the markup will be the one from OLATpro, has to be merged yet */ - div.b_tree { - font-size: 100%; - padding: 0; - /* the open/close node icons */ } - div.b_tree ul { - position: relative; - padding: 0; - margin: 0 0 0 1em; - list-style: none; - white-space: nowrap; - /* link to select the item with icon */ } - div.b_tree ul li { - position: relative; - background: transparent; - margin-left: 0; - padding-left: 0; - line-height: 1.7em; - /* selected, hovered, active <a> tag */ - /* icon positioning */ - /* decorators in tree (e.g. course-editor ) */ } - div.b_tree ul li a.b_tree_icon { - padding-left: 20px; - padding-top: 2px; - position: relative; - background-position: 0 50%; - background-repeat: no-repeat; } - div.b_tree ul li a { - color: #555555; } - div.b_tree ul li a.b_tree_l1 { - padding-left: 16px; } - div.b_tree ul li .b_tree_oc_l1 { - position: absolute; - top: 0px; - left: 0px; - z-index: 9; } - div.b_tree ul li a:focus, div.b_tree ul li a:hover { - color: red; - background-color: transparent; - text-decoration: underline; } - div.b_tree ul li a.b_tree_selected, div.b_tree ul li a:active { - color: red; - background-color: transparent; - text-decoration: none; } - div.b_tree ul li li a.b_tree_selected_parents, div.b_tree ul li a.b_tree_l0, div.b_tree ul li strong { - color: red; - font-weight: bold; } - div.b_tree ul li .b_tree_oc_l1 { - position: absolute; - top: 0px; - left: 1px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l2 { - position: absolute; - top: 0px; - left: 11px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l3 { - position: absolute; - top: 0px; - left: 21px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l4 { - position: absolute; - top: 0px; - left: 31px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l5 { - position: absolute; - top: 0px; - left: 41px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l6 { - position: absolute; - top: 0px; - left: 51px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l7 { - position: absolute; - top: 0px; - left: 61px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l8 { - position: absolute; - top: 0px; - left: 71px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l9 { - position: absolute; - top: 0px; - left: 81px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l10 { - position: absolute; - top: 0px; - left: 91px; - z-index: 9; } - div.b_tree ul li .b_tree_oc_l11 { - position: absolute; - top: 0px; - left: 101px; - z-index: 9; } - div.b_tree ul li a.b_tree_l0 { - padding-left: 5px; } - div.b_tree ul li a.b_tree_l1 { - padding-left: 15px; } - div.b_tree ul li a.b_tree_l2 { - padding-left: 25px; } - div.b_tree ul li a.b_tree_l3 { - padding-left: 35px; } - div.b_tree ul li a.b_tree_l4 { - padding-left: 45px; } - div.b_tree ul li a.b_tree_l5 { - padding-left: 55px; } - div.b_tree ul li a.b_tree_l6 { - padding-left: 65px; } - div.b_tree ul li a.b_tree_l7 { - padding-left: 75px; } - div.b_tree ul li a.b_tree_l8 { - padding-left: 85px; } - div.b_tree ul li a.b_tree_l9 { - padding-left: 95px; } - div.b_tree ul li a.b_tree_l10 { - padding-left: 105px; } - div.b_tree ul li a.b_tree_l11 { - padding-left: 115px; } - div.b_tree ul li span.b_tree_icon_decorator { - width: 12px; - height: 12px; - float: right; - display: inline; - position: static; - background-repeat: no-repeat; } - div.b_tree ul.b_tree_l0 a.b_tree_icon { - padding-left: 26px; - background-position: 8px 50%; } - div.b_tree ul.b_tree_l1 a.b_tree_icon { - padding-left: 36px; - background-position: 18px 50%; } - div.b_tree ul.b_tree_l2 a.b_tree_icon { - padding-left: 46px; - background-position: 28px 50%; } - div.b_tree ul.b_tree_l3 a.b_tree_icon { - padding-left: 56px; - background-position: 38px 50%; } - div.b_tree ul.b_tree_l4 a.b_tree_icon { - padding-left: 66px; - background-position: 48px 50%; } - div.b_tree ul.b_tree_l5 a.b_tree_icon { - padding-left: 76px; - background-position: 58px 50%; } - div.b_tree ul.b_tree_l6 a.b_tree_icon { - padding-left: 86px; - background-position: 68px 50%; } - div.b_tree ul.b_tree_l7 a.b_tree_icon { - padding-left: 96px; - background-position: 78px 50%; } - div.b_tree ul.b_tree_l8 a.b_tree_icon { - padding-left: 106px; - background-position: 88px 50%; } - div.b_tree ul.b_tree_l9 a.b_tree_icon { - padding-left: 116px; - background-position: 98px 50%; } - div.b_tree ul.b_tree_l10 a.b_tree_icon { - padding-left: 126px; - background-position: 108px 50%; } - div.b_tree ul.b_tree_l11 a.b_tree_icon { - padding-left: 136px; - background-position: 118px 50%; } - div.b_tree a.b_tree_level_close span { - background: url("../openolat/images/toggle-small.png") no-repeat 0% 50%; - padding-right: 8px; } - div.b_tree a.b_tree_level_open span { - background: url("../openolat/images/toggle-small-expand.png") no-repeat 0% 50%; - padding-right: 8px; } - div.b_tree a.b_tree_level_close:hover, div.b_tree a.b_tree_level_open:hover { - text-decoration: none; } +.o_login_guests { + background-image: url("../openolat/images/user_silhouette.png"); } - /** ----------------- FOOTER ----------------- **/ - #b_footer { - color: #9D9D9D; - padding: 8px 20px; - margin-top: 12px; } - #b_footer .b_floatbox { - padding-top: 8px; - border-top: 1px solid #ddd; } - #b_footer #b_footer_user { - float: left; - line-height: 16px; } - #b_footer #b_footer_user a.b_ajax { - background: url(../openolat/images/ajax.png) no-repeat; - width: 20px; - height: 16px; - display: block; - float: left; } - #b_footer #b_footer_version { - float: right; - display: block; } - #b_footer #b_footer_powered { - text-align: center; - width: auto; - background: none; } - #b_footer #b_footer_powered a { - display: inline; } +.o_login_pwd { + background-image: url("../openolat/images/user_excl.png"); } - /* --------------- MENU TOOLBAR & BREADCRUMBS ------------ **/ - #b_main.b_menu_toolbar #b_col1_content { - padding-top: 0; - padding-right: 0; } +.o_login_register { + background-image: url("../openolat/images/user_register.png"); } - #b_main.b_menu_toolbar #b_col3_content { - padding: 0; } +.o_news_icon { + background-image: url("../openolat/images/information-white.png"); } - div.b_menu_toolbar { - background: #f9f9f9; - background: -moz-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f9f9f9), color-stop(100%, #d0d0d0)); - background: -webkit-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: -o-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: -ms-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - background: linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#d0d0d0',GradientType=0 ); - border-bottom: 1px solid #7D7D7D; - padding: 5px 5px 2px 0; } +.o_course_icon { + background-image: url("../openolat/images/le_resources/book-open-text-image.png"); } - /* breadcrumbs */ - div.b_breadcumb_path { - padding: 0; - margin: 0; - float: left; - display: inline; } - div.b_breadcumb_path ul { - padding: 0; - margin: 0; - list-style: none; - float: left; - display: inline; } - div.b_breadcumb_path ul li { - padding: 0 7px 0 14px; - margin: 0; - list-style: none; - float: left; - display: inline; - background: url(../openolat/images/breadcrumb-separator.png) no-repeat left center; } - div.b_breadcumb_path ul li.b_first { - background: url(../openolat/images/home.png) no-repeat top left; - padding-left: 25px; } - div.b_breadcumb_path ul li a { - color: #464444; } - div.b_breadcumb_path ul li span.b_disabled { - color: #000; - padding: 0 10px 0 0; - margin: 0; } +.o_chat_icon { + background-image: url("../openolat/images/balloons-box.png"); } - div.b_breadcumb_content { - clear: both; - margin-top: 0.5em; - padding-top: 0.5em; - border-top: 1px solid #ACAAAA; } +.o_admin_icon { + background-image: url("../openolat/images/wrench-screwdriver.png"); } - /* NOTIFICATIONS */ - div.b_noti { - border: 1px solid #E9EAEF; - padding: 3px 23px 3px 3px; - float: right; - display: inline; - position: relative; - right: 0; - font-size: 95%; } - div.b_noti a.b_contexthelp { - position: absolute; - top: 2px; - right: 2px; } - div.b_noti a.b_noti_unsubscribe_link { - background: url(../openolat/images/mail--minus.png) no-repeat left 50%; - padding: 1px 0 1px 20px; } - div.b_noti a.b_noti_subscribe_link { - background: url(../openolat/images/mail--plus.png) no-repeat left 50%; - padding: 1px 0 1px 20px; } - div.b_noti a.b_noti_markedread_link { - background: url(../openolat/images/tick.png) no-repeat left 50%; - padding: 1px 0 1px 20px; } +.o_calendar_icon { + background-image: url("../openolat/images/calendar.png"); } - /* ---------- TITLE Wrapper --------------- */ - div.b_titled_wrapper div.b_noti { - position: absolute; - right: 25px; - top: 0px; } +/** ------- FLAGS ------ **/ +.b_flag_en { + background-image: url("../openolat/images/flags/gb.png"); } - div.b_titled_wrapper fieldset div.b_noti { - top: 12px; } +.b_flag_de { + background-image: url("../openolat/images/flags/de.png"); } - h1.b_titled_wrapper span { - padding-right: 4em; - font-style: italic; } +.b_flag_fr { + background-image: url("../openolat/images/flags/fr.png"); } - h2.b_titled_wrapper span { - padding-right: 4em; - font-style: italic; } +.b_flag_it { + background-image: url("../openolat/images/flags/it.png"); } - h3.b_titled_wrapper span { - padding-right: 4em; - font-style: italic; } +.b_flag_es { + background-image: url("../openolat/images/flags/es.png"); } - h4.b_titled_wrapper span { - padding-right: 3em; - font-style: italic; } +.b_flag_da { + background-image: url("../openolat/images/flags/dk.png"); } - h5.b_titled_wrapper span { - padding-right: 3em; - font-style: italic; } +.b_flag_cs { + background-image: url("../openolat/images/flags/cz.png"); } - div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { - background: #fff; - border: 0px; - padding: 0px; } - div.b_titled_wrapper a.b_togglebox_opened { - z-index: 10; - display: block; - width: 16px; - height: 16px; - position: absolute; - top: 5px; - left: 5px; - background: url(../openolat/images/information-white.png) no-repeat 0 50%; - padding: 0; } - div.b_titled_wrapper a.b_togglebox_closed { - display: block; - width: 20px; - height: 20px; - background: url(../openolat/images/information-white.png) no-repeat top left; - padding: 0; - /* Required for IE 5, 6, 7 */ - /* ...or something to trigger hasLayout, like zoom: 1; */ - zoom: 1; - /* Theoretically for IE 8 & 9 (more valid) */ - /* ...but not required as filter works too */ - /* should come BEFORE filter */ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=$percent)"; - /* This works in IE 8 & 9 too */ - /* ... but also 5, 6, 7 */ - filter: alpha(opacity=60); - /* Older than Firefox 0.9 */ - -moz-opacity: 0.6; - /* Safari 1.x (pre WebKit!) */ - -khtml-opacity: 0.6; - /* Modern! - /* Firefox 0.9+, Safari 2?, Chrome any? - /* Opera 9+, IE 9+ */ - opacity: 0.6; } - div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { - position: relative; - margin-bottom: 1em; } - div.b_titled_wrapper a.b_togglebox_hide span { - position: absolute; - bottom: 0; - right: 0; - padding: 0 6px 3px 0; } - div.b_titled_wrapper a.b_togglebox_hide:hover { - text-decoration: underline; } +.b_flag_el { + background-image: url("../openolat/images/flags/gr.png"); } - /* Needed for IE6 */ - div.b_titled_wrapper div.b_togglebox div.b_togglebox_content div.o_course_run_objectives { - position: relative; } +.b_flag_ru { + background-image: url("../openolat/images/flags/ru.png"); } - div.o_course_run_dropbox div.b_noti { - position: relative; - top: 0; - right: 25px; - border: 1px solid #FFFFFF; } +.b_flag_pl { + background-image: url("../openolat/images/flags/pl.png"); } - div.o_course_run_returnbox div.b_noti { - position: relative; - top: 0; - right: 25px; - border: 1px solid #FFFFFF; } +.b_flag_zh_CN { + background-image: url("../openolat/images/flags/cn.png"); } - div.o_course_run_solutionbox div.b_noti { - position: relative; - top: 0; - right: 25px; - border: 1px solid #FFFFFF; } +.b_flag_zh_TW { + background-image: url("../openolat/images/flags/tw.png"); } - /** ------------------ CATALOG ------------------------ **/ - div.o_catalog div.o_catalog_title { - display: none; } - div.o_catalog div.o_catalog_nav { - font-size: 95%; - padding: 1px 0 1px 20px; - border-bottom: 1px solid #EEE; - background: url(../openolat/images/folder_open.png) 0 50% no-repeat; } - div.o_catalog div.o_catalog_links { - margin-top: 1em; - padding-top: 1em; - border-top: 1px solid #EEE; } +.b_flag_lt { + background-image: url("../openolat/images/flags/lt.png"); } - /** -------------- TAGGING ---------------- **/ - /* tagging */ - .b_tag_list { - background: url(../openolat/images/tag-label-yellow.png) 0px 3px no-repeat !important; } +.b_flag_fa { + background-image: url("../openolat/images/flags/ir.png"); } - .b_tag_icon { - background-image: url(../openolat/images/tag-label-yellow.png); } +.b_flag_pt_PT { + background-image: url("../openolat/images/flags/pt.png"); } - div.b_tags { - margin: 2em 0; } - div.b_tags div { - padding: 0.5em 0 0 20px; } - div.b_tags span.b_tag { - font-size: 80%; - padding: 5px 2px 5px 2px; - line-height: 3em; - white-space: nowrap; } +.b_flag_pt_BR { + background-image: url("../openolat/images/flags/br.png"); } - div.o_ep_toc_editor div.b_subcl { - min-height: 35em; } +.b_flag_tr { + background-image: url("../openolat/images/flags/tr.png"); } - div.o_ep_struct_editor div.b_subcr { - min-height: 35em; - background: #FFF; - padding-right: 1em; - overflow-x: auto; } +.b_flag_hu { + background-image: url("../openolat/images/flags/hu.png"); } - div.b_struct_edit_btn { - float: right; - display: inline; } +.b_flag_sq { + background-image: url("../openolat/images/flags/al.png"); } - div.b_struct_submit_assess_btn { - float: right; - display: inline; } +.b_flag_in { + background-image: url("../openolat/images/flags/id.png"); } - /* TextboxList */ - *:first-child + html div.holder { - padding-bottom: 2px; } +.b_flag_ar { + background-image: url("../openolat/images/flags/eg.png"); } - * html div.holder { - padding-bottom: 2px; } +.b_flag_rm { + background-image: url("../openolat/images/flags/rm.png"); } - /* ie7 and below */ - .textbox-outer { - list-style-type: none; - margin-left: 0em; } +.b_flag_af { + background-image: url("../openolat/images/flags/za.png"); } - div.holder { - font-size: 80%; } +.b_flag_vi { + background-image: url("../openolat/images/flags/vn.png"); } - .textboxlist-auto { - position: absolute; - width: 300px; - overflow: show; } +.b_flag_mn { + background-image: url("../openolat/images/flags/mn.png"); } - /* autocompleter bitbox (item) holder */ - a.bit-box, span.b_tag { - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - border: 1px solid #CAD8F3; - background: #DEE7F8; - padding: 1px 5px 2px; - padding-right: 15px; - position: relative; } +.b_flag_iw { + background-image: url("../openolat/images/flags/il.png"); } - div.holder { - min-width: 200px; - width: auto; - margin: 0; - overflow: hidden; - height: auto !important; - height: 1%; - padding: 0px 0px 0; - cursor: text; - /* no left/right padding here please */ } - div.holder a { - float: left; - margin: 0 5px 4px 0; } - div.holder a.bit { - text-decoration: none; - color: black; } - div.holder a.bit:active, div.holder a.bit:focus { - outline: none; } - div.holder a.bit-box-focus { - border-color: #598BEC; - background: #598BEC; - color: #fff; } - div.holder a.bit-input input { - width: 100px; - margin: 0; - border: none; - background: white; - outline: 0; - padding: 3px 0 2px; } - div.holder a.bit-input input.smallinput { - width: 20px; } - div.holder a.bit-hover { - background: #BBCEF1; - border: 1px solid #6D95E0; } - div.holder a.bit-box-focus { - background: #598BEC; - color: #fff; } - div.holder a.bit-box a.closebutton { - position: absolute; - right: 0; - top: 5px; - display: block; - width: 7px; - height: 7px; - font-size: 1px; - background: url("../openolat/images/tag_x.gif"); } - div.holder a.bit-box a.closebutton:hover { - background-position: 7px; } - div.holder a.bit-box a.closebutton:active { - outline: none; } - div.holder a.bit-box-focus a.closebutton, div.holder a.bit-box-focus a.closebutton:hover { - background-position: bottom; } +.b_flag_ko { + background-image: url("../openolat/images/flags/kr.png"); } - .b_wizard .textbox-outer { - background: url(../openolat/images/tag-label-yellow.png) top left no-repeat; } - .b_wizard .textbox-outer li { - margin-left: 18px; } - .b_wizard div.holder a.bit-input input { - background: #f8f8f8; - padding: 0.4em; } +.b_flag_nl_NL { + background-image: url("../openolat/images/flags/nl.png"); } - /* Autocompleter for textboxlist */ - ol.textbox-outer { - margin: 0; - padding: 0; } +.b_flag_jp { + background-image: url("../openolat/images/flags/jp.png"); } - .textboxlist-auto { - display: none; - background: #eee; } - .textboxlist-auto .default { - padding: 5px 7px; - border: 1px solid #ccc; - border-width: 0 1px 1px; } - .textboxlist-auto ul { - display: none; - margin: 0; - padding: 0; - overflow: auto; } - .textboxlist-auto ul li { - padding: 5px 12px; - z-index: 1000; - cursor: pointer; - margin: 0; - list-style-type: none; - border: 1px solid #ccc; - border-width: 0 1px 1px; } - .textboxlist-auto ul li.loading-indicator { - padding-left: 30px; - background-position: 5px center; - cursor: defat; - font-size: 100.01% !important; - line-height: 1.5em; } - .textboxlist-auto ul li.more-indicator { - cursor: defat; - font-style: italic; } - .textboxlist-auto ul li em { - font-weight: bold; - font-style: normal; - background: #ccc; } - .textboxlist-auto ul li.auto-focus { - background: #4173CC; - color: #fff; } - .textboxlist-auto ul li.auto-focus em { - background: none; } +.b_flag_nb_NO { + background-image: url("../openolat/images/flags/no.png"); } - input.inputMessage { - color: #AAA; - font-size: 11px; } } -/* -* ================================================= -* -* ICON Rules for the OpenOLAT theme -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Dez. 2011 -* -* also read themes.README! -* -* -* ================================================= -*/ -.b_with_small_icon_left { - padding: 2px 0 2px 20px; - min-height: 16px; - background-position: 0 50%; - background-repeat: no-repeat; } +.b_flag_et_EE { + background-image: url("../openolat/images/flags/ee.png"); } -option.b_with_small_icon_left { - padding: 0 0 0 20px; - vertical-align: middle; - min-height: 11px; - background-position: 0 50%; - background-repeat: no-repeat; } +.b_flag_bg { + background-image: url("../openolat/images/flags/bg.png"); } -.b_with_small_icon_right { - padding: 1px 20px 1px 0px; - min-height: 16px; - background-position: 100% 50%; - background-repeat: no-repeat; } +.b_flag_hi_IN_ASIA { + background-image: url("../openolat/images/flags/in.png"); } -.b_small_icon { - float: left; - display: inline; - width: 16px; - height: 16px; - background-position: 0 50%; - background-repeat: no-repeat; } +.b_flag_ar_LB { + background-image: url("../openolat/images/flags/lb.png"); } -a.b_small_icon:hover { - text-decoration: none; } +.b_flag_de_FX_business { + background-image: url("../openolat/images/flags/de.png"); } -/* ------- misc icons --------- */ -.b_info_icon { - background-image: url("../openolat/images/comment.png"); } +.b_flag_de_FX_school { + background-image: url("../openolat/images/flags/de.png"); } -.b_warn_icon { - background-image: url("../openolat/images/exclamation.png"); } +.b_flag_en_FX_business { + background-image: url("../openolat/images/flags/gb.png"); } -.b_error_icon { - background-image: url("../openolat/images/cross-circle.png"); } +.b_flag_en_FX_school { + background-image: url("../openolat/images/flags/gb.png"); } -.b_new_icon { - background-image: url("../openolat/images/new-text.png"); } +/** ------- FILE TYPES ------- **/ +/* first the default that is used as base class. will be overriden by following classes */ +.b_filetype_file, .b_filetype_ico { + background-image: url("../openolat/images/docs/document_plain.png") !important; } -.b_institution_icon { - background-image: url("../openolat/images/home.png"); } +/* filesystem icons, mark important to override ext definitions */ +.b_filetype_avi_icon { + background-image: url("../openolat/images/docs/document-film.png") !important; } -.b_group_icon { - background-image: url("../openolat/images/users.png"); } +.b_filetype_bat_icon { + background-image: url("../openolat/images/docs/document-binary.png") !important; } -.b_user_icon { - background-image: url("../openolat/images/user.png"); } +.b_filetype_bmp { + background-image: url("../openolat/images/docs/document-image.png") !important; } -.b_move_left_icon { - background-image: url("../openolat/images/arrow_left_big.png"); } +.b_filetype_css { + background-image: url("../openolat/images/docs/document_tags.png") !important; } -.b_move_right_icon { - background-image: url("../openolat/images/arrow_right_big.png"); } +.b_filetype_doc, .b_filetype_docx { + background-image: url("../openolat/images/docs/document-word.png") !important; } -.b_move_down_icon { - background-image: url("../openolat/images/arrow_down_big.png"); } +.b_filetype_dvi { + background-image: url("../openolat/images/docs/document-film.png") !important; } -.b_move_up_icon { - background-image: url("../openolat/images/arrow_up_big.png"); } +.b_filetype_exe { + background-image: url("../openolat/images/docs/document-binary.png") !important; } -.b_delete_icon { - background-image: url("../openolat/images/bin-metal-full.png"); } - -.b_share_icon { - background-image: url("../openolat/images/share.png"); } - -.b_status_enabled_icon { - background-image: url("../openolat/images/tick.png"); } - -.b_status_disabled_icon { - background-image: url("../openolat/images/cross.png"); } - -.b_edit_icon { - background-image: url("../openolat/images/docs/document--pencil.png"); } - -.b_add_icon { - background-image: url("../openolat/images/plus-circle.png"); } - -.b_open_icon { - background-image: url("../openolat/images/control/control.png"); } - -.o_fulltext_search_button { - background-image: url("../openolat/images/magnifier-zoom.png"); } - -.o_help_icon { - background-image: url("../openolat/images/help.png"); } - -.o_rss_icon { - background-image: url("../openolat/images/feed.png"); } - -.o_login_guests { - background-image: url("../openolat/images/user_silhouette.png"); } - -.o_login_pwd { - background-image: url("../openolat/images/user_excl.png"); } - -.o_login_register { - background-image: url("../openolat/images/user_register.png"); } - -.o_news_icon { - background-image: url("../openolat/images/information-white.png"); } - -.o_course_icon { - background-image: url("../openolat/images/le_resources/book-open-text-image.png"); } - -.o_chat_icon { - background-image: url("../openolat/images/balloons-box.png"); } - -.o_admin_icon { - background-image: url("../openolat/images/wrench-screwdriver.png"); } - -.o_calendar_icon { - background-image: url("../openolat/images/calendar.png"); } - -/** ------- FLAGS ------ **/ -.b_flag_en { - background-image: url("../openolat/images/flags/gb.png"); } - -.b_flag_de { - background-image: url("../openolat/images/flags/de.png"); } - -.b_flag_fr { - background-image: url("../openolat/images/flags/fr.png"); } - -.b_flag_it { - background-image: url("../openolat/images/flags/it.png"); } - -.b_flag_es { - background-image: url("../openolat/images/flags/es.png"); } - -.b_flag_da { - background-image: url("../openolat/images/flags/dk.png"); } - -.b_flag_cs { - background-image: url("../openolat/images/flags/cz.png"); } - -.b_flag_el { - background-image: url("../openolat/images/flags/gr.png"); } - -.b_flag_ru { - background-image: url("../openolat/images/flags/ru.png"); } - -.b_flag_pl { - background-image: url("../openolat/images/flags/pl.png"); } - -.b_flag_zh_CN { - background-image: url("../openolat/images/flags/cn.png"); } - -.b_flag_zh_TW { - background-image: url("../openolat/images/flags/tw.png"); } - -.b_flag_lt { - background-image: url("../openolat/images/flags/lt.png"); } - -.b_flag_fa { - background-image: url("../openolat/images/flags/ir.png"); } - -.b_flag_pt_PT { - background-image: url("../openolat/images/flags/pt.png"); } - -.b_flag_pt_BR { - background-image: url("../openolat/images/flags/br.png"); } - -.b_flag_tr { - background-image: url("../openolat/images/flags/tr.png"); } - -.b_flag_hu { - background-image: url("../openolat/images/flags/hu.png"); } - -.b_flag_sq { - background-image: url("../openolat/images/flags/al.png"); } - -.b_flag_in { - background-image: url("../openolat/images/flags/id.png"); } - -.b_flag_ar { - background-image: url("../openolat/images/flags/eg.png"); } - -.b_flag_rm { - background-image: url("../openolat/images/flags/rm.png"); } - -.b_flag_af { - background-image: url("../openolat/images/flags/za.png"); } - -.b_flag_vi { - background-image: url("../openolat/images/flags/vn.png"); } - -.b_flag_mn { - background-image: url("../openolat/images/flags/mn.png"); } - -.b_flag_iw { - background-image: url("../openolat/images/flags/il.png"); } - -.b_flag_ko { - background-image: url("../openolat/images/flags/kr.png"); } - -.b_flag_nl_NL { - background-image: url("../openolat/images/flags/nl.png"); } - -.b_flag_jp { - background-image: url("../openolat/images/flags/jp.png"); } - -.b_flag_nb_NO { - background-image: url("../openolat/images/flags/no.png"); } - -.b_flag_et_EE { - background-image: url("../openolat/images/flags/ee.png"); } - -.b_flag_bg { - background-image: url("../openolat/images/flags/bg.png"); } - -.b_flag_hi_IN_ASIA { - background-image: url("../openolat/images/flags/in.png"); } - -.b_flag_ar_LB { - background-image: url("../openolat/images/flags/lb.png"); } - -.b_flag_de_FX_business { - background-image: url("../openolat/images/flags/de.png"); } - -.b_flag_de_FX_school { - background-image: url("../openolat/images/flags/de.png"); } - -.b_flag_en_FX_business { - background-image: url("../openolat/images/flags/gb.png"); } - -.b_flag_en_FX_school { - background-image: url("../openolat/images/flags/gb.png"); } - -/** ------- FILE TYPES ------- **/ -/* first the default that is used as base class. will be overriden by following classes */ -.b_filetype_file, .b_filetype_ico { - background-image: url("../openolat/images/docs/document_plain.png") !important; } - -/* filesystem icons, mark important to override ext definitions */ -.b_filetype_avi_icon { - background-image: url("../openolat/images/docs/document-film.png") !important; } - -.b_filetype_bat_icon { - background-image: url("../openolat/images/docs/document-binary.png") !important; } - -.b_filetype_bmp { - background-image: url("../openolat/images/docs/document-image.png") !important; } - -.b_filetype_css { - background-image: url("../openolat/images/docs/document_tags.png") !important; } - -.b_filetype_doc, .b_filetype_docx { - background-image: url("../openolat/images/docs/document-word.png") !important; } - -.b_filetype_dvi { - background-image: url("../openolat/images/docs/document-film.png") !important; } - -.b_filetype_exe { - background-image: url("../openolat/images/docs/document-binary.png") !important; } - -div.b_ext_elem .x-tree-node-expanded .x-tree-node-icon.b_filetype_folder, .b_filetype_folder_open { - background-image: url("../openolat/images/folder_open.png") !important; } +div.b_ext_elem .x-tree-node-expanded .x-tree-node-icon.b_filetype_folder, .b_filetype_folder_open { + background-image: url("../openolat/images/folder_open.png") !important; } .b_filetype_folder { background-image: url("../openolat/images/folder.png") !important; } @@ -1420,143 +568,1024 @@ li a.b_toolbox_publish { li a.b_toolbox_move { background-image: url("../openolat/images/docs/document_move.png"); } -li a.b_toolbox_close { - background-image: url("../openolat/images/close.png"); } +li a.b_toolbox_close { + background-image: url("../openolat/images/close.png"); } + +li a.b_toolbox_delete { + background-image: url("../openolat/images/bin-metal-full.png"); } + +li a.b_toolbox_copy, .b_copy_icon { + background-image: url("../openolat/images/docs/document-copy.png"); } + +/* --------- menu icon decorators -------- */ +.o_midlock { + top: 9px; + left: 9px; + background-image: url("../openolat/images/decorator/deco_condition.png"); } + +.o_miderr { + top: 8px; + left: -2px; + background-image: url("../openolat/images/decorator/deco_error.png"); } + +.o_midwarn { + top: 8px; + left: -2px; + background-image: url("../openolat/images/decorator/deco_warn.png"); } + +.o_midpub { + top: -2px; + left: 9px; + background-image: url("../openolat/images/decorator/deco_ok.png"); } + +/* --------- course building block icons ------------------- */ +.o_bc_icon { + background-image: url("../openolat/images/folder.png") !important; } + +.o_co_icon { + background-image: url("../openolat/images/mail.png") !important; } + +.o_cp_icon { + background-image: url("../openolat/images/le_resources/box.png") !important; } + +.o_cp_org { + background-image: url("../openolat/images/le_resources/box.png") !important; } + +.o_cp_item { + background-image: url("../openolat/images/docs/document-text.png") !important; } + +.o_dialog_icon { + background-image: url("../openolat/images/docs/document_discuss.png") !important; } + +.o_en_icon { + background-image: url("../openolat/images/enrol.png") !important; } + +.o_fo_icon { + background-image: url("../openolat/images/forum/forum.png") !important; } + +.o_iqself_icon { + background-image: url("../openolat/images/le_resources/selftest.png") !important; } + +.o_iqsurv_icon { + background-image: url("../openolat/images/le_resources/survey.png") !important; } + +.o_iqtest_icon { + background-image: url("../openolat/images/le_resources/test.png") !important; } + +.o_ms_icon { + background-image: url("../openolat/images/le_resources/thumb-up.png") !important; } + +.o_scorm_icon, .o_scorm_org { + background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + +.o_scorm_item { + background-image: url("../openolat/images/docs/document-text.png") !important; } + +.o_scorm_asset { + background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + +.o_sp_icon { + background-image: url("../openolat/images/docs/document-text.png") !important; } + +.o_st_icon { + background-image: url("../openolat/images/node-select-all.png") !important; } + +.o_ta_icon { + background-image: url("../openolat/images/docs/document-task.png") !important; } + +.o_tu_icon { + background-image: url("../openolat/images/docs/document-import.png") !important; } + +.o_wiki_icon { + background-image: url("../openolat/images/le_resources/wiki.png") !important; } + +.o_ll_icon { + background-image: url("../openolat/images/docs/document_linklist.png") !important; } + +.o_cl_icon { + background-image: url("../openolat/images/clipboard-task.png") !important; } + +.o_den_icon { + background-image: url("../openolat/images/clock.png") !important; } + +.o_projectbroker_icon { + background-image: url("../openolat/images/projectbroker.png") !important; } + +.o_podcast_icon { + background-image: url("../openolat/images/le_resources/media-player-cast.png") !important; } + +.o_blog_icon { + background-image: url("../openolat/images/le_resources/blog.png") !important; } + +.o_cal_icon { + background-image: url("../openolat/images/calendar.png") !important; } + +.o_lti_icon { + background-image: url("../openolat/images/docs/document-node.png") !important; } + +/* <OLATCE-103> */ +.o_vc_icon { + background-image: url("../openolat/images/projection-screen.png") !important; } + +/* </OLATCE-103> */ +.o_vitero_icon { + background-image: url("../openolat/images/vitero.png") !important; } + +.o_ep_icon, .o_EPStructuredMapTemplate_icon { + background-image: url("../openolat/images/le_resources/portfolio.png") !important; } + +.o_infomsg_icon { + background-image: url("../openolat/images/information-button.png") !important; } + +.o_cmembers_icon { + background-image: url("../openolat/images/users.png") !important; } + +.fx_members_icon { + background-image: url("../openolat/images/users_members.png") !important; } + +body#b_body .o_CourseModule_icon_closed { + background-image: url("../openolat/images/le_resources/book-open-text-image_locked.png"); } + +/* +* ================================================= +* +* basemod rules for OpenOLAT 8 +* +* @author strentini, sergio.trentini@frentix.com, www.frentix.com +* @date Nov. 2011 +* +* also read themes.README! +* +* (as of yaml compliance, contains css rules for +* positioning and sizing elements) +* +* this file is included in layout.scss +* it is not compiled to a separate css-file... +* +* ================================================= +*/ +@media all { + html { + min-height: 100%; } + + /** ----------------- MAIN LAYOUT ----------------- **/ + /** + * (en) Forcing vertical scrollbars in IE8, Firefox, Webkit & Opera + * (de) Erzwingen vertikaler Scrollbalken in IE8, Firefox, Webkit & Opera + * + * @workaround + * @affected IE8, FF, Webkit, Opera + * @css-for all + * @valid CSS3 + */ + body { + min-height: 100%; + overflow-y: scroll; + background: yellow; + background: -moz-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, yellow), color-stop(33%, red), color-stop(66%, blue), color-stop(100%, green)); + background: -webkit-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); + background: -o-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); + background: -ms-linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); + background: linear-gradient(top, yellow 0%, red 33%, blue 66%, green 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='yellow', endColorstr='green',GradientType=0 ); } + + #b_page_margins { + min-width: 740px; + max-width: 1324px; + margin: 0 auto; + width: 100%; + height: 100%; } + + #b_page_wrapper { + border-bottom: 1px solid lightGrey; } + + #b_main { + background: #fff; + clear: both; + moz-box-shadow: 0 0 14px #d3d3d3; + -ms-box-shadow: 0 0 14px #d3d3d3; + -o-box-shadow: 0 0 14px #d3d3d3; + -webkit-box-shadow: 0 0 14px #d3d3d3; + box-shadow: 0 0 14px #d3d3d3; } + + #b_page a#b_toplink { + position: absolute; + bottom: 1em; + right: 1em; + background: transparent url(../openolat/images/arrow_up.png) 0 50% no-repeat; + padding-left: 14px; + z-index: 5; } + + #b_header, #b_page, #b_col1_content, #b_col2_content, #b_col3_content, #b_col3_content_inner { + position: relative; } + + #b_col1 { + overflow: hidden; } + + #b_col1_content { + padding: 1em 10px 1em 0px; } + + #b_col3 { + border-left: 1px #DDD dotted; + border-right: 1px #DDD dotted; } + + #b_col3_content { + min-height: 450px; + padding: 20px 20px 30px 20px; } + + #b_col2_content { + overflow: hidden; + padding: 1em 0; } + + .b_hidecol2 #b_col3 { + margin-right: 0 !important; + border-right: none; } + + .b_hidecol1 #b_col3 { + margin-left: 0 !important; + border-left: none; } + + .b_hideboth #b_col3 { + margin-left: 0 !important; + margin-right: 0 !important; + border-left: none; + border-right: none; } + + .b_hideboth #b_col1, .b_hideboth #b_col2, .b_hidecol1 #b_col1, .b_hidecol2 #b_col2, #b_ie_clearing { + display: none; } + + .b_c15r, .b_c20r, .b_c80r, .b_c85r { + float: right; + margin-left: -5px; } + + .b_c15l, .b_c15r { + width: 15%; } + + .b_c20l, .b_c20r { + width: 20%; } + + .b_c80l, .b_c80r { + width: 80%; } + + .b_c85l, .b_c85r { + width: 85%; } + + .b_subcolumns_oldgecko, .b_c20l, .b_c15l, .b_c80l, .b_c85l { + float: left; } + + /* IFRAME */ + div.b_iframe_wrapper iframe { + width: 100%; + position: relative; + top: 0; + left: 0; + border: none; + margin: 0; + padding: 0; + background: transparent; } + + /* RedScreen View */ + #b_main.b_exception { + padding-left: 165px; + padding-right: 165px; } + + /** ----------------- HEADER AND TOP NAVIGATION ----------------- **/ + #b_header { + height: auto; + min-height: 30px; + overflow: hidden; + position: relative; + /* the top-navigation */ } + #b_header #b_topnav { + position: absolute; + right: 0px; + top: 0px; + padding: 4px 15px 0px 0px; } + #b_header #b_topnav ul { + margin: 0; } + #b_header #b_topnav #o_topnav_search input { + line-height: 1.3em; + margin: 0; + width: 10em; } + #b_header #b_topnav #o_topnav_printview a { + background: url(../openolat/images/printer.png) no-repeat top right; + padding: 2px 20px 2px 0; + margin: 0; } + #b_header #b_topnav #o_topnav_logout a { + background: url("../openolat/images/control/control-power.png") no-repeat top right; + padding: 2px 20px 2px 0; + margin: 0; + font-weight: bold; } + #b_header #b_topnav li { + float: left; + list-style: none; + margin-left: 1.7em; } + #b_header #b_topnav li div.b_form_element_wrapper.b_form_horizontal { + margin: 0; } + #b_header #b_topnav li#o_topnav_imclient li { + margin-left: 0.5em; } + + /** ----------------- MAIN NAVIGATION ( TABS ) ----------------- **/ + #b_nav_main { + float: left; } + #b_nav_main ul { + padding-left: 40px; + margin: 0; } + #b_nav_main ul li { + float: left; + position: relative; + list-style: none; + margin: 0px; + padding: 4px 3px 4px 12px; + margin-right: 2px; + -webkit-border-top-left-radius: 6px; + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 0; + -webkit-border-bottom-left-radius: 0; + -moz-border-radius-topleft: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 0; + -moz-border-radius-bottomleft: 0; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + background: #fff; + background: rgba(255, 255, 255, 0.5); + /* -- SITES ( home, users, groups, etc. ) -- */ + /* -- TABS ( courses, wiki, etc.) -- */ + /* -- THE SPACER -- */ } + #b_nav_main ul li a { + /* "bloat" the links (better for touch) */ + padding: 4px 12px 4px 3px; } + #b_nav_main ul li a:hover { + text-decoration: none; } + #b_nav_main ul li.b_nav_site { + /** sites icons **/ } + #b_nav_main ul li.b_nav_site.b_nav_active, #b_nav_main ul li.b_nav_site:hover, #b_nav_main ul li.b_nav_site.b_exception { + moz-box-shadow: 0 -4px 8px -1px #d3d3d3; + -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; + -o-box-shadow: 0 -4px 8px -1px #d3d3d3; + -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; + box-shadow: 0 -4px 8px -1px #d3d3d3; + background: #fff; } + #b_nav_main ul li.b_nav_site.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_site:hover a.b_nav_tab_close, #b_nav_main ul li.b_nav_site.b_exception a.b_nav_tab_close { + background-image: url(../openolat/images/cross_small_trimmed_blue.png); } + #b_nav_main ul li.b_nav_site > div { + padding-left: 16px; + background-repeat: no-repeat; + background-position: 0% 50%; + background-image: url("../openolat/images/application.png"); } + #b_nav_main ul li.b_nav_site.o_site_home > div { + background-image: url("../openolat/images/home.png"); } + #b_nav_main ul li.b_nav_site.o_site_admin > div { + background-image: url("../openolat/images/wrench-screwdriver.png"); } + #b_nav_main ul li.b_nav_site.o_site_useradmin > div { + background-image: url("../openolat/images/user_conf.png"); } + #b_nav_main ul li.b_nav_site.o_site_groupsmanagement > div { + background-image: url("../openolat/images/users_conf.png"); } + #b_nav_main ul li.b_nav_site.o_site_repository > div { + background-image: url("../openolat/images/books-stack.png"); } + #b_nav_main ul li.b_nav_site.o_site_groups > div { + background-image: url("../openolat/images/users.png"); } + #b_nav_main ul li.b_nav_site.site_demo_icon > div { + background-image: url("../openolat/images/information-white.png"); } + #b_nav_main ul li.b_nav_site.f_site_library > div { + background-image: url("../openolat/images/library.png"); } + #b_nav_main ul li.b_nav_site.fx_members > div { + background-image: url("../openolat/images/users_members.png"); } + #b_nav_main ul li.b_nav_site.o_site_guidemo div { + background-image: url("../openolat/images/light-bulb.png"); } + #b_nav_main ul li.b_nav_site.b_resource_GroupInfoMainController div { + background-image: url(../openolat/images/users.png); } + #b_nav_main ul li.b_nav_tab { + margin-right: 4px; } + #b_nav_main ul li.b_nav_tab a.b_nav_tab_close { + position: absolute; + top: 3px; + right: 4px; + width: 13px; + height: 13px; + line-height: 0; + padding: 0; + margin: 0; + background: transparent url(../openolat/images/cross_small_trimmed_grey.png) no-repeat right top; } + #b_nav_main ul li.b_nav_tab.b_nav_active, #b_nav_main ul li.b_nav_tab:hover { + moz-box-shadow: 0 -4px 8px -1px #d3d3d3; + -ms-box-shadow: 0 -4px 8px -1px #d3d3d3; + -o-box-shadow: 0 -4px 8px -1px #d3d3d3; + -webkit-box-shadow: 0 -4px 8px -1px #d3d3d3; + box-shadow: 0 -4px 8px -1px #d3d3d3; + background: #fff; } + #b_nav_main ul li.b_nav_tab.b_nav_active a.b_nav_tab_close, #b_nav_main ul li.b_nav_tab:hover a.b_nav_tab_close { + background-image: url(../openolat/images/cross_small_trimmed_blue.png); } + #b_nav_main ul li#b_nav_spacer { + background: none; + border: none; + width: 20px; + height: 1px; + padding: 0; } + + /** ----------------- SUB NAVIGATION (TREE) ----------------- **/ + /* note: the markup will be the one from OLATpro, has to be merged yet */ + div.b_tree { + font-size: 100%; + padding: 0; + /* the open/close node icons */ } + div.b_tree ul { + position: relative; + padding: 0; + margin: 0 0 0 1em; + list-style: none; + white-space: nowrap; + /* link to select the item with icon */ } + div.b_tree ul li { + position: relative; + background: transparent; + margin-left: 0; + padding-left: 0; + line-height: 1.7em; + /* selected, hovered, active <a> tag */ + /* icon positioning */ + /* decorators in tree (e.g. course-editor ) */ } + div.b_tree ul li a.b_tree_icon { + padding-left: 20px; + padding-top: 2px; + position: relative; + background-position: 0 50%; + background-repeat: no-repeat; } + div.b_tree ul li a { + color: #555555; } + div.b_tree ul li a.b_tree_l1 { + padding-left: 16px; } + div.b_tree ul li .b_tree_oc_l1 { + position: absolute; + top: 0px; + left: 0px; + z-index: 9; } + div.b_tree ul li a:focus, div.b_tree ul li a:hover { + color: red; + background-color: transparent; + text-decoration: underline; } + div.b_tree ul li a.b_tree_selected, div.b_tree ul li a:active { + color: red; + background-color: transparent; + text-decoration: none; } + div.b_tree ul li li a.b_tree_selected_parents, div.b_tree ul li a.b_tree_l0, div.b_tree ul li strong { + color: red; + font-weight: bold; } + div.b_tree ul li .b_tree_oc_l1 { + position: absolute; + top: 0px; + left: 1px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l2 { + position: absolute; + top: 0px; + left: 11px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l3 { + position: absolute; + top: 0px; + left: 21px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l4 { + position: absolute; + top: 0px; + left: 31px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l5 { + position: absolute; + top: 0px; + left: 41px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l6 { + position: absolute; + top: 0px; + left: 51px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l7 { + position: absolute; + top: 0px; + left: 61px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l8 { + position: absolute; + top: 0px; + left: 71px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l9 { + position: absolute; + top: 0px; + left: 81px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l10 { + position: absolute; + top: 0px; + left: 91px; + z-index: 9; } + div.b_tree ul li .b_tree_oc_l11 { + position: absolute; + top: 0px; + left: 101px; + z-index: 9; } + div.b_tree ul li a.b_tree_l0 { + padding-left: 5px; } + div.b_tree ul li a.b_tree_l1 { + padding-left: 15px; } + div.b_tree ul li a.b_tree_l2 { + padding-left: 25px; } + div.b_tree ul li a.b_tree_l3 { + padding-left: 35px; } + div.b_tree ul li a.b_tree_l4 { + padding-left: 45px; } + div.b_tree ul li a.b_tree_l5 { + padding-left: 55px; } + div.b_tree ul li a.b_tree_l6 { + padding-left: 65px; } + div.b_tree ul li a.b_tree_l7 { + padding-left: 75px; } + div.b_tree ul li a.b_tree_l8 { + padding-left: 85px; } + div.b_tree ul li a.b_tree_l9 { + padding-left: 95px; } + div.b_tree ul li a.b_tree_l10 { + padding-left: 105px; } + div.b_tree ul li a.b_tree_l11 { + padding-left: 115px; } + div.b_tree ul li span.b_tree_icon_decorator { + width: 12px; + height: 12px; + float: right; + display: inline; + position: static; + background-repeat: no-repeat; } + div.b_tree ul.b_tree_l0 a.b_tree_icon { + padding-left: 26px; + background-position: 8px 50%; } + div.b_tree ul.b_tree_l1 a.b_tree_icon { + padding-left: 36px; + background-position: 18px 50%; } + div.b_tree ul.b_tree_l2 a.b_tree_icon { + padding-left: 46px; + background-position: 28px 50%; } + div.b_tree ul.b_tree_l3 a.b_tree_icon { + padding-left: 56px; + background-position: 38px 50%; } + div.b_tree ul.b_tree_l4 a.b_tree_icon { + padding-left: 66px; + background-position: 48px 50%; } + div.b_tree ul.b_tree_l5 a.b_tree_icon { + padding-left: 76px; + background-position: 58px 50%; } + div.b_tree ul.b_tree_l6 a.b_tree_icon { + padding-left: 86px; + background-position: 68px 50%; } + div.b_tree ul.b_tree_l7 a.b_tree_icon { + padding-left: 96px; + background-position: 78px 50%; } + div.b_tree ul.b_tree_l8 a.b_tree_icon { + padding-left: 106px; + background-position: 88px 50%; } + div.b_tree ul.b_tree_l9 a.b_tree_icon { + padding-left: 116px; + background-position: 98px 50%; } + div.b_tree ul.b_tree_l10 a.b_tree_icon { + padding-left: 126px; + background-position: 108px 50%; } + div.b_tree ul.b_tree_l11 a.b_tree_icon { + padding-left: 136px; + background-position: 118px 50%; } + div.b_tree a.b_tree_level_close span { + background: url("../openolat/images/toggle-small.png") no-repeat 0% 50%; + padding-right: 8px; } + div.b_tree a.b_tree_level_open span { + background: url("../openolat/images/toggle-small-expand.png") no-repeat 0% 50%; + padding-right: 8px; } + div.b_tree a.b_tree_level_close:hover, div.b_tree a.b_tree_level_open:hover { + text-decoration: none; } + + /** ----------------- FOOTER ----------------- **/ + #b_footer { + color: #9D9D9D; + padding: 8px 20px; + margin-top: 12px; } + #b_footer .b_floatbox { + padding-top: 8px; + border-top: 1px solid #ddd; } + #b_footer #b_footer_user { + float: left; + line-height: 16px; } + #b_footer #b_footer_user a.b_ajax { + background: url(../openolat/images/ajax.png) no-repeat; + width: 20px; + height: 16px; + display: block; + float: left; } + #b_footer #b_footer_version { + float: right; + display: block; } + #b_footer #b_footer_powered { + text-align: center; + width: auto; + background: none; } + #b_footer #b_footer_powered a { + display: inline; } -li a.b_toolbox_delete { - background-image: url("../openolat/images/bin-metal-full.png"); } + /* --------------- MENU TOOLBAR & BREADCRUMBS ------------ **/ + #b_main.b_menu_toolbar #b_col1_content { + padding-top: 0; + padding-right: 0; } -li a.b_toolbox_copy, .b_copy_icon { - background-image: url("../openolat/images/docs/document-copy.png"); } + #b_main.b_menu_toolbar #b_col3_content { + padding: 0; } -/* --------- menu icon decorators -------- */ -.o_midlock { - top: 9px; - left: 9px; - background-image: url("../openolat/images/decorator/deco_condition.png"); } + div.b_menu_toolbar { + background: #f9f9f9; + background: -moz-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f9f9f9), color-stop(100%, #d0d0d0)); + background: -webkit-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: -o-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: -ms-linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + background: linear-gradient(top, #f9f9f9 0%, #d0d0d0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f9f9f9', endColorstr='#d0d0d0',GradientType=0 ); + border-bottom: 1px solid #7D7D7D; + padding: 5px 5px 2px 0; } -.o_miderr { - top: 8px; - left: -2px; - background-image: url("../openolat/images/decorator/deco_error.png"); } + /* breadcrumbs */ + div.b_breadcumb_path { + padding: 0; + margin: 0; + float: left; + display: inline; } + div.b_breadcumb_path ul { + padding: 0; + margin: 0; + list-style: none; + float: left; + display: inline; } + div.b_breadcumb_path ul li { + padding: 0 7px 0 14px; + margin: 0; + list-style: none; + float: left; + display: inline; + background: url(../openolat/images/breadcrumb-separator.png) no-repeat left center; } + div.b_breadcumb_path ul li.b_first { + background: url(../openolat/images/home.png) no-repeat top left; + padding-left: 25px; } + div.b_breadcumb_path ul li a { + color: #464444; } + div.b_breadcumb_path ul li span.b_disabled { + color: #000; + padding: 0 10px 0 0; + margin: 0; } -.o_midwarn { - top: 8px; - left: -2px; - background-image: url("../openolat/images/decorator/deco_warn.png"); } + div.b_breadcumb_content { + clear: both; + margin-top: 0.5em; + padding-top: 0.5em; + border-top: 1px solid #ACAAAA; } -.o_midpub { - top: -2px; - left: 9px; - background-image: url("../openolat/images/decorator/deco_ok.png"); } + /* NOTIFICATIONS */ + div.b_noti { + border: 1px solid #E9EAEF; + padding: 3px 23px 3px 3px; + float: right; + display: inline; + position: relative; + right: 0; + font-size: 95%; } + div.b_noti a.b_contexthelp { + position: absolute; + top: 2px; + right: 2px; } + div.b_noti a.b_noti_unsubscribe_link { + background: url(../openolat/images/mail--minus.png) no-repeat left 50%; + padding: 1px 0 1px 20px; } + div.b_noti a.b_noti_subscribe_link { + background: url(../openolat/images/mail--plus.png) no-repeat left 50%; + padding: 1px 0 1px 20px; } + div.b_noti a.b_noti_markedread_link { + background: url(../openolat/images/tick.png) no-repeat left 50%; + padding: 1px 0 1px 20px; } -/* --------- course building block icons ------------------- */ -.o_bc_icon { - background-image: url("../openolat/images/folder.png") !important; } + /* ---------- TITLE Wrapper --------------- */ + div.b_titled_wrapper div.b_noti { + position: absolute; + right: 25px; + top: 0px; } -.o_co_icon { - background-image: url("../openolat/images/mail.png") !important; } + div.b_titled_wrapper fieldset div.b_noti { + top: 12px; } -.o_cp_icon { - background-image: url("../openolat/images/le_resources/box.png") !important; } + h1.b_titled_wrapper span { + padding-right: 4em; + font-style: italic; } -.o_cp_org { - background-image: url("../openolat/images/le_resources/box.png") !important; } + h2.b_titled_wrapper span { + padding-right: 4em; + font-style: italic; } -.o_cp_item { - background-image: url("../openolat/images/docs/document-text.png") !important; } + h3.b_titled_wrapper span { + padding-right: 4em; + font-style: italic; } -.o_dialog_icon { - background-image: url("../openolat/images/docs/document_discuss.png") !important; } + h4.b_titled_wrapper span { + padding-right: 3em; + font-style: italic; } -.o_en_icon { - background-image: url("../openolat/images/enrol.png") !important; } + h5.b_titled_wrapper span { + padding-right: 3em; + font-style: italic; } -.o_fo_icon { - background-image: url("../openolat/images/forum/forum.png") !important; } + div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { + background: transparent; + border: 0px; + padding: 0px; } + div.b_titled_wrapper a.b_togglebox_opened { + z-index: 10; + display: block; + width: 16px; + height: 16px; + position: absolute; + top: 5px; + left: 5px; + background: url(../openolat/images/information-white.png) no-repeat 0 50%; + padding: 0; } + div.b_titled_wrapper a.b_togglebox_closed { + display: block; + width: 20px; + height: 20px; + background: url(../openolat/images/information-white.png) no-repeat top left; + padding: 0; + /* Required for IE 5, 6, 7 */ + /* ...or something to trigger hasLayout, like zoom: 1; */ + zoom: 1; + /* Theoretically for IE 8 & 9 (more valid) */ + /* ...but not required as filter works too */ + /* should come BEFORE filter */ + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=$percent)"; + /* This works in IE 8 & 9 too */ + /* ... but also 5, 6, 7 */ + filter: alpha(opacity=60); + /* Older than Firefox 0.9 */ + -moz-opacity: 0.6; + /* Safari 1.x (pre WebKit!) */ + -khtml-opacity: 0.6; + /* Modern! + /* Firefox 0.9+, Safari 2?, Chrome any? + /* Opera 9+, IE 9+ */ + opacity: 0.6; } + div.b_titled_wrapper div.b_togglebox div.b_togglebox_content { + position: relative; + margin-bottom: 1em; } + div.b_titled_wrapper a.b_togglebox_hide span { + position: absolute; + bottom: 0; + right: 0; + padding: 0 6px 3px 0; } + div.b_titled_wrapper a.b_togglebox_hide:hover { + text-decoration: underline; } -.o_iqself_icon { - background-image: url("../openolat/images/le_resources/selftest.png") !important; } + /* Needed for IE6 */ + div.b_titled_wrapper div.b_togglebox div.b_togglebox_content div.o_course_run_objectives { + position: relative; } -.o_iqsurv_icon { - background-image: url("../openolat/images/le_resources/survey.png") !important; } + div.o_course_run_dropbox div.b_noti { + position: relative; + top: 0; + right: 25px; + border: 1px solid #FFFFFF; } -.o_iqtest_icon { - background-image: url("../openolat/images/le_resources/test.png") !important; } + div.o_course_run_returnbox div.b_noti { + position: relative; + top: 0; + right: 25px; + border: 1px solid #FFFFFF; } -.o_ms_icon { - background-image: url("../openolat/images/le_resources/thumb-up.png") !important; } + div.o_course_run_solutionbox div.b_noti { + position: relative; + top: 0; + right: 25px; + border: 1px solid #FFFFFF; } -.o_scorm_icon, .o_scorm_org { - background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + /** ------------------ CATALOG ------------------------ **/ + div.o_catalog div.o_catalog_link_title { + margin: 2em 0 0 0; + border-bottom: 1px solid #ccc; + padding: 0.3em; } + div.o_catalog div.o_catalog_title { + display: none; } + div.o_catalog div.o_catalog_nav { + font-size: 95%; + padding: 1px 0 2px 22px; + border-bottom: 1px solid #EEE; + background: url(../openolat/images/folder_open.png) 2px 50% no-repeat; } + div.o_catalog div.o_catalog_links { + margin-top: 1em; + padding-top: 1em; + border-top: 1px solid #EEE; } -.o_scorm_item { - background-image: url("../openolat/images/docs/document-text.png") !important; } + /** -------------- TAGGING ---------------- **/ + /* tagging */ + .b_tag_list { + background: url(../openolat/images/tag-label-yellow.png) 0px 3px no-repeat !important; } -.o_scorm_asset { - background-image: url("../openolat/images/le_resources/book-open-text-image-s.png") !important; } + .b_tag_icon { + background-image: url(../openolat/images/tag-label-yellow.png); } -.o_sp_icon { - background-image: url("../openolat/images/docs/document-text.png") !important; } + div.b_tags { + margin: 2em 0; } + div.b_tags div { + padding: 0.5em 0 0 20px; } + div.b_tags span.b_tag { + font-size: 80%; + padding: 5px 2px 5px 2px; + line-height: 3em; + white-space: nowrap; } -.o_st_icon { - background-image: url("../openolat/images/node-select-all.png") !important; } + div.o_ep_toc_editor div.b_subcl { + min-height: 35em; } -.o_ta_icon { - background-image: url("../openolat/images/docs/document-task.png") !important; } + div.o_ep_struct_editor div.b_subcr { + min-height: 35em; + background: #FFF; + padding-right: 1em; + overflow-x: auto; } -.o_tu_icon { - background-image: url("../openolat/images/docs/document-import.png") !important; } + div.b_struct_edit_btn { + float: right; + display: inline; } -.o_wiki_icon { - background-image: url("../openolat/images/le_resources/wiki.png") !important; } + div.b_struct_submit_assess_btn { + float: right; + display: inline; } -.o_ll_icon { - background-image: url("../openolat/images/docs/document_linklist.png") !important; } + /* TextboxList */ + *:first-child + html div.holder { + padding-bottom: 2px; } -.o_cl_icon { - background-image: url("../openolat/images/clipboard-task.png") !important; } + * html div.holder { + padding-bottom: 2px; } -.o_den_icon { - background-image: url("../openolat/images/clock.png") !important; } + /* ie7 and below */ + .textbox-outer { + list-style-type: none; + margin-left: 0em; } -.o_projectbroker_icon { - background-image: url("../openolat/images/projectbroker.png") !important; } + div.holder { + font-size: 80%; } -.o_podcast_icon { - background-image: url("../openolat/images/le_resources/media-player-cast.png") !important; } + .textboxlist-auto { + position: absolute; + width: 300px; + overflow: show; } -.o_blog_icon { - background-image: url("../openolat/images/le_resources/blog.png") !important; } + /* autocompleter bitbox (item) holder */ + a.bit-box, span.b_tag { + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + border-radius: 6px; + border: 1px solid #CAD8F3; + background: #DEE7F8; + padding: 1px 5px 2px; + padding-right: 15px; + position: relative; } -.o_cal_icon { - background-image: url("../openolat/images/calendar.png") !important; } + div.holder { + min-width: 200px; + width: auto; + margin: 0; + overflow: hidden; + height: auto !important; + height: 1%; + padding: 0px 0px 0; + cursor: text; + /* no left/right padding here please */ } + div.holder a { + float: left; + margin: 0 5px 4px 0; } + div.holder a.bit { + text-decoration: none; + color: black; } + div.holder a.bit:active, div.holder a.bit:focus { + outline: none; } + div.holder a.bit-box-focus { + border-color: #598BEC; + background: #598BEC; + color: #fff; } + div.holder a.bit-input input { + width: 100px; + margin: 0; + border: none; + background: white; + outline: 0; + padding: 3px 0 2px; } + div.holder a.bit-input input.smallinput { + width: 20px; } + div.holder a.bit-hover { + background: #BBCEF1; + border: 1px solid #6D95E0; } + div.holder a.bit-box-focus { + background: #598BEC; + color: #fff; } + div.holder a.bit-box a.closebutton { + position: absolute; + right: 0; + top: 5px; + display: block; + width: 7px; + height: 7px; + font-size: 1px; + background: url("../openolat/images/tag_x.gif"); } + div.holder a.bit-box a.closebutton:hover { + background-position: 7px; } + div.holder a.bit-box a.closebutton:active { + outline: none; } + div.holder a.bit-box-focus a.closebutton, div.holder a.bit-box-focus a.closebutton:hover { + background-position: bottom; } -.o_lti_icon { - background-image: url("../openolat/images/docs/document-node.png") !important; } + .b_wizard .textbox-outer { + background: url(../openolat/images/tag-label-yellow.png) top left no-repeat; } + .b_wizard .textbox-outer li { + margin-left: 18px; } + .b_wizard div.holder a.bit-input input { + background: #f8f8f8; + padding: 0.4em; } -/* <OLATCE-103> */ -.o_vc_icon { - background-image: url("../openolat/images/projection-screen.png") !important; } + /* Autocompleter for textboxlist */ + ol.textbox-outer { + margin: 0; + padding: 0; } -/* </OLATCE-103> */ -.o_vitero_icon { - background-image: url("../openolat/images/vitero.png") !important; } + .textboxlist-auto { + display: none; + background: #eee; } + .textboxlist-auto .default { + padding: 5px 7px; + border: 1px solid #ccc; + border-width: 0 1px 1px; } + .textboxlist-auto ul { + display: none; + margin: 0; + padding: 0; + overflow: auto; } + .textboxlist-auto ul li { + padding: 5px 12px; + z-index: 1000; + cursor: pointer; + margin: 0; + list-style-type: none; + border: 1px solid #ccc; + border-width: 0 1px 1px; } + .textboxlist-auto ul li.loading-indicator { + padding-left: 30px; + background-position: 5px center; + cursor: defat; + font-size: 100.01% !important; + line-height: 1.5em; } + .textboxlist-auto ul li.more-indicator { + cursor: defat; + font-style: italic; } + .textboxlist-auto ul li em { + font-weight: bold; + font-style: normal; + background: #ccc; } + .textboxlist-auto ul li.auto-focus { + background: #4173CC; + color: #fff; } + .textboxlist-auto ul li.auto-focus em { + background: none; } -.o_ep_icon, .o_EPStructuredMapTemplate_icon { - background-image: url("../openolat/images/le_resources/portfolio.png") !important; } + input.inputMessage { + color: #AAA; + font-size: 11px; } } +/* FLOTING STYLES */ +.b_float_left { + float: left; + display: inline; + margin-right: 1em; + margin-bottom: 0.15em; } -.o_infomsg_icon { - background-image: url("../openolat/images/information-button.png") !important; } +.b_float_right { + float: right; + display: inline; + margin-left: 1em; + margin-bottom: 0.15em; } -.o_cmembers_icon { - background-image: url("../openolat/images/users.png") !important; } +.b_center { + text-align: center; + margin: 0.5em auto; } -.fx_members_icon { - background-image: url("../openolat/images/users_members.png") !important; } +/* CLEAR container: additonal to b_floatbox */ +.b_floatscrollbox { + overflow-x: auto; + overflow-y: hidden; } -body#b_body .o_CourseModule_icon_closed { - background-image: url("../openolat/images/le_resources/book-open-text-image_locked.png"); } +.b_overflowscrollbox { + overflow: auto; } /* -------- modules -------- */ /* @@ -1931,22 +1960,6 @@ div.b_msg_error_winicon { min-height: 40px; background: url(../openolat/images/icon_warning_32.png) no-repeat 10px 10px; } -/* OPEN / CLOSE BOX TOGGLER */ -a.b_togglebox_closed { - background: url(../openolat/images/toggle-small-expand.png) no-repeat 0 50%; - padding: 1px 0 1px 14px; - vertical-align: middle; } - -a.b_togglebox_opened { - background: url(../openolat/images/toggle-small.png) no-repeat 0 50%; - padding: 1px 0 1px 14px; - vertical-align: middle; } - -div.b_togglebox div.b_togglebox_content { - padding: 1em; - border: 1px solid #ACAAAA; - background: #fff; } - /** ----------------- WIZARD ----------------- **/ div.b_wizard { background: #fff; @@ -4354,9 +4367,10 @@ div.b_eportfolio_restriction_wrapper div.b_togglebox div.b_togglebox_content { border: 1px solid red; background-image: none; background-color: transparent; + border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; - border-radius: 3px; } + -o-border-radius: 3px; } div.b_eportfolio_restriction_error div.b_tooglebox_opened div.b_togglebox_content { border: 1px solid #FF9900 !important; @@ -7133,6 +7147,7 @@ div.f_library_overview div.f_library_newest_files ul li a { .f_library_icon { background-image: url(../openolat/images/library.png); } +/* print & mobile, let's keep 'em down here... */ /* ------- print -------- */ /* * ================================================= @@ -7152,7 +7167,17 @@ div.f_library_overview div.f_library_newest_files ul li a { * * ================================================= */ +/** +* hides any element +*/ @media print { + /** with the noprint class, you can hide any element in printout **/ + .o_noprint { + display: none !important; + visibility: hidden !important; + height: 0px !important; + width: 0px !important; } + /* (en) change font size unit to [pt] - avoiding problems with [px] unit in Gecko based browsers */ /* (de) Wechsel der der Schriftgrößen-Maßheinheit zu [pt] - Probleme mit Maßeinheit [px] in Gecko-basierten Browsern vermeiden */ body { @@ -7246,25 +7271,14 @@ div.f_library_overview div.f_library_newest_files ul li a { .b_floatbox, .b_subcolumns, .b_subcolums_oldgecko { overflow: visible; - display: table; } } -/* -* ================================================= -* -* content rules for OpenOLAT 8 (PRINT) -* -* @author strentini, sergio.trentini@frentix.com, www.frentix.com -* @date Nov. 2011 -* -* -* -* (as of yaml compliance, contains css rules for -* styling fonts, colors, font-style, etc. ) -* -* this file is included in layout.scss -* it is not compiled to a separate css-file... -* -* ================================================= -*/ + display: table; } + + /* hide jsMath print warning */ + #jsMath_PrintWarning { + display: none !important; + visibility: hidden !important; + height: 0px !important; + width: 0px !important; } } /* ------- mobile -------- */ /* * ================================================= diff --git a/src/main/webapp/static/themes/openolatexample/layout.scss b/src/main/webapp/static/themes/openolatexample/layout.scss index 711420e6108577380b056c37e2030d5cd2da0367..e4bcbfff23dd8226d9e3d87a93dc7af3c8c3f2b8 100644 --- a/src/main/webapp/static/themes/openolatexample/layout.scss +++ b/src/main/webapp/static/themes/openolatexample/layout.scss @@ -2,18 +2,17 @@ @import "license"; +// default css import @import url(../../yaml/core/slim_base.css); @import url(all/content.css); - /* --------------- */ @import "definitions"; @import "mixins"; /* --------------- */ -@import "basemod"; @import "icons"; - +@import "basemod"; /* -------- modules -------- */ @import "dd"; @@ -37,9 +36,9 @@ @import "portlets_boxes"; @import "library"; +/* print & mobile, let's keep 'em down here... */ /* ------- print -------- */ @import "p_basemod"; -@import "p_content"; /* ------- mobile -------- */ -@import "m_basemod"; +@import "m_basemod"; \ No newline at end of file diff --git a/src/test/java/org/olat/core/util/i18n/I18nTest.java b/src/test/java/org/olat/core/util/i18n/I18nTest.java index dc310bc889d99560cb2d34bd929ace973f1b0e71..db979dc8dbb21dbffc48c3f6ab22ea1ceeab3602 100644 --- a/src/test/java/org/olat/core/util/i18n/I18nTest.java +++ b/src/test/java/org/olat/core/util/i18n/I18nTest.java @@ -325,7 +325,6 @@ public class I18nTest extends OlatcoreTestCaseWithMocking { assertTrue(foundLanguages.contains("pt_BR")); // Set must contain some LocaleStrings from the jar package assertTrue(foundLanguages.contains("fr")); - assertTrue(foundLanguages.contains("vi")); assertTrue(foundLanguages.contains("zh_CN")); // Final check assertEquals(6, foundLanguages.size()); @@ -333,7 +332,6 @@ public class I18nTest extends OlatcoreTestCaseWithMocking { Set<String> foundLanguages = I18nModule.getAvailableLanguageKeys(); // Set must contain some LocaleStrings from the jar package assertTrue(foundLanguages.contains("fr")); - assertTrue(foundLanguages.contains("vi")); assertTrue(foundLanguages.contains("zh_CN")); } } diff --git a/src/test/java/org/olat/test/tutorial/singlenode/junit/MacartneyBreakpointTest.java b/src/test/java/org/olat/test/tutorial/singlenode/junit/MacartneyBreakpointTest.java deleted file mode 100644 index ca2ebebf46d5ec6aa07a2d658d61b2d3015f1fec..0000000000000000000000000000000000000000 --- a/src/test/java/org/olat/test/tutorial/singlenode/junit/MacartneyBreakpointTest.java +++ /dev/null @@ -1,119 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -*/ -package org.olat.test.tutorial.singlenode.junit; - -import org.olat.test.util.selenium.BaseSeleneseTestCase; -import org.olat.test.util.setup.SetupType; -import org.olat.test.util.setup.context.Context; -import org.olat.testutils.codepoints.client.CodepointClient; -import org.olat.testutils.codepoints.client.CodepointRef; -import org.olat.testutils.codepoints.client.TemporaryPausedThread; - -public class MacartneyBreakpointTest extends BaseSeleneseTestCase { - - protected com.thoughtworks.selenium.Selenium selenium1; - protected com.thoughtworks.selenium.Selenium selenium2; - private CodepointClient codepointClient_; - - public void testMacartneyBreakpoint() throws Exception { - //if instance restart (SetupType.CLEAN_AND_RESTARTED_SINGLE_VM) is not implemented this test is not relevat! - if(true) { - return; - } - - - Context context = Context.setupContext(getFullName(), SetupType.CLEAN_AND_RESTARTED_SINGLE_VM); -// selenium1 = context.createSeleniumAndLogin(context.getStandardAdminOlatLoginInfos()); -// selenium2 = context.createSeleniumAndLogin(context.getStandardStudentOlatLoginInfos()); - - selenium1 = context.createSelenium(); - selenium2 = context.createSelenium(); - - // setup and get ready - selenium1.openWindow(context.getStandardAdminOlatLoginInfos().getFullOlatServerUrl(), "olat"); - selenium2.openWindow(context.getStandardStudentOlatLoginInfos().getFullOlatServerUrl(), "olat"); - System.out.println("olatLogin: waiting 5sec."); - Thread.sleep(5000); - System.out.println("olatLogin: selecting the olat window"); - selenium1.selectWindow("olat"); - selenium2.selectWindow("olat"); - for (int second = 0;; second++) { - if (second >= 60) fail("timeout"); - System.out.println("title now: "+selenium1.getTitle()); - if (selenium1.getTitle().indexOf("Error")!=-1) { - System.out.println(selenium1.getBodyText()); - fail("Error encountered in selenium1"); - } - try { if ("OLAT - Online Learning And Training".equals(selenium1.getTitle())) break; } catch (Exception e) {} - Thread.sleep(1000); - } - for (int second = 0;; second++) { - if (second >= 60) fail("timeout"); - System.out.println("title now: "+selenium2.getTitle()); - if (selenium2.getTitle().indexOf("Error")!=-1) { - System.out.println(selenium2.getBodyText()); - fail("Error encountered in selenium2"); - } - try { if ("OLAT - Online Learning And Training".equals(selenium2.getTitle())) break; } catch (Exception e) {} - Thread.sleep(1000); - } - selenium1.type("ui=commons::flexiForm_labeledTextInput(formElementLabel=OLAT user name)", context.getStandardAdminOlatLoginInfos().getUsername()); - selenium1.type("ui=commons::flexiForm_labeledPasswordInput(formElementLabel=OLAT password)", context.getStandardAdminOlatLoginInfos().getPassword()); - - selenium2.type("ui=commons::flexiForm_labeledTextInput(formElementLabel=OLAT user name)", context.getStandardStudentOlatLoginInfos().getUsername()); - selenium2.type("ui=commons::flexiForm_labeledPasswordInput(formElementLabel=OLAT password)", context.getStandardStudentOlatLoginInfos().getPassword()); - - - codepointClient_ = context.createCodepointClient(1); - codepointClient_.setAllHitCounts(0); - CodepointRef beforeSyncCp = codepointClient_.getCodepoint("org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync-before-sync.org.olat.portal.macartney.MacartneyPortletRunController.<init>"); - beforeSyncCp.setHitCount(0); - beforeSyncCp.enableBreakpoint(); - - CodepointRef inSyncCp = codepointClient_.getCodepoint("org.olat.commons.coordinate.cluster.ClusterSyncer.doInSync-in-sync.org.olat.portal.macartney.MacartneyPortletRunController.<init>"); - inSyncCp.setHitCount(0); - - //MacartneyPortletRunController - - selenium1.click("ui=dmz::login()"); - selenium2.click("ui=dmz::login()"); - - Thread.sleep(10000); - inSyncCp.assertHitCount(0); - beforeSyncCp.assertHitCount(2); - - TemporaryPausedThread[] threads = beforeSyncCp.getPausedThreads(); - assertNotNull(threads); - assertEquals(2, threads.length); - - // continue the first - threads[0].continueThread(); - Thread.sleep(500); - - threads = beforeSyncCp.getPausedThreads(); - assertNotNull(threads); - assertEquals(1, threads.length); - inSyncCp.assertHitCount(1); - - //selenium1.waitForPageToLoad("30000"); - //assertEquals("OLAT-Home", selenium.getTitle()); - } - -}