/** * Copyright (c) 2008-2012 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; public static final int PROFILE_IMAGE_AVATAR = 3; //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 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"; public static final String ONLINE_STATUS_ONLINE_IMG = "/library/image/silk/bullet_green.png"; public static final String ONLINE_STATUS_OFFLINE_IMG = "/library/image/silk/bullet_black.png"; public static final String ONLINE_STATUS_AWAY_IMG = "/library/image/silk/bullet_yellow.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_GRAVATAR = 4; //n.b a gravatar is not an enforceable setting, hence no property here. it is purely a choice. //it can be disabled in sakai.properties if required. public static final int PICTURE_SETTING_DEFAULT = PICTURE_SETTING_UPLOAD; // if using official photo, where does that image come from? // can be url, provider or filesystem. 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_FILESYSTEM = "filesystem"; 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"; //gravatar base URL public static final String GRAVATAR_BASE_URL = "http://www.gravatar.com/avatar/"; // Defines the name of the blank image, the one a user gets when nothing else is available public static final String BLANK = "blank"; /* * SEARCH */ public static final int DEFAULT_MAX_SEARCH_RESULTS = 50; public static final int DEFAULT_MAX_SEARCH_RESULTS_PER_PAGE = 25; public static final int DEFAULT_MAX_SEARCH_HISTORY = 5; public static final String SEARCH_COOKIE = "profile2-search"; public static final String SEARCH_TYPE_NAME = "name"; public static final String SEARCH_TYPE_INTEREST = "interest"; public static final String SEARCH_COOKIE_VALUE_PAGE_MARKER = "["; public static final String SEARCH_COOKIE_VALUE_SEARCH_MARKER = "]"; public static final String SEARCH_COOKIE_VALUE_CONNECTIONS_MARKER = "("; public static final String SEARCH_COOKIE_VALUE_WORKSITE_MARKER = ")"; /* * PREFERENCES */ //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_EMAIL_MESSAGE_WALL_SETTING = true; public static final boolean DEFAULT_EMAIL_MESSAGE_WORKSITE_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; public static final boolean DEFAULT_GRAVATAR_SETTING = false; public static final boolean DEFAULT_SHOW_ONLINE_STATUS_SETTING = true; /* * 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_MYWALL = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_SOCIALINFO = PRIVACY_OPTION_EVERYONE; public static final int DEFAULT_PRIVACY_OPTION_ONLINESTATUS = PRIVACY_OPTION_EVERYONE; public static final boolean DEFAULT_BIRTHYEAR_VISIBILITY = true; /* * 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_PROFILE_SOCIAL_ENABLED = true; //profile2.profile.social.enabled public static final boolean SAKAI_PROP_PROFILE2_PROFILE_STAFF_ENABLED = true; //profile2.profile.staff.enabled public static final boolean SAKAI_PROP_PROFILE2_PROFILE_STUDENT_ENABLED = true; //profile2.profile.student.enabled public static final boolean SAKAI_PROP_PROFILE2_PROFILE_INTERESTS_ENABLED = true; //profile2.profile.interests.enabled public static final boolean SAKAI_PROP_PROFILE2_OFFICIAL_IMAGE_ENABLED = false; //profile2.official.image.enabled public static final boolean SAKAI_PROP_PROFILE2_GRAVATAR_IMAGE_ENABLED = true; //profile2.gravatar.image.enabled public static final boolean SAKAI_PROP_PROFILE2_WALL_ENABLED = true; //profile2.wall.enabled public static final boolean SAKAI_PROP_PROFILE2_WALL_DEFAULT = false; //profile2.wall.default public static final boolean SAKAI_PROP_PROFILE2_GOOGLE_INTEGRATION_ENABLED = false; //profile2.integration.google.enabled public static final boolean SAKAI_PROP_PROFILE2_IMPORT_ENABLED = false; //profile2.import public static final boolean SAKAI_PROP_PROFILE2_PROFILE_FIELDS_ENABLED = true; //profile2.profile.fields.enabled public static final boolean SAKAI_PROP_PROFILE2_PROFILE_STATUS_ENABLED = true; //profile2.profile.status.enabled public static final boolean SAKAI_PROP_PROFILE2_IMPORT_IMAGES_ENABLED = false; // profile2.import.images /* * 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"; /* * TABS */ public static final String TAB_COOKIE = "profile2-tab"; public static final int TAB_INDEX_PROFILE = 0; public static final int TAB_INDEX_WALL = 1; /* * WALL */ public static final int WALL_ITEM_TYPE_EVENT = 0; public static final int WALL_ITEM_TYPE_STATUS = 1; public static final int WALL_ITEM_TYPE_POST = 2; //date format display for wall items and wall comments public static final String WALL_DISPLAY_DATE_FORMAT = "dd MMMMM, HH:mm"; // TODO possible candidates for sakai.properties public static final int MAX_WALL_ITEMS_SAVED_PER_USER = 30; public static final int MAX_WALL_ITEMS_PER_PAGE = 10; /* * 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_STAFF_UPDATE = "profile.staff.update"; public static final String EVENT_PROFILE_STUDENT_UPDATE = "profile.student.update"; public static final String EVENT_PROFILE_SOCIAL_NETWORKING_UPDATE = "profile.socialnetworking.update"; public static final String EVENT_PROFILE_BUSINESS_UPDATE = "profile.business.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_GALLERY_IMAGE_UPLOAD = "profile.gallery.image.upload"; /* * 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"; public static final String EMAIL_TEMPLATE_KEY_WALL_EVENT_NEW = "profile2.wallEventNew"; public static final String EMAIL_TEMPLATE_KEY_WALL_POST_MY_NEW = "profile2.wallPostMyWallNew"; public static final String EMAIL_TEMPLATE_KEY_WALL_POST_CONNECTION_NEW = "profile2.wallPostConnectionWallNew"; public static final String EMAIL_TEMPLATE_KEY_WALL_STATUS_NEW = "profile2.wallStatusNew"; public static final String EMAIL_TEMPLATE_KEY_WORKSITE_NEW = "profile2.worksiteNew"; public static final String EMAIL_TEMPLATE_KEY_PROFILE_CHANGE_NOTIFICATION = "profile2.profileChangeNotification"; /* * 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"; public static final String LINK_ENTITY_WALL = "/wall"; //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"; public static final String WICKET_PARAM_WALL_ITEM = "wallItemId"; public static final String WICKET_PARAM_TAB = "tab"; /* * 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"; public static final String ROSTER_VIEW_EMAIL = "roster.viewemail"; /* * INTEGRATIONS */ public static final String GOOGLE_REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"; public static final String GOOGLE_DOCS_SCOPE = "https://docs.google.com/feeds/"; }