/** * Copyright (c) 2008-2010 The Sakai Foundation * * Licensed under the Educational Community License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.osedu.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.sakaiproject.profile2.util; /** * Class to hold static constants for Profile2, like defaults etc. * * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) * */ public class ProfileConstants { /* * CONNECTIONS */ //number of friends to show in friends feed public static final int MAX_FRIENDS_FEED_ITEMS = 6; //relationship type public static final int RELATIONSHIP_FRIEND = 1; //public static final int RELATIONSHIP_COLLEAGUE = 2; //connection status public static final int CONNECTION_NONE = 0; public static final int CONNECTION_REQUESTED = 1; public static final int CONNECTION_INCOMING = 2; public static final int CONNECTION_CONFIRMED = 3; /* * IMAGE */ //default if not specified in sakai.properties as profile.picture.max (megs) public static final int MAX_IMAGE_UPLOAD_SIZE = 2; //one side will be scaled to this if larger. 200 is large enough public static final int MAX_IMAGE_XY = 200; //one side will be scaled to this if larger. public static final int MAX_THUMBNAIL_IMAGE_XY = 100; //directories in content hosting that these images live in //also used by ProfileImageExternal public static final int PROFILE_IMAGE_MAIN = 1; public static final int PROFILE_IMAGE_THUMBNAIL = 2; //should images be marked up in a way that a browser can cache them? public static final boolean PROFILE_IMAGE_CACHE = true; //gallery-related constants public static final String GALLERY_IMAGE_MAIN = "images"; public static final String GALLERY_IMAGE_THUMBNAILS = "thumbnails"; public static final String EVENT_GALLERY_IMAGE_UPLOAD = "gallery.image.upload"; public static final String GALLERY_IMAGE_DEFAULT_DESCRIPTION = "Gallery image"; public static final int MAX_GALLERY_IMAGE_XY = 575; public static final int MAX_GALLERY_THUMBNAIL_IMAGE_XY = 125; public static final int MAX_GALLERY_FILE_UPLOADS = 10; public static final int MAX_GALLERY_IMAGES_PER_PAGE = 12; //max before pager kicks in //default images for certain things public static final String UNAVAILABLE_IMAGE = "images/no_image.gif"; public static final String UNAVAILABLE_IMAGE_THUMBNAIL = "/profile2-tool/images/no_image_thumbnail.gif"; public static final String UNAVAILABLE_IMAGE_FULL = "/profile2-tool/images/no_image.gif"; public static final String CLOSE_IMAGE = "/library/image/silk/cross.png"; public static final String INFO_IMAGE = "/library/image/silk/information.png"; public static final String RSS_IMG = "/library/image/silk/feed.png"; public static final String ACCEPT_IMG = "/library/image/silk/accept.png"; public static final String ADD_IMG = "/library/image/silk/add.png"; public static final String CANCEL_IMG = "/library/image/silk/cancel.png"; public static final String DELETE_IMG = "/library/image/silk/delete.png"; public static final String CROSS_IMG = "/library/image/silk/cross.png"; public static final String CROSS_IMG_LOCAL = "images/cross.png"; public static final String AWARD_NORMAL_IMG = "/library/image/silk/medal_silver_1.png"; public static final String AWARD_BRONZE_IMG = "/library/image/silk/award_star_bronze_3.png"; public static final String AWARD_SILVER_IMG = "/library/image/silk/award_star_silver_3.png"; public static final String AWARD_GOLD_IMG = "/library/image/silk/award_star_gold_3.png"; //profile picture settings for use in API and tool and their values for sakai.properties //and the default if not specified or invalid one specified public static final int PICTURE_SETTING_UPLOAD = 1; public static final String PICTURE_SETTING_UPLOAD_PROP = "upload"; public static final int PICTURE_SETTING_URL = 2; public static final String PICTURE_SETTING_URL_PROP = "url"; public static final int PICTURE_SETTING_OFFICIAL = 3; public static final String PICTURE_SETTING_OFFICIAL_PROP = "official"; public static final int PICTURE_SETTING_DEFAULT = PICTURE_SETTING_UPLOAD; // if using official photo, where does that image come from? // can be either a url or from a provider. public static final String OFFICIAL_IMAGE_SETTING_URL = "url"; public static final String OFFICIAL_IMAGE_SETTING_PROVIDER = "provider"; public static final String OFFICIAL_IMAGE_SETTING_DEFAULT = OFFICIAL_IMAGE_SETTING_URL; //the property that an external provider may set into the user properties for the jpegPhoto field. public static final String USER_PROPERTY_JPEG_PHOTO = "jpegPhoto"; /* * SEARCH */ public static final int DEFAULT_MAX_SEARCH_RESULTS = 50; public static final int DEFAULT_MAX_SEARCH_RESULTS_PER_PAGE = 25; /* * PREFERENCES */ //types of email messages public static final int EMAIL_NOTIFICATION_REQUEST = 1; public static final int EMAIL_NOTIFICATION_CONFIRM = 2; public static final int EMAIL_NOTIFICATION_MESSAGE_NEW = 3; public static final int EMAIL_NOTIFICATION_MESSAGE_REPLY = 4; //these values are used when creating a default preferences record for a user public static final boolean DEFAULT_EMAIL_REQUEST_SETTING = true; public static final boolean DEFAULT_EMAIL_CONFIRM_SETTING = true; public static final boolean DEFAULT_EMAIL_MESSAGE_NEW_SETTING = true; public static final boolean DEFAULT_EMAIL_MESSAGE_REPLY_SETTING = true; public static final boolean DEFAULT_OFFICIAL_IMAGE_SETTING = false; public static final boolean DEFAULT_SHOW_KUDOS_SETTING = true; public static final boolean DEFAULT_SHOW_GALLERY_FEED_SETTING = true; //if no record, this is the default for sending email messages public static final boolean DEFAULT_EMAIL_NOTIFICATION_SETTING = true; public static final String PROP_EMAIL_REQUEST_ENABLED="emailRequestEnabled"; public static final String PROP_EMAIL_CONFIRM_ENABLED="emailConfirmEnabled"; /* * PRIVACY */ //setup the profile privacy values (2 is only used in strict mode, 3 is only used in super strict mode) public static final int PRIVACY_OPTION_EVERYONE = 0; public static final int PRIVACY_OPTION_ONLYFRIENDS = 1; public static final int PRIVACY_OPTION_ONLYME = 2; public static final int PRIVACY_OPTION_NOBODY = 3; //these values are used when creating a default privacy record for a user public static final int DEFAULT_PRIVACY_OPTION_PROFILEIMAGE = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_BASICINFO = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_CONTACTINFO = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_PERSONALINFO = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_SEARCH = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_MYFRIENDS = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_MYSTATUS = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_MYPICTURES = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_MESSAGES = PRIVACY_OPTION_ONLYFRIENDS; public static final int DEFAULT_PRIVACY_OPTION_BUSINESSINFO = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_STAFFINFO = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_STUDENTINFO = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_MYKUDOS = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_SOCIALINFO = PRIVACY_OPTION_EVERYONE; //if they have no privacy record, ie have not turned explicitly turned searches on or off public static final boolean DEFAULT_SEARCH_VISIBILITY = true; //if they have no privacy record, ie have not turned explicitly turned these options on or off public static final boolean DEFAULT_PROFILEIMAGE_VISIBILITY = true; public static final boolean DEFAULT_BASICINFO_VISIBILITY = true; public static final boolean DEFAULT_CONTACTINFO_VISIBILITY = true; public static final boolean DEFAULT_PERSONALINFO_VISIBILITY = true; public static final boolean DEFAULT_MYFRIENDS_VISIBILITY = true; public static final boolean DEFAULT_BIRTHYEAR_VISIBILITY = true; public static final boolean DEFAULT_MYSTATUS_VISIBILITY = true; public static final boolean DEFAULT_STAFFINFO_VISIBILITY = true; public static final boolean DEFAULT_STUDENTINFO_VISIBILITY = true; //if the user doing a search finds themself in the results, should they be included in the results? public static final boolean SELF_SEARCH_VISIBILITY = true; public static final String PROP_BIRTH_YEAR_VISIBLE="birthYearVisible"; /* * DEFAULT SAKAI PROPERTIES */ public static final String SAKAI_PROP_INVISIBLE_USERS = "postmaster"; //string, comma separated public static final char SAKAI_PROP_LIST_SEPARATOR = ','; //char used to separate multi value lists public static final String SAKAI_PROP_SERVICE_NAME = "Sakai"; //ui.service public static final boolean SAKAI_PROP_PROFILE2_CONVERSION_ENABLED = false; //profile2.convert public static final boolean SAKAI_PROP_PROFILE2_TWITTER_INTEGRATION_ENABLED = true; //profile2.integration.twitter.enabled public static final String SAKAI_PROP_PROFILE2_TWITTER_INTEGRATION_SOURCE = "Profile2"; //profile2.integration.twitter.source public static final boolean SAKAI_PROP_PROFILE2_PICTURE_CHANGE_ENABLED = true; //profile2.picture.change.enabled public static final boolean SAKAI_PROP_PROFILE2_PRIVACY_CHANGE_ENABLED = true; //profile2.privacy.change.enabled public static final boolean SAKAI_PROP_PROFILE2_GALLERY_ENABLED = true; //profile2.gallery.enabled public static final boolean SAKAI_PROP_PROFILE2_PROFILE_BUSINESS_ENABLED = false; //profile2.profile.business.enabled public static final boolean SAKAI_PROP_PROFILE2_OFFICIAL_IMAGE_ENABLED = false; //profile2.official.image.enabled public static final boolean SAKAI_PROP_PROFILE2_IMPORT_ENABLED = false; //profile2.import /* * MESSAGING */ //max number of connections that can be shown in an autocomplete search that match the criteria public static final int MAX_CONNECTIONS_PER_SEARCH = 15; //default subject if none supplied public static final String DEFAULT_PRIVATE_MESSAGE_SUBJECT = "(no subject)"; //max number of messages to show per page public static final int MAX_MESSAGES_PER_PAGE = 15; //date format display for messages public static final String MESSAGE_DISPLAY_DATE_FORMAT = "dd MMMM 'at' HH:mm"; //max length of the preview of a message public static final int MESSAGE_PREVIEW_MAX_LENGTH = 150; /* * MISC */ //date format display public static final String DEFAULT_DATE_FORMAT = "dd MMMM yyyy"; public static final String DEFAULT_DATE_FORMAT_HIDE_YEAR = "dd MMMM"; //max number of connections to show per page public static final int MAX_CONNECTIONS_PER_PAGE = 15; //record limits used in searchUsers (could we combine with above?) public static final int FIRST_RECORD = 1; public static final int MAX_RECORDS = 99; //tool id public static final String TOOL_ID = "sakai.profile2"; //email constants public static final String EMAIL_NEWLINE = "<br />\n"; /* * EVENTS */ //this is so granular so we can get good reports on what and how much is being used public static final String EVENT_PROFILE_VIEW_OWN = "profile.view.own"; public static final String EVENT_PROFILE_VIEW_OTHER = "profile.view.other"; public static final String EVENT_PROFILE_IMAGE_CHANGE_UPLOAD = "profile.image.change.upload"; public static final String EVENT_PROFILE_IMAGE_CHANGE_URL = "profile.image.change.url"; public static final String EVENT_PROFILE_IMAGE_UPLOAD = "profile.image.upload"; public static final String EVENT_PROFILE_NEW = "profile.new"; public static final String EVENT_PROFILE_INFO_UPDATE = "profile.info.update"; public static final String EVENT_PROFILE_CONTACT_UPDATE = "profile.contact.update"; public static final String EVENT_PROFILE_INTERESTS_UPDATE = "profile.interests.update"; public static final String EVENT_PROFILE_BUSINESS_UPDATE = "profile.business.update"; public static final String EVENT_PROFILE_STUDENT_UPDATE = "profile.student.update"; public static final String EVENT_FRIEND_REQUEST = "profile.friend.request"; public static final String EVENT_FRIEND_CONFIRM = "profile.friend.confirm"; public static final String EVENT_FRIEND_IGNORE = "profile.friend.ignore"; public static final String EVENT_FRIEND_REMOVE = "profile.friend.remove"; public static final String EVENT_PRIVACY_NEW = "profile.privacy.new"; public static final String EVENT_PRIVACY_UPDATE = "profile.privacy.update"; public static final String EVENT_FRIENDS_VIEW_OWN = "profile.friends.view.own"; public static final String EVENT_FRIENDS_VIEW_OTHER = "profile.friends.view.other"; public static final String EVENT_SEARCH_BY_NAME = "profile.search.name"; public static final String EVENT_SEARCH_BY_INTEREST = "profile.search.interest"; public static final String EVENT_PREFERENCES_NEW = "profile.prefs.new"; public static final String EVENT_PREFERENCES_UPDATE = "profile.prefs.update"; public static final String EVENT_STATUS_UPDATE = "profile.status.update"; public static final String EVENT_TWITTER_UPDATE = "profile.twitter.update"; public static final String EVENT_MESSAGE_SENT = "profile.message.sent"; public static final String EVENT_PROFILE_SOCIAL_NETWORKING_UPDATE = "profile.socialnetworking.update"; /* * ENTITY */ //custom entity types public static final int ENTITY_PROFILE_FULL = 0; public static final int ENTITY_PROFILE_MINIMAL = 1; public static final int ENTITY_PROFILE_ACADEMIC = 2; //entity set defaults public static final String ENTITY_SET_ACADEMIC = "displayName,imageUrl"; public static final String ENTITY_SET_MINIMAL = "displayName,statusMessage,statusDate"; //entity css public static final String ENTITY_CSS_PROFILE = "/profile2-tool/css/profile2-profile-entity.css"; //max length of the personal summary in the formatted profile public static final String FORMATTED_PROFILE_SUMMARY_MAX_LENGTH = "1000"; //profile2.formatted.profile.summary.max /* * EMAIL TEMPLATING */ public static final String EMAIL_TEMPLATE_KEY_MESSAGE_NEW = "profile2.messageNew"; public static final String EMAIL_TEMPLATE_KEY_MESSAGE_REPLY = "profile2.messageReply"; public static final String EMAIL_TEMPLATE_KEY_CONNECTION_REQUEST = "profile2.connectionRequest"; public static final String EMAIL_TEMPLATE_KEY_CONNECTION_CONFIRM = "profile2.connectionConfirm"; /* * DIRECT LINKS */ public static final String ENTITY_BROKER_PREFIX = "/direct"; public static final String LINK_ENTITY_PREFIX = "/my"; public static final String LINK_ENTITY_PROFILE = "/profile"; public static final String LINK_ENTITY_MESSAGES = "/messages"; public static final String LINK_ENTITY_CONNECTIONS = "/connections"; //full class names for Wicket pages used when we translate a shortened URL back into the full one //and need to go directly to a page public static final String WICKET_PAGE_CONNECTIONS = "org.sakaiproject.profile2.tool.pages.MyFriends"; public static final String WICKET_PAGE_MESSAGES = "org.sakaiproject.profile2.tool.pages.MyMessages"; public static final String WICKET_PAGE_PROFILE_VIEW = "org.sakaiproject.profile2.tool.pages.ViewProfile"; public static final String WICKET_PARAM_THREAD = "thread"; public static final String WICKET_PARAM_USERID = "id"; /* * ONLINE STATUS */ public static final int ONLINE_STATUS_OFFLINE = 0; public static final int ONLINE_STATUS_ONLINE = 1; public static final int ONLINE_STATUS_AWAY = 2; public static final long ONLINE_INACTIVITY_INTERVAL = 5000000; // 5 minutes between events = online -> away /* * PERMISSIONS */ public static final String ROSTER_VIEW_PHOTO = "roster.viewofficialphoto"; }