diff --git a/commons/api/src/java/org/sakaiproject/commons/api/SakaiProxy.java b/commons/api/src/java/org/sakaiproject/commons/api/SakaiProxy.java index 8a1418028dd9..778305fe9a0e 100644 --- a/commons/api/src/java/org/sakaiproject/commons/api/SakaiProxy.java +++ b/commons/api/src/java/org/sakaiproject/commons/api/SakaiProxy.java @@ -17,7 +17,6 @@ package org.sakaiproject.commons.api; import java.util.Map; -import java.util.Observer; import java.util.Set; import org.apache.commons.fileupload.FileItem; @@ -90,7 +89,5 @@ public interface SakaiProxy { public boolean isUserSite(String siteId); - public void addObserver(Observer observer); - public String storeFile(FileItem fileItem, String siteId); } diff --git a/commons/impl/pom.xml b/commons/impl/pom.xml index 44de5a7b610e..99ad5d56934b 100644 --- a/commons/impl/pom.xml +++ b/commons/impl/pom.xml @@ -47,10 +47,6 @@ org.sakaiproject.entitybroker entitybroker-api - - org.sakaiproject.profile2 - profile2-api - org.sakaiproject.delegatedaccess delegatedaccess-api diff --git a/commons/impl/src/java/org/sakaiproject/commons/impl/CommonsManagerImpl.java b/commons/impl/src/java/org/sakaiproject/commons/impl/CommonsManagerImpl.java index 43f2385ff3eb..ff18c30f39c4 100644 --- a/commons/impl/src/java/org/sakaiproject/commons/impl/CommonsManagerImpl.java +++ b/commons/impl/src/java/org/sakaiproject/commons/impl/CommonsManagerImpl.java @@ -30,14 +30,9 @@ import org.sakaiproject.commons.api.datamodel.Post; import org.sakaiproject.commons.api.datamodel.PostLike; import org.sakaiproject.entity.api.Entity; -import org.sakaiproject.entity.api.HttpAccess; import org.sakaiproject.entity.api.Reference; import org.sakaiproject.entity.api.ResourceProperties; -import org.sakaiproject.event.api.Event; import org.sakaiproject.memory.api.Cache; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.model.BasicConnection; -import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.util.api.FormattedText; @@ -45,11 +40,10 @@ * @author Adrian Fish (adrian.r.fish@gmail.com) */ @Setter @Slf4j -public class CommonsManagerImpl implements CommonsManager, Observer { +public class CommonsManagerImpl implements CommonsManager { private CommonsSecurityManager commonsSecurityManager; private PersistenceManager persistenceManager; - private ProfileConnectionsLogic profileConnectionsLogic; private SakaiProxy sakaiProxy; private FormattedText formattedText; @@ -73,7 +67,6 @@ public void init() { log.info("Registered Commons functions."); sakaiProxy.registerEntityProducer(this); - sakaiProxy.addObserver(this); } private List getPosts(String siteId) throws Exception { @@ -99,7 +92,6 @@ public List getPosts(QueryBean query) throws Exception { if (query.isUserSite()) { log.debug("Getting posts for a user site ..."); query.getFromIds().add(query.getCallerId()); - query.getFromIds().addAll(getConnectionUserIds(sakaiProxy.getCurrentUserId())); } List unfilteredPosts = persistenceManager.getAllPost(query, true); cache.put(key, unfilteredPosts); @@ -119,11 +111,7 @@ public Post savePost(Post post) { if (newOrUpdatedPost != null) { String commonsId = post.getCommonsId(); List contextIds = new ArrayList(); - if (persistenceManager.getCommons(commonsId).isSocial()) { - contextIds = getConnectionUserIds(sakaiProxy.getCurrentUserId()); - } else { - contextIds.add(post.getCommonsId()); - } + contextIds.add(post.getCommonsId()); removeContextIdsFromCache(contextIds); return newOrUpdatedPost; } else { @@ -147,13 +135,7 @@ public boolean deletePost(String postId) { if (persistenceManager.deletePost(post)) { List contextIds = new ArrayList(); String commonsId = post.getCommonsId(); - if (persistenceManager.getCommons(commonsId).isSocial()) { - String userId = post.getCreatorId(); - // This is a social post. We need to invalidate the social caches of all this user's connections - contextIds = getConnectionUserIds(userId); - } else { - contextIds.add(post.getCommonsId()); - } + contextIds.add(post.getCommonsId()); // Invalidate all caches for this site removeContextIdsFromCache(contextIds); return true; @@ -201,11 +183,7 @@ public Comment saveComment(String commonsId, Comment comment) { Comment savedComment = persistenceManager.saveComment(comment); if (savedComment != null) { List contextIds = new ArrayList(); - if (persistenceManager.getCommons(commonsId).isSocial()) { - contextIds = getConnectionUserIds(post.getCreatorId()); - } else { - contextIds.add(commonsId); - } + contextIds.add(commonsId); removeContextIdsFromCache(contextIds); return savedComment; } @@ -223,12 +201,7 @@ public boolean deleteComment(String siteId, String commonsId, String embedder, S if (commonsSecurityManager.canCurrentUserDeleteComment(siteId, embedder, commentCreatorId, postCreatorId) && persistenceManager.deleteComment(commentId)) { List contextIds = new ArrayList(); - if (embedder.equals(CommonsConstants.SOCIAL)) { - //Post post = persistenceManager.getPost(postId, false); - contextIds = getConnectionUserIds(postCreatorId); - } else { - contextIds.add(commonsId); - } + contextIds.add(commonsId); removeContextIdsFromCache(contextIds); return true; } @@ -412,12 +385,6 @@ public boolean parseEntityReference(String referenceString, Reference reference) String siteId = parts[2]; String subType = parts[3]; - /*String entityId = parts[4]; - - if ("posts".equals(subType)) { - reference.set("commons", "posts", entityId, null, siteId); - return true; - }*/ return false; } @@ -449,33 +416,4 @@ private void removeContextIdsFromCache(List contextIds) { Cache cache = sakaiProxy.getCache(POST_CACHE); contextIds.forEach(contextId -> cache.remove(contextId)); } - - private List getConnectionUserIds(String userId) { - - List userIds = new ArrayList(); - List conns - = profileConnectionsLogic.getBasicConnectionsForUser(userId); - conns.forEach(conn -> userIds.add(conn.getUuid())); - userIds.add(userId); - return userIds; - } - - public void update(Observable o, final Object arg) { - - if (arg instanceof Event) { - Event e = (Event) arg; - String event = e.getEvent(); - if (ProfileConstants.EVENT_FRIEND_CONFIRM.equals(event) - || ProfileConstants.EVENT_FRIEND_REMOVE.equals(event)) { - String ref = e.getResource(); - String[] pathParts = ref.split("/"); - String from = e.getUserId(); - String to = pathParts[2]; - List contextIds = new ArrayList(); - contextIds.add(from); - contextIds.add(to); - removeContextIdsFromCache(contextIds); - } - } - } } diff --git a/commons/impl/src/java/org/sakaiproject/commons/impl/SakaiProxyImpl.java b/commons/impl/src/java/org/sakaiproject/commons/impl/SakaiProxyImpl.java index 7c1f184d9bdd..a010991e9b55 100644 --- a/commons/impl/src/java/org/sakaiproject/commons/impl/SakaiProxyImpl.java +++ b/commons/impl/src/java/org/sakaiproject/commons/impl/SakaiProxyImpl.java @@ -19,7 +19,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Observer; import java.util.Optional; import java.util.Set; import java.util.TreeSet; @@ -493,10 +492,6 @@ public boolean isUserSite(String siteId) { return siteService.isUserSite(siteId); } - public void addObserver(Observer observer) { - eventTrackingService.addObserver(observer); - } - public String storeFile(FileItem fileItem, String siteId) { SecurityAdvisor advisor = new SecurityAdvisor() { diff --git a/commons/impl/src/webapp/WEB-INF/components.xml b/commons/impl/src/webapp/WEB-INF/components.xml index c8b6ad09d931..9977f5655b2d 100644 --- a/commons/impl/src/webapp/WEB-INF/components.xml +++ b/commons/impl/src/webapp/WEB-INF/components.xml @@ -46,7 +46,6 @@ - diff --git a/commons/tool/src/webapp/WEB-INF/bootstrap.jsp b/commons/tool/src/webapp/WEB-INF/bootstrap.jsp index 92ca72059dc8..f5f4a092e91b 100644 --- a/commons/tool/src/webapp/WEB-INF/bootstrap.jsp +++ b/commons/tool/src/webapp/WEB-INF/bootstrap.jsp @@ -22,7 +22,6 @@ ${sakaiHtmlHead} - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/exception/MessageRecipientNotDefinedException.java b/profile2/api/src/java/org/sakaiproject/profile2/exception/MessageRecipientNotDefinedException.java deleted file mode 100644 index 3db66b9ecc81..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/exception/MessageRecipientNotDefinedException.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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.exception; - -public class MessageRecipientNotDefinedException extends RuntimeException { - - private static final long serialVersionUID = 1L; - private final String message; - - public MessageRecipientNotDefinedException(final String message){ - this.message = message; - } - - public String toString() { - return MessageRecipientNotDefinedException.class + ": " + message; - } -} - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/exception/ProfilePrivacyNotDefinedException.java b/profile2/api/src/java/org/sakaiproject/profile2/exception/ProfilePrivacyNotDefinedException.java deleted file mode 100644 index 015ceb15c893..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/exception/ProfilePrivacyNotDefinedException.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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.exception; - -public class ProfilePrivacyNotDefinedException extends RuntimeException { - - private static final long serialVersionUID = 1L; - private final String message; - - public ProfilePrivacyNotDefinedException(final String message){ - this.message = message; - } - - public String toString() { - return ProfilePrivacyNotDefinedException.class + ": " + message; - } -} - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/CompanyProfile.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/CompanyProfile.hbm.xml deleted file mode 100644 index d9bb523f6747..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/CompanyProfile.hbm.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - COMPANY_PROFILES_S - - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/GalleryImage.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/GalleryImage.hbm.xml deleted file mode 100644 index 691b1c16f739..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/GalleryImage.hbm.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - GALLERY_IMAGES_S - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/Message.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/Message.hbm.xml deleted file mode 100644 index 501729a69139..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/Message.hbm.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/MessageParticipant.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/MessageParticipant.hbm.xml deleted file mode 100644 index d6dc18d6a490..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/MessageParticipant.hbm.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - PROFILE_MESSAGE_PARTICIPANTS_S - - - - - - - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/MessageThread.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/MessageThread.hbm.xml deleted file mode 100644 index af6fdb426335..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/MessageThread.hbm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileFriend.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileFriend.hbm.xml deleted file mode 100644 index 382adb6e49f7..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileFriend.hbm.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - PROFILE_FRIENDS_S - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileKudos.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileKudos.hbm.xml deleted file mode 100644 index c1c6d8e8aaae..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileKudos.hbm.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfilePreferences.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfilePreferences.hbm.xml index cff16e9a815c..dd5ba60439fd 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfilePreferences.hbm.xml +++ b/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfilePreferences.hbm.xml @@ -13,17 +13,8 @@ - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfilePrivacy.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfilePrivacy.hbm.xml deleted file mode 100644 index 5a76b46dcb97..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfilePrivacy.hbm.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileStatus.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileStatus.hbm.xml deleted file mode 100644 index 0e729afe3462..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/ProfileStatus.hbm.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - = :oldestStatusDate ORDER BY dateAdded desc]]> - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/SakaiPersonMeta.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/SakaiPersonMeta.hbm.xml index ded4bda3052c..83cc08012c98 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/SakaiPersonMeta.hbm.xml +++ b/profile2/api/src/java/org/sakaiproject/profile2/hbm/SakaiPersonMeta.hbm.xml @@ -20,21 +20,7 @@ - - - - - - - - - - - - - - @@ -48,44 +34,17 @@ - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/WallItem.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/WallItem.hbm.xml deleted file mode 100644 index 50bb0f4b5c19..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/WallItem.hbm.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - WALL_ITEMS_S - - - - - - - - - - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/WallItemComment.hbm.xml b/profile2/api/src/java/org/sakaiproject/profile2/hbm/WallItemComment.hbm.xml deleted file mode 100644 index 1a800b7cd63d..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/WallItemComment.hbm.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - WALL_ITEM_COMMENTS_S - - - - - - - - - - - - - diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/model/ProfileFriend.java b/profile2/api/src/java/org/sakaiproject/profile2/hbm/model/ProfileFriend.java deleted file mode 100644 index 482c685b600a..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/model/ProfileFriend.java +++ /dev/null @@ -1,63 +0,0 @@ -/** - * 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.hbm.model; - -import java.io.Serializable; -import java.util.Date; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - - -/** - * Hibernate model - * - * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) - * - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -public class ProfileFriend implements Serializable { - - private static final long serialVersionUID = 1L; - - @EqualsAndHashCode.Include - private long id; - private String userUuid; - private String friendUuid; - private int relationship; - private Date requestedDate; - private boolean confirmed; - private Date confirmedDate; - - - /** - * Additional constructor that should be used when requesting a friend as it has preinitialised values - */ - public ProfileFriend(String userUuid, String friendUuid, int relationship){ - this.userUuid = userUuid; - this.friendUuid = friendUuid; - this.relationship = relationship; - this.requestedDate = new Date(); - this.confirmed = false; - this.confirmedDate = null; - } - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/hbm/model/ProfileKudos.java b/profile2/api/src/java/org/sakaiproject/profile2/hbm/model/ProfileKudos.java deleted file mode 100644 index ce68386837be..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/hbm/model/ProfileKudos.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * 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.hbm.model; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -/** - * Model for a kudos score for a user - persistent - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ - -@Data -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -public class ProfileKudos implements Serializable { - - private static final long serialVersionUID = 1L; - @EqualsAndHashCode.Include - private String userUuid; - - /** - * Calculated score out of 100, more accurate if you need better reporting. - */ - private BigDecimal percentage; - - /** - * Adjusted score used for display, less accurate, however some items are unattainable depending on who you are - * so this is always rounded up and is fairer. - * - *

This value is used for display.

- */ - private int score; - private Date dateAdded; - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileConnectionsLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileConnectionsLogic.java deleted file mode 100644 index 2e5e2c8ea0a4..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileConnectionsLogic.java +++ /dev/null @@ -1,208 +0,0 @@ -/** - * 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.logic; - -import java.util.List; -import java.util.Map; - -import org.sakaiproject.profile2.model.BasicConnection; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.user.api.User; - -/** - * An interface for dealing with connections in Profile2 - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public interface ProfileConnectionsLogic { - - /** - * Gets a list of BasicConnection that are connected to this user - * - * @param userUuid uuid of the user to retrieve the list of connections for - * @return - */ - public List getBasicConnectionsForUser(final String userUuid); - - /** - * Gets a list of Persons that are connected to this user. incl prefs and privacy - * - * @param userUuid uuid of the user to retrieve the list of connections for - * @return - */ - public List getConnectionsForUser(final String userUuid); - - /** - * Gets a list of Persons that are connected to this user. Current user, prefs - * and privacy are skipped. - * - * @param userUuid uuid of the user to retrieve the list of connections for - * @return - */ - public List getConnectedUsersForUserInsecurely(final String userUuid); - - - /** - * Gets a count of the number of connections a user has. - * @param userId uuid of the user to retrieve the count for - * @return - */ - public int getConnectionsForUserCount(final String userId); - - /** - * Gets a list of Persons's that have unconfirmed connection requests to this person - * - * @param userId uuid of the user to retrieve the list of connections for - * @return - */ - public List getConnectionRequestsForUser(final String userId); - - /** - * Gets a list of Persons's that have unconfirmed connection requests from this person - * - * @param userId the user whose outgoing outgoing connections will be retrieved - * @return A list of Persons who have had a request from the supplied user - */ - public List getOutgoingConnectionRequestsForUser(final String userId); - - /** - * Gets a count of the number of unconfirmed incoming connection requests - * - * @param userId uuid of the user to retrieve the list of connections for - * @return - */ - public int getConnectionRequestsForUserCount(final String userId); - - /** - * Gets a subset of the connection list, based on the search string matching the beginning of the displayName - * @param connections list of connections - * @param search search string to match on - * @return - */ - public List getConnectionsSubsetForSearch(List connections, String search); - - /** - * Gets a subset of the connection list, based on the search string matching the beginning of the displayName, - * and based on whether that user is allowed to be messaged. - * @param connections list of connections - * @param search search string to match on - * @param forMessaging if this request is for messaging, we also check if the user has indicated they can receive messages - * @return - */ - public List getConnectionsSubsetForSearch(List connections, String search, boolean forMessaging); - - /** - * Get the connection status between two users. The user making the query must be userA. - * @param userA user making the query - * @param userB any other user - * @return int signaling the connection status. See ProfileConstants. - */ - public int getConnectionStatus(String userA, String userB); - - /** - * Make a request for friendId to be a friend of userId - * - * @param userId uuid of the user making the request - * @param friendId uuid of the user that userId wants to be a friend of - */ - public boolean requestFriend(String userId, String friendId); - - /** - * Check if there is a pending request from fromUser to toUser - * - * @param fromUser uuid of the user that made the friend request - * @param toUser uuid of the user that userId made the request to - */ - public boolean isFriendRequestPending(String fromUser, String toUser); - - /** - * Confirm friend request from fromUser to toUser - * - * @param fromUser uuid of the user that made the original friend request - * @param toUser uuid of the user that received the friend request - * - * Note that fromUser will ALWAYS be the one making the friend request, - * and toUser will ALWAYS be the one who receives the request. - */ - public boolean confirmFriendRequest(String fromUser, String toUser); - - /** - * Ignore a friend request from fromUser to toUser - * - * @param fromUser uuid of the user that made the original friend request - * @param toUser uuid of the user that received the friend request and wants to ignore it - * - * Note that fromUser will ALWAYS be the one that made the friend request, - * and toUser will ALWAYS be the one who receives the request. - */ - public boolean ignoreFriendRequest(String fromUser, String toUser); - - /** - * Remove a friend connection - * - * @param userId uuid of one user - * @param userId uuid of the other user - * - * Note that they could be in either column - */ - public boolean removeFriend(String userId, String friendId); - - /** - * Is userY a friend of the userX? - * - * @param userX the uuid of the user we are querying - * @param userY current user uuid - * @return boolean - */ - public boolean isUserXFriendOfUserY(String userX, String userY); - - /** - * Get a BasicConnection - * @param userUuid - * @return - */ - public BasicConnection getBasicConnection(String userUuid); - - /** - * Get a BasicConnection - * @param user - * @return - */ - public BasicConnection getBasicConnection(User user); - - /** - * Get a List of BasicConnections for the given Users. - * @param users - * @return - */ - public List getBasicConnections(List users); - - /** - * Get the online status for a user - * @param userUuid user to check - * @return int of status, according to ProfileConstants.ONLINE_STATUS_x - */ - public int getOnlineStatus(String userUuid); - - /** - * Get the online status for a list of users - * @param userUuid List of users to check - * @return Map of userUuid to the status, according to ProfileConstants.ONLINE_STATUS_x - */ - public Map getOnlineStatus(List userUuids); - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileExternalIntegrationLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileExternalIntegrationLogic.java index 576489aa3f4a..afe4ccc3c277 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileExternalIntegrationLogic.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileExternalIntegrationLogic.java @@ -15,8 +15,6 @@ */ package org.sakaiproject.profile2.logic; -import java.util.Map; - import org.sakaiproject.profile2.model.ExternalIntegrationInfo; /** diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileImageLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileImageLogic.java index 6032a91244de..b6de8a08c419 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileImageLogic.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileImageLogic.java @@ -15,13 +15,9 @@ */ package org.sakaiproject.profile2.logic; -import java.util.List; - -import org.sakaiproject.profile2.model.GalleryImage; import org.sakaiproject.profile2.model.Person; import org.sakaiproject.profile2.model.ProfileImage; import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; /** * An interface for dealing with images in Profile2 @@ -40,19 +36,16 @@ public interface ProfileImageLogic { public ProfileImage getBlankProfileImage(); /** - * Get the profile image for a user. Takes into account all global settings, user preferences and privacy. + * Get the profile image for a user. Takes into account all global settings, user preferences . * *

If making a request for your own image

*
    - *
  • 'privacy' can be null as it won't be considered.
  • *
  • You should provide 'prefs' (if available) otherwise it will be looked up.
  • *
* *

If making a request for someone else's image

*
    - *
  • You should provide the privacy settings for that user (if available), otherwise it will be looked up.
  • *
  • You should provide the preferences object for that user (if available), otherwise it will be looked up.
  • - *
  • If privacy is null, a default image will be returned
  • *
  • If preferences is still null, the global preference will be used, which may not exist and therefore be default.
  • *
* @@ -61,11 +54,10 @@ public interface ProfileImageLogic { * * @param userUuid * @param prefs - * @param privacy * @param size * @return */ - public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, ProfilePrivacy privacy, int size); + public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, int size); /** * Gets the official profile image for a user. @@ -76,20 +68,18 @@ public interface ProfileImageLogic { public ProfileImage getOfficialProfileImage(String userUuid, String siteId); /** - * Get the profile image for a user. Takes into account all global settings, user preferences, privacy and permissions in the given site. - * See getProfileImage(String, ProfilePreferences, ProfilePrivacy, int); + * Get the profile image for a user. Takes into account all global settings, user preferences and permissions in the given site. * @param userUuid * @param prefs - * @param privacy * @param size * @param siteId - optional siteid to check if the current user has permissions in this site to see the target user's image (PRFL-411) * @return */ - public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, ProfilePrivacy privacy, int size, String siteId); + public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, int size, String siteId); /** - * Get the profile image for a user. See getProfileImage(String, ProfilePreferences, ProfilePrivacy, int); + * Get the profile image for a user. * @param person Person object that contains all info about a user * @param size size of image to return. * @return @@ -97,7 +87,7 @@ public interface ProfileImageLogic { public ProfileImage getProfileImage(Person person, int size); /** - * Get the profile image for a user. See getProfileImage(String, ProfilePreferences, ProfilePrivacy, int); + * Get the profile image for a user. See getProfileImage(String, ProfilePreferences int); * @param person Person object that contains all info about a user * @param size size of image to return. * @param siteId - optional siteid to check if the current user has permissions in this site to see the target user's image (PRFL-411) @@ -143,45 +133,6 @@ public interface ProfileImageLogic { */ public String getUnavailableImageThumbnailURL(); - /** - * Add a gallery image for the specified user. - * - * @param userUuid the ID of the user. - * @param imageBytes the image bytes. - * @param mimeType the MIME type of the image. - * @param fileName the filename of the image. - * @return true if the gallery image is successfully added, - * false if the gallery image is not added. - */ - public boolean addGalleryImage(String userUuid, byte[] imageBytes,String mimeType, String fileName); - - /** - * Retrieves all gallery images for the specified user. - * - * @param userUuid the ID of the user. - * @return all profile gallery images for the specified user. - */ - public List getGalleryImages(String userUuid); - - /** - * Retrieves all gallery images in randomized order for the specified user. - * - * @param userUuid the ID of the user. - * @return all profile gallery images in randomized order for the specified - * user. - */ - public List getGalleryImagesRandomized(String userUuid); - - /** - * Remove the specified gallery image. - * - * @param userUuid the user ID. - * @param imageUuid the image ID. - * @return true if the gallery image is successfully removed, - * false if the gallery image is not removed. - */ - public boolean removeGalleryImage(String userId, long imageId); - /** * Save the official image url that institutions can set. * @param userUuid uuid of the user @@ -201,13 +152,6 @@ public interface ProfileImageLogic { */ public String getProfileImageEntityUrl(String userUuid, int size); - /** - * Get a count of the number of gallery images for a user - * @param userUuid uuid for the user - * @return - */ - public int getGalleryImagesCount(final String userUuid); - /** * Generate a gravatar URL for a user * diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileKudosLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileKudosLogic.java deleted file mode 100644 index 2ebf06e19e5e..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileKudosLogic.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * 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.logic; - -import java.math.BigDecimal; - - -/** - * An interface for dealing with kudos in Profile2 - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public interface ProfileKudosLogic { - - /** - * Get the kudos rating for a user - * @param userUuid user to get the rating for - * @return int or 0 if none. - * - *

This is the adjusted score, an integer out of ten.

- */ - public int getKudos(String userUuid); - - /** - * Get the kudos rating for a user - * @param userUuid user to get the rating for - * @return BigDecimal or null if none. - * - *

This is the more accurate score.

- */ - public BigDecimal getRawKudos(String userUuid); - - /** - * Update a user's kudos rating - * - * @param userUuid uuid for the user - * @param score score, already calculated out of ten. - * @param percentage value out of 100, more accurate. - - * @return - */ - public boolean updateKudos(String userUuid, int score, BigDecimal percentage); -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogic.java index ad6f8cae4204..c7abc3a84651 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogic.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogic.java @@ -58,59 +58,6 @@ public interface ProfileLinkLogic { */ public String getInternalDirectUrlToUserProfile(final String viewerUuid, final String viewedUuid); - /** - * Creates a full URL to the messages page (and optionally directly to a message view) of the currently logged in user's - * profile page on their My Workspace. - * - *

- * This should only be used internally by Profile2 as the URL is long and ugly. - * If you need to generate a URL to a user's profile, see {@link getUrlToUserMessages} - *

- * - * @param threadId optional param if we want to link direct to a message thread view - * @return the url or null if they don't have the tool installed. - */ - public String getInternalDirectUrlToUserMessages(final String threadId); - - /** - * Creates a full URL to the connections page of the specified user's - * profile page on their My Workspace. - * - *

- * This should only be used internally by Profile2 as the URL is long and ugly. - * If you need to generate a URL to a user's profile, see {@link getUrlToUserConnections} - *

- * - * @return the url or null if they don't have the tool installed. - */ - public String getInternalDirectUrlToUserConnections(String userId); - - /** - * Creates a full URL to the connections page of the currently logged in user's - * profile page on their My Workspace. - * - *

- * This should only be used internally by Profile2 as the URL is long and ugly. - * If you need to generate a URL to a user's profile, see {@link getUrlToUserConnections} - *

- * - * @return the url or null if they don't have the tool installed. - */ - public String getInternalDirectUrlToUserConnections(); - - /** - * Creates a full URL to the wall page of the currently logged in user's - * profile page on their My Workspace. - * - *

- * This should only be used internally by Profile2 as the URL is long and ugly. - * If you need to generate a URL to a user's profile, see {@link generateUrlToUserProfile} - *

- * - * @return the url or null if they don't have the tool installed. - */ - public String getInternalDirectUrlToUserWall(String userUuid, String wallItemId); - /** * Creates a RESTful link to the Profile2 home page for either the currently logged in user (if null param) or the given user. * When followed, will pass through the ProfileLinkEntityProvider and be resolved into the real link @@ -123,49 +70,4 @@ public interface ProfileLinkLogic { * @return */ public String getEntityLinkToProfileHome(final String userUuid); - - /** - * Creates a RESTful link to the Profile2 message page (and optionally directly to a thread) for any currently logged in user. - * When followed, will pass through the ProfileLinkEntityProvider and be resolved into the real link. - * - *

Note: If that person is not a thread participant, this will be handled in the tool and just put to their message list page.

- * - *

The URL is of the form: http://server.com/direct/my/messages or http://server.com/direct/my/messages/12345

- * - * @param threadId optionally, add the threadId to the URL - * @return - */ - public String getEntityLinkToProfileMessages(final String threadId); - - /** - * Creates a RESTful link to the Profile2 conenctions page for any currently logged in user. - * When followed, will pass through the ProfileLinkEntityProvider and be resolved into the real link. - * - *

The URL is of the form: http://server.com/direct/my/connections

- * - * @return - */ - public String getEntityLinkToProfileConnections(); - - /** - * Creates a RESTful link to the Profile2 wall page for either the currently logged in user (if null param) or the given user. - * When followed, will pass through the ProfileLinkEntityProvider and be resolved into the real link - * - *

This is used for url shortening and also to avoid generating the personalised link for each user for when sending out multiple emails.

- * - *

The URL is of the form: http://server.com/direct/my/profile/{userUuid}

- * - * @param userUuid optional if you want to link to the wall of another person - * @return - */ - public String getEntityLinkToProfileWall(String userUuid); - - /** - * Generate a tiny URL for the supplied URL - * - * @param url - * @return - */ - //public String generateTinyUrl(final String url); - } diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLogic.java index 1a813a050bb4..b91447be8518 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLogic.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileLogic.java @@ -19,7 +19,6 @@ import org.sakaiproject.api.common.edu.person.SakaiPerson; import org.sakaiproject.profile2.model.BasicPerson; -import org.sakaiproject.profile2.model.CompanyProfile; import org.sakaiproject.profile2.model.MimeTypeByteArray; import org.sakaiproject.profile2.model.Person; import org.sakaiproject.profile2.model.SocialNetworkingInfo; @@ -77,38 +76,6 @@ public interface ProfileLogic { */ public boolean saveUserProfile(SakaiPerson sp); - /** - * Adds a new company profile to the database. - * - * @param companyProfile the company profile to add. - * @return the success of the operation. - */ - public boolean addNewCompanyProfile(CompanyProfile companyProfile); - - /** - * Retrieves the company profiles from the database for the specified user. - * - * @param userId the ID of the user to query by. - */ - public List getCompanyProfiles(String userId); - - /** - * Removes the specified company profile for the specified user. - * - * @param userId the ID of the user to query by. - * @param companyProfile the ID of the company profile to remove. - */ - public boolean removeCompanyProfile(String userId, long companyProfile); - - /** - * Saves an existing company profile in the database. New company profiles - * should be added using the addNewCompanyProfile method. - * - * @param companyProfile the existing company profile to be saved. - * @return the success of the operation. - */ - public boolean updateCompanyProfile(CompanyProfile companyProfile); - /** * Retrieves the social networking information for the specified user from * the database. diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileMessagingLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileMessagingLogic.java deleted file mode 100644 index 9ce8d525ce6d..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileMessagingLogic.java +++ /dev/null @@ -1,162 +0,0 @@ -/** - * 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.logic; - -import java.util.List; - -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.model.MessageParticipant; -import org.sakaiproject.profile2.model.MessageThread; - -/** - * An interface for dealing with messaging in Profile2 - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public interface ProfileMessagingLogic { - - /** - * Get the number of all unread messages for this user, across all all message threads. - * - * @param userId uuid of the user to retrieve the count for - */ - public int getAllUnreadMessagesCount(final String userId); - - /** - * Get the number of threads with unread messages. - *

For instance, if a user has two message threads, each with one unread message in each thread, this will return 2, as expected. - *
However, if a user has two message threads, each with 5 unread messages in each thread, this will return 2, not 10. - *
This is because we are interested in the number of threads with unread messages not the total unread messages. See {@link ProfileLogic#getAllUnreadMessagesCount(String)} if you want that instead.

- * @param userId uuid of the user to retrieve the count for - * @return - */ - public int getThreadsWithUnreadMessagesCount(final String userId); - - /** - * Get the number of all messages sent from this user - * - * @param userId uuid of the user to retrieve the count for - * @return - */ - public int getSentMessagesCount(final String userId); - - /** - * Gets a MessageThread, first gets the item, then injects the latest Message into it before returning - * TODO This needs to be optimised to get the latest message property in the same query. - * @param id id of the thread - * @return - */ - public MessageThread getMessageThread(final String threadId); - - - /** - * Gets a list of MessageThreads with messages to a given user, each containing the most recent messages in each thread - * TODO This needs to be optimised to get the latest message property in the same query. - * @param userId user to get the list of messages for - * @return - */ - public List getMessageThreads(final String userId); - - /** - * Gets the count of the message threads for a user - * @param userId user to get the count of message threads for - * @return - */ - public int getMessageThreadsCount(final String userId); - - /** - * Gets a list of the messages contained in this thread, sorted by date posted. - * @param threadId id of the thread to get the messages for - * @return - */ - public List getMessagesInThread(final String threadId); - - /** - * Gets the count of the messages in a thread - * @param threadId thread to get the count for - * @return - */ - public int getMessagesInThreadCount(final String threadId); - - /** - * Gets a Message from the database - * @param id id of the message - * @return - */ - public Message getMessage(final String id); - - /** - * Send a message - *

TODO this should be optimised for foreign key constraints

- * @param uuidTo uuid of recipient - * @param uuidFrom uuid of sender - * @param threadId threadId, a uuid that should be generated via {@link ProfileUtils.generateUuid()} - * @param subject message subject - * @param messageStr message body - * @return - */ - public boolean sendNewMessage(final String uuidTo, final String uuidFrom, final String threadId, final String subject, final String messageStr); - - /** - * Sends a reply to a thread, returns the Message just sent - * @param threadId id of the thread - * @param reply the message - * @param userId uuid of user who is sending the message - * @return - */ - public Message replyToThread(final String threadId, final String reply, final String userId); - - /** - * Toggle a single message as read/unread - * @param participant the MessageParticipant record as this is the item that stores read/unread status - * @param status boolean if to be toggled as read/unread - * @return - */ - public boolean toggleMessageRead(MessageParticipant participant, final boolean status); - - /** - * Get a MessageParticipant record - * @param messageId message id to get the record for - * @param userUuid uuid to get the record for - * @return - */ - public MessageParticipant getMessageParticipant(final String messageId, final String userUuid); - - - /** - * Get a list of all participants in a thread - * @param threadId id of the thread - * @return - */ - public List getThreadParticipants(final String threadId); - - /** - * Is the user a participant in this thread? - * @param threadId id of the thread - * @param userId id of the user - * @return - */ - public boolean isThreadParticipant(final String threadId, final String userId); - - /** - * Get the subject of a thread - * @param threadId id of the thread - * @return - */ - public String getThreadSubject(final String threadId); - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogic.java index 986553658229..49a43c83eb35 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogic.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogic.java @@ -53,14 +53,4 @@ public interface ProfilePreferencesLogic { * @param profilePreferences the record for the user */ public boolean savePreferencesRecord(ProfilePreferences profilePreferences); - - /** - * Does this user have the specific preference enabled? used for querying all of the preferences - * @param userUuid uuid of the user - * @param type PreferenceType enum - * @return true if enabled, false if not - * @since 1.5 - */ - public boolean isPreferenceEnabled(final String userUuid, final PreferenceType type); - } diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfilePrivacyLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfilePrivacyLogic.java deleted file mode 100644 index b6f47ea3eb4f..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfilePrivacyLogic.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * 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.logic; - -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.types.PrivacyType; - -/** - * An interface for dealing with ProfilePrivacy in Profile2 - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public interface ProfilePrivacyLogic { - - /** - * Retrieve the profile privacy record from the database for this user. If none exists, will - * attempt to create one for the user. If that also fails, will return null. - * - *

Defaults to using the cached version where possible

- * - * @param userId uuid of the user to retrieve the record for - * @return ProfilePrivacy record or null - */ - public ProfilePrivacy getPrivacyRecordForUser(String userId); - - /** - * Save the profile privacy record to the database - * - * @param profilePrivacy the record for the user - */ - public boolean savePrivacyRecord(ProfilePrivacy profilePrivacy); - - /** - * Has the user allowed the other user to perform a certain action or view a piece of content? - *

Most profile privacy actions are dealt with here. - * - * @param userX the uuid of the user that will have the action performed on them - * @param userY uuid of user requesting to do the action - * @param type PrivacyType enum - * @return true if allowed, false if not. - * @since 1.5 - * - */ - public boolean isActionAllowed(final String userX, final String userY, final PrivacyType type); - - /** - * Has the user allowed viewing of their birth year in their profile. - * This is either on or off and does not depend on friends etc which is why it is not included above. - * - * @param uuid the uuid of the user we are querying - * @return boolean - */ - public boolean isBirthYearVisible(String uuid); -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileSearchLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileSearchLogic.java deleted file mode 100644 index 5b4bfba1ea3b..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileSearchLogic.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * 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.logic; - -import java.util.List; - -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfileSearchTerm; - -/** - * An interface for dealing with profile searches. - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * @author Daniel Robinson (d.b.robinson@lancaster.ac.uk) - */ -public interface ProfileSearchLogic { - - /** - * Find all users that match the search string in either name or email. - * - *

Searches SakaiPerson, UserDirectorySerice internal users as well as external users if your - * provider supports SearchExternalUsersUDP.

- * - *

This list is automatically cleaned for non-existent users by way of UserDirectoryService.getUsers.

- * - * @param search string to search for - * @param includeConnections should connections be returned in results - * @param worksiteId optional parameter to limit search to a single worksite. Specify null to search all users. - * @return List Persons - */ - public List findUsersByNameOrEmail(String search, boolean includeConnections, String worksiteId); - - /** - * Find all users that match the search string in any of the relevant SakaiPerson fields - * - *

This list is automatically cleaned for non-existent users by way of UserDirectoryService.getUsers.

- * - * @param search string to search for - * @param includeConnections should connections be returned in results - * @param worksiteId optional parameter to limit search to a single worksite. Specify null to search all users. - * @return List Persons - */ - public List findUsersByInterest(String search, boolean includeConnections, String worksiteId); - - /** - * Retrieves the last search term made by the user with the given UUID. - * - * @param userUuid the UUID of the user to query by. - * @return the last search term made by the user with the given - * UUID. Returns null if no search term is found. - */ - public ProfileSearchTerm getLastSearchTerm(String userUuid); - - /** - * Retrieves the search history for the user with the given UUID. - * - * @param userUuid the UUID of the user to query by. - * @return the search history for the user with the given UUID. Returns - * null if no search history is found. - */ - public List getSearchHistory(String userUuid); - - /** - * Adds the given profile search term to a user's search history. - * - * @param userUuid the user whose history we're adding to. - * @param searchTerm the search term to add. - */ - public void addSearchTermToHistory(String userUuid, ProfileSearchTerm searchTerm); - - /** - * Clears the search history for the user with the given UUID. - * - * @param userUuid the UUID of the user to clear history for. - */ - public void clearSearchHistory(String userUuid); -} \ No newline at end of file diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileStatusLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileStatusLogic.java deleted file mode 100644 index c050ffe67cb0..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileStatusLogic.java +++ /dev/null @@ -1,89 +0,0 @@ -/** - * 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.logic; - -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.ProfileStatus; - -/** - * An interface for dealing with ProfileStatus in Profile2 - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public interface ProfileStatusLogic { - - /** - * Get the status (message and date) for a user - * - *

Only returns a status object for those that are up to and including one week old. - * This could be configurable.

- * - *

The privacy settings will be retrieved, and checked against the - * current requesting user to see if the status is allowed to be shown.

- * - * @param userUuid uuid of the user to get their status for - * @return ProfileStatus or null if not allowed/none - */ - public ProfileStatus getUserStatus(String userUuid); - - /** - * Get the status (message and date) for a user - * - *

Only returns a status object for those that are up to and including one week old. - * This could be configurable.

- * - *

The supplied privacy settings will be checked against the - * current requesting user to see if the status is allowed to be shown.

- * - * @param userUuid uuid of the user to get their status for - * @param privacy ProfilePrivacy object for the user. - * @return ProfileStatus or null if not allowed/none - */ - public ProfileStatus getUserStatus(String userUuid, ProfilePrivacy privacy); - - /** - * Set user status - * - * @param userId uuid of the user - * @param status status to be set - */ - public boolean setUserStatus(String userId, String status); - - /** - * Set user status - * - * @param profileStatus ProfileStatus object for the user - */ - public boolean setUserStatus(ProfileStatus profileStatus); - - - /** - * Clear user status - * - * @param userId uuid of the user - */ - public boolean clearUserStatus(String userId); - - /** - * Get the number of status updates this user has made. Until PRFL-191 is implemented - * which allows multiple status updates, this will only return one. - * - * @param userUuid uuid of the user - * @return - */ - public int getStatusUpdatesCount(final String userUuid); -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileWallLogic.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileWallLogic.java deleted file mode 100644 index 93f28307235a..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/ProfileWallLogic.java +++ /dev/null @@ -1,135 +0,0 @@ -/** - * 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.logic; - -import java.util.List; - -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.model.WallItemComment; - -/** - * Logic interface for the Profile2 wall. - * - * @author d.b.robinson@lancaster.ac.uk - * @deprecated The wall functionality will be removed from Sakai for the 13 release. - */ -@Deprecated -public interface ProfileWallLogic { - - /** - * Notifies a user's connections of an event added to the user's wall. - * - * Note: the wall logic is currently responsible for timestamping the event, - * but we might want to pass the date in this API call instead. - * - * @param event the event to add. - * @param userUuid the ID of the user that created the event. - */ - public void addNewEventToWall(String event, String userUuid); - - /** - * Notifies a user's connections of a status update added to the user's wall. - * - * Note: the wall logic is currently responsible for timestamping the status - * update, but we might want to pass the date in this API call instead. - * - * @param status the status to add. - * @param userUuid the ID of the user whose status we're posting. - */ - public void addNewStatusToWall(String status, String userUuid); - - /** - * Adds a new wall item comment. - * - * @param wallItemComment the wall item comment to add. - * @return true if the add is successful and - * false if the add fails. - */ - public boolean addNewCommentToWallItem(WallItemComment wallItemComment); - - /** - * Posts the specified wall item to the specified user's wall and the - * walls of their connections. - * - * @param userUuid the id of the user whose wall we're posting to. - * @param wallItem the wall item to post. - */ - public boolean postWallItemToWall(String userUuid, WallItem wallItem); - - /** - * Removes the specified wall item. - * - * @param wallItem the wall item to remove. - */ - public boolean removeWallItemFromWall(WallItem wallItem); - - /** - * Returns the specified wall item. - * - * @param wallItemId the wall item to return. - * @return the wall item for the specified id. - */ - public WallItem getWallItem(long wallItemId); - - /** - * Returns the specified wall item comment. - * - * @param wallItemCommentId the wall item comment to return. - * @return the wall item comment for the specified id. - */ - public WallItemComment getWallItemComment(long wallItemCommentId); - - /** - * Returns the wall for the specified user. The privacy record will - * be looked up. - * - * @param userUuid the user to query by. - * @return the wall for the specified user. - */ - public List getWallItemsForUser(String userUuid); - - /** - * Returns the wall for the specified user. Privacy settings are used - * to determine if the user is allowed to access the requested wall. - * - * @param userUuid the user to query by. - * @param privacy the privacy record for the user. - * @return the wall for the specified user. - */ - public List getWallItemsForUser(String userUuid, ProfilePrivacy privacy); - - /** - * Returns the number of available wall items for the specified user. The - * privacy record will be looked up. - * - * @param userUuid the user to query by. - * @return the number of available wall items for the specified user. - */ - public int getWallItemsCount(String userUuid); - - /** - * Returns the number of available wall items for the specified user. - * Privacy settings are used to determine if the user is allowed to access - * the requested wall items. - * - * @param userUuid the user to query by. - * @param privacy the privacy record for the user. - * @return the number of available wall items for the specified user. - */ - public int getWallItemsCount(String userUuid, ProfilePrivacy privacy); - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/logic/SakaiProxy.java b/profile2/api/src/java/org/sakaiproject/profile2/logic/SakaiProxy.java index d8fc78a10bf8..7f9330a4b578 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/logic/SakaiProxy.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/logic/SakaiProxy.java @@ -254,24 +254,6 @@ public interface SakaiProxy { */ public int getMaxProfilePictureSize(); - /** - * Returns the gallery resource path for the specified user and image. - * - * @param userId the ID of the user. - * @param imageId the ID of the image. - * @return the gallery resource path for the specified user and image. - */ - public String getProfileGalleryImagePath(String userId, String imageId); - - /** - * Returns the gallery resource path for the specified user and thumbnail. - * - * @param userId the ID of the user. - * @param imageId the ID of the thumbnail. - * @return the gallery resource path for the specified user and image. - */ - public String getProfileGalleryThumbnailPath(String userId, String thumbnailId); - /** * Get the location for a profileImage given the user and type * @@ -308,22 +290,6 @@ public interface SakaiProxy { */ public boolean removeResource(String resourceId); - /** - * Search UserDirectoryService for users that match in name or email. - * - * @param search search string. - * @return a List of User objects - */ - public List searchUsers(String search); - - /** - * Search UserDirectoryService for externally provided users that match in name or email. - * - * @param search search string. - * @return a List of User objects - */ - public List searchExternalUsers(String search); - /** * Post an event to Sakai * @@ -334,34 +300,6 @@ public interface SakaiProxy { */ public void postEvent(String event, String reference, boolean modify); - /** - * Send an email message. The message should be ready to go as is. The message will be formatted with mime boundaries, html escaped then - * sent. - * - * @param userId userId to send the message to - * @param subject subject of message - * @param message complete with newlines and any links. - */ - //public void sendEmail(String userId, String subject, String message); - - /** - * Sends an email to a list of users using the email template and replacement values supplied - * - * @param users list of userIds to send to - already cleaned up for their email preferences - * @param emailTemplateKey the email template - * @parem replacementValues Map of values that are substituted into the placeholders in the email template. - */ - public void sendEmail(List userIds, String emailTemplateKey, Map replacementValues); - - /** - * Sends an email to a single user using the email template and replacement values supplied - * - * @param user userId to send to - already cleaned up for their email preferences - * @param emailTemplateKey the email template - * @parem replacementValues Map of values that are substituted into the placeholders in the email template. - */ - public void sendEmail(String userId, String emailTemplateKey, Map replacementValues); - /** * Get the name of this Sakai installation (ie Sakai@Lancs) * @@ -483,37 +421,6 @@ public interface SakaiProxy { */ public boolean isAccountUpdateAllowed(String userId); - /** - * Is the profile2.profile.business.enabled flag set in sakai.properties? If not set, defaults to false. - * - * @return true if the profile2.profile.business.enabled flag is set, otherwise returns false. - */ - public boolean isBusinessProfileEnabled(); - - /** - * Is the profile2.wall.enabled flag set in sakai.properties? If not set, defaults to false. - * - * DEPRECATED: UNLESS THERE IS AN EXPRESSED DESIRE FOR THIS FUNCTIONALITY THE WALL WILL BE REMOVED FOR 13. - * - * @return true if the profile2.wall.enabled flag is set, otherwise returns false. - */ - @Deprecated - public boolean isWallEnabledGlobally(); - - /** - * Is the profile2.wall.default flag set in sakai.properties? If not set, defaults to false. - * - * @return true if the profile2.wall.default flag is set, otherwise returns false. - */ - public boolean isWallDefaultProfilePage(); - - /** - * Is the profile2.gallery.enabled flag set in sakai.properties? If not set, default to true. - * - * @return the status of the profile2.gallery.enabled flag in sakai.properties. Returns true by default. - */ - public boolean isProfileGalleryEnabledGlobally(); - /** * Is the profile2.picture.change.enabled flag set in sakai.properties? If not set, defaults to true * @@ -581,27 +488,6 @@ public interface SakaiProxy { */ public boolean currentUserMatchesRequest(String userUuid); - /** - * Is the profile2.privacy.change.enabled flag set in sakai.properties? If not set, defaults to true - *

- * - * Allows an institution to lock down privacy changes as some things need to be never changed. Generally should coupled with the - * sakai.properties that override the default privacy settings - * - * @return - */ - public boolean isPrivacyChangeAllowedGlobally(); - - /** - * Gets the set of sakai.properties that can override the built in defaults. This is then called when a default privacy record is - * requested and the values used preferentially. - * - * Note that mostly the value is an Integer but for some values its a Boolean, ie checkboxes - * - * @return - */ - public HashMap getOverriddenPrivacySettings(); - /** * Gets the profile2.invisible.users List for user's that should never show in searches or connection lists * @@ -609,22 +495,6 @@ public interface SakaiProxy { */ public List getInvisibleUsers(); - /** - * Gets the list of usertypes from profile2.allowed.connection.usertypes.TYPE. - *

- * This defines what user types can connect to each other. The requestingUserType is appended to the property string and the list - * retrieved. If targetUserType is in the list, they can connect (true). If not, false. - *

- *

- * If the property does not exist for that userType, they can connect, to maintain backward compatibility and keep it open. - *

- * - * @param requestingUserType - * @param targetUserType - * @return - */ - public boolean isConnectionAllowedBetweenUserTypes(String requestingUserType, String targetUserType); - /** * Toggle a profile's locked status. * @@ -777,16 +647,6 @@ public interface SakaiProxy { */ public boolean checkForSite(String siteId); - /** - * Get the profile2.search.maxSearchResults value from sakai.properties - */ - public int getMaxSearchResults(); - - /** - * Get the profile2.search.maxSearchResultsPerPage value from sakai.properties - */ - public int getMaxSearchResultsPerPage(); - /** * Is profile2.gravatar.image.enabled true? If so, allow use of this image and preference. * @@ -878,16 +738,6 @@ public interface SakaiProxy { */ public boolean isProfileFieldsEnabled(); - /** - * Is the profile2.profile.status.enabled flag set in sakai.properties? If not set, defaults to true. - * - *

- * This setting controls the display of the profile status section. - * - * @return true or false. - */ - public boolean isProfileStatusEnabled(); - /** * Is the profile2.profile.social.enabled flag set in sakai.properties? If not set, defaults to true. * @@ -895,27 +745,6 @@ public interface SakaiProxy { */ public boolean isSocialProfileEnabled(); - /** - * Is the profile2.profile.interests.enabled flag set in sakai.properties? If not set, defaults to true. - * - * @return true if the profile2.profile.interests.enabled flag is set, otherwise returns false. - */ - public boolean isInterestsProfileEnabled(); - - /** - * Is the profile2.profile.staff.enabled flag set in sakai.properties? If not set, defaults to true. - * - * @return true if the profile2.profile.staff.enabled flag is set, otherwise returns false. - */ - public boolean isStaffProfileEnabled(); - - /** - * Is the profile2.profile.student.enabled flag set in sakai.properties? If not set, defaults to true. - * - * @return true if the profile2.profile.student.enabled flag is set, otherwise returns false. - */ - public boolean isStudentProfileEnabled(); - /** * Is the profile2.profile.name.pronunciation.enabled flag set in sakai.properties? If not set, defaults to true * @@ -935,53 +764,6 @@ public interface SakaiProxy { */ public boolean isMenuEnabledGlobally(); - /** - * Is the profile2.connections.enabled flag set in sakai.properties? If not set, defaults to true. - * - *

- * If enabled, the connection feature will be available. - *

- * - * @return true if the profile2.connections.enabled flag is set, otherwise returns false. - */ - public boolean isConnectionsEnabledGlobally(); - - /** - * Is the profile2.messaging.enabled flag set in sakai.properties? If not set, default to true, as long as profile2.connections.enabled - * is true. - * - *

- * If enabled, the messaging feature will be enabled. Though, Messaging depends on Connections, thus if ConnectionsEnabled == false, - * Messaging will also be false. - *

- * - * @return the status of the profile2.messaging.enabled flag in sakai.properties. Returns true by default. - */ - public boolean isMessagingEnabledGlobally(); - - /** - * Is the profile2.search.enabled flag set in sakai.properties? If not set, defaults to true. - * - *

- * If enabled, the ability to search for people in profile will be available. - *

- * - * @return true if the profile2.search.enabled flag is set, otherwise returns false. - */ - public boolean isSearchEnabledGlobally(); - - /** - * Is the profile2.privacy.enabled flag set in sakai.properties? If not set, defaults to true. - * - *

- * If enabled, the ability to modify one's privacy settings in profile will be available. Set profile2.privacy.default.x appropriately - * if disabled - *

- * - * @return true if the profile2.privacy.enabled flag is set, otherwise returns false. - */ - public boolean isPrivacyEnabledGlobally(); - /** * Is the profile2.preference.enabled flag set in sakai.properties? If not set, defaults to true. * @@ -993,28 +775,6 @@ public interface SakaiProxy { */ public boolean isPreferenceEnabledGlobally(); - /** - * Is the profile2.myKudos.enabled flag set in sakai.properties? If not set, defaults to true. - * - *

- * If enabled, the Kudos feature will be displayed. - *

- * - * @return true if the profile2.myKudos.enabled flag is set, otherwise returns false. - */ - public boolean isMyKudosEnabledGlobally(); - - /** - * Is the profile2.onlineStatus.enabled flag set in sakai.properties? If not set, defaults to true. - * - *

- * If enabled, an online indicator will be present when viewing a profile. - *

- * - * @return true if the profile2.onlineStatus.enabled flag is set, otherwise returns false. - */ - public boolean isOnlineStatusEnabledGlobally(); - /** * Given the original and stripped site titles, determine that validation status of the stripped string. * @param orig the original, unaltered text as input by the user @@ -1052,5 +812,4 @@ public interface SakaiProxy { * @return true if both users are members of one common site */ public boolean areUsersMembersOfSameSite(String userId1, String userId2); - } diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/BasicConnection.java b/profile2/api/src/java/org/sakaiproject/profile2/model/BasicConnection.java deleted file mode 100644 index bab2324db87e..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/BasicConnection.java +++ /dev/null @@ -1,41 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * Extension of BasicPerson to include connection related information and - * social networking info. - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ - -@NoArgsConstructor @Getter @Setter -public class BasicConnection extends BasicPerson implements Serializable { - - private static final long serialVersionUID = 1L; - - private String email; - private String profileUrl; - private int onlineStatus; - private SocialNetworkingInfo socialNetworkingInfo; -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/CompanyProfile.java b/profile2/api/src/java/org/sakaiproject/profile2/model/CompanyProfile.java deleted file mode 100644 index 958335ec56aa..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/CompanyProfile.java +++ /dev/null @@ -1,52 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -/** - * CompanyProfile is a model for storing information about a - * business user's company profile. Business users may have more than one - * company profile. - */ -@Data -@NoArgsConstructor -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -public class CompanyProfile implements Serializable { - - private static final long serialVersionUID = 1L; - - @EqualsAndHashCode.Include - private long id; - private String userUuid; - private String companyName; - private String companyDescription; - private String companyWebAddress; - - /** Additional constructor **/ - public CompanyProfile(String userUuid, String name, String desc, String url) { - this.userUuid = userUuid; - this.companyName = name; - this.companyDescription = desc; - this.companyWebAddress = url; - } - - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/ExternalIntegrationInfo.java b/profile2/api/src/java/org/sakaiproject/profile2/model/ExternalIntegrationInfo.java index 38b6a75440bb..313419f6cd61 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/ExternalIntegrationInfo.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/model/ExternalIntegrationInfo.java @@ -21,8 +21,6 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; -import org.apache.commons.lang3.StringUtils; - /** * Model for storing a user's external integration details * diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/Friend.java b/profile2/api/src/java/org/sakaiproject/profile2/model/Friend.java deleted file mode 100644 index db4830144615..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/Friend.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; -import java.util.Date; - -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * Friend.java - * - * This is a model for storing information about a friend of a user. - * It has a limited number of fields and is only ever populated when a List of friends for a given user is required - * with each friend having one of these objects for fast access to the info required. - */ - -@Data -@NoArgsConstructor -public class Friend implements Serializable { - - private static final long serialVersionUID = 1L; - - private String userUuid; - private String displayName; - private String statusMessage; - private Date statusDate; - private boolean confirmed; - private Date requestedDate; - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendConfirmUserNotificationHandler.java b/profile2/api/src/java/org/sakaiproject/profile2/model/FriendConfirmUserNotificationHandler.java deleted file mode 100644 index ccddf6908696..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendConfirmUserNotificationHandler.java +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright (c) 2003-2017 The Apereo 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://opensource.org/licenses/ecl2 - * - * 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.model; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Resource; - -import org.sakaiproject.event.api.Event; -import org.sakaiproject.messaging.api.UserNotificationData; -import org.sakaiproject.messaging.api.AbstractUserNotificationHandler; -import org.sakaiproject.profile2.logic.ProfileLinkLogic; -import org.sakaiproject.profile2.util.ProfileConstants; - -import org.hibernate.SessionFactory; - -import org.springframework.stereotype.Component; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.support.TransactionTemplate; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Component -public class FriendConfirmUserNotificationHandler extends AbstractUserNotificationHandler { - - @Resource - private ProfileLinkLogic profileLinkLogic; - - @Resource(name = "org.sakaiproject.springframework.orm.hibernate.GlobalSessionFactory") - private SessionFactory sessionFactory; - - @Resource(name = "org.sakaiproject.springframework.orm.hibernate.GlobalTransactionManager") - private PlatformTransactionManager transactionManager; - - @Override - public List getHandledEvents() { - return Arrays.asList(ProfileConstants.EVENT_FRIEND_CONFIRM); - } - - @Override - public Optional> handleEvent(Event e) { - - String from = e.getUserId(); - - String ref = e.getResource(); - String[] pathParts = ref.split("/"); - - String to = pathParts[2]; - try { - TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); - transactionTemplate.execute(status -> { - - sessionFactory.getCurrentSession().createQuery("delete UserNotification where event = :event and fromUser = :fromUser") - .setParameter("event", ProfileConstants.EVENT_FRIEND_REQUEST) - .setParameter("fromUser", to).executeUpdate(); - return null; - }); - } catch (Exception e1) { - log.error("Failed to delete request notification: {}", e1.toString()); - } - String url = profileLinkLogic.getInternalDirectUrlToUserConnections(to); - return Optional.of(Collections.singletonList(new UserNotificationData(from, to, "", "", url, ProfileConstants.TOOL_ID))); - } -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendIgnoreUserNotificationHandler.java b/profile2/api/src/java/org/sakaiproject/profile2/model/FriendIgnoreUserNotificationHandler.java deleted file mode 100644 index 5225ad20307e..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendIgnoreUserNotificationHandler.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2003-2017 The Apereo 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://opensource.org/licenses/ecl2 - * - * 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.model; - -import java.util.Arrays; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Resource; - -import org.sakaiproject.event.api.Event; -import org.sakaiproject.messaging.api.UserNotificationData; -import org.sakaiproject.messaging.api.AbstractUserNotificationHandler; -import org.sakaiproject.profile2.util.ProfileConstants; - -import org.hibernate.SessionFactory; - -import org.springframework.stereotype.Component; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.support.TransactionTemplate; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Component -public class FriendIgnoreUserNotificationHandler extends AbstractUserNotificationHandler { - - @Resource(name = "org.sakaiproject.springframework.orm.hibernate.GlobalSessionFactory") - private SessionFactory sessionFactory; - - @Resource(name = "org.sakaiproject.springframework.orm.hibernate.GlobalTransactionManager") - private PlatformTransactionManager transactionManager; - - @Override - public List getHandledEvents() { - return Arrays.asList(ProfileConstants.EVENT_FRIEND_IGNORE); - } - - @Override - public Optional> handleEvent(Event e) { - - String from = e.getUserId(); - - String ref = e.getResource(); - String[] pathParts = ref.split("/"); - - String to = pathParts[2]; - try { - TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); - transactionTemplate.execute(status -> { - - sessionFactory.getCurrentSession().createQuery("delete UserNotification where event = :event and fromUser = :fromUser") - .setParameter("event", ProfileConstants.EVENT_FRIEND_REQUEST) - .setParameter("fromUser", to).executeUpdate(); - return null; - }); - } catch (Exception e1) { - log.error("Failed to delete request notification: {}", e1.toString()); - } - return Optional.empty(); - } -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendMessageUserNotificationHandler.java b/profile2/api/src/java/org/sakaiproject/profile2/model/FriendMessageUserNotificationHandler.java deleted file mode 100644 index ad3462f7e363..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendMessageUserNotificationHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright (c) 2003-2017 The Apereo 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://opensource.org/licenses/ecl2 - * - * 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.model; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Resource; - -import org.sakaiproject.component.api.ServerConfigurationService; -import org.sakaiproject.event.api.Event; -import org.sakaiproject.exception.IdUnusedException; -import org.sakaiproject.messaging.api.UserNotificationData; -import org.sakaiproject.messaging.api.AbstractUserNotificationHandler;; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.site.api.Site; -import org.sakaiproject.site.api.SiteService; - -import org.springframework.stereotype.Component; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Component -public class FriendMessageUserNotificationHandler extends AbstractUserNotificationHandler { - - @Resource - private ServerConfigurationService serverConfigurationService; - - @Resource - private SiteService siteService; - - @Override - public List getHandledEvents() { - return Arrays.asList(ProfileConstants.EVENT_MESSAGE_SENT); - } - - @Override - public Optional> handleEvent(Event e) { - - String from = e.getUserId(); - - String ref = e.getResource(); - String[] pathParts = ref.split("/"); - - String to = pathParts[2]; - String siteId = "~" + to; - - try { - Site site = siteService.getSite(siteId); - String toolId = site.getToolForCommonId("sakai.profile2").getId(); - String url = serverConfigurationService.getPortalUrl() + "/site/" + siteId - + "/tool/" + toolId + "/messages"; - return Optional.of(Collections.singletonList(new UserNotificationData(from, to, siteId, "", url, ProfileConstants.TOOL_ID))); - } catch (IdUnusedException idue) { - log.error("No site for id: " + siteId); - } - - return Optional.empty(); - } -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendRequestUserNotificationHandler.java b/profile2/api/src/java/org/sakaiproject/profile2/model/FriendRequestUserNotificationHandler.java deleted file mode 100644 index 4930e2c92359..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendRequestUserNotificationHandler.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2003-2017 The Apereo 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://opensource.org/licenses/ecl2 - * - * 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.model; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Resource; - -import org.sakaiproject.component.api.ServerConfigurationService; -import org.sakaiproject.event.api.Event; -import org.sakaiproject.exception.IdUnusedException; -import org.sakaiproject.messaging.api.UserNotificationData; -import org.sakaiproject.messaging.api.AbstractUserNotificationHandler; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.site.api.Site; -import org.sakaiproject.site.api.SiteService; - -import org.springframework.stereotype.Component; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Component -public class FriendRequestUserNotificationHandler extends AbstractUserNotificationHandler { - - @Resource - private ServerConfigurationService serverConfigurationService; - - @Resource - private SiteService siteService; - - @Override - public List getHandledEvents() { - return Arrays.asList(ProfileConstants.EVENT_FRIEND_REQUEST); - } - - @Override - public Optional> handleEvent(Event e) { - - String from = e.getUserId(); - - String ref = e.getResource(); - String[] pathParts = ref.split("/"); - - String to = pathParts[2]; - String siteId = "~" + to; - try { - Site site = siteService.getSite(siteId); - String toolId = site.getToolForCommonId("sakai.profile2").getId(); - String url = serverConfigurationService.getPortalUrl() + "/site/" + siteId - + "/tool/" + toolId + "/connections"; - return Optional.of(Collections.singletonList(new UserNotificationData(from, to, siteId, "", url, ProfileConstants.TOOL_ID))); - } catch (IdUnusedException idue) { - log.error("No site for id: " + siteId); - } - - return Optional.empty(); - } -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendStatusUserNotificationHandler.java b/profile2/api/src/java/org/sakaiproject/profile2/model/FriendStatusUserNotificationHandler.java deleted file mode 100644 index 8c4b7dae7f37..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/FriendStatusUserNotificationHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright (c) 2003-2017 The Apereo 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://opensource.org/licenses/ecl2 - * - * 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.model; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Resource; - -import org.sakaiproject.event.api.Event; -import org.sakaiproject.messaging.api.UserNotificationData; -import org.sakaiproject.messaging.api.AbstractUserNotificationHandler; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfileLinkLogic; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.user.api.User; - -import org.springframework.stereotype.Component; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Component -public class FriendStatusUserNotificationHandler extends AbstractUserNotificationHandler { - - @Resource - private ProfileConnectionsLogic profileConnectionsLogic; - - @Resource - private ProfileLinkLogic profileLinkLogic; - - @Override - public List getHandledEvents() { - return Arrays.asList(ProfileConstants.EVENT_STATUS_UPDATE); - } - - @Override - public Optional> handleEvent(Event e) { - - String from = e.getUserId(); - - String ref = e.getResource(); - String[] pathParts = ref.split("/"); - - List bhEvents = new ArrayList<>(); - - // Get all the posters friends - List connections = profileConnectionsLogic.getConnectedUsersForUserInsecurely(from); - for (User connection : connections) { - String to = connection.getId(); - String url = profileLinkLogic.getInternalDirectUrlToUserProfile(to, from); - bhEvents.add(new UserNotificationData(from, to, "", "", url, ProfileConstants.TOOL_ID)); - } - - return Optional.of(bhEvents); - } -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/GalleryImage.java b/profile2/api/src/java/org/sakaiproject/profile2/model/GalleryImage.java deleted file mode 100644 index 4e741510f944..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/GalleryImage.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -/** - * Gallery image container and hibernate model. - */ - -@Data -@NoArgsConstructor -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -public class GalleryImage implements Serializable { - - private static final long serialVersionUID = 1L; - - @EqualsAndHashCode.Include - private long id; - private String userUuid; - private String mainResource; - private String thumbnailResource; - private String displayName; - - /** - * Additional constructor to create a new instance of GalleryImage. - */ - public GalleryImage(String userUuid, String mainResource, - String thumbnailResource, String displayName) { - - this.userUuid = userUuid; - this.mainResource = mainResource; - this.thumbnailResource = thumbnailResource; - this.displayName = displayName; - } - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/Message.java b/profile2/api/src/java/org/sakaiproject/profile2/model/Message.java deleted file mode 100644 index b8ef99f70a74..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/Message.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; -import java.util.Date; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -/** - * Message.java - * - * An object to represent a message posted to someone - * This is a persistent Hibernate model - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ - -@Data -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -@NoArgsConstructor -public class Message implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * message Id (a uuid) - */ - @EqualsAndHashCode.Include - private String id; - - /** - * uuid from - */ - private String from; - - /** - * body of the message - */ - private String message; - - /** - * what thread ID this message is associated with - */ - private String thread; - - /** - * date this message was posted - */ - private Date datePosted; - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/MessageParticipant.java b/profile2/api/src/java/org/sakaiproject/profile2/model/MessageParticipant.java deleted file mode 100644 index 798711fc43be..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/MessageParticipant.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -/** - * MessageThread.java - * - * An object to represent info about a participant in a message thread - * This is a persistent Hibernate model - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Data -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -@NoArgsConstructor -public class MessageParticipant implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * autoincrement ID - */ - @EqualsAndHashCode.Include - private long id; - - /** - * message Id (a uuid) - */ - private String messageId; - - /** - * participant uuid - */ - private String uuid; - - /** - * Has this message been read by the user? - */ - private boolean read; - - /** - * Has this message been deleted by the user? - */ - private boolean deleted; - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/MessageThread.java b/profile2/api/src/java/org/sakaiproject/profile2/model/MessageThread.java deleted file mode 100644 index e0fe4aa69a0b..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/MessageThread.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; -import java.util.Date; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; -/** - * MessageThread.java - * - * An object to represent info about a message thread - * This is a persistent Hibernate model - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Data -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -@NoArgsConstructor -public class MessageThread implements Serializable, Comparable { - - private static final long serialVersionUID = 1L; - - /** - * thread id (a uuid) - */ - @EqualsAndHashCode.Include - private String id; - - /** - * subject of the thread - */ - private String subject; - - /** - * the most recent message in this thread - not persisted. - */ - private Message mostRecentMessage; - - /** - * Natural sort by order - */ - public int compareTo(Object o) { - Date thisDate = getMostRecentMessage().getDatePosted(); - Date otherDate = ((MessageThread)o).getMostRecentMessage().getDatePosted(); - int lastCmp = thisDate.compareTo(otherDate); - return (lastCmp != 0 ? lastCmp : thisDate.compareTo(otherDate)); - } - - - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/Person.java b/profile2/api/src/java/org/sakaiproject/profile2/model/Person.java index 3a5b409c8431..daebf2435277 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/Person.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/model/Person.java @@ -39,9 +39,6 @@ public class Person extends BasicPerson implements Serializable { @Getter @Setter private UserProfile profile; - @Getter @Setter - private ProfilePrivacy privacy; - @Getter @Setter private ProfilePreferences preferences; diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/ProfilePrivacy.java b/profile2/api/src/java/org/sakaiproject/profile2/model/ProfilePrivacy.java deleted file mode 100644 index ca368a65127a..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/ProfilePrivacy.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - - -/** - * Hibernate and EntityProvider model - * - * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) - * - */ - -@Data -@NoArgsConstructor -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -public class ProfilePrivacy implements Serializable { - - private static final long serialVersionUID = 1L; - - @EqualsAndHashCode.Include - private String userUuid; - private int profileImage; - private int basicInfo; - private int contactInfo; - private int businessInfo; - private int personalInfo; - private boolean showBirthYear; - private int myFriends; - private int myStatus; - private int myPictures; - private int messages; - private int studentInfo; - private int staffInfo; - private int socialNetworkingInfo; - private int myKudos; - private int myWall; - private int onlineStatus; - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/ProfileSearchTerm.java b/profile2/api/src/java/org/sakaiproject/profile2/model/ProfileSearchTerm.java deleted file mode 100644 index 2868bed9ac56..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/ProfileSearchTerm.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; -import java.util.Date; - -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author d.b.robinson@lancaster.ac.uk - */ -@Data -@NoArgsConstructor -public class ProfileSearchTerm implements Comparable, Serializable { - - private static final long serialVersionUID = 1L; - - // uuid of user who made the search - private String userUuid; - // by name, by interest etc. - private String searchType; - // what was searched for - private String searchTerm; - // when the search was performed - private Date searchDate; - // last page number of search - private int searchPageNumber = 0; - - // filters - - // include connections in search results - private boolean connections; - // limit search to selected worksite - private String worksite; - - @Override - public int compareTo(ProfileSearchTerm searchTerm) { - - return searchDate.compareTo(searchTerm.getSearchDate()); - } -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/ProfileStatus.java b/profile2/api/src/java/org/sakaiproject/profile2/model/ProfileStatus.java deleted file mode 100644 index 67097584a62d..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/ProfileStatus.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; -import java.util.Date; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - - -/** - * Hibernate and EntityProvider model - * - * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) - * - */ -@Data -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -@NoArgsConstructor -public class ProfileStatus implements Serializable { - - private static final long serialVersionUID = 1L; - - @EqualsAndHashCode.Include - private String userUuid; - private String message; - private Date dateAdded; - private String dateFormatted; //not persisted, convenience holder - //private int cleared; //maybe to hold value if the status has been cleared - - - /** - * Additional constructor to create a status object in one go - */ - public ProfileStatus(String userUuid, String message, Date dateAdded) { - this.userUuid = userUuid; - this.message = message; - this.dateAdded = dateAdded; - } - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/SocialNetworkingInfo.java b/profile2/api/src/java/org/sakaiproject/profile2/model/SocialNetworkingInfo.java index 1ca94e2c82de..ee15bf06e347 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/SocialNetworkingInfo.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/model/SocialNetworkingInfo.java @@ -36,7 +36,6 @@ public class SocialNetworkingInfo implements Serializable { private String userUuid; private String facebookUrl; private String linkedinUrl; - private String skypeUsername; private String instagramUrl; // additional constructor diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/UserProfile.java b/profile2/api/src/java/org/sakaiproject/profile2/model/UserProfile.java index 2ed8c6c2b307..0c38d44ec482 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/UserProfile.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/model/UserProfile.java @@ -40,32 +40,9 @@ public class UserProfile implements Serializable { private String userUuid; private String displayName; private String nickname; - private Date dateOfBirth; - private String birthday; - private String birthdayDisplay; - private String formattedBirthday; private String email; - private String position; - private String department; - private String school; - private String room; - private String homepage; - private String workphone; - private String homephone; private String mobilephone; - private String facsimile; - private String favouriteBooks; - private String favouriteTvShows; - private String favouriteMovies; - private String favouriteQuotes; private String personalSummary; - private String course; - private String subjects; - private String staffProfile; - private String universityProfileUrl; - private String academicProfileUrl; - private String publications; - private String businessBiography; private String phoneticPronunciation; private String pronounsSelected; private String pronounsInput; @@ -73,8 +50,6 @@ public class UserProfile implements Serializable { private boolean locked; - private ProfileStatus status; - private List companyProfiles; private SocialNetworkingInfo socialInfo; /* @@ -85,14 +60,6 @@ public class UserProfile implements Serializable { private Map props; - /* Additional methods to add/remove company profiles from the list */ - public void addCompanyProfile(CompanyProfile companyProfile) { - companyProfiles.add(companyProfile); - } - public void removeCompanyProfile(CompanyProfile companyProfile) { - companyProfiles.remove(companyProfile); - } - /* Additional methods for setting/getting properties in the map */ public void setProperty(String key, String value) { if (props == null) { diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/WallItem.java b/profile2/api/src/java/org/sakaiproject/profile2/model/WallItem.java deleted file mode 100644 index a3b85e512267..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/WallItem.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -/** - * WallItem represents an item posted on a profile wall. Items can be different - * types e.g. events, posts, status updates, and can have comments attached. - * - * @author d.b.robinson@lancaster.ac.uk - */ -@Data -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -@NoArgsConstructor -public class WallItem implements Serializable, Comparable { - - private static final long serialVersionUID = 1L; - - @EqualsAndHashCode.Include - private long id; - // the id of the user whose wall the item is posted on - private String userUuid; - // the id of the user who created this wall item - private String creatorUuid; - private String text; - private Date date; - private int type; - - // any comments that may be attached to the wall item - private List comments = new ArrayList(); - - // add comment (have purposefully omitted ability to remove comment) - public void addComment(WallItemComment comment) { - comment.setWallItem(this); - comments.add(comment); - } - - @Override - public int compareTo(WallItem wallItem) { - // TODO might instead create Comparators so we can ascend or descend as needed - if (date.getTime() > wallItem.getDate().getTime()) { - return -1; - } else if (date.getTime() < wallItem.getDate().getTime()) { - return 1; - } else { - return 0; - } - } - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/model/WallItemComment.java b/profile2/api/src/java/org/sakaiproject/profile2/model/WallItemComment.java deleted file mode 100644 index 61ad10ee0d3e..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/model/WallItemComment.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * 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.model; - -import java.io.Serializable; -import java.util.Date; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -/** - * WallItemComment represents a comment on a wall item, such as a post or event. - * - * @author d.b.robinson@lancaster.ac.uk - */ -@Data -@EqualsAndHashCode(onlyExplicitlyIncluded = true) -@NoArgsConstructor -public class WallItemComment implements Serializable { - - private static final long serialVersionUID = 1L; - - @EqualsAndHashCode.Include - private long id; - - // the wall item the comment is linked to - private WallItem wallItem; - - // the id of the user who made the comment - private String creatorUuid; - private String text; - private Date date; - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/service/ProfileService.java b/profile2/api/src/java/org/sakaiproject/profile2/service/ProfileService.java index 2d1d6dccd0e4..1b298199b6b5 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/service/ProfileService.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/service/ProfileService.java @@ -15,10 +15,6 @@ */ package org.sakaiproject.profile2.service; -import java.util.List; - -import org.sakaiproject.profile2.model.Person; - /** * A facade on the various logic component methods to improve backwards compatibility with * clients of the older Profile2 apis. See PRFL-551. @@ -26,5 +22,4 @@ * @author Adrian Fish */ public interface ProfileService { - public abstract List getConnectionsForUser(final String userUuid); } diff --git a/profile2/api/src/java/org/sakaiproject/profile2/types/EmailType.java b/profile2/api/src/java/org/sakaiproject/profile2/types/EmailType.java deleted file mode 100644 index 2986c1fbf7d6..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/types/EmailType.java +++ /dev/null @@ -1,55 +0,0 @@ -/** - * 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.types; - -/** - * The types of emails that can be sent. See also {@link PreferenceType}. - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * @since 1.5 - * - */ -public enum EmailType { - - - //********************* - // - // DEVELOPERS TAKE NOTE - // - // All of these values have a reference up to PreferenceType so we can perform conversions. - // If you are adding more values here, these *must* be kept in sync and *must* be named identically. - // - // ******************** - - EMAIL_NOTIFICATION_REQUEST, - EMAIL_NOTIFICATION_CONFIRM, - EMAIL_NOTIFICATION_MESSAGE_NEW, - EMAIL_NOTIFICATION_MESSAGE_REPLY, - EMAIL_NOTIFICATION_WALL_EVENT_NEW, - EMAIL_NOTIFICATION_WALL_POST_MY_NEW, - EMAIL_NOTIFICATION_WALL_POST_CONNECTION_NEW, - EMAIL_NOTIFICATION_WALL_STATUS_NEW, - EMAIL_NOTIFICATION_WORKSITE_NEW, - EMAIL_NOTIFICATION_PROFILE_CHANGE; - - /** - * Return the PreferenceType that matches this type. - * @return - */ - public PreferenceType toPreference() { - return PreferenceType.valueOf(this.name()); - } -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/types/PreferenceType.java b/profile2/api/src/java/org/sakaiproject/profile2/types/PreferenceType.java index 63efc97a3ef1..f468a31576ed 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/types/PreferenceType.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/types/PreferenceType.java @@ -20,7 +20,6 @@ *

* We use these when checking if different options are enabled. *

- * See also {@link EmailType}. * * @author Steve Swinsburg (steve.swinsburg@gmail.com) * @since 1.5 @@ -28,20 +27,6 @@ */ public enum PreferenceType { - EMAIL_NOTIFICATION_REQUEST, - EMAIL_NOTIFICATION_CONFIRM, - EMAIL_NOTIFICATION_MESSAGE_NEW, - EMAIL_NOTIFICATION_MESSAGE_REPLY, - EMAIL_NOTIFICATION_WALL_EVENT_NEW, - EMAIL_NOTIFICATION_WALL_POST_MY_NEW, - EMAIL_NOTIFICATION_WALL_POST_CONNECTION_NEW, - EMAIL_NOTIFICATION_WALL_STATUS_NEW, - EMAIL_NOTIFICATION_WORKSITE_NEW, - EMAIL_NOTIFICATION_PROFILE_CHANGE, OFFICIAL_IMAGE, GRAVATAR_IMAGE, - KUDOS_RATING, - PICTURES, - ONLINE_STATUS; - } diff --git a/profile2/api/src/java/org/sakaiproject/profile2/types/PrivacyType.java b/profile2/api/src/java/org/sakaiproject/profile2/types/PrivacyType.java deleted file mode 100644 index 495c44447a41..000000000000 --- a/profile2/api/src/java/org/sakaiproject/profile2/types/PrivacyType.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * 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.types; - -/** - * These are the types of privacy settings in Profile2. - *

- * We use these when checking the different options - *

- * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * @since 1.5 - * - */ -public enum PrivacyType { - - PRIVACY_OPTION_PROFILEIMAGE, - PRIVACY_OPTION_BASICINFO, - PRIVACY_OPTION_CONTACTINFO, - PRIVACY_OPTION_PERSONALINFO, - PRIVACY_OPTION_SEARCH, - PRIVACY_OPTION_MYFRIENDS, - PRIVACY_OPTION_MYSTATUS, - PRIVACY_OPTION_MYPICTURES, - PRIVACY_OPTION_MESSAGES, - PRIVACY_OPTION_BUSINESSINFO, - PRIVACY_OPTION_STAFFINFO, - PRIVACY_OPTION_STUDENTINFO, - PRIVACY_OPTION_MYKUDOS, - PRIVACY_OPTION_MYWALL, - PRIVACY_OPTION_SOCIALINFO, - PRIVACY_OPTION_ONLINESTATUS; - -} diff --git a/profile2/api/src/java/org/sakaiproject/profile2/util/ProfileConstants.java b/profile2/api/src/java/org/sakaiproject/profile2/util/ProfileConstants.java index 41a67fe5d2f9..ed51382a68ec 100644 --- a/profile2/api/src/java/org/sakaiproject/profile2/util/ProfileConstants.java +++ b/profile2/api/src/java/org/sakaiproject/profile2/util/ProfileConstants.java @@ -17,64 +17,36 @@ /** * 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; // Approx per second of pronouncation files in KB public static final int PRONUNCIATION_SIZE_PER_SECOND = 500; - + //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; - + 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_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"; @@ -87,23 +59,8 @@ public class ProfileConstants { public static final String DFLT_PROFILE_AVATAR_FONT_FAMILY = "sans-serif"; public static final String DFLT_PROFILE_AVATAR_FONT_SIZE_1_CHAR = "120"; public static final String DFLT_PROFILE_AVATAR_FONT_SIZE_2_CHAR = "90"; - + 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/green-dot.png"; - public static final String ONLINE_STATUS_OFFLINE_IMG = "/library/image/silk/black-dot.png"; - public static final String ONLINE_STATUS_AWAY_IMG = "/library/image/silk/yellow-dot.png"; //css classes for fontawsome icons public static final String INFO_ICON = "infoIcon"; @@ -119,99 +76,45 @@ public class ProfileConstants { 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. + // 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 = "//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_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 @@ -220,97 +123,33 @@ public class ProfileConstants { public static final boolean SAKAI_PROP_PROFILE2_PROFILE_PRONUNCIATION_ENABLED = true; //profile2.profile.name.pronunciation.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 = false; //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_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_MENU_ENABLED = true; //profile2.menu.enabled - public static final boolean SAKAI_PROP_PROFILE2_CONNECTIONS_ENABLED = true; //profile2.connections.enabled - public static final boolean SAKAI_PROP_PROFILE2_MESSAGING_ENABLED = true; //profile2.messaging.enabled - public static final boolean SAKAI_PROP_PROFILE2_SEARCH_ENABLED = true; //profile2.search.enabled - public static final boolean SAKAI_PROP_PROFILE2_PRIVACY_ENABLED = true; //profile2.privacy.enabled public static final boolean SAKAI_PROP_PROFILE2_PREFERENCE_ENABLED = true; //profile2.preference.enabled - public static final boolean SAKAI_PROP_PROFILE2_MY_KUDOS_ENABLED = true; //profile2.myKudos.enabled - public static final boolean SAKAI_PROP_PROFILE2_ONLINE_STATUS_ENABLED = true; //profile2.onlineStatus.enabled - - - /* - * 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 MM yyyy"; - public static final String DEFAULT_DATE_FORMAT_HIDE_YEAR = "MMMM dd"; - - //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 = "
\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; - public static final String PROFILE = "profile"; - public static final String WALL = "wall"; - - /* - * 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 + + //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_NAME_PRONUN_UPDATE = "profile.name.pronunciation.update"; public static final String EVENT_PROFILE_CONTACT_UPDATE = "profile.contact.update"; @@ -319,115 +158,56 @@ public class ProfileConstants { 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_MESSAGE_SENT = "profile.message.sent"; - - public static final String EVENT_GALLERY_IMAGE_UPLOAD = "profile.gallery.image.upload"; - - public static final String EVENT_WALL_ITEM_NEW = "profile.wall.item.new"; - public static final String EVENT_WALL_ITEM_REMOVE = "profile.wall.item.remove"; - public static final String EVENT_WALL_ITEM_COMMENT_NEW = "profile.wall.item.comment.new"; - public static final String EVENT_IMAGE_REQUEST = "profile.image.request"; /* * 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 = "messageNew"; - public static final String EMAIL_TEMPLATE_KEY_MESSAGE_REPLY = "messageReply"; - public static final String EMAIL_TEMPLATE_KEY_CONNECTION_REQUEST = "connectionRequest"; - public static final String EMAIL_TEMPLATE_KEY_CONNECTION_CONFIRM = "connectionConfirm"; - public static final String EMAIL_TEMPLATE_KEY_WALL_EVENT_NEW = "wallEventNew"; - public static final String EMAIL_TEMPLATE_KEY_WALL_POST_MY_NEW = "wallPostMyWallNew"; - public static final String EMAIL_TEMPLATE_KEY_WALL_POST_CONNECTION_NEW = "wallPostConnectionWallNew"; - public static final String EMAIL_TEMPLATE_KEY_WALL_STATUS_NEW = "wallStatusNew"; - public static final String EMAIL_TEMPLATE_KEY_PROFILE_CHANGE_NOTIFICATION = "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/"; - - - } diff --git a/profile2/api/src/resources/ProfileApplication.properties b/profile2/api/src/resources/ProfileApplication.properties index 3cf4540cf5dc..17100cf7b622 100644 --- a/profile2/api/src/resources/ProfileApplication.properties +++ b/profile2/api/src/resources/ProfileApplication.properties @@ -14,183 +14,55 @@ # RequiredValidator = '${label}' is required -accessibility.connection.add = Add {0} as a connection? -accessibility.connection.confirm = Confirm {0}'s connection request? -accessibility.connection.ignore = Ignore {0}'s connection request? -accessibility.connection.remove = Remove {0} from your connections? accessibility.edit.basic = Edit Basic Information -accessibility.edit.business = Edit Business Information accessibility.edit.contact = Edit Contact Information -accessibility.edit.personal = Edit Personal Information accessibility.edit.pronunciation = Edit Name Pronunciation accessibility.edit.social = Edit Social Networking Information -accessibility.edit.staff = Edit Staff Information -accessibility.edit.student = Edit Student Information accessibility.image.upload = Upload a picture for your profile accessibility.image.url = Enter the url for your profile picture -accessibility.messages.unread = Unread message -accessibility.prefs.confirms.off = Email me when someone confirms my connection request, disabled -accessibility.prefs.confirms.on = Email me when someone confirms my connection request, enabled -accessibility.prefs.gallery = Show my pictures on my profile accessibility.prefs.gravatar = Use my gravatar as my profile image -accessibility.prefs.kudos = Show my kudos rating on my profile -accessibility.prefs.messagenew.off = Email me when someone sends me a new message, disabled -accessibility.prefs.messagenew.on = Email me when someone sends me a new message, enabled -accessibility.prefs.messagereply.off = Email me when someone replies to one of my messages, disabled -accessibility.prefs.messagereply.on = Email me when someone replies to one of my messages, enabled accessibility.prefs.officialimage = Use the official institutional image as my profile image -accessibility.prefs.onlinestatus = Show my online status to others accessibility.prefs.overview = Email notification preferences -accessibility.prefs.requests.off = Email me when someone adds me as a connection, disabled -accessibility.prefs.requests.on = Email me when someone adds me as a connection, enabled -accessibility.prefs.wallnew.off = Email me when someone posts to my wall, disabled -accessibility.prefs.wallnew.on = Email me when someone posts to my wall, enabled -accessibility.prefs.worksite.off = Email me when a connection adds me to a new worksite, disabled -accessibility.prefs.worksite.on = Email me when a connection adds me to a new worksite, enabled -accessibility.privacy.academic = Choose who can see your academic information like school, department or course. -accessibility.privacy.basic = Choose who can see your basic information like nickname and birthday. -accessibility.privacy.birthyear = Choose whether or not to show or hide your birth year. Ticked means visible. -accessibility.privacy.business = Choose who can see your business information, like industry, position and business bio. -accessibility.privacy.contact = Choose who can see things like your email addresses and phone numbers. -accessibility.privacy.friends = Choose who can view your list of connections. -accessibility.privacy.image = Choose who can see your profile picture. -accessibility.privacy.kudos = Choose who can see your kudos rating (if enabled in Preferences). -accessibility.privacy.messages = Choose who can send you messages. -accessibility.privacy.onlinestatus = Choose who can see your online status. -accessibility.privacy.overview = Control who can see what parts of your profile -accessibility.privacy.personal = Choose who can see your favorite books and tv shows etc. -accessibility.privacy.pictures = Choose who can see your picture gallery. -accessibility.privacy.social = Choose who can see your social networking information, such as your Facebook, LinkedIn and MySpace profiles. -accessibility.privacy.staff = Choose who can see your staff information -accessibility.privacy.status = Choose who can see your status updates. -accessibility.privacy.student = Choose who can see your student information -accessibility.privacy.wall = Choose who can see your wall. -accessibility.profile.academicprofileurl.input = Enter the url for your academic profile -accessibility.profile.birthday = Select your birth date. You can control the display of your birth year in your Preferences. -accessibility.profile.businessbio.input = Enter your business biography. -accessibility.profile.companydescription.input = Enter the description of this company -accessibility.profile.companyname.input = Enter the name of this company -accessibility.profile.companyurl.input = Enter the web address of this company -accessibility.profile.course.input = Enter your course -accessibility.profile.department.input = Enter your department accessibility.profile.email.input = Enter your email accessibility.profile.facebookurl.input = Enter your Facebook url -accessibility.profile.facsimile.input = Enter your fax number -accessibility.profile.favouritebooks.input = Enter your favourite books -accessibility.profile.favouritemovies.input = Enter your favourite movies -accessibility.profile.favouritequotes.input = Enter your favourite quotes -accessibility.profile.favouritetv.input = Enter your favourite tv shows -accessibility.profile.homepage.input = Enter your webpage url -accessibility.profile.homephone.input = Enter your home phone number accessibility.profile.linkedinurl.input = Enter your LinkedIn url -accessibility.profile.messagebody.input = Enter your message -accessibility.profile.messagerecipient.input = Select a recipient -accessibility.profile.messagesubject.input = Enter a message subject accessibility.profile.mobilephone.input = Enter your mobile phone number accessibility.profile.name.recording = Record your name pronunciation accessibility.profile.nickname.input = Enter your nickname accessibility.profile.phonetic.input = Enter your phonetic pronunciation -accessibility.profile.position.input = Enter your position -accessibility.profile.publications.input = Enter your publications -accessibility.profile.room.input = Enter your room -accessibility.profile.school.input = Enter your school -accessibility.profile.skypeusername.input = Enter your Skype username -accessibility.profile.staffprofile.input = Enter your staff profile -accessibility.profile.status.clear = Clear your status -accessibility.profile.status.input = Enter your current status -accessibility.profile.subjects.input = Enter your subjects accessibility.profile.summaryinput = Enter your personal summary -accessibility.profile.uniprofileurl.input = Enter the url for your university profile -accessibility.profile.wallpost.input = Enter the text for your wall post -accessibility.profile.workphone.input = Enter your work phone number accessibility.profile.pronouns.select = Select a set of pronouns from the list accessibility.profile.pronouns.input = Enter your own pronouns -accessibility.search.connections = Include connections in search results -accessibility.search.worksite = Limit search to selected worksite accessibility.tooltip = Display information about this option -accessibility.wall.comment = Comment on {0}'s wall post -accessibility.wall.remove.mine = Remove post from your wall? -accessibility.wall.remove.other = Remove post from {0} from your wall? -button.business.add.profile = Add company profile -button.business.remove.profile = Remove company profile button.cancel = Cancel button.close = Close button.edit = Edit -button.friend.add = Add connection -button.friend.cancel = Cancel connection request -button.friend.confirm = Confirm connection request -button.friend.ignore = Ignore connection request -button.friend.remove = Remove connection -button.gallery.remove = Remove picture -button.gallery.remove.confirm = Confirm removal -button.gallery.setprofile = Set as profile image -button.gallery.setprofile.confirm = Confirm new profile image -button.gallery.upload = Upload chosen files button.link = Link -button.message.reply = Reply -button.message.send = Send Message button.record = Record button.release.microphone = Release Microphone button.save = Save button.save.changes = Save changes button.save.settings = Save settings button.sayit = Say it -button.search.byinterest = Search by common interest -button.search.byname = Search by name or email -button.search.clear = Clear search -button.search.generic = Search -button.search.history.clear = Clear history button.stop = Stop button.upload = Upload button.url.add = Add URL -button.wall.comment = Add comment -button.wall.post = Post to wall -button.wall.remove = Remove from wall -button.worksite.cancel = Cancel -button.worksite.create = Create #EmailAddressValidator = '${input}' is not a valid email address. ##default email.EmailAddressValidator = Invalid email address error.empty.file.uploaded = You tried to upload an empty file error.file.save.failed = Saving the file failed -error.friend.add.failed = An error occurred sending a connection request to {0}. -error.friend.already.confirmed = You are already connected to {0}. -error.friend.already.pending = There is already a connection request pending with {0}. -error.friend.confirm.failed = An error occurred confirming {0}'s connection request. -error.friend.ignore.failed = An error occurred ignoring {0}'s connection request. -error.friend.not.friend = You are not connected to {0} so they cannot be removed! -error.friend.not.pending.confirm = There is no pending connection request from {0} so you cannot confirm it! -error.friend.not.pending.ignore = There is no pending connection request from {0} so you cannot ignore it! -error.friend.remove.failed = An error occurred removing {0} from your connections list. -error.friend.view.disallowed = You cannot view {0}'s connections. -error.gallery.remove.failed = Unable to remove picture from gallery -error.gallery.setprofile.failed = Unable to set picture as profile image -error.gallery.upload.warning = Choose file(s) first error.invalid.image.type = Only images of types PNG, JPG, and GIF are allowed. -error.message.required.body = The message cannot be blank -error.message.required.to = You must choose a connection to send the message to -error.message.send.failed = An error occurred sending your message error.no.file.uploaded = You didn't choose a file error.password.required = Password is required error.preferences.save.failed = Save failed error.privacy.save.failed = Save failed -error.profile.save.academic.failed = Save failed -error.profile.save.business.failed = Save failed error.profile.save.contact.failed = Save failed error.profile.save.info.failed = Save failed -error.profile.save.interests.failed = Save failed error.url.save.failed = Saving the url failed error.username.required = Username is required -error.wall.comment.empty = You tried to add an empty comment -error.wall.comment.failed = Comment failed -error.wall.post.empty = You tried to make an empty post -error.wall.post.failed = Post failed -error.worksite.create.failed = Worksite creation failed -error.worksite.no.title = You must give the site a name -error.worksite.title.maxLength = Title length cannot exceed {0} characters. Please provide a shorter title. -error.worksite.title.htmlStrippedToEmpty = Site title cannot contain HTML. Please provide a valid site title. exception.heading.session.expired = Session expired exception.text.session.expired = Unfortunately, your session has expired. Try refreshing the page or logout then login again to restart your session. @@ -201,202 +73,50 @@ facsimile.PhoneNumberValidator = Invalid phone number form.uploadTooLarge = The upload must be less than ${maxSize} -heading.academic = Academic Information -heading.academic.edit = Academic Information heading.basic = Basic Information heading.basic.edit = Basic Information -heading.business = Business Information -heading.business.edit = Business Information heading.contact = Contact Information heading.contact.edit = Contact Information -heading.friend.requests = Connection requests - -heading.friends.my = My connections - -heading.friends.view = {0}'s connections - -heading.interests = Personal Information -heading.interests.edit = Personal Information -heading.messages = My messages -heading.name.pronunciation = Name Pronunciation and Pronouns -heading.name.pronunciation.edit = Name Pronunciation and Pronouns -heading.pictures.addpicture = Add picture -heading.pictures.my.pictures = My pictures -heading.pictures.view.pictures = {0}'s pictures +heading.name.pronunciation = Name Pronunciation +heading.name.pronunciation.edit = Name Pronunciation heading.preferences = Preferences -heading.privacy = Privacy settings -heading.search = Search profiles -heading.section.academic.staff = For staff: -heading.section.academic.students = For students: heading.section.email = Email notifications heading.section.image = Profile image settings heading.section.widget = Widget settings heading.social = Social Networking heading.social.edit = Social Networking -heading.staff = Staff Information -heading.staff.edit = Staff Information -heading.status = Status -heading.student = Student Information -heading.student.edit = Student Information -heading.widget.my.friends = My connections -heading.widget.my.kudos = My kudos -heading.widget.my.pictures = My pictures -heading.widget.view.friends = {0}'s connections -heading.widget.view.kudos = {0}'s kudos -heading.widget.view.pictures = {0}'s pictures - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator = Invalid URL - -homephone.PhoneNumberValidator = Invalid phone number link.change.profile.picture = Change picture link.edit = Edit link.edit.info = Edit information -link.friend.add = Add as a connection -link.friend.add.name = Add {0} as a connection -link.friend.confirm = Confirm connection -link.friend.feed.search = Search for connections -link.friend.feed.view = View all connections -link.friend.ignore = Ignore connection -link.friend.remove = Remove connection -link.friend.request.act = Act on this request -link.friend.search = Search for some connections? -link.gallery.feed.addnew = Add new picture -link.gallery.feed.view = View all pictures -link.gallery.image.view = View image link.image.current.remove = Remove link.image.current.remove.confirm = This will remove the current profile image and set it back to default. You will need to upload a new one to change it again. Are you sure? -link.messages.back = Back to message list -link.messages.compose = Compose message -link.messages.mymessages = My messages -link.messages.viewthread = View thread -link.my.friends = Connections -link.my.friends.search = Search for connections -link.my.friends.tooltip = View and manage your connections -link.my.messages = Messages -link.my.messages.tooltip = Send and read private messages -link.my.pictures = Pictures -link.my.pictures.tooltip = Add pictures and view your gallery link.my.preferences = Preferences link.my.preferences.tooltip = Manage your preferences -link.my.privacy = Privacy -link.my.privacy.tooltip = Manage your privacy link.my.profile = My profile link.my.profile.tooltip = View and edit your profile link.other.profile = {0}'s profile -link.my.search = Search -link.my.search.tooltip = Search for people and view their profiles link.profile.locked.false = Lock this profile? link.profile.locked.true = Profile locked. Unlock? -link.status.clear = Clear -link.status.update = Update -link.tab.profile = Profile -link.tab.profile.tooltip = View profile -link.tab.wall = Wall -link.tab.wall.tooltip = View wall -link.title.confirmfriend = Confirm connection request -link.title.ignorefriend = Ignore connection request -link.title.removefriend = Remove connection link.title.rss = View or customise your personalised RSS feed -link.title.wall.comment = Comment on {0}'s wall post -link.title.wall.remove = Remove from your wall -link.view.friends = View connections -link.wall.item.comment = Comment -link.wall.item.remove = Remove -link.worksite.create = Create worksite linkedinUrl.UrlValidator = Invalid URL -message.message = Message -message.reply = Reply -message.subject = Subject -message.to = To - mobilephone.PhoneNumberValidator = Invalid phone number page.title = Profile -palette.available = Available -palette.selected = Selected - -pictures.addpicture = Add new picture files to the gallery -pictures.filetypewarning = Only jpeg, png and gif files can be added to the gallery -pictures.removepicture = Remove this picture from the gallery -pictures.removepicture.confirm = Are you sure you want to remove this picture from your gallery? -pictures.setprofileimage = Set this picture as my profile image -pictures.setprofileimage.confirm = Are you sure you want to replace your current profile image with this image? - preference.option.off = Off preference.option.on = On -preferences.email.confirms = Confirms my connection request -preferences.email.message = Email me at {0} when someone: -preferences.email.message.new = Sends me a new message -preferences.email.message.reply = Replies to one of my messages -preferences.email.none = (NO EMAIL ADDRESS SET) -preferences.email.requests = Adds me as a connection -preferences.email.wall.new = Posts to my wall -preferences.email.worksite.new = Adds me to a new worksite preferences.image.gravatar = Use my gravatar as my profile image -preferences.image.message = Configure settings related to your profile image preferences.image.official = Use the official institutional image as my profile image -preferences.widget.gallery = Show my pictures -preferences.widget.gallery.tooltip = Your pictures will appear on your Profile if checked. -preferences.widget.kudos = Show my kudos rating -preferences.widget.kudos.tooltip = Your kudos rating will appear on your Profile once your score has been calculated -preferences.widget.message = Control which widgets appear on your profile -preferences.widget.onlinestatus = Show my online status -preferences.widget.onlinestatus.tooltip = Shows whether or not you are online. If enabled you can further control this in your Privacy settings. If disabled you will appear to be offline - -privacy.academicinfo = Academic Info -privacy.basicinfo = Basic Info -privacy.birthyear = Show Birth Year -privacy.businessinfo = Business Info -privacy.contactinfo = Contact Info -privacy.messages = Who can send me messages? -privacy.myfriends = Who can view my connections? -privacy.mykudos = Who can see my kudos rating? -privacy.mypictures = Who can view my pictures? -privacy.mystatus = Who can see my status updates? -privacy.mywall = Who can see my wall and my posts to other walls? -privacy.onlinestatus = Who can see my online status? -privacy.option.everyone = Everyone -privacy.option.nobody = Nobody -privacy.option.onlyfriends = Only my connections -privacy.option.onlyme = Only me -privacy.personalinfo = Personal Info -privacy.profileimage = Profile Image -privacy.search = Search -privacy.socialinfo = Social Info -privacy.staffinfo = Staff Info -privacy.studentinfo = Student Info -profile.academicprofileurl = Academic/research URL -profile.birthday = Birthday -profile.business.bio = Business biography -profile.business.company.description = Company description -profile.business.company.name = Company name -profile.business.company.profile = Profile -profile.business.company.profiles = Company profiles -profile.business.company.web = Company web address -profile.business.update = Updated business information in profile profile.contact.update = Updated contact information in profile -profile.course = Degree/Course -profile.department = Department profile.email = Email -profile.favourite.books = Favorite books -profile.favourite.movies = Favorite movies -profile.favourite.quotes = Favorite quotes -profile.favourite.tv = Favorite TV shows -profile.gallery.image.alt = My Pictures -profile.gallery.image.upload = Uploaded to profile picture gallery -profile.homepage = Home page profile.image.change.upload = Changed profile image profile.image.change.url = Changed profile image profile.info.update = Updated basic information in profile -profile.interests.update = Updated personal information in profile -profile.name.first = First Name -profile.name.first.none = User -profile.name.last = Last Name -profile.name.middle = Middle Name profile.name.recording = Name Recording profile.nickname = Nickname profile.pronouns = Pronouns @@ -414,157 +134,32 @@ profile.phonetic.example.1.pronun = kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name = (Christine Berret) profile.phonetic.example.2.pronun = uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name = (Ajeet Chawla) -profile.phone.facsimile = Facsimile -profile.phone.home = Home phone profile.phone.mobile = Mobile phone -profile.phone.work = Work phone -profile.position = Position -profile.publications = Publications and conferences -profile.room = Room -profile.school = School profile.socialnetworking.facebook = Facebook profile.socialnetworking.facebook.edit = Facebook URL profile.socialnetworking.linkedin = LinkedIn profile.socialnetworking.linkedin.edit = LinkedIn URL profile.socialnetworking.instagram = Instagram profile.socialnetworking.instagram.edit =Instagram URL -profile.socialnetworking.skype = Skype -profile.socialnetworking.skype.edit = Skype username -profile.socialnetworking.skype.link = Skype Me profile.socialnetworking.update = Updated social networking details in profile -profile.staff.update = Updated staff information in profile -profile.staffprofile = Staff profile -profile.student.update = Updated student information in profile -profile.subjects = Subjects profile.summary = Personal summary -profile.universityprofileurl = University profile URL -success.message.send.ok = Message sent success.preferences.save.ok = Saved successfully -success.privacy.save.ok = Saved successfully text.edit.other.warning = Caution: You are editing {0}'s information. -text.friend.add = {0} will have to confirm your request. -text.friend.already = You are already connected to {0}. -text.friend.already.pending = There is already a connection request pending between you and {0}. -text.friend.cancel = Are you sure you want to cancel your pending connection request to {0}? They will not be notified. -text.friend.confirm = This will confirm {0}'s connection request. -text.friend.confirmed = You are connected -text.friend.feed.num.many = {0} connections -text.friend.feed.num.none = 0 connections -text.friend.feed.num.one = 1 connection -text.friend.ignore = Are you sure you want to ignore {0}'s connection request? They will not be notifed. -text.friend.none = You are not connected to {0}. -text.friend.pending = Connection request pending -text.friend.remove = Are you sure you want to remove {0} as a connection? They will not be notified. -text.friend.requested = Connection requested -text.friend.self = This is you! -text.gallery.feed.num.none = 0 pictures -text.gallery.pictures.num.none = Your gallery doesn't contain any pictures yet. -text.gallery.upload.tooltip = Upload gallery images from your computer. The combined size of the images to upload should not exceed {0}MB. text.image.refresh = Note: If the new image doesn't appear immediately, try refreshing your browser. text.image.url = Enter the URL of an image to use as your profile picture -text.messages.none = No messages text.name.pronunciation.description = Allows you to provide written phonetic pronunciation and/or audio recordings of your name.
This pronunciation will be visible to instructors / students enrolled in your course sites. text.no.fields = You haven't filled out any information yet -text.no.status = Say something text.or = or -text.privacy.academicinfo.tooltip = Choose who can see your academic information like school, department or course. -text.privacy.basicinfo.tooltip = Choose who can see your basic information like nickname and birthday. -text.privacy.birthyear.tooltip = Choose whether or not to show or hide your birth year. Ticked means visible. -text.privacy.businessinfo.tooltip = Choose who can see your business information, like industry, position and business bio. -text.privacy.cannot.modify = These values are locked by your administrator and cannot be changed. -text.privacy.contactinfo.tooltip = Choose who can see things like your email addresses and phone numbers. -text.privacy.messages.tooltip = Choose who can send you messages. -text.privacy.myfriends.tooltip = Choose who can view your list of connections. -text.privacy.mykudos.tooltip = Choose who can see your kudos rating (if enabled in Preferences). -text.privacy.mypictures.tooltip = Choose who can see your picture gallery. -text.privacy.mystatus.tooltip = Choose who can see your status updates. -text.privacy.mywall.tooltip = Choose who can see your wall. -text.privacy.onlinestatus.tooltip = Choose who can see your online status. You will appear offline to all others. -text.privacy.personalinfo.tooltip = Choose who can see your favorite books and tv shows etc. -text.privacy.profileimage.tooltip = Choose who can see your profile picture. -text.privacy.socialinfo.tooltip = Choose who can see your social networking information, such as your Facebook, LinkedIn and MySpace profiles. -text.privacy.staff.tooltip = Choose who can see your staff information -text.privacy.student.tooltip = Choose who can see your student information -text.profile.birthyear.tooltip = You can choose to show/hide your birthyear in your Privacy settings text.profile.facebook.tooltip = e.g. http://www.facebook.com/user text.profile.linkedin.tooltip = e.g. http://www.linkedin.com/pub/user text.profile.locked.false = Locking a profile means the user cannot edit their information. text.profile.locked.true = Unlocking a profile will allow a user to edit their information. text.profile.instagram.tooltip = e.g. https://www.instagram.com/user/ -text.profile.presence.away = {0} is away -text.profile.presence.offline = {0} is not available -text.profile.presence.online = {0} is online -text.search.byinterest.all.results = Displaying {0} results for: {1} -text.search.byinterest.label = Common interest -text.search.byinterest.no.results = There are no people with common interests matching {0}. -text.search.byinterest.one.result = Displaying 1 result for: {0} -text.search.byinterest.paged.results = Displaying {0} results (up to {1} results per page) for: {2} -text.search.byinterest.tooltip = Enter an interest, eg 'cycling' to find people with similar interests -text.search.byname.all.results = Displaying {0} results for: {1} -text.search.byname.label = Person's name or email -text.search.byname.no.results = There are no results matching {0}. -text.search.byname.one.result = Displaying 1 result for: {0} -text.search.byname.paged.results = Displaying {0} results (up to {1} results per page) for: {2} -text.search.byname.tooltip = Enter a name or e-mail address to find people -text.search.history = Previous searches -text.search.include.connections = Include connections in search results -text.search.include.worksite = Limit search to selected worksite -text.search.no.input = You didn't enter anything -text.search.no.results = There are no results for {0}. -text.search.no.worksite = You are not a member of any worksites yet -text.search.paged.results = Displaying {0} - {1} out of {2} results for: {3} -text.search.terms.label = Search terms -text.search.terms.tooltip = Enter search terms depending on whether searching by name/email or by interest -text.search.toomany.results = Your search for {0} returned {1} or more results. Only the first {1} have been provided. text.upload.image.file = Select an image file on your computer (max {0}MB): text.view.profile.nothing = This person has restricted viewing of their information or has no profile information to share. -text.view.wall.nothing = There are currently no items on {0}'s wall. Be first to post something! -text.view.wall.restricted = Only {0}'s connections can see this wall. Add {0} as a connection to view and post to this wall. -text.wall.no.items = There are currently no items to display on your wall. -text.wall.remove.mine = Remove post from your wall? -text.wall.remove.other = Remove post from {0} from your wall? -text.worksite.create = Select from available people and create a new worksite. -text.worksite.refresh = Refresh the browser to access the new worksite after creating title.change.profile.picture = Change your profile picture -title.friend.add = Add {0} as a connection? -title.friend.cancel = Cancel connection request? -title.friend.confirm = Confirm {0}'s connection request? -title.friend.ignore = Ignore connection request? -title.friend.remove = Remove connection? -title.message.compose = Compose new message -title.wall.comment = Comment on {0}'s wall post -title.wall.remove = Remove from wall? urlField.Required = You didn't enter a URL - -workphone.PhoneNumberValidator = Invalid phone number - -worksite.name = Worksite name - -email.connectionrequest.subject=added you as a connection on -email.connectionrequest.added=added you as a connection on -email.connectionrequest.toconfirm1=To confirm the connection request from -email.connectionrequest.toconfirm2=follow the url below: - -email.connectionconfirm.subject=confirmed your connection request on -email.connectionconfirm.confirmed=confirmed your connection request on -email.connectionconfirm.toview1=To view the profile of -email.connectionconfirm.toview2=,follow the url below: - -email.messagenew.subject=sent you a message on -email.messagenew.sent=sent you a message on -email.messagenew.toview1=To view this message, follow the link below: - -email.messagereply.subject=replied to your message on - -email.profilechange.subject=changed their profile on - -email.wallnew.subject=has just posted to their profile wall on -email.wall.viewtheir=To view their wall, follow the link below: -email.wall.viewmy=To view your wall, follow the link below: - -email.mywallnew.subject=has just posted to your profile wall on -email.wall.theirstatus.subject='s new status was posted on their profile wall on diff --git a/profile2/api/src/resources/ProfileApplication_ar.properties b/profile2/api/src/resources/ProfileApplication_ar.properties index 3bd5dc89a73a..bebf7cac856c 100644 --- a/profile2/api/src/resources/ProfileApplication_ar.properties +++ b/profile2/api/src/resources/ProfileApplication_ar.properties @@ -14,187 +14,50 @@ # RequiredValidator='${label}' is required -accessibility.connection.add=\u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0636\u0627\u0641\u0629 {0} \u0643\u0627\u062a\u0635\u0627\u0644\u061f -accessibility.connection.confirm=\u0647\u0644 \u062a\u0631\u064a\u062f \u062a\u0623\u0643\u064a\u062f \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 {0}\u061f -accessibility.connection.ignore=\u0647\u0644 \u062a\u0631\u064a\u062f \u062a\u062c\u0627\u0647\u0644 \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 {0}\u061f -accessibility.connection.remove=\u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0632\u0627\u0644\u0629 {0} \u0645\u0646 \u0627\u062a\u0635\u0627\u0644\u0627\u062a\u0643\u061f accessibility.edit.basic=\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 -accessibility.edit.business=\u062a\u062d\u0631\u064a\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644 accessibility.edit.contact=\u062a\u062d\u0631\u064a\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -accessibility.edit.personal=\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0634\u062e\u0635\u064a\u0629 accessibility.edit.pronunciation=\u062a\u062d\u0631\u064a\u0631 \u0644\u0641\u0638 \u0627\u0644\u0627\u0633\u0645 -accessibility.edit.social=\u062a\u062d\u0631\u064a\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a\u0629 -accessibility.edit.staff=\u062a\u062d\u0631\u064a\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0641\u0631\u064a\u0642 \u0627\u0644\u0639\u0645\u0644 -accessibility.edit.student=\u062a\u062d\u0631\u064a\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0637\u0627\u0644\u0628 accessibility.image.upload=\u0642\u0645 \u0628\u062a\u062d\u0645\u064a\u0644 \u0635\u0648\u0631\u0629 \u0644\u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 accessibility.image.url=\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0631\u0627\u0628\u0637 \u0644\u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a -accessibility.messages.unread=\u0631\u0633\u0627\u0644\u0629 \u063a\u064a\u0631 \u0645\u0642\u0631\u0648\u0621\u0629 -accessibility.prefs.confirms.off=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0646\u062f\u0645\u0627 \u064a\u0624\u0643\u062f \u0634\u062e\u0635 \u0645\u0627 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u062e\u0627\u0635 \u0628\u064a \u060c \u0645\u0639\u0637\u0644 -accessibility.prefs.confirms.on=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0646\u062f\u0645\u0627 \u064a\u0624\u0643\u062f \u0634\u062e\u0635 \u0645\u0627 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u062e\u0627\u0635 \u0628\u064a \u060c \u0645\u0645\u0643\u0651\u0646 -accessibility.prefs.gallery=\u0639\u0631\u0636 \u0635\u0648\u0631\u064a \u0641\u064a \u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a accessibility.prefs.gravatar=\u0627\u0633\u062a\u062e\u062f\u0645 \u063a\u0631\u0627\u062a\u0627\u0631 \u0643\u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a -accessibility.prefs.kudos=\u0625\u0638\u0647\u0627\u0631 \u062a\u0642\u064a\u064a\u0645\u064a \u0645\u062c\u062f \u0639\u0644\u0649 \u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a -accessibility.prefs.messagenew.off=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0646\u062f\u0645\u0627 \u064a\u0631\u0633\u0644 \u0644\u064a \u0623\u062d\u062f\u0647\u0645 \u0631\u0633\u0627\u0644\u0629 \u062c\u062f\u064a\u062f\u0629 \u060c \u0645\u0639\u0637\u0644 -accessibility.prefs.messagenew.on=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0646\u062f\u0645\u0627 \u064a\u0631\u0633\u0644 \u0644\u064a \u0634\u062e\u0635 \u0645\u0627 \u0631\u0633\u0627\u0644\u0629 \u062c\u062f\u064a\u062f\u0629 \u060c \u0645\u0645\u0643\u0651\u0646 -accessibility.prefs.messagereply.off=\u0623\u0631\u0633\u0644 \u0644\u064a \u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0629 \u0639\u0646\u062f\u0645\u0627 \u064a\u0631\u062f \u0634\u062e\u0635 \u0645\u0627 \u0639\u0644\u0649 \u0625\u062d\u062f\u0649 \u0631\u0633\u0627\u0626\u0644\u064a \u060c \u0645\u0639\u0637\u0644 -accessibility.prefs.messagereply.on=\u0623\u0631\u0633\u0644 \u0644\u064a \u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0629 \u0639\u0646\u062f\u0645\u0627 \u064a\u0631\u062f \u0634\u062e\u0635 \u0645\u0627 \u0639\u0644\u0649 \u0625\u062d\u062f\u0649 \u0631\u0633\u0627\u0626\u0644\u064a \u060c \u0645\u0645\u0643\u0651\u0646 accessibility.prefs.officialimage=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u064a\u0629 \u0627\u0644\u0631\u0633\u0645\u064a\u0629 \u0643\u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a -accessibility.prefs.onlinestatus=\u0627\u0639\u0631\u0636 \u062d\u0627\u0644\u062a\u064a \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a \u0644\u0644\u0622\u062e\u0631\u064a\u0646 accessibility.prefs.overview=\u062a\u0641\u0636\u064a\u0644\u0627\u062a \u0625\u0639\u0644\u0627\u0645 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a -accessibility.prefs.requests.off=\u0623\u0631\u0633\u0644 \u0644\u064a \u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0629 \u0639\u0646\u062f\u0645\u0627 \u064a\u0636\u064a\u0641\u0646\u064a \u0623\u062d\u062f\u0647\u0645 \u0643\u0627\u062a\u0635\u0627\u0644 \u060c \u0645\u0639\u0637\u0644 -accessibility.prefs.requests.on=\u0623\u0631\u0633\u0644 \u0644\u064a \u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0629 \u0639\u0646\u062f\u0645\u0627 \u064a\u0636\u064a\u0641\u0646\u064a \u0623\u062d\u062f\u0647\u0645 \u0643\u0627\u062a\u0635\u0627\u0644 \u060c \u0645\u0645\u0643\u0651\u0646 -accessibility.prefs.twitterauthcode=\u0623\u062f\u062e\u0644 \u0631\u0645\u0632 \u062a\u0641\u0648\u064a\u0636 Twitter \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.prefs.wallnew.off=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0646\u062f\u0645\u0627 \u064a\u0642\u0648\u0645 \u0634\u062e\u0635 \u0645\u0627 \u0628\u0627\u0644\u0646\u0634\u0631 \u0639\u0644\u0649 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u064a \u060c \u0645\u0639\u0637\u0644 -accessibility.prefs.wallnew.on=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0646\u062f\u0645\u0627 \u064a\u0642\u0648\u0645 \u0634\u062e\u0635 \u0645\u0627 \u0628\u0627\u0644\u0646\u0634\u0631 \u0639\u0644\u0649 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u064a \u060c \u0645\u0645\u0643\u0651\u0646 -accessibility.prefs.worksite.off=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0646\u062f\u0645\u0627 \u064a\u0636\u064a\u0641\u0646\u064a \u0627\u062a\u0635\u0627\u0644 \u0625\u0644\u0649 \u0645\u0648\u0642\u0639 \u0639\u0645\u0644 \u062c\u062f\u064a\u062f \u060c \u0645\u0639\u0637\u0644 -accessibility.prefs.worksite.on=\u0623\u0631\u0633\u0644 \u0644\u064a \u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u0629 \u0639\u0646\u062f\u0645\u0627 \u064a\u0636\u064a\u0641\u0646\u064a \u0627\u062a\u0635\u0627\u0644 \u0625\u0644\u0649 \u0645\u0648\u0642\u0639 \u0639\u0645\u0644 \u062c\u062f\u064a\u062f \u060c \u0645\u0645\u0643\u0651\u0646 -accessibility.privacy.academic=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0643 \u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629 \u0645\u062b\u0644 \u0627\u0644\u0645\u062f\u0631\u0633\u0629 \u0623\u0648 \u0627\u0644\u0642\u0633\u0645 \u0623\u0648 \u0627\u0644\u062f\u0648\u0631\u0629 \u0627\u0644\u062a\u062f\u0631\u064a\u0628\u064a\u0629. -accessibility.privacy.basic=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0643 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0645\u062b\u0644 \u0627\u0644\u0644\u0642\u0628 \u0648\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0645\u064a\u0644\u0627\u062f. -accessibility.privacy.birthyear=\u0627\u062e\u062a\u0631 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0646\u062a \u062a\u0631\u064a\u062f \u0625\u0638\u0647\u0627\u0631 \u0623\u0648 \u0625\u062e\u0641\u0627\u0621 \u0633\u0646\u0629 \u0645\u064a\u0644\u0627\u062f\u0643 \u0623\u0645 \u0644\u0627. \u0636\u0639 \u0639\u0644\u0627\u0645\u0629 \u064a\u0639\u0646\u064a \u0645\u0631\u0626\u064a\u0629. -accessibility.privacy.business=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0639\u0645\u0644\u0643 \u060c \u0645\u062b\u0644 \u0627\u0644\u0635\u0646\u0627\u0639\u0629 \u0648\u0627\u0644\u0648\u0638\u064a\u0641\u0629 \u0648\u0627\u0644\u0633\u064a\u0631\u0629 \u0627\u0644\u0630\u0627\u062a\u064a\u0629 \u0644\u0644\u0623\u0639\u0645\u0627\u0644. -accessibility.privacy.contact=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0623\u0634\u064a\u0627\u0621 \u0645\u062b\u0644 \u0639\u0646\u0627\u0648\u064a\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0648\u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0647\u0648\u0627\u062a\u0641. -accessibility.privacy.friends=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0639\u0631\u0636 \u0642\u0627\u0626\u0645\u0629 \u0632\u0645\u0644\u0627\u0626\u0643. -accessibility.privacy.image=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a. -accessibility.privacy.kudos=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u062a\u0646\u0648\u064a\u0647 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 (\u0625\u0630\u0627 \u062a\u0645 \u062a\u0645\u0643\u064a\u0646\u0647 \u0641\u064a \u0627\u0644\u062a\u0641\u0636\u064a\u0644\u0627\u062a). -accessibility.privacy.messages=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0626\u0644 \u0625\u0644\u064a\u0643. -accessibility.privacy.onlinestatus=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062d\u0627\u0644\u062a\u0643 \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a. -accessibility.privacy.overview=\u062a\u062d\u0643\u0645 \u0641\u064a \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0623\u064a \u0623\u062c\u0632\u0627\u0621 \u0645\u0646 \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a -accessibility.privacy.personal=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0643\u062a\u0628\u0643 \u0648\u0628\u0631\u0627\u0645\u062c\u0643 \u0627\u0644\u062a\u0644\u0641\u0632\u064a\u0648\u0646\u064a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0648\u0645\u0627 \u0625\u0644\u0649 \u0630\u0644\u0643. -accessibility.privacy.pictures=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643. -accessibility.privacy.social=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 \u060c \u0645\u062b\u0644 \u0645\u0644\u0641\u0627\u062a\u0643 \u0627\u0644\u0634\u062e\u0635\u064a\u0629 \u0639\u0644\u0649 Facebook \u0648 LinkedIn \u0648 MySpace. -accessibility.privacy.staff=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0648\u0638\u0641\u064a\u0643 -accessibility.privacy.status=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062a\u062d\u062f\u064a\u062b\u0627\u062a \u062d\u0627\u0644\u062a\u0643. -accessibility.privacy.student=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0637\u0627\u0644\u0628 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 -accessibility.privacy.wall=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643. -accessibility.profile.academicprofileurl.input=\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 url \u0644\u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.birthday=\u062d\u062f\u062f \u062a\u0627\u0631\u064a\u062e \u0645\u064a\u0644\u0627\u062f\u0643. \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u062a\u062d\u0643\u0645 \u0641\u064a \u0639\u0631\u0636 \u0633\u0646\u0629 \u0645\u064a\u0644\u0627\u062f\u0643 \u0641\u064a \u062a\u0641\u0636\u064a\u0644\u0627\u062a\u0643. -accessibility.profile.businessbio.input=\u0623\u062f\u062e\u0644 \u0633\u064a\u0631\u0629 \u0639\u0645\u0644\u0643. -accessibility.profile.companydescription.input=\u0623\u062f\u062e\u0644 \u0648\u0635\u0641 \u0647\u0630\u0647 \u0627\u0644\u0634\u0631\u0643\u0629 -accessibility.profile.companyname.input=\u0623\u062f\u062e\u0644 \u0627\u0633\u0645 \u0647\u0630\u0647 \u0627\u0644\u0634\u0631\u0643\u0629 -accessibility.profile.companyurl.input=\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0648\u064a\u0628 \u0644\u0647\u0630\u0647 \u0627\u0644\u0634\u0631\u0643\u0629 -accessibility.profile.course.input=\u0623\u062f\u062e\u0644 \u062f\u0648\u0631\u062a\u0643 -accessibility.profile.department.input=\u0623\u062f\u062e\u0644 \u0642\u0633\u0645\u0643 accessibility.profile.email.input=\u0623\u062f\u062e\u0644 \u0628\u0631\u064a\u062f\u0643 \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a accessibility.profile.facebookurl.input=\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 url \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0639\u0644\u0649 Facebook -accessibility.profile.facsimile.input=\u0623\u062f\u062e\u0644 \u0631\u0642\u0645 \u0627\u0644\u0641\u0627\u0643\u0633 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.favouritebooks.input=\u0623\u062f\u062e\u0644 \u0643\u062a\u0628\u0643 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 -accessibility.profile.favouritemovies.input=\u0623\u062f\u062e\u0644 \u0623\u0641\u0644\u0627\u0645\u0643 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 -accessibility.profile.favouritequotes.input=\u0623\u062f\u062e\u0644 \u0627\u0642\u062a\u0628\u0627\u0633\u0627\u062a\u0643 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 -accessibility.profile.favouritetv.input=\u0623\u062f\u062e\u0644 \u0628\u0631\u0627\u0645\u062c\u0643 \u0627\u0644\u062a\u0644\u0641\u0632\u064a\u0648\u0646\u064a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 -accessibility.profile.homepage.input=\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 url \u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0648\u064a\u0628 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 -accessibility.profile.homephone.input=\u0623\u062f\u062e\u0644 \u0631\u0642\u0645 \u0647\u0627\u062a\u0641 \u0645\u0646\u0632\u0644\u0643 accessibility.profile.linkedinurl.input=\u0623\u062f\u062e\u0644 \u0631\u0627\u0628\u0637 LinkedIn \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.messagebody.input=\u0623\u062f\u062e\u0644 \u0631\u0633\u0627\u0644\u062a\u0643 -accessibility.profile.messagerecipient.input=\u062d\u062f\u062f \u0627\u0644\u0645\u0633\u062a\u0644\u0645 -accessibility.profile.messagesubject.input=\u0623\u062f\u062e\u0644 \u0645\u0648\u0636\u0648\u0639 \u0627\u0644\u0631\u0633\u0627\u0644\u0629 accessibility.profile.mobilephone.input=\u0623\u062f\u062e\u0644 \u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u062d\u0645\u0648\u0644 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.myspaceurl.input=\u0623\u062f\u062e\u0644 \u0631\u0627\u0628\u0637 LinkedIn \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 accessibility.profile.name.recording=\u0633\u062c\u0644 \u0646\u0637\u0642 \u0627\u0633\u0645\u0643 accessibility.profile.nickname.input=\u0623\u062f\u062e\u0644 \u0627\u0633\u0645\u0643 \u0627\u0644\u0645\u0633\u062a\u0639\u0627\u0631 accessibility.profile.phonetic.input=\u0623\u062f\u062e\u0644 \u0627\u0644\u0646\u0637\u0642 \u0627\u0644\u0635\u0648\u062a\u064a \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.position.input=\u0623\u062f\u062e\u0644 \u0645\u0646\u0635\u0628\u0643 -accessibility.profile.publications.input=\u0623\u062f\u062e\u0644 \u0645\u0646\u0634\u0648\u0631\u0627\u062a\u0643 -accessibility.profile.room.input=\u0623\u062f\u062e\u0644 \u063a\u0631\u0641\u062a\u0643 -accessibility.profile.school.input=\u0623\u062f\u062e\u0644 \u0645\u062f\u0631\u0633\u062a\u0643 -accessibility.profile.skypeusername.input=\u0623\u062f\u062e\u0644 \u0627\u0633\u0645 \u0645\u0633\u062a\u062e\u062f\u0645 Skype \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.staffprofile.input=\u0623\u062f\u062e\u0644 \u0645\u0644\u0641 \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0645\u0648\u0638\u0641\u064a\u0646 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.status.clear=\u0627\u0645\u0633\u062d \u062d\u0627\u0644\u062a\u0643 -accessibility.profile.status.input=\u0623\u062f\u062e\u0644 \u062d\u0627\u0644\u062a\u0643 \u0627\u0644\u062d\u0627\u0644\u064a\u0629 -accessibility.profile.subjects.input=\u0623\u062f\u062e\u0644 \u0645\u0648\u0627\u0636\u064a\u0639\u0643 accessibility.profile.summaryinput=\u0623\u062f\u062e\u0644 \u0645\u0644\u062e\u0635\u0643 \u0627\u0644\u0634\u062e\u0635\u064a -accessibility.profile.twitterurl.input=\u0623\u062f\u062e\u0644 \u0631\u0627\u0628\u0637 \u062a\u0648\u064a\u062a\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.uniprofileurl.input=\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 url \u0644\u0645\u0644\u0641 \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.wallpost.input=\u0623\u062f\u062e\u0644 \u0627\u0644\u0646\u0635 \u0644\u0645\u0646\u0634\u0648\u0631 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -accessibility.profile.workphone.input=\u0623\u062f\u062e\u0644 \u0631\u0642\u0645 \u0647\u0627\u062a\u0641 \u0639\u0645\u0644\u0643 accessibility.profile.pronouns.select=\u062d\u062f\u062f \u0645\u062c\u0645\u0648\u0639\u0629 \u0645\u0646 \u0627\u0644\u0636\u0645\u0627\u0626\u0631 \u0645\u0646 \u0627\u0644\u0642\u0627\u0626\u0645\u0629 accessibility.profile.pronouns.input=\u0623\u062f\u062e\u0644 \u0627\u0644\u0636\u0645\u0627\u0626\u0631 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 -accessibility.search.connections=\u062a\u0636\u0645\u064a\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0641\u064a \u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0628\u062d\u062b -accessibility.search.worksite=\u062a\u0642\u064a\u064a\u062f \u0627\u0644\u0628\u062d\u062b \u0639\u0644\u0649 \u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0645\u0644 \u0627\u0644\u0645\u062d\u062f\u062f accessibility.tooltip=\u0639\u0631\u0636 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062d\u0648\u0644 \u0647\u0630\u0627 \u0627\u0644\u062e\u064a\u0627\u0631 -accessibility.wall.comment=\u062a\u0639\u0644\u064a\u0642 \u0639\u0644\u0649 \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u062d\u0627\u0626\u0637 \u0644\u0640 {0} -accessibility.wall.remove.mine=\u0625\u0632\u0627\u0644\u0629 \u0622\u062e\u0631 \u0645\u0646 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643\u061f -accessibility.wall.remove.other=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062a\u062f\u0648\u064a\u0646 \u0645\u0646 {0} \u0645\u0646 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643\u061f -button.business.add.profile=\u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0641 \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0634\u0631\u0643\u0629 -button.business.remove.profile=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641\u064a \u0644\u0644\u0634\u0631\u0643\u0629 button.cancel=\u0625\u0644\u063a\u0627\u0621 button.close=\u0625\u0644\u063a\u0627\u0621 button.edit=\u062a\u0639\u062f\u064a\u0644 -button.friend.add=\u0623\u0636\u0641 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -button.friend.cancel=\u0625\u0644\u063a\u0627\u0621 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -button.friend.confirm=\u062a\u0623\u0643\u064a\u062f \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -button.friend.ignore=\u062a\u062c\u0627\u0647\u0644 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -button.friend.remove=\u0642\u0645 \u0628\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -button.gallery.remove=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0635\u0648\u0631\u0629 -button.gallery.remove.confirm=\u0642\u0645 \u0628\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u0625\u0632\u0627\u0644\u0629 -button.gallery.setprofile=\u062a\u0639\u064a\u064a\u0646 \u0643\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -button.gallery.setprofile.confirm=\u062a\u0623\u0643\u064a\u062f \u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0627\u0644\u062c\u062f\u064a\u062f\u0629 -button.gallery.upload=\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0645\u062e\u062a\u0627\u0631\u0629 button.link=\u0631\u0627\u0628\u0637 -button.message.reply=\u0625\u0639\u0627\u062f\u0629 -button.message.send=\u0623\u0631\u0633\u0644 \u0631\u0633\u0627\u0644\u0629 button.record=\u064a\u0633\u062c\u0644 button.release.microphone=\u062d\u0631\u0631 \u0627\u0644\u0645\u064a\u0643\u0631\u0648\u0641\u0648\u0646 button.save=\u062d\u0641\u0638 button.save.changes=\u0627\u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a button.save.settings=\u0627\u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a button.sayit=\u0642\u0644\u0647\u0627 -button.search.byinterest=\u0627\u0644\u0628\u062d\u062b \u0628\u0627\u0644\u0627\u0647\u062a\u0645\u0627\u0645\u0627\u062a \u0627\u0644\u0645\u0634\u062a\u0631\u0643\u0629 -button.search.byname=\u0627\u0644\u0628\u062d\u062b \u0628\u0627\u0644\u0627\u0633\u0645 \u0623\u0648 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a -button.search.clear=\u0645\u0633\u062d \u0627\u0644\u0628\u062d\u062b -button.search.generic=\u0628\u062c\u062b -button.search.history.clear=\u062a\u0627\u0631\u064a\u062e \u0648\u0627\u0636\u062d button.stop=\u0642\u0641 button.upload=\u0631\u0641\u0639 button.url.add=\u0625\u0636\u0627\u0641\u0629 \u0631\u0627\u0628\u0637 -button.wall.comment=\u0623\u0636\u0641 \u062a\u0639\u0644\u064a\u0642 -button.wall.post=\u0646\u0634\u0631 \u0644\u0644\u062d\u0627\u0626\u0637 -button.wall.remove=\u0625\u0632\u0627\u0644\u062a\u0647 \u0645\u0646 \u0627\u0644\u062d\u0627\u0626\u0637 -button.worksite.cancel=\u0625\u0644\u063a\u0627\u0621 -button.worksite.create=\u0625\u0646\u0634\u0627\u0621 - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u063a\u064a\u0631 \u0635\u0627\u0644\u062d error.empty.file.uploaded=\u0644\u0642\u062f \u062d\u0627\u0648\u0644\u062a \u062a\u062d\u0645\u064a\u0644 \u0645\u0644\u0641 \u0641\u0627\u0631\u063a error.file.save.failed=\u0641\u0634\u0644 \u062d\u0641\u0638 \u0627\u0644\u0645\u0644\u0641 -error.friend.add.failed=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u0625\u0631\u0633\u0627\u0644 \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 \u0625\u0644\u0649 {0}. -error.friend.already.confirmed=\u0623\u0646\u062a \u0645\u062a\u0635\u0644 \u0628\u0627\u0644\u0641\u0639\u0644 \u0628\u0640 {0}. -error.friend.already.pending=\u064a\u0648\u062c\u062f \u0628\u0627\u0644\u0641\u0639\u0644 \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 \u0645\u0639\u0644\u0642 \u0645\u0639 {0}. -error.friend.confirm.failed=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u062a\u0623\u0643\u064a\u062f \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 {0}. -error.friend.ignore.failed=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u062a\u062c\u0627\u0647\u0644 \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 {0}. -error.friend.not.friend=\u0623\u0646\u062a \u063a\u064a\u0631 \u0645\u062a\u0635\u0644 \u0628\u0640 {0} \u0644\u0630\u0627 \u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0632\u0627\u0644\u062a\u0647\! -error.friend.not.pending.confirm=\u0644\u0627 \u064a\u0648\u062c\u062f \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 \u0645\u0639\u0644\u0642 \u0645\u0646 {0} \u0644\u0630\u0627 \u0644\u0627 \u064a\u0645\u0643\u0646\u0643 \u062a\u0623\u0643\u064a\u062f\u0647\! -error.friend.not.pending.ignore=\u0644\u0627 \u064a\u0648\u062c\u062f \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 \u0645\u0639\u0644\u0642 \u0645\u0646 {0} \u0644\u0630\u0627 \u0644\u0627 \u064a\u0645\u0643\u0646\u0643 \u062a\u062c\u0627\u0647\u0644\u0647\! -error.friend.remove.failed=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u0625\u0632\u0627\u0644\u0629 {0} \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u0627\u062a\u0635\u0627\u0644\u0627\u062a\u0643. -error.friend.view.disallowed=\u0644\u0627 \u064a\u0645\u0643\u0646\u0643 \u0639\u0631\u0636 \u0627\u062a\u0635\u0627\u0644\u0627\u062a {0}. -error.gallery.remove.failed=\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0635\u0648\u0631\u0629 \u0645\u0646 \u0627\u0644\u0645\u0639\u0631\u0636 -error.gallery.setprofile.failed=\u062a\u0639\u0630\u0631 \u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0635\u0648\u0631\u0629 \u0643\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -error.gallery.upload.warning=\u0627\u062e\u062a\u0631 \u0627\u0644\u0645\u0644\u0641 (\u0627\u0644\u0645\u0644\u0641\u0627\u062a) \u0623\u0648\u0644\u0627\u064b error.invalid.image.type=\u064a\u064f\u0633\u0645\u062d \u0641\u0642\u0637 \u0628\u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0627\u0644\u0623\u0646\u0648\u0627\u0639 PNG \u0648 JPG \u0648 GIF. -error.message.required.body=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0623\u0646 \u062a\u0643\u0648\u0646 \u0627\u0644\u0631\u0633\u0627\u0644\u0629 \u0641\u0627\u0631\u063a\u0629 -error.message.required.to=\u064a\u062c\u0628 \u0639\u0644\u064a\u0643 \u0627\u062e\u062a\u064a\u0627\u0631 \u0627\u062a\u0635\u0627\u0644 \u0644\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0631\u0633\u0627\u0644\u0629 \u0625\u0644\u064a\u0647 -error.message.send.failed=\u062d\u062f\u062b \u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0621 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0644\u062a\u0643 error.no.file.uploaded=\u0644\u0645 \u062a\u062e\u062a\u0631 \u0645\u0644\u0641\u064b\u0627 error.password.required=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0645\u0637\u0644\u0648\u0628\u0629 error.preferences.save.failed=\u0641\u0634\u0644 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062d\u0641\u0638 -error.privacy.save.failed=\u0641\u0634\u0644 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062d\u0641\u0638 -error.profile.save.academic.failed=\u0641\u0634\u0644 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062d\u0641\u0638 -error.profile.save.business.failed=\u0641\u0634\u0644 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062d\u0641\u0638 error.profile.save.contact.failed=\u0641\u0634\u0644 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062d\u0641\u0638 error.profile.save.info.failed=\u0641\u0634\u0644 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062d\u0641\u0638 -error.profile.save.interests.failed=\u0641\u0634\u0644 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062d\u0641\u0638 -error.twitter.details.invalid=\u062a\u0639\u0630\u0631 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0639\u062a\u0645\u0627\u062f Twitter \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 error.url.save.failed=\u0641\u0634\u0644 \u062d\u0641\u0638 \u0639\u0646\u0648\u0627\u0646 url error.username.required=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0645\u0637\u0644\u0648\u0628 -error.wall.comment.empty=\u0644\u0642\u062f \u062d\u0627\u0648\u0644\u062a \u0625\u0636\u0627\u0641\u0629 \u062a\u0639\u0644\u064a\u0642 \u0641\u0627\u0631\u063a -error.wall.comment.failed=\u0641\u0634\u0644 \u0627\u0644\u062a\u0639\u0644\u064a\u0642 -error.wall.post.empty=\u0644\u0642\u062f \u062d\u0627\u0648\u0644\u062a \u0623\u0646 \u062a\u062c\u0639\u0644 \u0648\u0638\u064a\u0641\u0629 \u0641\u0627\u0631\u063a\u0629 -error.wall.post.failed=\u0641\u0634\u0644 \u0627\u0644\u0646\u0634\u0631 -error.worksite.create.failed=\u0641\u0634\u0644 \u0625\u0646\u0634\u0627\u0621 \u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0645\u0644 -error.worksite.no.title=\u064a\u062c\u0628 \u0639\u0644\u064a\u0643 \u062a\u0633\u0645\u064a\u0629 \u0627\u0644\u0645\u0648\u0642\u0639 -error.worksite.title.maxLength=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u062a\u062c\u0627\u0648\u0632 \u0637\u0648\u0644 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 {0} \u0645\u0646 \u0627\u0644\u0623\u062d\u0631\u0641. \u064a\u0631\u062c\u0649 \u062a\u0642\u062f\u064a\u0645 \u0639\u0646\u0648\u0627\u0646 \u0623\u0642\u0635\u0631. -error.worksite.title.htmlStrippedToEmpty=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u062d\u062a\u0648\u064a \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0645\u0648\u0642\u0639 \u0639\u0644\u0649 HTML. \u064a\u0631\u062c\u0649 \u062a\u0642\u062f\u064a\u0645 \u0639\u0646\u0648\u0627\u0646 \u0645\u0648\u0642\u0639 \u0635\u0627\u0644\u062d. exception.heading.session.expired=\u0627\u0646\u062a\u0647\u062a \u0627\u0644\u062c\u0644\u0633\u0629 exception.text.session.expired=\u0644\u0633\u0648\u0621 \u0627\u0644\u062d\u0638 \u060c \u0627\u0646\u062a\u0647\u062a \u062c\u0644\u0633\u062a\u0643. \u062d\u0627\u0648\u0644 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641\u062d\u0629 \u0623\u0648 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u062b\u0645 \u0642\u0645 \u0628\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u062f\u062e\u0648\u0644 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649 \u0644\u0625\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u062c\u0644\u0633\u0629. @@ -205,206 +68,51 @@ facsimile.PhoneNumberValidator=\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a form.uploadTooLarge=The upload must be less than ${maxSize} -heading.academic=\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629 -heading.academic.edit=\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629 heading.basic=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0633\u0627\u0633\u064a\u0629 heading.basic.edit=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0633\u0627\u0633\u064a\u0629 -heading.business=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644 -heading.business.edit=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644 heading.contact=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0644\u0644\u062a\u0648\u0627\u0635\u0644 heading.contact.edit=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0644\u0644\u062a\u0648\u0627\u0635\u0644 -heading.friend.requests=\u0637\u0644\u0628\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 - -heading.friends.my=\u0627\u062a\u0635\u0627\u0644\u0627\u062a\u064a - -heading.friends.view=\u0627\u062a\u0635\u0627\u0644\u0627\u062a {0} - -heading.interests=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0634\u062e\u0635\u064a\u0629 -heading.interests.edit=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0634\u062e\u0635\u064a\u0629 -heading.messages=\u0631\u0633\u0627\u0626\u0644\u064a heading.name.pronunciation=\u0644\u0641\u0638 \u0627\u0644\u0627\u0633\u0645 heading.name.pronunciation.edit=\u0644\u0641\u0638 \u0627\u0644\u0627\u0633\u0645 -heading.pictures.addpicture=\u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0635\u0648\u0631\u0629 -heading.pictures.my.pictures=\u0635\u0648\u0631\u064a -heading.pictures.view.pictures=\u0635\u0648\u0631 {0} heading.preferences=\u062a\u0641\u0636\u064a\u0644\u0627\u062a -heading.privacy=\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629 -heading.search=\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0628\u062d\u062b -heading.section.academic.staff=\u0644\u0644\u0645\u0648\u0638\u0641\u064a\u0646\: -heading.section.academic.students=\u0644\u0644\u0637\u0644\u0627\u0628\: heading.section.email=\u0627\u0634\u0639\u0627\u0631\u0627\u062a \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a heading.section.image=\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -heading.section.twitter=\u062a\u0643\u0627\u0645\u0644 Twitter heading.section.widget=\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0642\u0637\u0639\u0629 heading.social=\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a heading.social.edit=\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u062a\u0648\u0627\u0635\u0644 \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a -heading.staff=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0648\u0638\u0641\u064a\u0646 -heading.staff.edit=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0648\u0638\u0641\u064a\u0646 -heading.student=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0637\u0627\u0644\u0628 -heading.student.edit=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0637\u0627\u0644\u0628 -heading.widget.my.friends=\u0627\u062a\u0635\u0627\u0644\u0627\u062a\u064a -heading.widget.my.kudos=\u0645\u062c\u062f \u0628\u0644\u062f\u064a -heading.widget.my.pictures=\u0635\u0648\u0631\u064a -heading.widget.view.friends=\u0627\u062a\u0635\u0627\u0644\u0627\u062a {0} -heading.widget.view.kudos=\u062a\u0646\u0648\u064a\u0647\u0627\u062a {0} -heading.widget.view.pictures=\u0635\u0648\u0631 {0} - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=\u0631\u0627\u0628\u0637 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d - -homephone.PhoneNumberValidator=\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d link.change.profile.picture=\u062a\u063a\u064a\u064a\u0631 \u0627\u0644\u0635\u0648\u0631\u0629 link.edit=\u062a\u0639\u062f\u064a\u0644 link.edit.info=\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a -link.friend.add=\u0623\u0636\u0641 \u0643\u0627\u062a\u0635\u0627\u0644 -link.friend.add.name=\u0623\u0636\u0641 {0} \u0643\u0627\u062a\u0635\u0627\u0644 -link.friend.confirm=\u0642\u0645 \u0628\u062a\u0623\u0643\u064a\u062f \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -link.friend.feed.search=\u0627\u0628\u062d\u062b \u0639\u0646 \u0627\u062a\u0635\u0627\u0644\u0627\u062a -link.friend.feed.view=\u0639\u0631\u0636 \u062c\u0645\u064a\u0639 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a -link.friend.ignore=\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -link.friend.remove=\u0642\u0645 \u0628\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -link.friend.request.act=\u062a\u0635\u0631\u0641 \u0628\u0646\u0627\u0621\u064b \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0637\u0644\u0628 -link.friend.search=\u0627\u0644\u0628\u062d\u062b \u0639\u0646 \u0628\u0639\u0636 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a\u061f -link.gallery.feed.addnew=\u0623\u0636\u0641 \u0635\u0648\u0631\u0629 \u062c\u062f\u064a\u062f\u0629 -link.gallery.feed.view=\u0639\u0631\u0636 \u0643\u0644 \u0627\u0644\u0635\u0648\u0631 -link.gallery.image.view=\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631\u0629 link.image.current.remove=\u0625\u0632\u0627\u0644\u0629 link.image.current.remove.confirm=\u0633\u064a\u0624\u062f\u064a \u0647\u0630\u0627 \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u0648\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646\u0647\u0627 \u0625\u0644\u0649 \u0627\u0644\u0648\u0636\u0639 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a. \u0633\u0648\u0641 \u062a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062a\u062d\u0645\u064a\u0644 \u0648\u0627\u062d\u062f\u0629 \u062c\u062f\u064a\u062f\u0629 \u0644\u062a\u063a\u064a\u064a\u0631\u0647\u0627 \u0645\u0631\u0629 \u0623\u062e\u0631\u0649. \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f\u061f -link.messages.back=\u0631\u062c\u0648\u0639 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0631\u0633\u0627\u0626\u0644 -link.messages.compose=\u0627\u0643\u062a\u0628 \u0631\u0633\u0627\u0644\u0629 -link.messages.mymessages=\u0631\u0633\u0627\u0626\u0644\u064a -link.messages.viewthread=\u0645\u0634\u0627\u0647\u062f\u0629 \u0627\u0644\u0645\u0648\u0636\u0648\u0639 -link.my.friends=\u0627\u062a\u0635\u0627\u0644\u0627\u062a -link.my.friends.search=\u0627\u0628\u062d\u062b \u0639\u0646 \u0627\u062a\u0635\u0627\u0644\u0627\u062a -link.my.friends.tooltip=\u0639\u0631\u0636 \u0648\u0625\u062f\u0627\u0631\u0629 \u0627\u062a\u0635\u0627\u0644\u0627\u062a\u0643 -link.my.messages=\u0631\u0633\u0627\u0626\u0644 -link.my.messages.tooltip=\u0625\u0631\u0633\u0627\u0644 \u0648\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u0627\u0644\u062e\u0627\u0635\u0629 -link.my.pictures=\u0627\u0644\u0635\u0648\u0631 -link.my.pictures.tooltip=\u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0635\u0648\u0631 \u0648\u0639\u0631\u0636 \u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 link.my.preferences=\u062a\u0641\u0636\u064a\u0644\u0627\u062a link.my.preferences.tooltip=\u0625\u062f\u0627\u0631\u0629 \u062a\u0641\u0636\u064a\u0644\u0627\u062a\u0643 -link.my.privacy=\u062e\u0635\u0648\u0635\u064a\u0629 -link.my.privacy.tooltip=\u0625\u062f\u0627\u0631\u0629 \u062e\u0635\u0648\u0635\u064a\u062a\u0643 link.my.profile=\u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a link.my.profile.tooltip=\u0639\u0631\u0636 \u0648\u062a\u062d\u0631\u064a\u0631 \u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 link.other.profile=\u0645\u0644\u0641 {0} \u0627\u0644\u0634\u062e\u0635\u064a -link.my.search=\u0628\u062c\u062b -link.my.search.tooltip=\u0627\u0628\u062d\u062b \u0639\u0646 \u0627\u0644\u0623\u0634\u062e\u0627\u0635 \u0648\u0627\u0633\u062a\u0639\u0631\u0636 \u0645\u0644\u0641\u0627\u062a\u0647\u0645 \u0627\u0644\u0634\u062e\u0635\u064a\u0629 link.profile.locked.false=\u0642\u0641\u0644 \u0647\u0630\u0627 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a\u061f link.profile.locked.true=\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0645\u0642\u0641\u0644. \u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0642\u0641\u0644\u061f -link.status.clear=\u062a\u0646\u0638\u064a\u0641 -link.status.update=\u062a\u0639\u062f\u064a\u0644 -link.tab.profile=\u0645\u0644\u0641 \u0634\u062e\u0635\u064a -link.tab.profile.tooltip=\u0639\u0631\u0636 \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0634\u062e\u0635\u064a\u0629 -link.tab.wall=\u062d\u0627\u0626\u0637 -link.tab.wall.tooltip=\u0645\u0634\u0627\u0647\u062f\u0629 \u0627\u0644\u062d\u0627\u0626\u0637 -link.title.confirmfriend=\u062a\u0623\u0643\u064a\u062f \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -link.title.ignorefriend=\u062a\u062c\u0627\u0647\u0644 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -link.title.removefriend=\u0642\u0645 \u0628\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 link.title.rss=\u0639\u0631\u0636 \u0623\u0648 \u062a\u062e\u0635\u064a\u0635 \u0645\u0648\u062c\u0632 RSS \u0627\u0644\u0645\u062e\u0635\u0635 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 link.title.unlinktwitter=\u0642\u0645 \u0628\u0625\u0644\u063a\u0627\u0621 \u0631\u0628\u0637 \u062d\u0633\u0627\u0628 Twitter -link.title.wall.comment=\u062a\u0639\u0644\u064a\u0642 \u0639\u0644\u0649 \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u062d\u0627\u0626\u0637 \u0644\u0640 {0} -link.title.wall.remove=\u0623\u0632\u0644 \u0645\u0646 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -link.view.friends=\u0639\u0631\u0636 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a -link.wall.item.comment=\u062a\u0639\u0644\u064a\u0642 -link.wall.item.remove=\u0625\u0632\u0627\u0644\u0629 -link.worksite.create=\u0625\u0646\u0634\u0627\u0621 \u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0645\u0644 linkedinUrl.UrlValidator=\u0631\u0627\u0628\u0637 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d -message.message=\u0631\u0633\u0627\u0644\u0629 -message.reply=\u0625\u0639\u0627\u062f\u0629 -message.subject=\u0627\u0644\u0645\u0648\u0636\u0648\u0639 -message.to=\u0625\u0644\u0649 - mobilephone.PhoneNumberValidator=\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d -myspaceUrl.UrlValidator=\u0631\u0627\u0628\u0637 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d - page.title=\u0645\u0644\u0641 \u0634\u062e\u0635\u064a -palette.available=\u0645\u062a\u0648\u0641\u0631\u0629 -palette.selected=\u0627\u0644\u0645\u062d\u062f\u062f - -pictures.addpicture=\u0623\u0636\u0641 \u0645\u0644\u0641\u0627\u062a \u0635\u0648\u0631 \u062c\u062f\u064a\u062f\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0639\u0631\u0636 -pictures.filetypewarning=\u064a\u0645\u0643\u0646 \u0625\u0636\u0627\u0641\u0629 \u0645\u0644\u0641\u0627\u062a jpeg \u0648 png \u0648 gif \u0641\u0642\u0637 \u0625\u0644\u0649 \u0627\u0644\u0645\u0639\u0631\u0636 -pictures.removepicture=\u0642\u0645 \u0628\u0625\u0632\u0627\u0644\u0629 \u0647\u0630\u0647 \u0627\u0644\u0635\u0648\u0631\u0629 \u0645\u0646 \u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631 -pictures.removepicture.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u0632\u0627\u0644\u0629 \u0647\u0630\u0647 \u0627\u0644\u0635\u0648\u0631\u0629 \u0645\u0646 \u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643\u061f -pictures.setprofileimage=\u062a\u0639\u064a\u064a\u0646 \u0647\u0630\u0647 \u0627\u0644\u0635\u0648\u0631\u0629 \u0643\u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a -pictures.setprofileimage.confirm=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u0633\u062a\u0628\u062f\u0627\u0644 \u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u0628\u0647\u0630\u0647 \u0627\u0644\u0635\u0648\u0631\u0629\u061f - preference.option.off=\u0625\u064a\u0642\u0627\u0641 preference.option.on=\u0641\u064a -preferences.email.confirms=\u064a\u0624\u0643\u062f \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u062e\u0627\u0635 \u0628\u064a -preferences.email.message=\u0623\u0631\u0633\u0644 \u0644\u064a \u0628\u0631\u064a\u062f\u064b\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a\u064b\u0627 \u0639\u0644\u0649 {0} \u0639\u0646\u062f\u0645\u0627 \u064a\u0642\u0648\u0645 \u0623\u062d\u062f \u0627\u0644\u0623\u0634\u062e\u0627\u0635 \u0628\u0645\u0627 \u064a\u0644\u064a\: -preferences.email.message.new=\u064a\u0631\u0633\u0644 \u0644\u064a \u0631\u0633\u0627\u0644\u0629 \u062c\u062f\u064a\u062f\u0629 -preferences.email.message.reply=\u0627\u0644\u0631\u062f\u0648\u062f \u0639\u0644\u0649 \u0648\u0627\u062d\u062f\u0629 \u0645\u0646 \u0631\u0633\u0627\u0626\u0644\u064a -preferences.email.none=(\u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u064a\u064a\u0646 \u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a) -preferences.email.requests=\u064a\u0636\u064a\u0641\u0646\u064a \u0643\u0627\u062a\u0635\u0627\u0644 -preferences.email.wall.new=\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0627\u062a \u0639\u0644\u0649 \u062d\u0627\u0626\u0637\u064a -preferences.email.worksite.new=\u0627\u0644\u0645\u0634\u0627\u0631\u0643\u0627\u062a \u0639\u0644\u0649 \u062d\u0627\u0626\u0637\u064a preferences.image.gravatar=Use my gravatar as my profile image -preferences.image.message=\u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u062a\u0639\u0644\u0642\u0629 \u0628\u0635\u0648\u0631\u0629 \u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 preferences.image.official=\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u064a\u0629 \u0627\u0644\u0631\u0633\u0645\u064a\u0629 \u0643\u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u064a \u0627\u0644\u0634\u062e\u0635\u064a -preferences.twitter.message=\u064a\u0645\u0643\u0646 \u0644\u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0627\u0644\u062d\u0627\u0644\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 \u0623\u064a\u0636\u064b\u0627 \u062a\u062d\u062f\u064a\u062b \u062d\u0633\u0627\u0628 Twitter \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 -preferences.widget.gallery=\u0627\u0639\u0631\u0636 \u0635\u0648\u0631\u064a -preferences.widget.gallery.tooltip=\u0633\u062a\u0638\u0647\u0631 \u0635\u0648\u0631\u0643 \u0641\u064a \u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0625\u0630\u0627 \u062a\u0645 \u062a\u062d\u062f\u064a\u062f\u0647\u0627. -preferences.widget.kudos=\u0625\u0638\u0647\u0627\u0631 \u062a\u0642\u064a\u064a\u0645 \u0645\u062c\u062f \u0628\u0644\u062f\u064a -preferences.widget.kudos.tooltip=\u0633\u064a\u0638\u0647\u0631 \u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u062a\u0646\u0648\u064a\u0647 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0641\u064a \u0645\u0644\u0641 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0628\u0645\u062c\u0631\u062f \u0627\u062d\u062a\u0633\u0627\u0628 \u062f\u0631\u062c\u0627\u062a\u0643 -preferences.widget.message=\u0627\u0644\u062a\u062d\u0643\u0645 \u0641\u064a \u0627\u0644\u062d\u0627\u062c\u064a\u0627\u062a \u0627\u0644\u062a\u064a \u062a\u0638\u0647\u0631 \u0641\u064a \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a -preferences.widget.onlinestatus=\u0625\u0638\u0647\u0627\u0631 \u062d\u0627\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u064a -preferences.widget.onlinestatus.tooltip=\u064a\u0638\u0647\u0631 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0646\u062a \u0645\u062a\u0635\u0644\u064b\u0627 \u0628\u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a \u0623\u0645 \u0644\u0627. \u0625\u0630\u0627 \u062a\u0645 \u0627\u0644\u062a\u0645\u0643\u064a\u0646 \u060c \u064a\u0645\u0643\u0646\u0643 \u0627\u0644\u062a\u062d\u0643\u0645 \u0641\u064a \u0647\u0630\u0627 \u0628\u0634\u0643\u0644 \u0623\u0643\u0628\u0631 \u0641\u064a \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643. \u0625\u0630\u0627 \u062a\u0645 \u062a\u0639\u0637\u064a\u0644\u0647 \u060c \u0641\u0633\u062a\u0638\u0647\u0631 \u0623\u0646\u0643 \u063a\u064a\u0631 \u0645\u062a\u0635\u0644 \u0628\u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a - -privacy.academicinfo=\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629 -privacy.basicinfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0623\u0633\u0627\u0633\u064a\u0629 -privacy.birthyear=\u0639\u0631\u0636 \u0633\u0646\u0629 \u0627\u0644\u0645\u064a\u0644\u0627\u062f -privacy.businessinfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0639\u0645\u0644 -privacy.contactinfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -privacy.messages=\u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0626\u0644 \u0625\u0644\u064a\u061f -privacy.myfriends=\u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0639\u0631\u0636 \u0627\u062a\u0635\u0627\u0644\u0627\u062a\u064a\u061f -privacy.mykudos=\u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062a\u0635\u0646\u064a\u0641 \u0645\u062c\u062f \u0627\u0644\u062e\u0627\u0635 \u0628\u064a\u061f -privacy.mypictures=\u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0645\u0634\u0627\u0647\u062f\u0629 \u0635\u0648\u0631\u064a\u061f -privacy.mystatus=\u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0627\u0644\u062d\u0627\u0644\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u064a\u061f -privacy.mywall=\u0645\u0646 \u064a\u0633\u062a\u0637\u064a\u0639 \u0631\u0624\u064a\u0629 \u062d\u0627\u0626\u0637\u064a \u0627\u0644\u0634\u062e\u0635\u064a \u0648\u0645\u0634\u0627\u0631\u0643\u0627\u062a\u064a \u0639\u0646\u062f \u0627\u0644\u0623\u062e\u0631\u064a\u0646\u061f -privacy.onlinestatus=\u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0648\u0636\u0639\u064a \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a\u061f -privacy.option.everyone=\u0627\u0644\u062c\u0645\u064a\u0639 -privacy.option.nobody=\u0644\u0627 \u0623\u062d\u062f -privacy.option.onlyfriends=\u0641\u0642\u0637 \u0627\u062a\u0635\u0627\u0644\u0627\u062a\u064a -privacy.option.onlyme=\u0627\u0646\u0627 \u0641\u0642\u0637 -privacy.personalinfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0634\u062e\u0635\u064a\u0629 -privacy.profileimage=\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -privacy.search=\u0628\u062c\u062b -privacy.socialinfo=\u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a\u0629 -privacy.staffinfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0648\u0638\u0641\u064a\u0646 -privacy.studentinfo=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0637\u0627\u0644\u0628 -profile.academicprofileurl=\u0639\u0646\u0648\u0627\u0646 URL \u0623\u0643\u0627\u062f\u064a\u0645\u064a / \u0628\u062d\u062b\u064a -profile.birthday=\u0639\u064a\u062f \u0627\u0644\u0645\u064a\u0644\u0627\u062f -profile.business.bio=\u0633\u064a\u0631\u0629 \u0627\u0644\u0623\u0639\u0645\u0627\u0644 -profile.business.company.description=\u0648\u0635\u0641 \u0627\u0644\u0634\u0631\u0643\u0629 -profile.business.company.name=\u0627\u0633\u0645 \u0627\u0644\u0634\u0631\u0643\u0629 -profile.business.company.profile=\u0645\u0644\u0641 \u0634\u062e\u0635\u064a -profile.business.company.profiles=\u0645\u0644\u0641 \u0627\u0644\u0634\u0631\u0643\u0629 -profile.business.company.web=\u0639\u0646\u0648\u0627\u0646 \u0648\u064a\u0628 \u0627\u0644\u0634\u0631\u0643\u0629 -profile.business.update=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u062a\u062c\u0627\u0631\u064a\u0629 \u0641\u064a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a profile.contact.update=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u0645\u062d\u062f\u062b\u0629 \u0641\u064a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -profile.course=\u062f\u0631\u062c\u0629\\\u0645\u0627\u062f\u0629 -profile.department=\u0642\u0633\u0645 profile.email=\u0623\u0644\u0627\u064a\u0645\u064a\u0644 -profile.favourite.books=\u0627\u0644\u0643\u062a\u0628 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 -profile.favourite.movies=\u0627\u0644\u0623\u0641\u0644\u0627\u0645 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 -profile.favourite.quotes=\u0645\u0642\u0648\u0644\u0627\u062a \u0645\u0641\u0636\u0644\u0629 -profile.favourite.tv=\u0627\u0644\u0628\u0631\u0627\u0645\u062c \u0627\u0644\u062a\u0644\u0641\u0632\u064a\u0648\u0646\u064a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 -profile.gallery.image.alt=\u0635\u0648\u0631\u064a -profile.gallery.image.upload=\u062a\u0645 \u062a\u062d\u0645\u064a\u0644\u0647\u0627 \u0625\u0644\u0649 \u0645\u0639\u0631\u0636 \u0635\u0648\u0631 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -profile.homepage=\u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 profile.image.change.upload=\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0627\u0644\u062a\u064a \u062a\u0645 \u062a\u063a\u064a\u064a\u0631\u0647\u0627 profile.image.change.url=\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0627\u0644\u062a\u064a \u062a\u0645 \u062a\u063a\u064a\u064a\u0631\u0647\u0627 profile.info.update=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0641\u064a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -profile.interests.update=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0634\u062e\u0635\u064a\u0629 \u0641\u064a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -profile.name.first=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0627\u0648\u0644 -profile.name.first.none=\u0645\u0633\u062a\u062e\u062f\u0645 -profile.name.last=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0627\u062e\u064a\u0631 -profile.name.middle=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0633\u0637 profile.name.recording=\u0633\u0645\u064a \u0627\u0644\u062a\u0633\u062c\u064a\u0644 profile.nickname=\u0627\u0633\u0645 \u0627\u0644\u0634\u0647\u0631\u0629 profile.pronouns=\u0627\u0644\u0636\u0645\u0627\u0626\u0631 @@ -422,144 +130,33 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=\u0627\u0644\u0641\u0627\u0643\u0633 -profile.phone.home=\u0647\u0627\u062a\u0641 \u0627\u0644\u0645\u0646\u0632\u0644 profile.phone.mobile=\u0647\u0627\u062a\u0641 \u0645\u062d\u0645\u0648\u0644 -profile.phone.work=\u0647\u0627\u062a\u0641 \u0639\u0645\u0644 -profile.position=\u0645\u0648\u0642\u0639 -profile.publications=\u0627\u0644\u0645\u0646\u0634\u0648\u0631\u0627\u062a \u0648\u0627\u0644\u0645\u0624\u062a\u0645\u0631\u0627\u062a -profile.room=\u063a\u0631\u0641\u0629 -profile.school=\u0645\u062f\u0631\u0633\u0629 profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook URL profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn URL -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace URL profile.socialnetworking.instagram=Instagram profile.socialnetworking.instagram.edit=Instagram URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Skype username -profile.socialnetworking.skype.link=Skype Me -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter URL profile.socialnetworking.update=\u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0634\u0628\u0643\u0627\u062a \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a\u0629 \u0627\u0644\u0645\u062d\u062f\u062b\u0629 \u0641\u064a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -profile.staff.update=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0645\u0648\u0638\u0641\u064a\u0646 \u0627\u0644\u0645\u062d\u062f\u062b\u0629 \u0641\u064a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -profile.staffprofile=\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0644\u0644\u0645\u0648\u0638\u0641\u064a\u0646 -profile.student.update=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0637\u0627\u0644\u0628 \u0627\u0644\u0645\u062d\u062f\u062b\u0629 \u0641\u064a \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a -profile.subjects=\u0627\u0644\u0645\u0648\u0627\u0636\u064a\u0639 profile.summary=\u0645\u0644\u062e\u0635 \u0634\u062e\u0635\u064a -profile.universityprofileurl=\u0631\u0627\u0628\u0637 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062e\u0635\u064a \u0644\u0644\u062c\u0627\u0645\u0639\u0629 -success.message.send.ok=\u062a\u0645 \u0627\u0644\u0627\u0631\u0633\u0627\u0644 success.preferences.save.ok=\u062d\u0641\u0638 \u0628\u0646\u062c\u0627\u062d -success.privacy.save.ok=\u062d\u0641\u0638 \u0628\u0646\u062c\u0627\u062d text.edit.other.warning=\u062a\u062d\u0630\u064a\u0631\: \u0623\u0646\u062a \u062a\u0642\u0648\u0645 \u0628\u062a\u0639\u062f\u064a\u0644 \u0645\u0639\u0644\u0648\u0645\u0627\u062a {0}. -text.friend.add=\u0633\u064a\u062a\u0639\u064a\u0646 \u0639\u0644\u0649 {0} \u062a\u0623\u0643\u064a\u062f \u0637\u0644\u0628\u0643. -text.friend.already=\u0623\u0646\u062a \u0645\u062a\u0635\u0644 \u0628\u0627\u0644\u0641\u0639\u0644 \u0628\u0640 {0}. -text.friend.already.pending=\u064a\u0648\u062c\u062f \u0628\u0627\u0644\u0641\u0639\u0644 \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 \u0645\u0639\u0644\u0642 \u0628\u064a\u0646\u0643 \u0648\u0628\u064a\u0646 {0}. -text.friend.cancel=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u0644\u063a\u0627\u0621 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0627\u0644\u0645\u0639\u0644\u0642 \u0628\u0640 {0}\u061f \u0644\u0646 \u064a\u062a\u0645 \u0625\u062e\u0637\u0627\u0631\u0647\u0645. -text.friend.confirm=\u0633\u064a\u0624\u062f\u064a \u0647\u0630\u0627 \u0625\u0644\u0649 \u062a\u0623\u0643\u064a\u062f \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 {0}. -text.friend.confirmed=\u0627\u0646\u062a \u0645\u062a\u0635\u0644 -text.friend.feed.num.many={0} \u0627\u062a\u0635\u0627\u0644\u0627\u062a -text.friend.feed.num.none=0 \u0627\u062a\u0635\u0627\u0644\u0627\u062a -text.friend.feed.num.one=1 \u0627\u062a\u0635\u0627\u0644 -text.friend.ignore=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u062a\u062c\u0627\u0647\u0644 \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 {0}\u061f \u0644\u0646 \u064a\u062a\u0645 \u0625\u062e\u0637\u0627\u0631\u0647\u0645. -text.friend.none=\u0623\u0646\u062a \u063a\u064a\u0631 \u0645\u062a\u0635\u0644 \u0628\u0640 {0}. -text.friend.pending=\u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u0639\u0644\u0642 -text.friend.remove=\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u0632\u0627\u0644\u0629 {0} \u0643\u0627\u062a\u0635\u0627\u0644\u061f \u0644\u0646 \u064a\u062a\u0645 \u0625\u062e\u0637\u0627\u0631\u0647\u0645. -text.friend.requested=\u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 -text.friend.self=\u0647\u0630\u0627 \u0647\u0648 \u0623\u0646\u062a\! -text.gallery.feed.num.none=\ 0 \u0635\u0648\u0631 -text.gallery.pictures.num.none=\u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 \u0644\u0627 \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0623\u064a \u0635\u0648\u0631 \u062d\u062a\u0649 \u0627\u0644\u0622\u0646. -text.gallery.upload.tooltip=\u062a\u062d\u0645\u064a\u0644 \u0635\u0648\u0631 \u0627\u0644\u0645\u0639\u0631\u0636 \u0645\u0646 \u062c\u0647\u0627\u0632 \u0627\u0644\u0643\u0645\u0628\u064a\u0648\u062a\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643. \u064a\u062c\u0628 \u0623\u0644\u0627 \u064a\u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u062d\u062c\u0645 \u0627\u0644\u0645\u062c\u0645\u0639 \u0644\u0644\u0635\u0648\u0631 \u0627\u0644\u0645\u0631\u0627\u062f \u062a\u062d\u0645\u064a\u0644\u0647\u0627 {0} \u0645\u064a\u063a\u0627\u0628\u0627\u064a\u062a. text.image.refresh=\u0645\u0644\u0627\u062d\u0638\u0629\: \u0625\u0630\u0627 \u0644\u0645 \u062a\u0638\u0647\u0631 \u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0639\u0644\u0649 \u0627\u0644\u0641\u0648\u0631 \u060c \u0641\u062d\u0627\u0648\u0644 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u0633\u062a\u0639\u0631\u0636 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643. text.image.url=\u0623\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 URL \u0644\u0644\u0635\u0648\u0631\u0629 \u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627 \u0643\u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a -text.messages.none=\u0644\u0627 \u0631\u0633\u0627\u0626\u0644 text.name.pronunciation.description=\u064a\u0633\u0645\u062d \u0644\u0643 \u0628\u062a\u0642\u062f\u064a\u0645 \u0646\u0637\u0642 \u0635\u0648\u062a\u064a \u0645\u0643\u062a\u0648\u0628 \u0648 / \u0623\u0648 \u062a\u0633\u062c\u064a\u0644\u0627\u062a \u0635\u0648\u062a\u064a\u0629 \u0644\u0627\u0633\u0645\u0643 \u060c
\u0633\u064a\u0643\u0648\u0646 \u0647\u0630\u0627 \u0627\u0644\u0646\u0637\u0642 \u0645\u0631\u0626\u064a\u064b\u0627 \u0644\u0644\u0645\u062f\u0631\u0633\u064a\u0646 / \u0627\u0644\u0637\u0644\u0627\u0628 \u0627\u0644\u0645\u0633\u062c\u0644\u064a\u0646 \u0641\u064a \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u062f\u0648\u0631\u0629 \u0627\u0644\u062a\u062f\u0631\u064a\u0628\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643. text.no.fields=\u0644\u0645 \u062a\u0645\u0644\u0623 \u0623\u064a \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062d\u062a\u0649 \u0627\u0644\u0622\u0646 text.no.status=\u0642\u0644 \u0634\u064a\u0626\u0627 text.or=\u0623\u0648 -text.privacy.academicinfo.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0643 \u0627\u0644\u0623\u0643\u0627\u062f\u064a\u0645\u064a\u0629 \u0645\u062b\u0644 \u0627\u0644\u0645\u062f\u0631\u0633\u0629 \u0623\u0648 \u0627\u0644\u0642\u0633\u0645 \u0623\u0648 \u0627\u0644\u062f\u0648\u0631\u0629 \u0627\u0644\u062a\u062f\u0631\u064a\u0628\u064a\u0629. -text.privacy.basicinfo.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0643 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0645\u062b\u0644 \u0627\u0644\u0644\u0642\u0628 \u0648\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0645\u064a\u0644\u0627\u062f. -text.privacy.birthyear.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0646\u062a \u062a\u0631\u064a\u062f \u0625\u0638\u0647\u0627\u0631 \u0623\u0648 \u0625\u062e\u0641\u0627\u0621 \u0633\u0646\u0629 \u0645\u064a\u0644\u0627\u062f\u0643 \u0623\u0645 \u0644\u0627. \u0636\u0639 \u0639\u0644\u0627\u0645\u0629 \u064a\u0639\u0646\u064a \u0645\u0631\u0626\u064a\u0629. -text.privacy.businessinfo.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0639\u0645\u0644\u0643 \u060c \u0645\u062b\u0644 \u0627\u0644\u0635\u0646\u0627\u0639\u0629 \u0648\u0627\u0644\u0648\u0638\u064a\u0641\u0629 \u0648\u0627\u0644\u0633\u064a\u0631\u0629 \u0627\u0644\u0630\u0627\u062a\u064a\u0629 \u0644\u0644\u0623\u0639\u0645\u0627\u0644. -text.privacy.cannot.modify=\u062a\u0645 \u062a\u0623\u0645\u064a\u0646 \u0647\u0630\u0647 \u0627\u0644\u0642\u064a\u0645 \u0645\u0646 \u0642\u0628\u0644 \u0627\u0644\u0645\u0633\u0624\u0648\u0644 \u0648\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u063a\u064a\u064a\u0631\u0647\u0627. -text.privacy.contactinfo.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0623\u0634\u064a\u0627\u0621 \u0645\u062b\u0644 \u0639\u0646\u0627\u0648\u064a\u0646 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0648\u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0647\u0648\u0627\u062a\u0641. -text.privacy.messages.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0626\u0644 \u0625\u0644\u064a\u0643. -text.privacy.myfriends.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0639\u0631\u0636 \u0642\u0627\u0626\u0645\u0629 \u0632\u0645\u0644\u0627\u0626\u0643. -text.privacy.mykudos.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u062a\u0646\u0648\u064a\u0647 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 (\u0625\u0630\u0627 \u062a\u0645 \u062a\u0645\u0643\u064a\u0646\u0647 \u0641\u064a \u0627\u0644\u062a\u0641\u0636\u064a\u0644\u0627\u062a). -text.privacy.mypictures.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0631\u0636 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643. -text.privacy.mystatus.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062a\u062d\u062f\u064a\u062b\u0627\u062a \u062d\u0627\u0644\u062a\u0643. -text.privacy.mywall.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643. -text.privacy.onlinestatus.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u062d\u0627\u0644\u062a\u0643 \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a. \u0633\u0648\u0641 \u062a\u0638\u0647\u0631 \u0641\u064a \u0648\u0636\u0639 \u0639\u062f\u0645 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0644\u062c\u0645\u064a\u0639 \u0627\u0644\u0622\u062e\u0631\u064a\u0646. -text.privacy.personalinfo.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0643\u062a\u0628\u0643 \u0648\u0628\u0631\u0627\u0645\u062c\u0643 \u0627\u0644\u062a\u0644\u0641\u0632\u064a\u0648\u0646\u064a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0648\u0645\u0627 \u0625\u0644\u0649 \u0630\u0644\u0643. -text.privacy.profileimage.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a. -text.privacy.socialinfo.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0627\u062c\u062a\u0645\u0627\u0639\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 \u060c \u0645\u062b\u0644 \u0645\u0644\u0641\u0627\u062a\u0643 \u0627\u0644\u0634\u062e\u0635\u064a\u0629 \u0639\u0644\u0649 Facebook \u0648 LinkedIn \u0648 MySpace. -text.privacy.staff.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0648\u0638\u0641\u064a\u0643 -text.privacy.student.tooltip=\u0627\u062e\u062a\u0631 \u0645\u0646 \u064a\u0645\u0643\u0646\u0647 \u0631\u0624\u064a\u0629 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0637\u0627\u0644\u0628 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 -text.profile.birthyear.tooltip=\u064a\u0645\u0643\u0646\u0643 \u0627\u062e\u062a\u064a\u0627\u0631 \u0625\u0638\u0647\u0627\u0631 / \u0625\u062e\u0641\u0627\u0621 \u0639\u0627\u0645 \u0645\u064a\u0644\u0627\u062f\u0643 \u0641\u064a \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062e\u0635\u0648\u0635\u064a\u0629 \u0627\u0644\u062e\u0627\u0635\u0629 \u0628\u0643 text.profile.facebook.tooltip=e.g. http\://www.facebook.com/user text.profile.linkedin.tooltip=e.g. http\://www.linkedin.com/pub/user text.profile.locked.false=\u064a\u0639\u0646\u064a \u0642\u0641\u0644 \u0645\u0644\u0641 \u062a\u0639\u0631\u064a\u0641 \u0623\u0646\u0647 \u0644\u0627 \u064a\u0645\u0643\u0646 \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u062a\u062d\u0631\u064a\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0647. text.profile.locked.true=\u0633\u064a\u0633\u0645\u062d \u0641\u062a\u062d \u0645\u0644\u0641 \u062a\u0639\u0631\u064a\u0641 \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0628\u062a\u062d\u0631\u064a\u0631 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0647. -text.profile.myspace.tooltip=e.g. http\://myspace.com/user text.profile.instagram.tooltip=e.g. https\://www.instagram.com/user/ -text.profile.presence.away={0} \u0628\u0639\u064a\u062f -text.profile.presence.offline={0} \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631 -text.profile.presence.online={0} \u0645\u062a\u0635\u0644 -text.profile.twitter.tooltip=e.g. http\://twitter.com/sakaiproject -text.search.byinterest.all.results=\u0639\u0631\u0636 {0} \u0645\u0646 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0644\u0640\: {1} -text.search.byinterest.label=\u0627\u0644\u0627\u0647\u062a\u0645\u0627\u0645 \u0627\u0644\u0645\u0634\u062a\u0631\u0643 -text.search.byinterest.no.results=\u0644\u0627 \u064a\u0648\u062c\u062f \u0623\u0634\u062e\u0627\u0635 \u062a\u0637\u0627\u0628\u0642\u0647\u0645 \u0627\u0647\u062a\u0645\u0627\u0645\u0627\u062a \u0645\u0634\u062a\u0631\u0643\u0629 {0}. -text.search.byinterest.one.result=\u0639\u0631\u0636 \u0646\u062a\u064a\u062c\u0629 \u0648\u0627\u062d\u062f\u0629 1 \u0644\u0640\: {0} -text.search.byinterest.paged.results=\u0639\u0631\u0636 {0} \u0645\u0646 \u0627\u0644\u0646\u062a\u0627\u0626\u062c (\u062d\u062a\u0649 {1} \u0645\u0646 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0644\u0643\u0644 \u0635\u0641\u062d\u0629) \u0644\u0640\: {2} -text.search.byinterest.tooltip=\u0623\u062f\u062e\u0644 \u0623\u062d\u062f \u0627\u0644\u0627\u0647\u062a\u0645\u0627\u0645\u0627\u062a \u060c \u0645\u062b\u0644 "\u0631\u0643\u0648\u0628 \u0627\u0644\u062f\u0631\u0627\u062c\u0627\u062a" \u0644\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0623\u0634\u062e\u0627\u0635 \u0644\u062f\u064a\u0647\u0645 \u0627\u0647\u062a\u0645\u0627\u0645\u0627\u062a \u0645\u0645\u0627\u062b\u0644\u0629 -text.search.byname.all.results=\u0639\u0631\u0636 {0} \u0645\u0646 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0644\u0640\: {1} -text.search.byname.label=\u0627\u0633\u0645 \u0627\u0644\u0634\u062e\u0635 \u0623\u0648 \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a -text.search.byname.no.results=\u0644\u0627 \u062a\u0648\u062c\u062f \u0646\u062a\u0627\u0626\u062c \u062a\u0637\u0627\u0628\u0642 {0}. -text.search.byname.one.result=\u0639\u0631\u0636 \u0646\u062a\u064a\u062c\u0629 \u0648\u0627\u062d\u062f\u06291 \u0644\u0640\: {0} -text.search.byname.paged.results=\u0639\u0631\u0636 {0} \u0645\u0646 \u0627\u0644\u0646\u062a\u0627\u0626\u062c (\u062d\u062a\u0649 {1} \u0645\u0646 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0644\u0643\u0644 \u0635\u0641\u062d\u0629) \u0644\u0640\: {2} -text.search.byname.tooltip=\u0623\u062f\u062e\u0644 \u0627\u0633\u0645\u064b\u0627 \u0623\u0648 \u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u064a\u062f \u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0644\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0623\u0634\u062e\u0627\u0635 -text.search.history=\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u0628\u062d\u062b \u0627\u0644\u0633\u0627\u0628\u0642\u0629 -text.search.include.connections=\u062a\u0636\u0645\u064a\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0641\u064a \u0646\u062a\u0627\u0626\u062c \u0627\u0644\u0628\u062d\u062b -text.search.include.worksite=\u062a\u0642\u064a\u064a\u062f \u0627\u0644\u0628\u062d\u062b \u0639\u0644\u0649 \u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0645\u0644 \u0627\u0644\u0645\u062d\u062f\u062f -text.search.no.input=\u0644\u0645 \u062a\u062f\u062e\u0644 \u0623\u064a \u0634\u064a\u0621 -text.search.no.results=\u0644\u0627 \u062a\u0648\u062c\u062f \u0646\u062a\u0627\u0626\u062c \u0644\u0640 {0}. -text.search.no.worksite=\u0623\u0646\u062a \u0644\u0633\u062a \u0639\u0636\u0648\u0627 \u0641\u064a \u0623\u064a \u0645\u0648\u0627\u0642\u0639 \u0639\u0645\u0644 \u062d\u062a\u0649 \u0627\u0644\u0622\u0646 -text.search.paged.results=\u0639\u0631\u0636 {0} - {1} \u0645\u0646 {2} \u0646\u062a\u0627\u0626\u062c \u0644\u0640\: {3} -text.search.terms.label=\u0645\u0635\u0637\u0644\u062d\u0627\u062a \u0627\u0644\u0628\u062d\u062b -text.search.terms.tooltip=\u0623\u062f\u062e\u0644 \u0645\u0635\u0637\u0644\u062d\u0627\u062a \u0627\u0644\u0628\u062d\u062b \u0628\u0646\u0627\u0621\u064b \u0639\u0644\u0649 \u0645\u0627 \u0625\u0630\u0627 \u0643\u0627\u0646 \u0627\u0644\u0628\u062d\u062b \u0628\u0627\u0644\u0627\u0633\u0645 / \u0627\u0644\u0628\u0631\u064a\u062f \u0627\u0644\u0625\u0644\u0643\u062a\u0631\u0648\u0646\u064a \u0623\u0648 \u062d\u0633\u0628 \u0627\u0644\u0627\u0647\u062a\u0645\u0627\u0645 -text.search.toomany.results=\u0628\u062d\u062b\u0643 \u0639\u0646 {0} \u0623\u0639\u0627\u062f {1} \u0623\u0648 \u0627\u0644\u0645\u0632\u064a\u062f \u0645\u0646 \u0627\u0644\u0646\u062a\u0627\u0626\u062c. \u062a\u0645 \u062a\u0648\u0641\u064a\u0631 \u0623\u0648\u0644 {1} \u0641\u0642\u0637. text.upload.image.file=\u062d\u062f\u062f \u0645\u0644\u0641 \u0635\u0648\u0631\u0629 \u0639\u0644\u0649 \u062c\u0647\u0627\u0632 \u0627\u0644\u0643\u0645\u0628\u064a\u0648\u062a\u0631 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643 (\u0628\u062d\u062f \u0623\u0642\u0635\u0649 {0} \u0645\u064a\u063a\u0627\u0628\u0627\u064a\u062a)\: text.view.profile.nothing=\u0642\u0627\u0645 \u0647\u0630\u0627 \u0627\u0644\u0634\u062e\u0635 \u0628\u062a\u0642\u064a\u064a\u062f \u0639\u0631\u0636 \u0645\u0639\u0644\u0648\u0645\u0627\u062a\u0647 \u0623\u0648 \u0644\u064a\u0633 \u0644\u062f\u064a\u0647 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0645\u0644\u0641 \u0634\u062e\u0635\u064a \u0644\u0645\u0634\u0627\u0631\u0643\u062a\u0647\u0627. -text.view.wall.nothing=\u0644\u0627 \u064a\u0648\u062c\u062f \u062d\u0627\u0644\u064a\u0627 \u0623\u064a \u0639\u0646\u0627\u0635\u0631 \u0639\u0644\u0649 \u062d\u0627\u0626\u0637 {0}. \u0643\u0646 \u0623\u0648\u0644 \u0645\u0646 \u064a\u0646\u0634\u0631 \u0634\u064a\u0626\u0627\! -text.view.wall.restricted=\u0641\u0642\u0637 \u0627\u062a\u0635\u0627\u0644\u0627\u062a {0} \u064a\u0645\u0643\u0646\u0647\u0627 \u0631\u0624\u064a\u0629 \u0647\u0630\u0627 \u0627\u0644\u062c\u062f\u0627\u0631. \u0623\u0636\u0641 {0} \u0643\u0627\u062a\u0635\u0627\u0644 \u0644\u0644\u0639\u0631\u0636 \u0648\u0627\u0644\u0646\u0634\u0631 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062d\u0627\u0626\u0637. -text.wall.no.items=\u0644\u0627 \u064a\u0648\u062c\u062f \u062d\u0627\u0644\u064a\u0627 \u0623\u064a \u0639\u0646\u0627\u0635\u0631 \u0644\u0639\u0631\u0636\u0647\u0627 \u0639\u0644\u0649 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643. -text.wall.remove.mine=\u0625\u0632\u0627\u0644\u0629 \u0622\u062e\u0631 \u0645\u0646 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643\u061f -text.wall.remove.other=\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062a\u062f\u0648\u064a\u0646 \u0645\u0646 {0} \u0645\u0646 \u0627\u0644\u062d\u0627\u0626\u0637 \u0627\u0644\u062e\u0627\u0635 \u0628\u0643\u061f -text.worksite.create=\u062d\u062f\u062f \u0645\u0646 \u0628\u064a\u0646 \u0627\u0644\u0623\u0634\u062e\u0627\u0635 \u0627\u0644\u0645\u062a\u0627\u062d\u064a\u0646 \u0648\u0642\u0645 \u0628\u0625\u0646\u0634\u0627\u0621 \u0645\u0648\u0642\u0639 \u0639\u0645\u0644 \u062c\u062f\u064a\u062f. -text.worksite.refresh=\u0642\u0645 \u0628\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0645\u0644 \u0627\u0644\u062c\u062f\u064a\u062f \u0628\u0639\u062f \u0627\u0644\u0625\u0646\u0634\u0627\u0621 title.change.profile.picture=\u062a\u063a\u064a\u064a\u0631 \u0635\u0648\u0631\u0629 \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062e\u0635\u064a -title.friend.add=\u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0636\u0627\u0641\u0629 {0} \u0643\u0627\u062a\u0635\u0627\u0644\u061f -title.friend.cancel=\u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0644\u063a\u0627\u0621 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u061f -title.friend.confirm=\u0647\u0644 \u062a\u0631\u064a\u062f \u062a\u0623\u0643\u064a\u062f \u0637\u0644\u0628 \u0627\u062a\u0635\u0627\u0644 {0}\u061f -title.friend.ignore=\u062a\u062c\u0627\u0647\u0644 \u0637\u0644\u0628 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u061f -title.friend.remove=\u0647\u0644 \u062a\u0631\u064a\u062f \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644\u061f -title.message.compose=\u0627\u0643\u062a\u0628 \u0631\u0633\u0627\u0644\u0629 \u062c\u062f\u064a\u062f\u0629 -title.wall.comment=\u062a\u0639\u0644\u064a\u0642 \u0639\u0644\u0649 \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u062d\u0627\u0626\u0637 \u0644\u0640 {0} -title.wall.remove=\u0625\u0632\u0627\u0644\u0629 \u0645\u0646 \u0627\u0644\u062d\u0627\u0626\u0637\u061f - -twitter.auth.do=\u0631\u0628\u0637 \u062d\u0633\u0627\u0628 Twitter -twitter.auth.linked=\u062a\u0645 \u0631\u0628\u0637 \u062d\u0633\u0627\u0628 Twitter -twitter.enabled=\u062a\u0641\u0639\u064a\u0644 \u062a\u0643\u0627\u0645\u0644 Twitter - -twitterUrl.UrlValidator=\u0631\u0627\u0628\u0637 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d urlField.Required=\u0644\u0645 \u062a\u062f\u062e\u0644 \u0639\u0646\u0648\u0627\u0646 URL - -workphone.PhoneNumberValidator=\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062a\u0641 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d - -worksite.name=\u0627\u0633\u0645 \u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0645\u0644 diff --git a/profile2/api/src/resources/ProfileApplication_bg.properties b/profile2/api/src/resources/ProfileApplication_bg.properties index af10978f968f..57511c02817b 100644 --- a/profile2/api/src/resources/ProfileApplication_bg.properties +++ b/profile2/api/src/resources/ProfileApplication_bg.properties @@ -14,399 +14,107 @@ # RequiredValidator='${label}' \u0435 \u0437\u0430\u0434\u044a\u043b\u0436\u0438\u0442\u0435\u043b\u0435\u043d -accessibility.connection.add=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 {0} \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430? -accessibility.connection.confirm=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043d\u0430 {0}? -accessibility.connection.ignore=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0442\u0435 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043d\u0430 {0}? -accessibility.connection.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0435\u0442\u0435 {0} \u043e\u0442 \u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435 \u0441\u0438? accessibility.edit.basic=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u0442\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -accessibility.edit.business=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f accessibility.edit.contact=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 -accessibility.edit.personal=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043b\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f accessibility.edit.pronunciation=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0438\u043c\u0435\u0442\u043e accessibility.edit.social=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0441\u043e\u0446\u0438\u0430\u043b\u043d\u0438\u0442\u0435 \u043c\u0440\u0435\u0436\u0438 -accessibility.edit.staff=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 -accessibility.edit.student=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430 accessibility.image.upload=\u041a\u0430\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0430 \u0437\u0430 \u0432\u0430\u0448\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b accessibility.image.url=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u043d\u0430\u0442\u0430 \u0441\u0438 \u0441\u043d\u0438\u043c\u043a\u0430 -accessibility.messages.unread=\u041d\u0435\u043f\u0440\u043e\u0447\u0435\u0442\u0435\u043d\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 -accessibility.prefs.confirms.off=\u0418\u0437\u043f\u0440\u0430\u0442\u0435\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0438 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u043c\u0438 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430, \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043do -accessibility.prefs.confirms.on=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0438 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u043c\u0438 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043do -accessibility.prefs.gallery=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0438\u0442\u0435 \u043c\u0438 \u0432 \u043c\u043e\u044f \u043f\u0440\u043e\u0444\u0438\u043b accessibility.prefs.gravatar=\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u043e\u044f Gravatar \u043a\u0430\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043c\u0438 -accessibility.prefs.kudos=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0446\u0435\u043d\u043a\u0430\u0442\u0430 \u043c\u0438 Kudos \u0432 \u043c\u043e\u044f \u043f\u0440\u043e\u0444\u0438\u043b -accessibility.prefs.messagenew.off=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043c\u0438 \u0438\u0437\u043f\u0440\u0430\u0442\u0438 \u043d\u043e\u0432\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e -accessibility.prefs.messagenew.on=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043c\u0438 \u0438\u0437\u043f\u0440\u0430\u0442\u0438 \u043d\u043e\u0432\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e -accessibility.prefs.messagereply.off=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438 \u043d\u0430 \u043d\u044f\u043a\u043e\u0435 \u043e\u0442 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0442\u0430 \u043c\u0438, \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e -accessibility.prefs.messagereply.on=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438 \u043d\u0430 \u043d\u044f\u043a\u043e\u0435 \u043e\u0442 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0442\u0430 \u043c\u0438, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e accessibility.prefs.officialimage=\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u043d\u043e\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0446\u0438\u044f\u0442\u0430 \u043a\u0430\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043c\u0438 -accessibility.prefs.onlinestatus=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043e\u043d\u043b\u0430\u0439\u043d \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u0441\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0442\u0435 accessibility.prefs.overview=\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f \u0437\u0430 \u0443\u0432\u0435\u0434\u043e\u043c\u044f\u0432\u0430\u043d\u0435 \u043f\u043e \u0438\u043c\u0435\u0439\u043b accessibility.prefs.requests.off=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043c\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430, \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e accessibility.prefs.requests.on=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043c\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e -accessibility.prefs.twitterauthcode=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043a\u043e\u0434\u0430 \u0441\u0438 \u0437\u0430 \u043e\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432 Twitter -accessibility.prefs.wallnew.off=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043c\u0438, \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e -accessibility.prefs.wallnew.on=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043c\u0438, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e -accessibility.prefs.worksite.off=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u0434\u0430\u0434\u0435\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043c\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u043a\u044a\u043c \u043d\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0435\u043d \u043e\u0431\u0435\u043a\u0442, \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d -accessibility.prefs.worksite.on=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u0439\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b, \u043a\u043e\u0433\u0430\u0442\u043e \u0434\u0430\u0434\u0435\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043c\u0435 \u0434\u043e\u0431\u0430\u0432\u0438 \u043a\u044a\u043c \u043d\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0435\u043d \u043e\u0431\u0435\u043a\u0442, \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e -accessibility.privacy.academic=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u043d\u0430\u0442\u0430 \u0432\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u0447\u0438\u043b\u0438\u0449\u0435, \u0434\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442 \u0438\u043b\u0438 \u043a\u0443\u0440\u0441. -accessibility.privacy.basic=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u0442\u0430 \u0432\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u0430\u0442\u043e \u043f\u0440\u044f\u043a\u043e\u0440 \u0438 \u0440\u043e\u0436\u0434\u0435\u043d \u0434\u0435\u043d. -accessibility.privacy.birthyear=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u043b\u0438 \u0434\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0435 \u0438\u043b\u0438 \u0441\u043a\u0440\u0438\u0435\u0442\u0435 \u0433\u043e\u0434\u0438\u043d\u0430\u0442\u0430 \u0441\u0438 \u043d\u0430 \u0440\u0430\u0436\u0434\u0430\u043d\u0435. \u041e\u0442\u0431\u0435\u043b\u044f\u0437\u0430\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0432\u0430 \u0432\u0438\u0434\u0438\u043c\u0430. -accessibility.privacy.business=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u0432\u0438, \u043a\u0430\u0442\u043e \u043e\u0442\u0440\u0430\u0441\u044a\u043b, \u0434\u043b\u044a\u0436\u043d\u043e\u0441\u0442 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0431\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u044f. -accessibility.privacy.contact=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043d\u0435\u0449\u0430 \u043a\u0430\u0442\u043e \u0432\u0430\u0448\u0438\u0442\u0435 \u0438\u043c\u0435\u0439\u043b \u0430\u0434\u0440\u0435\u0441\u0438 \u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u0438 \u043d\u043e\u043c\u0435\u0440\u0430. -accessibility.privacy.friends=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u0440\u0435\u0433\u043b\u0435\u0436\u0434\u0430 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0432\u0438 \u0441 \u0432\u0440\u044a\u0437\u043a\u0438. -accessibility.privacy.image=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0441\u043d\u0438\u043c\u043a\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0432\u0438. -accessibility.privacy.kudos=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043e\u0446\u0435\u043d\u043a\u0430\u0442\u0430 \u0432\u0438 kudos (\u0430\u043a\u043e \u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e \u0432 \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f). -accessibility.privacy.messages=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f. -accessibility.privacy.onlinestatus=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0432\u0430\u0448\u0438\u044f \u043e\u043d\u043b\u0430\u0439\u043d \u0441\u0442\u0430\u0442\u0443\u0441. -accessibility.privacy.overview=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0430\u0439\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0438 \u043a\u0430\u043a\u0432\u0438 \u0447\u0430\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b -accessibility.privacy.personal=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043b\u044e\u0431\u0438\u043c\u0438\u0442\u0435 \u0432\u0438 \u043a\u043d\u0438\u0433\u0438, \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u0438 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f \u0438 \u0442.\u043d. -accessibility.privacy.pictures=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 \u0432\u0438\u0441\u044a\u0441 \u0441\u043d\u0438\u043c\u043a\u0438. -accessibility.privacy.social=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0432\u0438 \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u043d\u0438\u0442\u0435 \u043c\u0440\u0435\u0436\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0442\u0435 \u0432\u0438 \u0432\u044a\u0432 Facebook, LinkedIn \u0438 MySpace. -accessibility.privacy.staff=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 \u0432\u0438 -accessibility.privacy.status=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0442\u0435 \u043d\u0430 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e \u0432\u0438. -accessibility.privacy.student=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0441\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -accessibility.privacy.wall=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0432\u0438. -accessibility.profile.academicprofileurl.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u043d\u0438\u044f \u0441\u0438 \u043f\u0440\u043e\u0444\u0438\u043b -accessibility.profile.birthday=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u0442\u0430\u0442\u0430 \u0441\u0438 \u043d\u0430 \u0440\u0430\u0436\u0434\u0430\u043d\u0435. \u041c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0430\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430\u0442\u0430 \u0441\u0438 \u043d\u0430 \u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u0441\u0438. -accessibility.profile.businessbio.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0444\u0438\u0440\u043c\u0435\u043d\u0430\u0442\u0430 \u0441\u0438 \u0431\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u044f. -accessibility.profile.companydescription.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0442\u0430\u0437\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f -accessibility.profile.companyname.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0438\u043c\u0435\u0442\u043e \u043d\u0430 \u0442\u0430\u0437\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f -accessibility.profile.companyurl.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0443\u0435\u0431 \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0442\u0430\u0437\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f accessibility.profile.course.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0441\u0432\u043e\u044f \u043a\u0443\u0440\u0441 -accessibility.profile.department.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u0448\u0438\u044f \u043e\u0442\u0434\u0435\u043b accessibility.profile.email.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0438\u043c\u0435\u0439\u043b\u0430 \u0441\u0438 accessibility.profile.facebookurl.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0438 \u0432\u044a\u0432 Facebook -accessibility.profile.facsimile.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043d\u0430 \u0444\u0430\u043a\u0441\u0430 \u0441\u0438 -accessibility.profile.favouritebooks.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043b\u044e\u0431\u0438\u043c\u0438\u0442\u0435 \u0441\u0438 \u043a\u043d\u0438\u0433\u0438 -accessibility.profile.favouritemovies.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043b\u044e\u0431\u0438\u043c\u0438\u0442\u0435 \u0441\u0438 \u0444\u0438\u043b\u043c\u0438 -accessibility.profile.favouritequotes.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043b\u044e\u0431\u0438\u043c\u0438\u0442\u0435 \u0441\u0438 \u0446\u0438\u0442\u0430\u0442\u0438 -accessibility.profile.favouritetv.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043b\u044e\u0431\u0438\u043c\u0438\u0442\u0435 \u0441\u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u0438 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f -accessibility.profile.homepage.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0443\u0435\u0431\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0441\u0438 -accessibility.profile.homephone.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0434\u043e\u043c\u0430\u0448\u043d\u0438\u044f \u0441\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435\u043d \u043d\u043e\u043c\u0435\u0440 accessibility.profile.linkedinurl.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0438 \u0432 LinkedIn -accessibility.profile.messagebody.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u0442\u043e \u0441\u0438 -accessibility.profile.messagerecipient.input=\u0418\u0437\u0431\u043e\u0440 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b -accessibility.profile.messagesubject.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0442\u0435\u043c\u0430 \u043d\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u0442\u043e accessibility.profile.mobilephone.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043d\u043e\u043c\u0435\u0440\u0430 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u043d\u0438\u044f \u0441\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d -accessibility.profile.myspaceurl.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0438 \u0432 LinkedIn -accessibility.profile.name.recording=\u0417\u0430\u043f\u0438\u0448\u0435\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0438\u043c\u0435\u0442\u043e \u0441\u0438 accessibility.profile.nickname.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0441\u0432\u043e\u044f \u043f\u0440\u044f\u043a\u043e\u0440 accessibility.profile.phonetic.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0444\u043e\u043d\u0435\u0442\u0438\u0447\u043d\u043e\u0442\u043e \u0441\u0438 \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0448\u0435\u043d\u0438\u0435 -accessibility.profile.position.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u0442\u0430 \u0441\u0438 -accessibility.profile.publications.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438\u0442\u0435 \u0441\u0438 -accessibility.profile.room.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u0448\u0430\u0442\u0430 \u043a\u043b\u0430\u0441\u043d\u0430 \u0441\u0442\u0430\u044f -accessibility.profile.school.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u0448\u0435\u0442\u043e \u0443\u0447\u0438\u043b\u0438\u0449\u0435 -accessibility.profile.skypeusername.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e\u0442\u043e \u0441\u0438 \u0438\u043c\u0435 \u0432 Skype -accessibility.profile.staffprofile.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b -accessibility.profile.status.clear=\u0418\u0437\u0442\u0440\u0438\u0439\u0442\u0435 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e \u0432\u0438 -accessibility.profile.status.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u043e\u0442\u043e \u0441\u0438 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435 -accessibility.profile.subjects.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0442\u0435\u043c\u0438\u0442\u0435 \u0441\u0438 accessibility.profile.summaryinput=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u043b\u0438\u0447\u043d\u043e\u0442\u043e \u0441\u0438 \u0440\u0435\u0437\u044e\u043c\u0435 -accessibility.profile.twitterurl.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0438 \u0432 Twitter -accessibility.profile.uniprofileurl.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0441\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b -accessibility.profile.wallpost.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0442\u0430 \u0441\u0438 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 -accessibility.profile.workphone.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u0438\u044f \u0441\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435\u043d \u043d\u043e\u043c\u0435\u0440 accessibility.profile.pronouns.select=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043d\u0430\u0431\u043e\u0440 \u043e\u0442 \u043c\u0435\u0441\u0442\u043e\u0438\u043c\u0435\u043d\u0438\u044f \u043e\u0442 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 accessibility.profile.pronouns.input=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u0438\u0442\u0435 \u0441\u0438 \u043c\u0435\u0441\u0442\u043e\u0438\u043c\u0435\u043d\u0438\u044f -accessibility.search.connections=\u0412\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438\u0442\u0435 \u043e\u0442 \u0442\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e -accessibility.search.worksite=\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e \u0434\u043e \u0438\u0437\u0431\u0440\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0430 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 accessibility.tooltip=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0442\u0430\u0437\u0438 \u043e\u043f\u0446\u0438\u044f -accessibility.wall.comment=\u041a\u043e\u043c\u0435\u043d\u0442\u0430\u0440 \u043d\u0430 {0}'s wall post -accessibility.wall.remove.mine=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u0442\u0435 \u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0442 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0432\u0438? -accessibility.wall.remove.other=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u0442\u0435 \u043b\u0438 \u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043e\u0442 {0} \u043e\u0442 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0432\u0438? -button.business.add.profile=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0442\u0430 -button.business.remove.profile=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0442\u0430 button.cancel=\u041e\u0442\u043c\u044f\u043d\u0430 \u043d\u0430 button.close=\u0417\u0430\u0442\u0432\u043e\u0440\u0438 button.edit=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 -button.friend.add=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -button.friend.cancel=\u041e\u0442\u043c\u044f\u043d\u0430 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -button.friend.confirm=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -button.friend.ignore=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -button.friend.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 -button.gallery.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0430 -button.gallery.remove.confirm=\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u0442\u0435 \u043f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435\u0442\u043e -button.gallery.setprofile=\u0417\u0430\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 -button.gallery.setprofile.confirm=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u043e\u0442\u043e \u043f\u0440\u043e\u0444\u0438\u043b\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 -button.gallery.upload=\u041a\u0430\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u0431\u0440\u0430\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435 button.link=\u0412\u0440\u044a\u0437\u043a\u0430 -button.message.reply=\u041e\u0442\u0433\u043e\u0432\u043e\u0440 -button.message.send=\u0418\u0437\u043f\u0440\u0430\u0442\u0438 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 button.record=\u0417\u0430\u043f\u0438\u0441 button.release.microphone=\u041e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0430 button.save=\u0417\u0430\u043f\u0430\u0437\u0435\u0442\u0435 button.save.changes=\u0417\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 button.save.settings=\u0417\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 button.sayit=\u041a\u0430\u0436\u0435\u0442\u0435 -button.search.byinterest=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043f\u043e \u043e\u0431\u0449 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 -button.search.byname=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043f\u043e \u0438\u043c\u0435 \u0438\u043b\u0438 \u0438\u043c\u0435\u0439\u043b -button.search.clear=\u0418\u0437\u0442\u0440\u0438\u0439 \u0442\u044a\u0440\u0441\u0435\u043d\u0435 -button.search.generic=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 -button.search.history.clear=\u0418\u0437\u0447\u0438\u0441\u0442\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 button.stop=\u0421\u043f\u0440\u0435\u0442\u0435 button.upload=\u041a\u0430\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 button.url.add=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 URL \u0430\u0434\u0440\u0435\u0441 -button.wall.comment=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440 -button.wall.post=\u041f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u0439\u0442\u0435 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 -button.wall.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043e\u0442 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 -button.worksite.cancel=\u041e\u0442\u043c\u044f\u043d\u0430 \u043d\u0430 -button.worksite.create=\u0421\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d \u0438\u043c\u0435\u0439\u043b \u0430\u0434\u0440\u0435\u0441 error.empty.file.uploaded=\u041e\u043f\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0435 \u0434\u0430 \u043a\u0430\u0447\u0438\u0442\u0435 \u043f\u0440\u0430\u0437\u0435\u043d \u0444\u0430\u0439\u043b error.file.save.failed=\u0417\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0444\u0430\u0439\u043b\u0430 \u043d\u0435 \u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e -error.friend.add.failed=\u0412\u044a\u0437\u043d\u0438\u043a\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043a\u044a\u043c {0}. -error.friend.already.confirmed=\u0412\u0435\u0447\u0435 \u0441\u0442\u0435 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 {0}. -error.friend.already.pending=\u0412\u0435\u0447\u0435 \u0438\u043c\u0430 \u0447\u0430\u043a\u0430\u0449\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u0441 {0}. -error.friend.confirm.failed=\u0412\u044a\u0437\u043d\u0438\u043a\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u043f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043d\u0430 {0}. -error.friend.ignore.failed=\u0412\u044a\u0437\u043d\u0438\u043a\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043d\u0430 {0}. -error.friend.not.friend=\u041d\u0435 \u0441\u0442\u0435 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 {0}, \u0442\u0430\u043a\u0430 \u0447\u0435 \u0442\u0435 \u043d\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u043f\u0440\u0435\u043c\u0430\u0445\u043d\u0430\u0442\u0438\! -error.friend.not.pending.confirm=\u041d\u044f\u043c\u0430 \u0447\u0430\u043a\u0430\u0449\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043e\u0442 {0}, \u0442\u0430\u043a\u0430 \u0447\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u044f \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0438\u0442\u0435\! -error.friend.not.pending.ignore=\u041d\u044f\u043c\u0430 \u0447\u0430\u043a\u0430\u0449\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043e\u0442 {0}, \u0442\u0430\u043a\u0430 \u0447\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u044f \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0442\u0435\! -error.friend.remove.failed=\u0412\u044a\u0437\u043d\u0438\u043a\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 {0} \u043e\u0442 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0432\u0438 \u0441 \u0432\u0440\u044a\u0437\u043a\u0438. -error.friend.view.disallowed=\u041d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435 \u043d\u0430 {0}. -error.gallery.remove.failed=\u041d\u0435\u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442 \u0437\u0430 \u043f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0430 \u043e\u0442 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 -error.gallery.setprofile.failed=\u041d\u0435\u0432\u044a\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442 \u0437\u0430 \u0437\u0430\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0430 \u043a\u0430\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -error.gallery.upload.warning=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043f\u044a\u0440\u0432\u043e \u0444\u0430\u0439\u043b(\u0438) error.invalid.image.type=\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438 \u0441\u0430 \u0441\u0430\u043c\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442 \u0442\u0438\u043f\u043e\u0432\u0435 PNG, JPG \u0438 GIF. -error.message.required.body=\u0421\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043f\u0440\u0430\u0437\u043d\u043e -error.message.required.to=\u0422\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0430, \u043a\u044a\u043c \u043a\u043e\u044f\u0442\u043e \u0434\u0430 \u0438\u0437\u043f\u0440\u0430\u0442\u0438\u0442\u0435 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u0442\u043e -error.message.send.failed=\u0412\u044a\u0437\u043d\u0438\u043a\u043d\u0430 \u0433\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0438 error.no.file.uploaded=\u041d\u0435 \u0441\u0442\u0435 \u0438\u0437\u0431\u0440\u0430\u043b\u0438 \u0444\u0430\u0439\u043b error.password.required=\u0418\u0437\u0438\u0441\u043a\u0432\u0430 \u0441\u0435 \u043f\u0430\u0440\u043e\u043b\u0430 error.preferences.save.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 -error.privacy.save.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 -error.profile.save.academic.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 -error.profile.save.business.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 error.profile.save.contact.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 error.profile.save.info.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 -error.profile.save.interests.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 -error.twitter.details.invalid=\u0412\u0430\u0448\u0438\u0442\u0435 \u043f\u044a\u043b\u043d\u043e\u043c\u043e\u0449\u0438\u044f \u0432 Twitter \u043d\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u0438 error.url.save.failed=\u041d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 URL \u0430\u0434\u0440\u0435\u0441\u0430 error.username.required=\u0418\u0437\u0438\u0441\u043a\u0432\u0430 \u0441\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 -error.wall.comment.empty=\u041e\u043f\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0435 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043f\u0440\u0430\u0437\u0435\u043d \u043a\u043e\u043c\u0435\u043d\u0442\u0430\u0440 -error.wall.comment.failed=\u041a\u043e\u043c\u0435\u043d\u0442\u0430\u0440\u044a\u0442 \u0435 \u043d\u0435\u0443\u0441\u043f\u0435\u0448\u0435\u043d -error.wall.post.empty=\u041e\u043f\u0438\u0442\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0435 \u0434\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u0438\u0442\u0435 \u043f\u0440\u0430\u0437\u043d\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u043d\u0435 -error.wall.post.failed=\u041f\u043e\u0441\u0442\u044a\u0442 \u0441\u0435 \u043f\u0440\u043e\u0432\u0430\u043b\u0438 -error.worksite.create.failed=\u0421\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0430 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 \u0435 \u043d\u0435\u0443\u0441\u043f\u0435\u0448\u043d\u043e -error.worksite.no.title=\u0422\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0434\u0430\u0434\u0435\u0442\u0435 \u0438\u043c\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0430 -error.worksite.title.maxLength=\u0414\u044a\u043b\u0436\u0438\u043d\u0430\u0442\u0430 \u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043d\u0430\u0434\u0432\u0438\u0448\u0430\u0432\u0430 {0} \u0441\u0438\u043c\u0432\u043e\u043b\u0430. \u041c\u043e\u043b\u044f, \u043f\u043e\u0441\u043e\u0447\u0435\u0442\u0435 \u043f\u043e-\u043a\u0440\u0430\u0442\u043a\u043e \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435. -error.worksite.title.htmlStrippedToEmpty=\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435\u0442\u043e \u043d\u0430 \u0441\u0430\u0439\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430 HTML. \u041c\u043e\u043b\u044f, \u0432\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043d\u0430 \u0441\u0430\u0439\u0442\u0430. exception.heading.session.expired=\u0421\u0435\u0441\u0438\u044f\u0442\u0430 \u0435 \u0438\u0437\u0442\u0435\u043a\u043b\u0430 exception.text.session.expired=\u0417\u0430 \u0441\u044a\u0436\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0438\u044f\u0442\u0430 \u0432\u0438 \u0435 \u0438\u0437\u0442\u0435\u043a\u043b\u0430. \u041e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u0430 \u043e\u043f\u0440\u0435\u0441\u043d\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0442\u0430 \u0438\u043b\u0438 \u0434\u0430 \u0438\u0437\u043b\u0435\u0437\u0435\u0442\u0435 \u043e\u0442 \u043d\u0435\u044f \u0438 \u0434\u0430 \u0432\u043b\u0435\u0437\u0435\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e, \u0437\u0430 \u0434\u0430 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u0442\u0435 \u0441\u0435\u0441\u0438\u044f\u0442\u0430 \u0441\u0438. facebookUrl.UrlValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d URL \u0430\u0434\u0440\u0435\u0441 -facsimile.PhoneNumberValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435\u043d \u043d\u043e\u043c\u0435\u0440 - form.uploadTooLarge=\u041a\u0430\u0447\u0432\u0430\u043d\u0435\u0442\u043e \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u043f\u043e-\u043c\u0430\u043b\u043a\u043e \u043e\u0442 ${maxSize} -heading.academic=\u0410\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -heading.academic.edit=\u0410\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f heading.basic=\u041e\u0441\u043d\u043e\u0432\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f heading.basic.edit=\u041e\u0441\u043d\u043e\u0432\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -heading.business=\u0411\u0438\u0437\u043d\u0435\u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -heading.business.edit=\u0411\u0438\u0437\u043d\u0435\u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f heading.contact=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 heading.contact.edit=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 -heading.friend.requests=\u0417\u0430\u044f\u0432\u043a\u0438 \u0437\u0430 \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 - -heading.friends.my=\u041c\u043e\u0438\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0438 - -heading.friends.view=\u0432\u0440\u044a\u0437\u043a\u0438 \u043d\u0430 {0} - -heading.interests=\u041b\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -heading.interests.edit=\u041b\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -heading.messages=\u041c\u043e\u0438\u0442\u0435 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f heading.name.pronunciation=\u041f\u0440\u043e\u0438\u0437\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u043c\u0435\u0442\u043e \u0438 \u043c\u0435\u0441\u0442\u043e\u0438\u043c\u0435\u043d\u0438\u044f heading.name.pronunciation.edit=\u041f\u0440\u043e\u0438\u0437\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u043c\u0435\u0442\u043e \u0438 \u043c\u0435\u0441\u0442\u043e\u0438\u043c\u0435\u043d\u0438\u044f -heading.pictures.addpicture=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0430 -heading.pictures.my.pictures=\u041c\u043e\u0438\u0442\u0435 \u0441\u043d\u0438\u043c\u043a\u0438 -heading.pictures.view.pictures=\u0441\u043d\u0438\u043c\u043a\u0438 \u043d\u0430 {0} heading.preferences=\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f -heading.privacy=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442 -heading.search=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 -heading.section.academic.staff=\u0417\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430\: -heading.section.academic.students=\u0417\u0430 \u0443\u0447\u0435\u043d\u0438\u0446\u0438\: heading.section.email=\u0418\u0437\u0432\u0435\u0441\u0442\u0438\u044f \u043f\u043e \u0438\u043c\u0435\u0439\u043b heading.section.image=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u043d\u043e\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 -heading.section.twitter=\u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 Twitter heading.section.widget=\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 Widget heading.social=C\u043e\u0446\u0438\u0430\u043b\u043d\u0438 \u043c\u0440\u0435\u0436\u0438 heading.social.edit=C\u043e\u0446\u0438\u0430\u043b\u043d\u0438 \u043c\u0440\u0435\u0436\u0438 -heading.staff=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 -heading.staff.edit=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 -heading.status=\u0421\u0442\u0430\u0442\u0443\u0441 -heading.student=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0443\u0447\u0435\u043d\u0438\u043a\u0430 -heading.student.edit=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430 -heading.widget.my.friends=\u041c\u043e\u0438\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0438 -heading.widget.my.kudos=\u041c\u043e\u0438\u0442\u0435 Kudos -heading.widget.my.pictures=\u041c\u043e\u0438\u0442\u0435 \u0441\u043d\u0438\u043c\u043a\u0438 -heading.widget.view.friends=\u0432\u0440\u044a\u0437\u043a\u0438 \u043d\u0430 {0} -heading.widget.view.kudos={0}'s kudos -heading.widget.view.pictures=\u0441\u043d\u0438\u043c\u043a\u0438 \u043d\u0430 {0} - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d URL \u0430\u0434\u0440\u0435\u0441 - -homephone.PhoneNumberValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435\u043d \u043d\u043e\u043c\u0435\u0440 link.change.profile.picture=\u041f\u0440\u043e\u043c\u044f\u043d\u0430 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0430\u0442\u0430 link.edit=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 link.edit.info=\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -link.friend.add=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430 -link.friend.add.name=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 {0} \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430 -link.friend.confirm=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 -link.friend.feed.search=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0438 -link.friend.feed.view=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0432\u0440\u044a\u0437\u043a\u0438 -link.friend.ignore=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 -link.friend.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 -link.friend.request.act=\u0414\u0435\u0439\u0441\u0442\u0432\u0430\u0439\u0442\u0435 \u043f\u043e \u0442\u043e\u0432\u0430 \u0438\u0441\u043a\u0430\u043d\u0435 -link.friend.search=\u0422\u044a\u0440\u0441\u0435\u0442\u0435 \u043b\u0438 \u0432\u0440\u044a\u0437\u043a\u0438? -link.gallery.feed.addnew=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u0430 \u0441\u043d\u0438\u043c\u043a\u0430 -link.gallery.feed.view=\u0412\u0438\u0436\u0442\u0435 \u0432\u0441\u0438\u0447\u043a\u0438 \u0441\u043d\u0438\u043c\u043a\u0438 -link.gallery.image.view=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e link.image.current.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 link.image.current.remove.confirm=\u0422\u043e\u0432\u0430 \u0449\u0435 \u043f\u0440\u0435\u043c\u0430\u0445\u043d\u0435 \u0442\u0435\u043a\u0443\u0449\u043e\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0438 \u0449\u0435 \u0433\u043e \u0432\u044a\u0440\u043d\u0435 \u043a\u044a\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435. \u0429\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043a\u0430\u0447\u0438\u0442\u0435 \u043d\u043e\u0432\u043e, \u0437\u0430 \u0434\u0430 \u0433\u043e \u043f\u0440\u043e\u043c\u0435\u043d\u0438\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e. \u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435? -link.messages.back=\u041e\u0431\u0440\u0430\u0442\u043d\u043e \u043a\u044a\u043c \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0441\u044a\u0441 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f -link.messages.compose=\u0421\u044a\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 -link.messages.mymessages=\u041c\u043e\u0438\u0442\u0435 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f -link.messages.viewthread=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0442\u0435\u043c\u0430\u0442\u0430 -link.my.friends=\u0412\u0440\u044a\u0437\u043a\u0438 -link.my.friends.search=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0438 -link.my.friends.tooltip=\u041f\u0440\u0435\u0433\u043b\u0435\u0436\u0434\u0430\u0439\u0442\u0435 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0432\u0430\u0439\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435 \u0441\u0438 -link.my.messages=\u0421\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f -link.my.messages.tooltip=\u0418\u0437\u043f\u0440\u0430\u0449\u0430\u043d\u0435 \u0438 \u0447\u0435\u0442\u0435\u043d\u0435 \u043d\u0430 \u043b\u0438\u0447\u043d\u0438 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f -link.my.pictures=\u0421\u043d\u0438\u043c\u043a\u0438 -link.my.pictures.tooltip=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0441\u043d\u0438\u043c\u043a\u0438 \u0438 \u0440\u0430\u0437\u0433\u043b\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 link.my.preferences=\u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f link.my.preferences.tooltip=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0432\u0430\u0448\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f -link.my.privacy=\u041f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442 -link.my.privacy.tooltip=\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442\u0442\u0430 \u0432\u0438 link.my.profile=\u041c\u043e\u044f\u0442 \u043f\u0440\u043e\u0444\u0438\u043b link.my.profile.tooltip=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b link.other.profile=\u043f\u0440\u043e\u0444\u0438\u043b \u043d\u0430 {0} -link.my.search=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 -link.my.search.tooltip=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043d\u0430 \u0445\u043e\u0440\u0430 \u0438 \u0440\u0430\u0437\u0433\u043b\u0435\u0436\u0434\u0430\u043d\u0435 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0438 link.profile.locked.false=\u0414\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0442\u043e\u0437\u0438 \u043f\u0440\u043e\u0444\u0438\u043b? link.profile.locked.true=\u041f\u0440\u043e\u0444\u0438\u043b\u044a\u0442 \u0435 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d. \u041e\u0442\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435? -link.status.clear=\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 -link.status.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f -link.tab.profile=\u041f\u0440\u043e\u0444\u0438\u043b -link.tab.profile.tooltip=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -link.tab.wall=\u0421\u0442\u0435\u043d\u0430 -link.tab.wall.tooltip=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 -link.title.confirmfriend=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -link.title.ignorefriend=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -link.title.removefriend=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 link.title.rss=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u0438\u043b\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043b\u0438\u0447\u043d\u0438\u044f \u0432\u0438 RSS \u043a\u0430\u043d\u0430\u043b -link.title.unlinktwitter=\u041e\u0442\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0430\u043a\u0430\u0443\u043d\u0442 \u0432 Twitter -link.title.wall.comment=\u041a\u043e\u043c\u0435\u043d\u0442\u0438\u0440\u0430\u0439\u0442\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 {0}'s -link.title.wall.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0435\u0442\u0435 \u043e\u0442 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0441\u0438 -link.view.friends=\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435 -link.wall.item.comment=\u041a\u043e\u043c\u0435\u043d\u0442\u0430\u0440 -link.wall.item.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 -link.worksite.create=\u0421\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0430 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 linkedinUrl.UrlValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d URL \u0430\u0434\u0440\u0435\u0441 -message.message=\u0421\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 -message.reply=\u041e\u0442\u0433\u043e\u0432\u043e\u0440 -message.subject=\u0422\u0435\u043c\u0430 -message.to=\u0417\u0430 - mobilephone.PhoneNumberValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435\u043d \u043d\u043e\u043c\u0435\u0440 -myspaceUrl.UrlValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d URL \u0430\u0434\u0440\u0435\u0441 - page.title=\u041f\u0440\u043e\u0444\u0438\u043b -palette.available=\u041d\u0430\u043b\u0438\u0447\u0435\u043d -palette.selected=\u0418\u0437\u0431\u0440\u0430\u043d\u0438 - -pictures.addpicture=\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 -pictures.filetypewarning=\u0412 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u044f\u0442 \u0441\u0430\u043c\u043e jpeg, png \u0438 gif \u0444\u0430\u0439\u043b\u043e\u0432\u0435 -pictures.removepicture=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0437\u0438 \u0441\u043d\u0438\u043c\u043a\u0430 \u043e\u0442 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 -pictures.removepicture.confirm=\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u043f\u0440\u0435\u043c\u0430\u0445\u043d\u0435\u0442\u0435 \u0442\u0430\u0437\u0438 \u0441\u043d\u0438\u043c\u043a\u0430 \u043e\u0442 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 \u0441\u0438? -pictures.setprofileimage=\u0417\u0430\u0434\u0430\u0439\u0442\u0435 \u0442\u0430\u0437\u0438 \u0441\u043d\u0438\u043c\u043a\u0430 \u043a\u0430\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043c\u0438 -pictures.setprofileimage.confirm=\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0442\u0435\u043a\u0443\u0449\u043e\u0442\u043e \u0441\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0442\u043e\u0432\u0430? - preference.option.off=\u0418\u0437\u043a\u043b\u044e\u0447\u0435\u043d\u043e preference.option.on=\u041d\u0430 -preferences.email.confirms=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u043c\u0438 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -preferences.email.message=\u0418\u0437\u043f\u0440\u0430\u0442\u0435\u0442\u0435 \u043c\u0438 \u0438\u043c\u0435\u0439\u043b \u043d\u0430 {0}, \u043a\u043e\u0433\u0430\u0442\u043e \u043d\u044f\u043a\u043e\u0439\: -preferences.email.message.new=\u0418\u0437\u043f\u0440\u0430\u0449\u0430 \u043c\u0438 \u043d\u043e\u0432\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 -preferences.email.message.reply=\u041e\u0442\u0433\u043e\u0432\u043e\u0440\u0438 \u043d\u0430 \u0435\u0434\u043d\u043e \u043e\u0442 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0442\u0430 \u043c\u0438 -preferences.email.none=(\u041d\u0415 \u0415 \u0417\u0410\u0414\u0410\u0414\u0415\u041d \u0418\u041c\u0415\u0419\u041b \u0410\u0414\u0420\u0415\u0421) -preferences.email.requests=\u0414\u043e\u0431\u0430\u0432\u044f \u043c\u0435 \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430 -preferences.email.wall.new=\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043d\u0430 \u043c\u043e\u044f\u0442\u0430 \u0441\u0442\u0435\u043d\u0430 -preferences.email.worksite.new=\u0414\u043e\u0431\u0430\u0432\u044f \u043c\u0435 \u043a\u044a\u043c \u043d\u043e\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0430 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 preferences.image.gravatar=\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u043e\u044f gravatar \u043a\u0430\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043c\u0438 preferences.image.message=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435, \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0432\u0438 preferences.image.official=\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u043d\u043e\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u043d\u0441\u0442\u0438\u0442\u0443\u0446\u0438\u044f\u0442\u0430 \u043a\u0430\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043c\u0438 -preferences.twitter.message=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0442\u0435 \u043d\u0430 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e \u0432\u0438 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u0442 \u0438 \u0430\u043a\u0430\u0443\u043d\u0442\u0430 \u0432\u0438 \u0432 Twitter -preferences.widget.gallery=\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u043e\u0438\u0442\u0435 \u0441\u043d\u0438\u043c\u043a\u0438 -preferences.widget.gallery.tooltip=\u0421\u043d\u0438\u043c\u043a\u0438\u0442\u0435 \u0432\u0438 \u0449\u0435 \u0441\u0435 \u043f\u043e\u044f\u0432\u044f\u0442 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0432\u0438, \u0430\u043a\u043e \u0435 \u043e\u0442\u0431\u0435\u043b\u044f\u0437\u0430\u043d\u043e. -preferences.widget.kudos=\u041f\u043e\u043a\u0430\u0436\u0438 \u043e\u0446\u0435\u043d\u043a\u0430\u0442\u0430 \u043c\u0438 \u0437\u0430 kudos -preferences.widget.kudos.tooltip=\u041e\u0446\u0435\u043d\u043a\u0430\u0442\u0430 \u0432\u0438 \u0437\u0430 kudos \u0449\u0435 \u0441\u0435 \u043f\u043e\u044f\u0432\u0438 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0432\u0438, \u0441\u043b\u0435\u0434 \u043a\u0430\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u044a\u0442 \u0432\u0438 \u0431\u044a\u0434\u0435 \u0438\u0437\u0447\u0438\u0441\u043b\u0435\u043d -preferences.widget.message=\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0430\u0439\u0442\u0435 \u043a\u043e\u0438 \u0443\u0438\u0434\u0436\u0435\u0442\u0438 \u0434\u0430 \u0441\u0435 \u043f\u043e\u044f\u0432\u044f\u0432\u0430\u0442 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0432\u0438 -preferences.widget.onlinestatus=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u043e\u044f \u043e\u043d\u043b\u0430\u0439\u043d \u0441\u0442\u0430\u0442\u0443\u0441 -preferences.widget.onlinestatus.tooltip=\u041f\u043e\u043a\u0430\u0437\u0432\u0430 \u0434\u0430\u043b\u0438 \u0441\u0442\u0435 \u043e\u043d\u043b\u0430\u0439\u043d \u0438\u043b\u0438 \u043d\u0435. \u0410\u043a\u043e \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e, \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0430\u0442\u0435 \u0434\u043e\u043f\u044a\u043b\u043d\u0438\u0442\u0435\u043b\u043d\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442. \u0410\u043a\u043e \u0435 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u043e, \u0449\u0435 \u0438\u0437\u0433\u043b\u0435\u0436\u0434\u0430, \u0447\u0435 \u0441\u0442\u0435 \u043e\u0444\u043b\u0430\u0439\u043d -privacy.academicinfo=\u0410\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -privacy.basicinfo=\u041e\u0441\u043d\u043e\u0432\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -privacy.birthyear=\u041f\u043e\u043a\u0430\u0436\u0438 \u0433\u043e\u0434\u0438\u043d\u0430\u0442\u0430 \u043d\u0430 \u0440\u0430\u0436\u0434\u0430\u043d\u0435 -privacy.businessinfo=\u0411\u0438\u0437\u043d\u0435\u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -privacy.contactinfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 -privacy.messages=\u041a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043c\u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f? -privacy.myfriends=\u041a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043c\u043e\u0438\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0438? -privacy.mykudos=\u041a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0434\u0438 Kudos \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 \u043c\u0438? -privacy.mypictures=\u041a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0440\u0430\u0437\u0433\u043b\u0435\u0436\u0434\u0430 \u043c\u043e\u0438\u0442\u0435 \u0441\u043d\u0438\u043c\u043a\u0438? -privacy.mystatus=\u041a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0442\u0435 \u043d\u0430 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 \u043c\u0438? -privacy.mywall=\u041a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043c\u043e\u044f\u0442\u0430 \u0441\u0442\u0435\u043d\u0430 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438\u0442\u0435 \u043c\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438 \u0441\u0442\u0435\u043d\u0438? -privacy.onlinestatus=\u041a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0434\u0438 \u043c\u043e\u044f \u043e\u043d\u043b\u0430\u0439\u043d \u0441\u0442\u0430\u0442\u0443\u0441? -privacy.option.everyone=\u0412\u0441\u0438\u0447\u043a\u0438 -privacy.option.nobody=\u041d\u0438\u043a\u043e\u0439 -privacy.option.onlyfriends=\u0421\u0430\u043c\u043e \u043c\u043e\u0438\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0438 -privacy.option.onlyme=\u0421\u0430\u043c\u043e \u0430\u0437 -privacy.personalinfo=\u041b\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -privacy.profileimage=\u041f\u0440\u043e\u0444\u0438\u043b\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 -privacy.search=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 -privacy.socialinfo=\u0421\u043e\u0446\u0438\u0430\u043b\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f -privacy.staffinfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 -privacy.studentinfo=\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0443\u0447\u0435\u043d\u0438\u0446\u0438\u0442\u0435 - -profile.academicprofileurl=\u0410\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u043d/\u0438\u0437\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0441\u043a\u0438 URL \u0430\u0434\u0440\u0435\u0441 -profile.birthday=\u0420\u043e\u0436\u0434\u0435\u043d \u0434\u0435\u043d -profile.business.bio=\u0411\u0438\u0437\u043d\u0435\u0441 \u0431\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u044f -profile.business.company.description=\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0442\u0430 -profile.business.company.name=\u0418\u043c\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0442\u0430 -profile.business.company.profile=\u041f\u0440\u043e\u0444\u0438\u043b -profile.business.company.profiles=\u041f\u0440\u043e\u0444\u0438\u043b\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438\u0442\u0435 -profile.business.company.web=\u0423\u0435\u0431 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0442\u0430 -profile.business.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0430 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 profile.contact.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043a\u043e\u043d\u0442\u0430\u043a\u0442 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -profile.course=\u0414\u0438\u043f\u043b\u043e\u043c\u0430/\u043a\u0443\u0440\u0441 -profile.department=\u041e\u0442\u0434\u0435\u043b +gprofile.department=\u041e\u0442\u0434\u0435\u043b profile.email=\u0418\u043c\u0435\u0439\u043b -profile.favourite.books=\u041b\u044e\u0431\u0438\u043c\u0438 \u043a\u043d\u0438\u0433\u0438 -profile.favourite.movies=\u041b\u044e\u0431\u0438\u043c\u0438 \u0444\u0438\u043b\u043c\u0438 -profile.favourite.quotes=\u041b\u044e\u0431\u0438\u043c\u0438 \u0446\u0438\u0442\u0430\u0442\u0438 -profile.favourite.tv=\u041b\u044e\u0431\u0438\u043c\u0438 \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u0438 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f -profile.gallery.image.alt=\u041c\u043e\u0438\u0442\u0435 \u0441\u043d\u0438\u043c\u043a\u0438 -profile.gallery.image.upload=\u041a\u0430\u0447\u0435\u043d \u0432 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 \u0441 \u043f\u0440\u043e\u0444\u0438\u043b\u043d\u0438 \u0441\u043d\u0438\u043c\u043a\u0438 -profile.homepage=\u041d\u0430\u0447\u0430\u043b\u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 profile.image.change.upload=\u041f\u0440\u043e\u043c\u0435\u043d\u0435\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 profile.image.change.url=\u041f\u0440\u043e\u043c\u0435\u043d\u0435\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 profile.info.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -profile.interests.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0430 \u043b\u0438\u0447\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -profile.name.first=\u041f\u044a\u0440\u0432\u043e \u0438\u043c\u0435 -profile.name.first.none=\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b -profile.name.last=\u0424\u0430\u043c\u0438\u043b\u0438\u044f -profile.name.middle=\u041f\u0440\u0435\u0437\u0438\u043c\u0435 -profile.name.recording=\u0417\u0430\u043f\u0438\u0441\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u043c\u0435 profile.nickname=\u041f\u0440\u044f\u043a\u043e\u0440 profile.pronouns=\u041c\u0435\u0441\u0442\u043e\u0438\u043c\u0435\u043d\u0438\u044f profile.pronouns.options=\u0422\u043e\u0439/\u041d\u0435\u0433\u043e/\u041d\u0435\u0433\u043e\u0432, \u0422\u044f/\u041d\u0435\u0439\u043d\u043e/\u041d\u0435\u0439\u043d\u043e, \u0422\u0435/\u0422\u0435/\u0422\u0435\u0445\u043d\u0438, Xe/Xem/Xyr(s), Ze/Hir/Hir(s), Ze/Zir/Zirs @@ -423,169 +131,33 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(\u041a\u0440\u0438\u0441\u0442\u0438\u043d \u0411\u0435\u0440\u0435\u0442) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=\u0410\u0436\u0438\u0439\u0442 \u0427\u0430\u0443\u043b\u0430 (Ajeet Chawla) -profile.phone.facsimile=\u0424\u0430\u043a\u0441\u0438\u043c\u0438\u043b\u0435 -profile.phone.home=\u0414\u043e\u043c\u0430\u0448\u0435\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d profile.phone.mobile=\u041c\u043e\u0431\u0438\u043b\u0435\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d -profile.phone.work=\u0420\u0430\u0431\u043e\u0442\u0435\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d -profile.position=\u041f\u043e\u0437\u0438\u0446\u0438\u044f -profile.publications=\u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 -profile.room=\u0421\u0442\u0430\u044f -profile.school=\u0423\u0447\u0438\u043b\u0438\u0449\u0435 profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=\u0410\u0434\u0440\u0435\u0441 \u043d\u0430 Facebook profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=URL \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 LinkedIn -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=URL \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 MySpace profile.socialnetworking.instagram=Instagram profile.socialnetworking.instagram.edit=\u0410\u0434\u0440\u0435\u0441 \u043d\u0430 Instagram -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=\u041f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0441\u043a\u043e \u0438\u043c\u0435 \u0432 Skype -profile.socialnetworking.skype.link=\u041e\u0431\u0430\u0434\u0438 \u043c\u0438 \u0441\u0435 \u043f\u043e \u0421\u043a\u0430\u0439\u043f -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=URL \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 Twitter profile.socialnetworking.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0438 ca \u0434\u0435\u0442\u0430\u0439\u043b\u0438\u0442\u0435 \u0437\u0430 \u0441\u043e\u0446\u0438\u0430\u043b\u043d\u0438\u0442\u0435 \u043c\u0440\u0435\u0436\u0438 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -profile.staff.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0430 e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -profile.staffprofile=\u041f\u0440\u043e\u0444\u0438\u043b \u043d\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 -profile.student.update=\u0410\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430\u043d\u0430 e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0430 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 -profile.subjects=\u0421\u0443\u0431\u0435\u043a\u0442\u0438 profile.summary=\u041b\u0438\u0447\u043d\u043e \u0440\u0435\u0437\u044e\u043c\u0435 -profile.universityprofileurl=URL \u0430\u0434\u0440\u0435\u0441 \u043d\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u0441\u043a\u0438\u044f \u043f\u0440\u043e\u0444\u0438\u043b -success.message.send.ok=\u0418\u0437\u043f\u0440\u0430\u0442\u0435\u043d\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 success.preferences.save.ok=\u0417\u0430\u043f\u0430\u0437\u0435\u043d\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e -success.privacy.save.ok=\u0417\u0430\u043f\u0430\u0437\u0435\u043d\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e text.edit.other.warning=\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435\: \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0442\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 {0}. -text.friend.add={0} \u0449\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0438 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0432\u0438. -text.friend.already=\u0412\u0435\u0447\u0435 \u0441\u0442\u0435 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 {0}. -text.friend.already.pending=\u041c\u0435\u0436\u0434\u0443 \u0432\u0430\u0441 \u0438 {0} \u0432\u0435\u0447\u0435 \u0438\u043c\u0430 \u0447\u0430\u043a\u0430\u0449\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430. -text.friend.cancel=\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u043e\u0442\u043c\u0435\u043d\u0438\u0442\u0435 \u0432\u0438\u0441\u044f\u0449\u0430\u0442\u0430 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043a\u044a\u043c {0}? \u041b\u0438\u0446\u0435\u0442\u043e \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u0435\u043d\u043e. -text.friend.confirm=\u0422\u043e\u0432\u0430 \u0449\u0435 \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0438 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043d\u0430 {0}. -text.friend.confirmed=\u0421\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441\u0442\u0435 -text.friend.feed.num.many={0} \u0432\u0440\u044a\u0437\u043a\u0438 -text.friend.feed.num.none=0 \u0432\u0440\u044a\u0437\u043a\u0438 -text.friend.feed.num.one=1 \u0432\u0440\u044a\u0437\u043a\u0430 -text.friend.ignore=\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0442\u0435 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043d\u0430 {0}? \u041b\u0438\u0446\u0435\u0442\u043e \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u0435\u043d\u043e. -text.friend.none=\u041d\u0435 \u0441\u0442\u0435 \u0441\u0432\u044a\u0440\u0437\u0430\u043d\u0438 \u0441 {0}. -text.friend.pending=\u0417\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0441\u0432\u044a\u0440\u0437\u0432\u0430\u043d\u0435 \u0432 \u043e\u0447\u0430\u043a\u0432\u0430\u043d\u0435 -text.friend.remove=\u0421\u0438\u0433\u0443\u0440\u043d\u0438 \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u043f\u0440\u0435\u043c\u0430\u0445\u043d\u0435\u0442\u0435 {0} \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430? \u041b\u0438\u0446\u0435\u0442\u043e \u043d\u044f\u043c\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0443\u0432\u0435\u0434\u043e\u043c\u0435\u043d\u043e. -text.friend.requested=\u0417\u0430\u044f\u0432\u0435\u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 -text.friend.self=\u0422\u043e\u0432\u0430 \u0441\u0442\u0435 \u0432\u0438\u0435\! -text.gallery.feed.num.none=0 \u0441\u043d\u0438\u043c\u043a\u0438 -text.gallery.pictures.num.none=\u0412\u0430\u0448\u0430\u0442\u0430 \u0433\u0430\u043b\u0435\u0440\u0438\u044f \u0432\u0441\u0435 \u043e\u0449\u0435 \u043d\u0435 \u0441\u044a\u0434\u044a\u0440\u0436\u0430 \u0441\u043d\u0438\u043c\u043a\u0438. -text.gallery.upload.tooltip=\u041a\u0430\u0447\u0432\u0430\u0439\u0442\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043e\u0442 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 \u043e\u0442 \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440\u0430 \u0441\u0438. \u041e\u0431\u0449\u0438\u044f\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0442\u0430, \u043a\u043e\u0438\u0442\u043e \u0449\u0435 \u043a\u0430\u0447\u0438\u0442\u0435, \u043d\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u043d\u0430\u0434\u0432\u0438\u0448\u0430\u0432\u0430 {0}MB. text.image.refresh=\u0417\u0430\u0431\u0435\u043b\u0435\u0436\u043a\u0430\: \u0410\u043a\u043e \u043d\u043e\u0432\u043e\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0441\u0435 \u043f\u043e\u044f\u0432\u0438 \u0432\u0435\u0434\u043d\u0430\u0433\u0430, \u043e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u0430 \u043e\u043f\u0440\u0435\u0441\u043d\u0438\u0442\u0435 \u0431\u0440\u0430\u0443\u0437\u044a\u0440\u0430 \u0441\u0438. text.image.url=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0435\u0442\u043e \u0434\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0442\u0435 \u043a\u0430\u0442\u043e \u0441\u043d\u0438\u043c\u043a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0441\u0438 -text.messages.none=\u041d\u044f\u043c\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f text.name.pronunciation.description=\u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0430 \u0432\u0438 \u0434\u0430 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u043f\u0438\u0441\u043c\u0435\u043d\u043e \u0444\u043e\u043d\u0435\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0438/\u0438\u043b\u0438 \u0430\u0443\u0434\u0438\u043e\u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u0438\u043c\u0435\u0442\u043e \u0441\u0438.
\u0422\u043e\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0449\u0435 \u0431\u044a\u0434\u0435 \u0432\u0438\u0434\u0438\u043c\u043e \u0437\u0430 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u0438\u0442\u0435/\u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0438\u0442\u0435, \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u0438 \u0432 \u0441\u0430\u0439\u0442\u043e\u0432\u0435\u0442\u0435 \u043d\u0430 \u0432\u0430\u0448\u0438\u044f \u043a\u0443\u0440\u0441. text.no.fields=\u0412\u0441\u0435 \u043e\u0449\u0435 \u043d\u0435 \u0441\u0442\u0435 \u043f\u043e\u043f\u044a\u043b\u043d\u0438\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0432\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f text.no.status=\u041a\u0430\u0436\u0435\u0442\u0435 \u043d\u0435\u0449\u043e text.or=\u0438\u043b\u0438 -text.privacy.academicinfo.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u043d\u0430\u0442\u0430 \u0432\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0443\u0447\u0438\u043b\u0438\u0449\u0435, \u0434\u0435\u043f\u0430\u0440\u0442\u0430\u043c\u0435\u043d\u0442 \u0438\u043b\u0438 \u043a\u0443\u0440\u0441. -text.privacy.basicinfo.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u0442\u0430 \u0432\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f, \u043a\u0430\u0442\u043e \u043f\u0440\u044f\u043a\u043e\u0440 \u0438 \u0440\u043e\u0436\u0434\u0435\u043d \u0434\u0435\u043d. -text.privacy.birthyear.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0430\u043b\u0438 \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0435 \u0438\u043b\u0438 \u0441\u043a\u0440\u0438\u0435\u0442\u0435 \u0433\u043e\u0434\u0438\u043d\u0430\u0442\u0430 \u0441\u0438 \u043d\u0430 \u0440\u0430\u0436\u0434\u0430\u043d\u0435. \u041e\u0442\u0431\u0435\u043b\u044f\u0437\u0430\u043d\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0432\u0430 \u0447\u0435 \u0435 \u0432\u0438\u0434\u0438\u043c\u0430. -text.privacy.businessinfo.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u0432\u0438, \u043a\u0430\u0442\u043e \u043e\u0442\u0440\u0430\u0441\u044a\u043b, \u0434\u043b\u044a\u0436\u043d\u043e\u0441\u0442 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0431\u0438\u043e\u0433\u0440\u0430\u0444\u0438\u044f. -text.privacy.cannot.modify=\u0422\u0435\u0437\u0438 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442\u0438 \u0441\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438 \u043e\u0442 \u0432\u0430\u0448\u0438\u044f \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0438 \u043d\u0435 \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0431\u044a\u0434\u0430\u0442 \u043f\u0440\u043e\u043c\u0435\u043d\u044f\u043d\u0438. -text.privacy.contactinfo.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043d\u0435\u0449\u0430 \u043a\u0430\u0442\u043e \u0432\u0430\u0448\u0438\u0442\u0435 \u0438\u043c\u0435\u0439\u043b \u0430\u0434\u0440\u0435\u0441\u0438 \u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u043d\u0438 \u043d\u043e\u043c\u0435\u0440\u0430. -text.privacy.messages.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438 \u0438\u0437\u043f\u0440\u0430\u0449\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u044f. -text.privacy.myfriends.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u0440\u0435\u0433\u043b\u0435\u0436\u0434\u0430 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0432\u0438 \u0441 \u0432\u0440\u044a\u0437\u043a\u0438. -text.privacy.mykudos.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043e\u0446\u0435\u043d\u043a\u0430\u0442\u0430 \u0432\u0438 \u0437\u0430 Kudos (\u0430\u043a\u043e \u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0432 \u041f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f). -text.privacy.mypictures.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0433\u0430\u043b\u0435\u0440\u0438\u044f\u0442\u0430 \u0432\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f. -text.privacy.mystatus.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0442\u0435 \u043d\u0430 \u0441\u044a\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u0442\u043e \u0432\u0438. -text.privacy.mywall.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0432\u0438. -text.privacy.onlinestatus.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0432\u0430\u0448\u0438\u044f \u043e\u043d\u043b\u0430\u0439\u043d \u0441\u0442\u0430\u0442\u0443\u0441. \u0417\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u043e\u0441\u0442\u0430\u043d\u0430\u043b\u0438 \u0449\u0435 \u0438\u0437\u0433\u043b\u0435\u0436\u0434\u0430\u0442\u0435 \u043e\u0444\u043b\u0430\u0439\u043d. -text.privacy.personalinfo.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u043b\u044e\u0431\u0438\u043c\u0438\u0442\u0435 \u0432\u0438 \u043a\u043d\u0438\u0433\u0438, \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u0438\u043e\u043d\u043d\u0438 \u043f\u0440\u0435\u0434\u0430\u0432\u0430\u043d\u0438\u044f \u0438 \u0442.\u043d. -text.privacy.profileimage.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0441\u043d\u0438\u043c\u043a\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0432\u0438. -text.privacy.socialinfo.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0432\u0438 \u0432 \u0441\u043e\u0446\u0438\u0430\u043b\u043d\u0438\u0442\u0435 \u043c\u0440\u0435\u0436\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0442\u0435 \u0432\u0438 \u0432\u044a\u0432 Facebook, LinkedIn \u0438 MySpace. -text.privacy.staff.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0437\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u0430 \u0432\u0438 -text.privacy.student.tooltip=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043a\u043e\u0439 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430 \u0432\u0430\u0448\u0438\u0442\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u0441\u043a\u0438 \u0434\u0430\u043d\u043d\u0438 -text.profile.birthyear.tooltip=\u041c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u0442\u0435/\u0441\u043a\u0440\u0438\u0432\u0430\u0442\u0435 \u0433\u043e\u0434\u0438\u043d\u0430\u0442\u0430 \u0441\u0438 \u043d\u0430 \u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\u0442\u0435 \u0437\u0430 \u043f\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u043d\u043e\u0441\u0442 text.profile.facebook.tooltip=\u043d\u0430\u043f\u0440. http\://www.facebook.com/user text.profile.linkedin.tooltip=\u043d\u0430\u043f\u0440. http\://www.linkedin.com/pub/user text.profile.locked.false=\u0417\u0430\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0434\u0430\u0434\u0435\u043d \u043f\u0440\u043e\u0444\u0438\u043b \u043e\u0437\u043d\u0430\u0447\u0430\u0432\u0430, \u0447\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0441\u0438. text.profile.locked.true=\u041e\u0442\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0434\u0430\u0434\u0435\u043d \u043f\u0440\u043e\u0444\u0438\u043b \u0449\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u0438 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0434\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0441\u0438. -text.profile.myspace.tooltip=\u043d\u0430\u043f\u0440. http\://myspace.com/user text.profile.instagram.tooltip=\u043d\u0430\u043f\u0440. https\://www.instagram.com/user/ -text.profile.presence.away={0} \u0435 \u0434\u0430\u043b\u0435\u0447 -text.profile.presence.offline={0} \u043d\u0435 \u0435 \u043d\u0430\u043b\u0438\u0447\u0435\u043d -text.profile.presence.online={0} \u0435 \u043e\u043d\u043b\u0430\u0439\u043d -text.profile.twitter.tooltip=\u043d\u0430\u043f\u0440. http\://twitter.com/sakaiproject -text.search.byinterest.all.results=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 {0} \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 \u0437\u0430\: {1} -text.search.byinterest.label=\u041e\u0431\u0449 \u0438\u043d\u0442\u0435\u0440\u0435\u0441 -text.search.byinterest.no.results=\u041d\u044f\u043c\u0430 \u0445\u043e\u0440\u0430 \u0441 \u043e\u0431\u0449\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0438, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0442 \u043d\u0430 {0}. -text.search.byinterest.one.result=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 1 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442 \u0437\u0430\: {0} -text.search.byinterest.paged.results=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 {0} \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 (\u0434\u043e {1} \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430) \u0437\u0430\: {2} -text.search.byinterest.tooltip=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 "\u043a\u043e\u043b\u043e\u0435\u0437\u0434\u0435\u043d\u0435", \u0437\u0430 \u0434\u0430 \u043d\u0430\u043c\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0440\u0430 \u0441\u044a\u0441 \u0441\u0445\u043e\u0434\u043d\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0438 -text.search.byname.all.results=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 {0} \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 \u0437\u0430\: {1} -text.search.byname.label=\u0418\u043c\u0435 \u043d\u0430 \u043b\u0438\u0446\u0435\u0442\u043e \u0438\u043b\u0438 \u0438\u043c\u0435\u0439\u043b -text.search.byname.no.results=\u041d\u044f\u043c\u0430 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438, \u043a\u043e\u0438\u0442\u043e \u0434\u0430 \u043e\u0442\u0433\u043e\u0432\u0430\u0440\u044f\u0442 \u043d\u0430 {0}. -text.search.byname.one.result=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 1 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442 \u0437\u0430\: {0} -text.search.byname.paged.results=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 {0} \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 (\u0434\u043e {1} \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430) \u0437\u0430\: {2} -text.search.byname.tooltip=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0438\u043c\u0435 \u0438\u043b\u0438 \u0438\u043c\u0435\u0439\u043b \u0430\u0434\u0440\u0435\u0441, \u0437\u0430 \u0434\u0430 \u043d\u0430\u043c\u0435\u0440\u0438\u0442\u0435 \u0445\u043e\u0440\u0430 -text.search.history=\u041f\u0440\u0435\u0434\u0438\u0448\u043d\u0438 \u0442\u044a\u0440\u0441\u0435\u043d\u0438\u044f -text.search.include.connections=\u0412\u043a\u043b\u044e\u0447\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u044a\u0437\u043a\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438\u0442\u0435 \u043e\u0442 \u0442\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e -text.search.include.worksite=\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e \u0434\u043e \u0438\u0437\u0431\u0440\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0430 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 -text.search.no.input=\u041d\u0435 \u0441\u0442\u0435 \u0432\u044a\u0432\u0435\u043b\u0438 \u043d\u0438\u0449\u043e -text.search.no.results=\u041d\u044f\u043c\u0430 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 \u0437\u0430 {0}. -text.search.no.worksite=\u0412\u0441\u0435 \u043e\u0449\u0435 \u043d\u0435 \u0441\u0442\u0435 \u0447\u043b\u0435\u043d \u043d\u0430 \u043d\u0438\u0442\u043e \u0435\u0434\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u0430 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 -text.search.paged.results=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 {0} - {1} \u043e\u0442 {2} \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438 \u0437\u0430\: {3} -text.search.terms.label=\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u043d\u0430 \u0442\u0435\u0440\u043c\u0438\u043d\u0438 -text.search.terms.tooltip=\u0412\u044a\u0432\u0435\u0434\u0435\u0442\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0438 \u0437\u0430 \u0442\u044a\u0440\u0441\u0435\u043d\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442 \u043e\u0442 \u0442\u043e\u0432\u0430 \u0434\u0430\u043b\u0438 \u0442\u044a\u0440\u0441\u0438\u0442\u0435 \u043f\u043e \u0438\u043c\u0435/\u0438\u043c\u0435\u0439\u043b \u0438\u043b\u0438 \u043f\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0438 -text.search.toomany.results=\u0422\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e \u0432\u0438 \u0437\u0430 {0} \u0432\u044a\u0440\u043d\u0430 {1} \u0438\u043b\u0438 \u043f\u043e\u0432\u0435\u0447\u0435 \u0440\u0435\u0437\u0443\u043b\u0442\u0430\u0442\u0438. \u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u0438 \u0441\u0430 \u0441\u0430\u043c\u043e \u043f\u044a\u0440\u0432\u0438\u0442\u0435 {1}. text.upload.image.file=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0444\u0430\u0439\u043b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u043e\u043c\u043f\u044e\u0442\u044a\u0440\u0430 \u0441\u0438 (\u043c\u0430\u043a\u0441. {0}MB)\: text.view.profile.nothing=\u0422\u043e\u0432\u0430 \u043b\u0438\u0446\u0435 \u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043b\u043e \u043f\u0440\u0435\u0433\u043b\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f\u0442\u0430 \u0441\u0438 \u0438\u043b\u0438 \u043d\u044f\u043c\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0441\u0438, \u043a\u043e\u044f\u0442\u043e \u0434\u0430 \u0441\u043f\u043e\u0434\u0435\u043b\u0438. -text.view.wall.nothing=\u0412 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u044f\u043c\u0430 \u043d\u0438\u043a\u0430\u043a\u0432\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 {0}. \u0411\u044a\u0434\u0435\u0442\u0435 \u043f\u044a\u0440\u0432\u0438\u0442\u0435, \u043a\u043e\u0438\u0442\u043e \u0449\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u0442 \u043d\u0435\u0449\u043e\! -text.view.wall.restricted=\u0421\u0430\u043c\u043e \u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435 \u043d\u0430 {0} \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0432\u0438\u0434\u044f\u0442 \u0442\u0430\u0437\u0438 \u0441\u0442\u0435\u043d\u0430. \u0414\u043e\u0431\u0430\u0432\u0435\u0442\u0435 {0} \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430, \u0437\u0430 \u0434\u0430 \u0432\u0438\u0436\u0434\u0430\u0442\u0435 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u0442\u0435 \u043d\u0430 \u0442\u0430\u0437\u0438 \u0441\u0442\u0435\u043d\u0430. -text.wall.no.items=\u0412 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043d\u044f\u043c\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u0437\u0430 \u043f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0432\u0438. -text.wall.remove.mine=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u0442\u0435 \u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0442\u0430 \u043e\u0442 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0432\u0438? -text.wall.remove.other=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u0442\u0435 \u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 {0} \u043e\u0442 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0432\u0438? -text.worksite.create=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043e\u0442 \u043d\u0430\u043b\u0438\u0447\u043d\u0438\u0442\u0435 \u0445\u043e\u0440\u0430 \u0438 \u0441\u044a\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u0435\u043d \u0441\u0430\u0439\u0442. -text.worksite.refresh=\u041e\u0431\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u0440\u0430\u0443\u0437\u044a\u0440\u0430 \u0437\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u043d\u043e\u0432\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0435\u043d \u0441\u0430\u0439\u0442 \u0441\u043b\u0435\u0434 \u0441\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043c\u0443 title.change.profile.picture=\u041f\u0440\u043e\u043c\u044f\u043d\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u043d\u0430\u0442\u0430 \u0432\u0438 \u0441\u043d\u0438\u043c\u043a\u0430 -title.friend.add=\u0414\u043e\u0431\u0430\u0432\u0435\u0442\u0435 \u043b\u0438 {0} \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430? -title.friend.cancel=\u041e\u0442\u043c\u0435\u043d\u0435\u0442\u0435 \u043b\u0438 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430? -title.friend.confirm=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u0442\u0435 \u043b\u0438 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043d\u0430 {0}? -title.friend.ignore=\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u0442\u0435 \u043b\u0438 \u0437\u0430\u044f\u0432\u043a\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430? -title.friend.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u0442\u0435 \u043b\u0438 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430? -title.message.compose=\u0421\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u043e\u0432\u043e \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 -title.wall.comment=\u041a\u043e\u043c\u0435\u043d\u0442\u0438\u0440\u0430\u0439\u0442\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 {0} -title.wall.remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u0442\u0435 \u043b\u0438 \u043e\u0442 \u0441\u0442\u0435\u043d\u0430\u0442\u0430? - -twitter.auth.do=\u0412\u0440\u044a\u0437\u043a\u0430 \u043a\u044a\u043c \u0430\u043a\u0430\u0443\u043d\u0442 \u0432 Twitter -twitter.auth.linked=\u0421\u0432\u044a\u0440\u0437\u0430\u043d \u0430\u043a\u0430\u0443\u043d\u0442 \u0432 Twitter -twitter.enabled=\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\u0442\u0430 \u0441 Twitter - -twitterUrl.UrlValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d URL \u0430\u0434\u0440\u0435\u0441 urlField.Required=\u041d\u0435 \u0441\u0442\u0435 \u0432\u044a\u0432\u0435\u043b\u0438 URL \u0430\u0434\u0440\u0435\u0441 - -workphone.PhoneNumberValidator=\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0435\u043d \u043d\u043e\u043c\u0435\u0440 - -worksite.name=\u0418\u043c\u0435 \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043d\u043e\u0442\u043e \u043c\u044f\u0441\u0442\u043e - -email.connectionrequest.subject=\u0432\u0438 \u0434\u043e\u0431\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430 \u0432 -email.connectionrequest.added=\u0432\u0438 \u0434\u043e\u0431\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0432\u0440\u044a\u0437\u043a\u0430 \u0432 -email.connectionrequest.toconfirm1=\u041f\u043e\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u043e\u0442 -email.connectionrequest.toconfirm2=\u043f\u043e\u0441\u043b\u0435\u0434\u0432\u0430\u0439\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e-\u0434\u043e\u043b\u0443\: - -email.connectionconfirm.subject=\u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0438 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0441\u0438 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u0432 -email.connectionconfirm.confirmed=\u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0438 \u0437\u0430\u044f\u0432\u043a\u0430\u0442\u0430 \u0441\u0438 \u0437\u0430 \u0432\u0440\u044a\u0437\u043a\u0430 \u0432 -email.connectionconfirm.toview1=\u0417\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u043d\u0430 -email.connectionconfirm.toview2=, \u0441\u043b\u0435\u0434\u0432\u0430\u0439\u0442\u0435 URL \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e-\u0434\u043e\u043b\u0443\: - -email.messagenew.subject=\u0432\u0438 \u0438\u0437\u043f\u0440\u0430\u0442\u0438 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 -email.messagenew.sent=\u0432\u0438 \u0438\u0437\u043f\u0440\u0430\u0442\u0438 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043d\u0430 -email.messagenew.toview1=\u0417\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u043e\u0432\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043f\u043e\u0441\u043b\u0435\u0434\u0432\u0430\u0439\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u043f\u043e-\u0434\u043e\u043b\u0443\: - -email.messagereply.subject=\u043e\u0442\u0433\u043e\u0432\u043e\u0440\u0438 \u043d\u0430 \u0441\u044a\u043e\u0431\u0449\u0435\u043d\u0438\u0435\u0442\u043e \u0432\u0438 \u0432 - -email.profilechange.subject=\u043f\u0440\u043e\u043c\u0435\u043d\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0441\u0438 \u0432 - -email.wallnew.subject=\u0442\u043e\u043a\u0443-\u0449\u043e \u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u043b \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0441\u0438 \u0432 -email.wall.viewtheir=\u0417\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0438\u043c, \u043f\u043e\u0441\u043b\u0435\u0434\u0432\u0430\u0439\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u043f\u043e-\u0434\u043e\u043b\u0443\: -email.wall.viewmy=\u0417\u0430 \u0434\u0430 \u0432\u0438\u0434\u0438\u0442\u0435 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u0441\u0438, \u043f\u043e\u0441\u043b\u0435\u0434\u0432\u0430\u0439\u0442\u0435 \u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u043f\u043e-\u0434\u043e\u043b\u0443\: - -email.mywallnew.subject=\u0442\u043e\u043a\u0443-\u0449\u043e \u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u043b \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0432\u0438 \u0432 -email.wall.theirstatus.subject=\u043d\u043e\u0432\u0438\u044f\u0442 \u0441\u0442\u0430\u0442\u0443\u0441 \u0431\u0435\u0448\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0432\u0430\u043d \u043d\u0430 \u0441\u0442\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 \u043f\u0440\u043e\u0444\u0438\u043b\u0430 \u0438\u043c \u0432 diff --git a/profile2/api/src/resources/ProfileApplication_ca.properties b/profile2/api/src/resources/ProfileApplication_ca.properties index 5607de093573..dec57bded987 100644 --- a/profile2/api/src/resources/ProfileApplication_ca.properties +++ b/profile2/api/src/resources/ProfileApplication_ca.properties @@ -14,399 +14,105 @@ # RequiredValidator="{label}" \u00e9s obligatori -accessibility.connection.add=Voleu afegir {0} com a contacte? -accessibility.connection.confirm=Voleu confirmar la petici\u00f3 de contacte de {0}? -accessibility.connection.ignore=Voleu ignorar la petici\u00f3 de contacte de {0}? -accessibility.connection.remove=Elimino {0} dels seus contactes? accessibility.edit.basic=Edita la informaci\u00f3 b\u00e0sica -accessibility.edit.business=Edita la informaci\u00f3 professional accessibility.edit.contact=Edita la informaci\u00f3 de contacte -accessibility.edit.personal=Edita la informaci\u00f3 personal accessibility.edit.pronunciation=Edita la pronunciaci\u00f3 del nom accessibility.edit.social=Edita la informaci\u00f3 sobre xarxes socials -accessibility.edit.staff=Edita la informaci\u00f3 institucional -accessibility.edit.student=Edita la informaci\u00f3 sobre l\u2019estudiantat accessibility.image.upload=Pugeu una imatge pel vostre perfil accessibility.image.url=Introdu\u00efu la url de la imatge pel vostre perfil -accessibility.messages.unread=Missatge no llegit -accessibility.prefs.confirms.off=Envia\u2019m un correu quan alg\u00fa accepti la meva sol\u00b7licitud de contacte, deshabilitat -accessibility.prefs.confirms.on=Envia\u2019m un correu quan alg\u00fa accepti la meva sol\u00b7licitud de contacte, habilitat -accessibility.prefs.gallery=Mostra les meves imatges al meu perfil accessibility.prefs.gravatar=Usa el meu gravatar com a imatge del perfil -accessibility.prefs.kudos=Mostra la meva puntuaci\u00f3 kudos al meu perfil -accessibility.prefs.messagenew.off=Envia\u2019m un correu quan alg\u00fa m\u2019envi\u00ef un missatge nou, deshabilitat -accessibility.prefs.messagenew.on=Envia\u2019m un correu quan alg\u00fa m\u2019envi\u00ef un missatge nou, habilitat -accessibility.prefs.messagereply.off=Envia\u2019m un correu quan alg\u00fa contesti un dels meus missatges, deshabilitat -accessibility.prefs.messagereply.on=Envia\u2019m un correu quan alg\u00fa contesti un dels meus missatges, habilitat accessibility.prefs.officialimage=Usa la imatge institucional oficial com la meva imatge del perfil -accessibility.prefs.onlinestatus=Mostra el meu estat de connexi\u00f3 accessibility.prefs.overview=Prefer\u00e8ncies sobre les notificacions per correu electr\u00f2nic -accessibility.prefs.requests.off=Envia\u2019m un correu quan alg\u00fa m\u2019afegeixi com a contacte, deshabilitat -accessibility.prefs.requests.on=Envia\u2019m un correu quan alg\u00fa m\u2019afegeixi com a contacte, habilitat -accessibility.prefs.twitterauthcode=Introdu\u00efu el vostre codi d\u2019autoritzaci\u00f3 de Twitter -accessibility.prefs.wallnew.off=Envia\u2019m un correu quan alg\u00fa pengi quelcom al meu mur, deshabilitat -accessibility.prefs.wallnew.on=Envia\u2019m un correu quan alg\u00fa pengi quelcom al meu mur, habilitat -accessibility.prefs.worksite.off=Envia\u2019m un correu electr\u00f2nic quan un contacte m\u2019afegeixi a un espai nou, deshabilitat -accessibility.prefs.worksite.on=Envia\u2019m un correu electr\u00f2nic quan un contacte m\u2019afegeixi a un espai nou, habilitat -accessibility.privacy.academic=Trieu qui pot veure la vostra informaci\u00f3 acad\u00e8mica. (centre, departament, etc) -accessibility.privacy.basic=Trieu qui pot veure la vostra informaci\u00f3 b\u00e0sica, com el sobrenom (nick) i el dia de l\u2019aniversari. -accessibility.privacy.birthyear=Trieu si voleu mostrar o amagar el vostre any de naixement. Si est\u00e0 marcat es mostrar\u00e0. -accessibility.privacy.business=Escolliu qui pot veure la vostra informaci\u00f3 professional, com ara la biografia professional o el c\u00e0rrec. -accessibility.privacy.contact=Trieu qui pot veure la vostra adre\u00e7a de correu i tel\u00e8fons -accessibility.privacy.friends=Trieu qui pot veure la vostra llista de contactes. -accessibility.privacy.image=Trieu qui pot veure la imatge del perfil. -accessibility.privacy.kudos=Trieu qui pot veure la vostra puntuaci\u00f3 kudos (si est\u00e0 habilitat a \u2019Prefer\u00e8ncies\u2019). -accessibility.privacy.messages=Trieu qui us pot enviar missatges. -accessibility.privacy.onlinestatus=Trieu qui pot veure el vostre estat de connexi\u00f3. -accessibility.privacy.overview=Per controlar qui pot veure parts del vostre perfil -accessibility.privacy.personal=Trieu qui pot veure les vostres prefer\u00e8ncies com llibres, pel\u00edcules,etc. -accessibility.privacy.pictures=Trieu qui pot veure la vostra galeria d\u2019imatges. -accessibility.privacy.social=Trieu qui pot veure la vostra informaci\u00f3 sobre contactes de xarxes socials, com el vostre Facebook, perfils de LinkedIn i MySpace. -accessibility.privacy.staff=Trieu qui pot veure la vostra informaci\u00f3 institucional -accessibility.privacy.status=Trieu qui pot veure les vostres actualitzacions d\u2019estat. -accessibility.privacy.student=Trieu qui pot veure la seva informaci\u00f3 d\u2019estudiantat -accessibility.privacy.wall=Trieu qui pot veure el vostre mur. -accessibility.profile.academicprofileurl.input=Introdu\u00efu la url pel vostre perfil acad\u00e8mic -accessibility.profile.birthday=Introdu\u00efu la vostra data de naixement. Podeu controlar com es mostrar\u00e0 a \u2019Prefer\u00e8ncies\u2019. -accessibility.profile.businessbio.input=Introdu\u00efu la vostra biografia professional. -accessibility.profile.companydescription.input=Introdu\u00efu la descripci\u00f3 d\u2019aquesta empresa. -accessibility.profile.companyname.input=Introdu\u00efu el nom d\u2019aquesta empresa. -accessibility.profile.companyurl.input=Introdu\u00efu l\u2019adre\u00e7a de l\u2019espai web d\u2019aquesta empresa. -accessibility.profile.course.input=Introdu\u00efu el vostre curs -accessibility.profile.department.input=Introdu\u00efu el vostre departament accessibility.profile.email.input=Introdu\u00efu el vostre correu electr\u00f2nic accessibility.profile.facebookurl.input=Introdu\u00efu la vostra url de Facebook -accessibility.profile.facsimile.input=Introdu\u00efu el vostre nombre de fax -accessibility.profile.favouritebooks.input=Introdu\u00efu els vostres llibres favorits -accessibility.profile.favouritemovies.input=Introdu\u00efu les vostres pel\u00b7l\u00edcules preferides -accessibility.profile.favouritequotes.input=Introdu\u00efu les vostres cites preferides -accessibility.profile.favouritetv.input=Introdu\u00efu els vostres programes de televisi\u00f3 preferits -accessibility.profile.homepage.input=Introdu\u00efur l\u2019adre\u00e7a url del vostre espai web -accessibility.profile.homephone.input=Introdu\u00efu el vostre n\u00famero de tel\u00e8fon accessibility.profile.linkedinurl.input=Introdu\u00efu la url del vostre Myspace -accessibility.profile.messagebody.input=Introdu\u00efu el vostre missatge -accessibility.profile.messagerecipient.input=Seleccioneu un destinatari -accessibility.profile.messagesubject.input=Introdu\u00efu un assumpte pel missatge accessibility.profile.mobilephone.input=Introdu\u00efu el vostre n\u00famero de m\u00f2bil -accessibility.profile.myspaceurl.input=Introdu\u00efu la url del vostre Myspace -accessibility.profile.name.recording=Enregistreu com es pronuncia el vostre nom accessibility.profile.nickname.input=Introdu\u00efu el vostre sobrenom (nick) accessibility.profile.phonetic.input=Introdu\u00efu la transcripci\u00f3 fon\u00e8tica -accessibility.profile.position.input=Introdu\u00efu el vostre c\u00e0rrec -accessibility.profile.publications.input=Introdu\u00efu les vostres publicacions -accessibility.profile.room.input=Introdu\u00efu el vostre despatx -accessibility.profile.school.input=Introdu\u00efu el vostre centre -accessibility.profile.skypeusername.input=Introdu\u00efu el vostre nom d\u2019usuari Skype -accessibility.profile.staffprofile.input=Introdu\u00efu el vostre perfil institucional -accessibility.profile.status.clear=Netegeu el vostre estat -accessibility.profile.status.input=Introdu\u00efu el vostre estat actual -accessibility.profile.subjects.input=Introdu\u00efu els vostres temes accessibility.profile.summaryinput=Introdu\u00efu el vostre resum personal -accessibility.profile.twitterurl.input=Introdu\u00efu la url del vostre compte a Twitter -accessibility.profile.uniprofileurl.input=Introdu\u00efu la url corresponent al vostre perfil universitari -accessibility.profile.wallpost.input=Introdu\u00efu el text que voleu publicar al mur -accessibility.profile.workphone.input=Introdu\u00efu el n\u00famero de tel\u00e8fon de la feina accessibility.profile.pronouns.select=Seleccioneu un conjunt de pronoms de la llista accessibility.profile.pronouns.input=Introdu\u00efu els vostres propis pronoms -accessibility.search.connections=Inclou els contactes als resultats de la cerca -accessibility.search.worksite=Limita la cerca als espais seleccionats accessibility.tooltip=Mostra informaci\u00f3 sobre aquesta opci\u00f3 -accessibility.wall.comment=Fes un comentari sobre l\u2019entrada del mur de {0} -accessibility.wall.remove.mine=Eliminar la publicaci\u00f3 del vostre mur? -accessibility.wall.remove.other=Voleu eliminar el comentari de {0} del vostre mur? -button.business.add.profile=Afegeix el perfil de l\u2019empresa -button.business.remove.profile=Elimina el perfil de l\u2019empresa button.cancel=Cancel\u00b7la button.close=Tanca button.edit=Revisa -button.friend.add=Afegeix com a contacte -button.friend.cancel=Cancel\u00b7la la petici\u00f3 de contacte -button.friend.confirm=Accepta la sol\u00b7licitud de contacte -button.friend.ignore=Ignora la sol\u00b7licitud de contacte -button.friend.remove=Elimina dels contactes -button.gallery.remove=Esborra la imatge -button.gallery.remove.confirm=Confirmeu l\u2019eliminaci\u00f3 -button.gallery.setprofile=Estableix-la com a imatge del perfil -button.gallery.setprofile.confirm=Confirmeu la nova imatge del perfil -button.gallery.upload=Puja els fitxers seleccionats button.link=Enlla\u00e7 -button.message.reply=Respon -button.message.send=Envia el missatge button.record=Enregistra button.release.microphone=Allibera el micr\u00f2fon button.save=Desa button.save.changes=Desa els canvis button.save.settings=Desa la configuraci\u00f3 button.sayit=Digues-ho -button.search.byinterest=Cerca per interessos comuns -button.search.byname=Cerca per nom o adre\u00e7a de correu -button.search.clear=Neteja la cerca -button.search.generic=Cerca -button.search.history.clear=Neteja l\u2019hist\u00f2ric button.stop=Atura button.upload=Puja button.url.add=Afegeix una URL -button.wall.comment=Afegeix un comentari -button.wall.post=Penja al mur -button.wall.remove=Elimina del mur -button.worksite.cancel=Cancel\u00b7la -button.worksite.create=Crea - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=L\u2019adre\u00e7a de correu electr\u00f2nic no \u00e9s v\u00e0lida error.empty.file.uploaded=Heu intentat pujar un fitxer buit error.file.save.failed=S\u2019ha produ\u00eft un error desant el fitxer -error.friend.add.failed=S\u2019ha produ\u00eft un error enviant la petici\u00f3 de contacte a {0}. -error.friend.already.confirmed=Ja esteu connectat a {0}. -error.friend.already.pending=Ja existeix una petici\u00f3 de contacte pendent de ser aprovada a {0}. -error.friend.confirm.failed=S\u2019ha produ\u00eft un error al confirmar la petici\u00f3 de contacte de {0} -error.friend.ignore.failed=S\u2019ha produ\u00eft un error a l\u2019ignorar la petici\u00f3 de contacte de{0} -error.friend.not.friend=No sou contacte de {0}, per aquest motiu no us poden esborrar. -error.friend.not.pending.confirm=No hi ha cap petici\u00f3 de contacte pendent de {0}, per tant no podeu acceptar-la. -error.friend.not.pending.ignore=No hi ha cap petici\u00f3 de contacte pendent de {0}, per tant no podeu ignorar-la. -error.friend.remove.failed=S\u2019ha produ\u00eft un error esborrant {0} de la llista de contactes. -error.friend.view.disallowed=No podeu veure els contactes de {0}. -error.gallery.remove.failed=No s\u2019ha pogut esborrar la imatge de la galeria -error.gallery.setprofile.failed=No s\u2019ha pogut configurar com a imatge del perfil -error.gallery.upload.warning=Escolliu un(s) fitxer(s) primer error.invalid.image.type=Nom\u00e9s es permeten imatges de tipus PNG, GIF i JPG. -error.message.required.body=El missatge no es pot deixar en blanc -error.message.required.to=Heu d\u2019escolliur un contacte a qui enviar el missatge -error.message.send.failed=S\u2019ha produ\u00eft un error a l\u2019enviar el missatge error.no.file.uploaded=No heu escollit un fitxer error.password.required=Una clau \u00e9s obligat\u00f2ria error.preferences.save.failed=No s\u2019ha pogut desar -error.privacy.save.failed=No s\u2019ha pogut desar -error.profile.save.academic.failed=No s\u2019ha pogut desar -error.profile.save.business.failed=No s\u2019ha pogut desar error.profile.save.contact.failed=No s\u2019ha pogut desar error.profile.save.info.failed=No s\u2019ha pogut desar -error.profile.save.interests.failed=No s\u2019ha pogut desar -error.twitter.details.invalid=No s\u2019han pogut verificar les vostres credencials de Twitter error.url.save.failed=S\u2019ha produ\u00eft un error desant la url error.username.required=S\u2019ha d\u2019introduir el nom d\u2019usuari -error.wall.comment.empty=Heu intentat afegir un comentari buit -error.wall.comment.failed=S\u2019ha produ\u00eft un error a l\u2019afegir el comentari -error.wall.post.empty=Heu intentat afegir un text buit -error.wall.post.failed=S\u2019ha produ\u00eft un error a l\u2019enviament -error.worksite.create.failed=S\u2019ha produ\u00eft un error al crear l\u2019espai -error.worksite.no.title=Cal que l\u2019espai tingui un nom -error.worksite.title.maxLength=La mida del t\u00edtol no pot superar els {0} car\u00e0cters. Introdu\u00efu un t\u00edtol m\u00e9s curt. -error.worksite.title.htmlStrippedToEmpty=El t\u00edtol de l\u2019espai no pot contenir codi HTML. Introdu\u00efu un t\u00edtol v\u00e0lid. exception.heading.session.expired=La sessi\u00f3 ha expirat exception.text.session.expired=La sessi\u00f3 ha expirat, proveu a refrescar la p\u00e0gina o b\u00e9 sortir i tornar a entrar per poder reiniciar la sessi\u00f3. facebookUrl.UrlValidator=La URL no \u00e9s v\u00e0lida -facsimile.PhoneNumberValidator=El n\u00famero de tel\u00e8fon no \u00e9s v\u00e0lid - form.uploadTooLarge=La mida del fitxer ha de ser inferior a ${maxSize} -heading.academic=Informaci\u00f3 acad\u00e8mica -heading.academic.edit=Informaci\u00f3 acad\u00e8mica heading.basic=Informaci\u00f3 b\u00e0sica heading.basic.edit=Informaci\u00f3 b\u00e0sica -heading.business=Informaci\u00f3 professional -heading.business.edit=Informaci\u00f3 professional heading.contact=Informaci\u00f3 de contacte heading.contact.edit=Informaci\u00f3 de contacte -heading.friend.requests=Peticions de contacte - -heading.friends.my=Els meus contactes - -heading.friends.view=Els contactes de {0} - -heading.interests=Informaci\u00f3 personal -heading.interests.edit=Informaci\u00f3 personal -heading.messages=Els meus missatges heading.name.pronunciation=Com es pronuncia el nom i pronoms heading.name.pronunciation.edit=Com es pronuncia el nom i pronoms -heading.pictures.addpicture=Afegeix una imatge -heading.pictures.my.pictures=Les meves imatges -heading.pictures.view.pictures=Les imatges de {0} heading.preferences=Prefer\u00e8ncies -heading.privacy=P\u00e0rametres de privacitat -heading.search=Cerca perfils -heading.section.academic.staff=Per al personal\: -heading.section.academic.students=Per a l\u2019estudiantat\: heading.section.email=Notificacions per correu electr\u00f2nic heading.section.image=Configuraci\u00f3 de la imatge del perfil -heading.section.twitter=Integraci\u00f3 a twitter heading.section.widget=Configuraci\u00f3 del widget heading.social=Xarxes socials heading.social.edit=Xarxes socials -heading.staff=Informaci\u00f3 institucional -heading.staff.edit=Informaci\u00f3 institucional -heading.status=Estat -heading.student=Informaci\u00f3 sobre l\u2019estudiantat -heading.student.edit=Informaci\u00f3 sobre l\u2019estudiantat -heading.widget.my.friends=Els meus contactes -heading.widget.my.kudos=Els meus kudos -heading.widget.my.pictures=Les meves imatges -heading.widget.view.friends=Els contactes de {0} -heading.widget.view.kudos=Els kudos de {0} -heading.widget.view.pictures=Les imatges de {0} #UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=La URL no \u00e9s v\u00e0lida -homephone.PhoneNumberValidator=El n\u00famero de tel\u00e8fon no \u00e9s v\u00e0lid link.change.profile.picture=Canvia la imatge link.edit=Revisa link.edit.info=Edita la informaci\u00f3 -link.friend.add=Afegeix com a contacte -link.friend.add.name=Afegeix {0} com a contacte -link.friend.confirm=Accepta com a contacte -link.friend.feed.search=Cerca entre els contactes -link.friend.feed.view=Mostra tots els contactes -link.friend.ignore=Ignora el contacte -link.friend.remove=Elimina dels contactes -link.friend.request.act=Actua sobre aquesta sol\u00b7licitud -link.friend.search=Voleu cercar contactes? -link.gallery.feed.addnew=Afegeix una imatge nova -link.gallery.feed.view=Mostra totes les imatges -link.gallery.image.view=Mostra la imatge link.image.current.remove=Elimina link.image.current.remove.confirm=Aquesta acci\u00f3 eliminar\u00e0 la imatge actual del perfil i la substituir\u00e0 per la predeterminada. La imatge actual s\u2019elimina del sistema i caldr\u00e0 pujar-ne una altra per tornar-la a canviar. Esteu segur de voler continuar? -link.messages.back=Torna a la llista de missatges -link.messages.compose=Escriu un missatge -link.messages.mymessages=Els meus missatges -link.messages.viewthread=Mostra el fil -link.my.friends=Contactes -link.my.friends.search=Cerca entre els contactes -link.my.friends.tooltip=Mostra i gestiona els meus contactes -link.my.messages=Missatges -link.my.messages.tooltip=Envia i llegeix missatges privats -link.my.pictures=Fotografies -link.my.pictures.tooltip=Afegeix imatges i mostra la meva galeria link.my.preferences=Prefer\u00e8ncies link.my.preferences.tooltip=Gestiona les meves prefer\u00e8ncies -link.my.privacy=Privacitat -link.my.privacy.tooltip=Gestiona la meva privacitat link.my.profile=El meu perfil link.my.profile.tooltip=Mostra i edita el meu perfil link.other.profile=perfil de {0} -link.my.search=Cerca -link.my.search.tooltip=Cerca gent i visualitza el seu perfil link.profile.locked.false=Voleu blocar aquest perfil? link.profile.locked.true=El perfil est\u00e0 blocat. Voleu desblocar-lo? -link.status.clear=Neteja la cerca -link.status.update=Actualitza -link.tab.profile=Perfils d\u2019usuari -link.tab.profile.tooltip=Mostra el perfil -link.tab.wall=Mur -link.tab.wall.tooltip=Mostra el mur -link.title.confirmfriend=Accepta la sol\u00b7licitud de contacte -link.title.ignorefriend=Ignora la sol\u00b7licitud de contacte -link.title.removefriend=Elimina dels contactes link.title.rss=Mostra i personalitza la meva sindicaci\u00f3 RSS -link.title.unlinktwitter=Deslliga\u2019t del compte de Twitter -link.title.wall.comment=Fes un comentari sobre l\u2019entrada del mur de {0} -link.title.wall.remove=Elimina del meu mur -link.view.friends=Mostra els contactes -link.wall.item.comment=Comentari -link.wall.item.remove=Elimina -link.worksite.create=Crea l\u2019espai linkedinUrl.UrlValidator=La URL no \u00e9s v\u00e0lida -message.message=Missatge -message.reply=Respon -message.subject=Assumpte -message.to=A - mobilephone.PhoneNumberValidator=El n\u00famero de tel\u00e8fon no \u00e9s v\u00e0lid -myspaceUrl.UrlValidator=La URL no \u00e9s v\u00e0lida - page.title=Perfils d\u2019usuari -palette.available=Disponible -palette.selected=Seleccionat - -pictures.addpicture=Afegeix nous fitxers d\u2019imatges a la galeria -pictures.filetypewarning=A la galeria nom\u00e9s podeu afegir fitxers jpeg, png i gif -pictures.removepicture=Elimina aquesta imatge de la galeria -pictures.removepicture.confirm=Esteu segur de voler eliminar aquesta imatge de la vostra galeria? -pictures.setprofileimage=Estableix aquesta imatge com la meva imatge del perfil -pictures.setprofileimage.confirm=Esteu segur que voleu canviar la vostra imatge del perfil actual per aquesta? - preference.option.off=Desactiva preference.option.on=Activa -preferences.email.confirms=Accepti la meva petici\u00f3 de contacte -preferences.email.message=Envia\u2019m un correu a {0} quan alg\u00fa\: -preferences.email.message.new=M\u2019envi\u00ef un missatge nou -preferences.email.message.reply=Respongui a un dels meus missatges -preferences.email.none=(ADRE\u00c7A DE CORREU NO CONFIGURADA) -preferences.email.requests=M\u2019afegeixi com a contacte -preferences.email.wall.new=Faci una contribuci\u00f3 al meu mur -preferences.email.worksite.new=M\u2019afegeixi a un espai nou preferences.image.gravatar=Usa el meu gravatar com a imatge del perfil -preferences.image.message=Configuraci\u00f3 de la imatge del perfil preferences.image.official=Usa la imatge institucional oficial com la meva imatge del perfil -preferences.twitter.message=Les actualitzacions del vostre estat tamb\u00e9 poden actualitzar el vostre compte de Twitter -preferences.widget.gallery=Mostra les meves imatges -preferences.widget.gallery.tooltip=Si ho seleccioneu apareixeran les vostres imatges al vostre Perfil. -preferences.widget.kudos=Mostra la meva puntuaci\u00f3 de kudos -preferences.widget.kudos.tooltip=La vostra puntuaci\u00f3 de kudos apareixer\u00e0 al Perfil un cop s\u2019hagi calculat. -preferences.widget.message=Controla els widgets que apareixen al meu perfil -preferences.widget.onlinestatus=Mostra el meu estat de connexi\u00f3 -preferences.widget.onlinestatus.tooltip=Mostra si esteu online o no. Si l\u2019habiliteu el podreu configurar m\u00e9s detalladament a les vostres prefer\u00e8ncies de Privacitat. Si el deshabiliteu apareixereu com offline. - -privacy.academicinfo=Informaci\u00f3 acad\u00e8mica -privacy.basicinfo=Informaci\u00f3 b\u00e0sica -privacy.birthyear=Mostra l\u2019any de naixement -privacy.businessinfo=Informaci\u00f3 professional -privacy.contactinfo=Informaci\u00f3 de contacte -privacy.messages=Qui em pot enviar missatges -privacy.myfriends=Qui pot veure els meus contactes -privacy.mykudos=Qui pot veure la meva puntuaci\u00f3 de kudos -privacy.mypictures=Qui pot veure les meves imatges -privacy.mystatus=Qui pot veure el meu estat -privacy.mywall=Qui pot veure el meu mur i el que he enviat a altres murs -privacy.onlinestatus=Qui pot veure si estic connectat -privacy.option.everyone=Tothom -privacy.option.nobody=Ning\u00fa -privacy.option.onlyfriends=Nom\u00e9s els meus contactes -privacy.option.onlyme=Nom\u00e9s jo -privacy.personalinfo=Informaci\u00f3 personal -privacy.profileimage=Imatge del perfil -privacy.search=Cerca -privacy.socialinfo=Informaci\u00f3 social -privacy.staffinfo=Informaci\u00f3 institucional -privacy.studentinfo=Informaci\u00f3 de l\u2019estudiantat -profile.academicprofileurl=URL de professor/investigaci\u00f3|recerca -profile.birthday=Data d\u2019aniversari -profile.business.bio=Biografia professional -profile.business.company.description=Descripci\u00f3 de l\u2019empresa -profile.business.company.name=Nom de l\u2019empresa -profile.business.company.profile=Perfils d\u2019usuari -profile.business.company.profiles=Perfils de l\u2019empresa -profile.business.company.web=Adre\u00e7a web de l\u2019empresa -profile.business.update=S\u2019ha actualitzat la informaci\u00f3 professional al perfil profile.contact.update=S\u2019ha actualitzat la informaci\u00f3 de contacte al perfil -profile.course=Ensenyament/Curs -profile.department=Departament profile.email=Correu electr\u00f2nic -profile.favourite.books=Llibres preferits -profile.favourite.movies=Pel\u00b7l\u00edcules preferides -profile.favourite.quotes=Cites preferides -profile.favourite.tv=Programes de TV preferits -profile.gallery.image.alt=Les meves imatges -profile.gallery.image.upload=S\u2019ha pujat a la galeria d\u2019imatges del perfil -profile.homepage=P\u00e0gina web profile.image.change.upload=S\u2019ha canviat la imatge del perfil profile.image.change.url=S\u2019ha canviat la imatge del perfil profile.info.update=S\u2019ha actualitzat la informaci\u00f3 b\u00e0sica al perfil -profile.interests.update=S\u2019ha actualitzat la informaci\u00f3 personal al perfil -profile.name.first=Nom -profile.name.first.none=Usuari -profile.name.last=Cognoms -profile.name.middle=Cognom -profile.name.recording=Enregistrament del nom profile.nickname=Sobrenom (nick) profile.pronouns=Pronoms profile.pronouns.options=Ell, Ella, Ells, Elli, Ellis @@ -423,169 +129,34 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=Fax -profile.phone.home=N\u00famero de casa profile.phone.mobile=N\u00famero de m\u00f2bil -profile.phone.work=N\u00famero de la feina -profile.position=Posici\u00f3 -profile.publications=Publicacions i confer\u00e8ncies -profile.room=Despatx -profile.school=Escola profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=URL de Facebook profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=URL de LinkedIn -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=URL de MySpace profile.socialnetworking.instagram=Instagram profile.socialnetworking.instagram.edit=Adre\u00e7a URL d\u2019Instagram -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Nom d\u2019usuari de Skype -profile.socialnetworking.skype.link=Skype Me -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Nom d\u2019usuari de Twitter profile.socialnetworking.update=S\u2019ha actualitzat els detalls sobre xarxes socials al perfil -profile.staff.update=S\u2019ha actualitzat la informaci\u00f3 institucional al perfil -profile.staffprofile=Perfil institucional -profile.student.update=S\u2019ha actualitzat la informaci\u00f3 sobre l\u2019estudiantat al perfil -profile.subjects=Temes -profile.summary=Resum personal -profile.universityprofileurl=URL del perfil d\u2019universitat -success.message.send.ok=Missatge enviat success.preferences.save.ok=S\u2019ha desat correctament -success.privacy.save.ok=S\u2019ha desat correctament text.edit.other.warning=Atenci\u00f3\: Esteu editant la informaci\u00f3 de {0}. -text.friend.add={0} Ha d\u2019acceptar la vostra petici\u00f3. -text.friend.already=Ja esteu connecta a {0}. -text.friend.already.pending=Ja hi ha pendent una petici\u00f3 de contacte entre vost\u00e8 i {0}. -text.friend.cancel=Esteu segur que voleu cancel\u00b7lar la petici\u00f3 de contacte a {0}?. L\u2019acci\u00f3 no ser\u00e0 notificada. -text.friend.confirm=Aquesta acci\u00f3 confirmar\u00e0 la seva petici\u00f3 de contacte amb {0}. -text.friend.confirmed=Esteu connectat -text.friend.feed.num.many={0} contactes -text.friend.feed.num.none=0 contactes -text.friend.feed.num.one=1 contacte -text.friend.ignore=Esteu segur de voler ignorar la petici\u00f3 de contacte de {0}? No se li notificar\u00e0. -text.friend.none=No sou un contacte de {0}. -text.friend.pending=Petici\u00f3 de contacte pendent -text.friend.remove=Esteu segur que voleu esborrar a {0} com a contacte? L\u2019acci\u00f3 no ser\u00e0 notificada. -text.friend.requested=S\u2019ha sol\u00b7licitat un contacte -text.friend.self=Aquest \u00e9s vost\u00e8 -text.gallery.feed.num.none=0 imatges -text.gallery.pictures.num.none=La vostra galeria no cont\u00e9 imatges encara. -text.gallery.upload.tooltip=Carregueu imatges a la galeria des del vostre ordinador. La mida combinada de les imatges per pujar no pot excedir de {0}MB. text.image.refresh=Nota\: Si la imatge nova no apareix de manera immediata proveu de refrescar el navegador. text.image.url=Introdu\u00efu la URL d\u2019una imatge per utilitzar-la al perfil -text.messages.none=Cap missatge text.name.pronunciation.description=Us permet introduir la transcripci\u00f3 fon\u00e8tica o b\u00e9 un enregistrament d\u2019\u00e0udio del vostre nom.
Aquesta pronunciaci\u00f3 ser\u00e0 visible per a tots els participants dels vostres espais de curs (tant estudiants com professors) text.no.fields=Encara no heu emplenat cap informaci\u00f3 text.no.status=Digueu alguna cosa text.or=o -text.privacy.academicinfo.tooltip=Trieu qui pot veure la vostra informaci\u00f3 acad\u00e8mica. (centre, departament, etc) -text.privacy.basicinfo.tooltip=Trieu qui pot veure la vostra informaci\u00f3 b\u00e0sica, com el sobrenom (nick) i el dia de l\u2019aniversari. -text.privacy.birthyear.tooltip=Trieu si voleu mostrar o amagar el vostre any de naixement. Si est\u00e0 marcat es mostrar\u00e0. -text.privacy.businessinfo.tooltip=Escolliu qui pot veure la vostra informaci\u00f3 professional, com ara la biografia professional o el c\u00e0rrec. -text.privacy.cannot.modify=Aquests valors els ha bloquejat l\u2019administrador. No podeu canviar-los. -text.privacy.contactinfo.tooltip=Trieu qui pot veure la vostra adre\u00e7a de correu i tel\u00e8fons -text.privacy.messages.tooltip=Trieu qui us pot enviar missatges. -text.privacy.myfriends.tooltip=Trieu qui pot veure la vostra llista de contactes. -text.privacy.mykudos.tooltip=Trieu qui pot veure la vostra puntuaci\u00f3 kudos (si est\u00e0 habilitat a \u2019Prefer\u00e8ncies\u2019). -text.privacy.mypictures.tooltip=Trieu qui pot veure la vostra galeria d\u2019imatges. -text.privacy.mystatus.tooltip=Trieu qui pot veure les vostres actualitzacions d\u2019estat. -text.privacy.mywall.tooltip=Trieu qui pot veure el vostre mur. -text.privacy.onlinestatus.tooltip=Escolliu qui pot veure el vostre estat de connexi\u00f3. La resta us veur\u00e0 com a desconnectat. -text.privacy.personalinfo.tooltip=Trieu qui pot veure les vostres prefer\u00e8ncies com llibres, pel\u00edcules,etc. -text.privacy.profileimage.tooltip=Trieu qui pot veure la imatge del perfil. -text.privacy.socialinfo.tooltip=Trieu qui pot veure la vostra informaci\u00f3 sobre contactes de xarxes socials, com el vostre Facebook, perfils de LinkedIn i MySpace. -text.privacy.staff.tooltip=Trieu qui pot veure la vostra informaci\u00f3 institucional -text.privacy.student.tooltip=Trieu qui pot veure la seva informaci\u00f3 d\u2019estudiantat -text.profile.birthyear.tooltip=Podeu triar entre mostrar o no mostrar l\u2019any de naixement en els par\u00e0metes de privacitat. text.profile.facebook.tooltip=per ex. http\://www.facebook.com/user text.profile.linkedin.tooltip=per ex. http\://www.linkedin.com/pub/user text.profile.locked.false=Blocar un perfil significa que els usuaris no podran editar la seva informaci\u00f3. text.profile.locked.true=Desblocar un perfil permetr\u00e0 a un usuari editar la seva informaci\u00f3. -text.profile.myspace.tooltip=Per ex. http\://myspace.com/user text.profile.instagram.tooltip=per exemple https\://www.instagram.com/user/ -text.profile.presence.away={0} \u00e9s absent -text.profile.presence.offline={0} no est\u00e0 disponible -text.profile.presence.online={0} est\u00e0 connectat -text.profile.twitter.tooltip=Per ex. http\://twitter.com/sakaiproject -text.search.byinterest.all.results=Mostrant {0} resultats per\: {1} -text.search.byinterest.label=Interessos comuns -text.search.byinterest.no.results=No hi ha gent que coincideixi amb els interessos.{0}. -text.search.byinterest.one.result=Mostrant un resultat per\: {0} -text.search.byinterest.paged.results=Mostrant {0} resultats (fins a {1} resultats per p\u00e0gina) per\: {2} -text.search.byinterest.tooltip=Entreu un inter\u00e8s, per exemple \u2019ciclisme\u2019 per trobar persones amb interessos similars. -text.search.byname.all.results=Mostrant {0} resultats per\: {1} -text.search.byname.label=Nom o correu electr\u00f2nic de la persona -text.search.byname.no.results=No hi ha resultats coincidents {0}. -text.search.byname.one.result=Mostrant un resultat per\: {0} -text.search.byname.paged.results=Mostrant {0} resultats (fins a {1} resultats per p\u00e0gina) per\: {2} -text.search.byname.tooltip=Introdu\u00efu un nom o adre\u00e7a de correu v\u00e0lida per cercar a la gent -text.search.history=Cerques pr\u00e8vies -text.search.include.connections=Inclou els contactes als resultats de la cerca -text.search.include.worksite=Limita la cerca a l\u2019espai seleccionat -text.search.no.input=No heu entrat res -text.search.no.results=No hi ha resultats per {0}. -text.search.no.worksite=No sou membre de cap espai encara -text.search.paged.results=Mostrant {0} - {1} de {2} resultats per\: {3} -text.search.terms.label=Termes de la cerca -text.search.terms.tooltip=Introdu\u00efu termes de cerca depenent si esteu cercant per nom/correu electr\u00f2nic o per interessos comuns -text.search.toomany.results=Heu cercat per {0} i s\u2019han recuperat {1} o m\u00e9s resultats. Nom\u00e9s es mostren els {1} primers. text.upload.image.file=Seleccioneu una imatge del vostre ordinador (max {0}MB)\: text.view.profile.nothing=Aquesta persona no t\u00e9 visible la informaci\u00f3 del seu perfil o no t\u00e9 infomaci\u00f3 que compartir. -text.view.wall.nothing=Actualment no hi ha entrades al mur de {0}. Sigueu el primer a escriure-hi. -text.view.wall.restricted=Nom\u00e9s poden veure aquest mur els contactes de {0}. Afegiu {0} com a contacte per veure el seu mur i poder-hi publicar. -text.wall.no.items=Actualment no hi ha res penjat al vostre mur. -text.wall.remove.mine=Eliminar la publicaci\u00f3 del vostre mur? -text.wall.remove.other=Voleu eliminar del mur la publicaci\u00f3 de {0}? -text.worksite.create=Selecciona les persones disponibles i crea un espai nou. -text.worksite.refresh=Refresqueu el navegador per accedir a l\u2019espai nou un cop s\u2019ha creat title.change.profile.picture=Canvia la foto del perfil -title.friend.add=Voleu afegir {0} com a contacte? -title.friend.cancel=Voleu cancel\u00b7lar la petici\u00f3 de contacte? -title.friend.confirm=Voleu confirmar la petici\u00f3 de contacte de {0}? -title.friend.ignore=Voleu ignorar la petici\u00f3 de contacte? -title.friend.remove=Esborrar el contacte? -title.message.compose=Escriu un missatge nou -title.wall.comment=Fes un comentari sobre l\u2019entrada del mur de {0} -title.wall.remove=Eliminar del mur? - -twitter.auth.do=Enlla\u00e7a a un compte de Twitter -twitter.auth.linked=Enlla\u00e7at amb un compte de Twitter -twitter.enabled=Habilita la integraci\u00f3 amb Twitter - -twitterUrl.UrlValidator=La URL no \u00e9s v\u00e0lida urlField.Required=Heu d\u2019introduir una URL -workphone.PhoneNumberValidator=El n\u00famero de tel\u00e8fon no \u00e9s v\u00e0lid - worksite.name=Nom de l\u2019espai - -email.connectionrequest.subject=t\u2019ha afegit com a contacte a -email.connectionrequest.added=t\u2019ha afegit com a contacte a -email.connectionrequest.toconfirm1=Per a confirmar la sol\u00b7licitud de contacte de -email.connectionrequest.toconfirm2=aneu a l\u2019adre\u00e7a url de la part inferior\: - -email.connectionconfirm.subject=ha confirmat la sol\u00b7licitud de contacte a -email.connectionconfirm.confirmed=ha confirmat la sol\u00b7licitud de contacte a -email.connectionconfirm.toview1=Per a veure el perfil de -email.connectionconfirm.toview2=, aneu a l\u2019adre\u00e7a url de la part inferior\: - -email.messagenew.subject=us ha enviat un missatge a -email.messagenew.sent=us ha enviat un missatge a -email.messagenew.toview1=Per a veure aquest missatge feu clic sobre l\u2019enlla\u00e7 de la part inferior\: - -email.messagereply.subject=ha respost el vostre missatge a - -email.profilechange.subject=ha canviat el seu perfil a - -email.wallnew.subject=acaba de fer una publicaci\u00f3 al mur del seu perfil a -email.wall.viewtheir=Per a veure el seu mur feu clic sobre l\u2019enlla\u00e7 de la part inferior\: -email.wall.viewmy=Per a veure el vostre mur feu clic sobre l\u2019enlla\u00e7 de la part inferior\: - -email.mywallnew.subject=acaba de fer una publicaci\u00f3 al mur del vostre perfil a -email.wall.theirstatus.subject=ha publicat un nou estat al mur del seu perfil a diff --git a/profile2/api/src/resources/ProfileApplication_de_DE.properties b/profile2/api/src/resources/ProfileApplication_de_DE.properties index 80993df1d02f..bc8f0055cad7 100644 --- a/profile2/api/src/resources/ProfileApplication_de_DE.properties +++ b/profile2/api/src/resources/ProfileApplication_de_DE.properties @@ -1,370 +1,87 @@ RequiredValidator='${label}' ist erforderlich -accessibility.connection.add={0} als Verbindung hinzuf\u00fcgen? -accessibility.connection.confirm=Kontaktanfrage von {0} best\u00e4tigen? -accessibility.connection.ignore=Kontaktanfrage von {0} ignorieren? -accessibility.connection.remove={0} aus Ihren Kontakten entfernen? accessibility.edit.basic=Basisdaten bearbeiten -accessibility.edit.business=Gesch\u00e4ftliche Daten bearbeiten accessibility.edit.contact=Kontaktdaten bearbeiten -accessibility.edit.personal=Pers\u00f6nliche Daten bearbeiten accessibility.edit.pronunciation=Edit Name Pronunciation accessibility.edit.social=Social Networking-Daten bearbeiten -accessibility.edit.staff=Mitarbeiterdaten bearbeiten -accessibility.edit.student=Studierendendaten bearbeiten accessibility.image.upload=Ein Bild f\u00fcr das Profil hochladen accessibility.image.url=URL f\u00fcr das Profilbild eingeben -accessibility.messages.unread=Ungelesene Nachricht -accessibility.prefs.confirms.off=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn jemand meine Kontaktanfrage best\u00e4tigt, deaktiviert -accessibility.prefs.confirms.on=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn jemand meine Kontaktanfrage best\u00e4tigt, aktiviert -accessibility.prefs.gallery=Meine Bilder in meinem Profil anzeigen accessibility.prefs.gravatar=Meinen Gravatar als Profilbild verwenden -accessibility.prefs.kudos=Meine Erfahrungspunkte auf meinem Profil anzeigen -accessibility.prefs.messagenew.off=Ich m\u00f6chtet per E-Mail benachrichtigt werden, wenn ich eine neue Nachricht empfangen habe, deaktiviert -accessibility.prefs.messagenew.on=Ich m\u00f6chtet per E-Mail benachrichtigt werden, wenn ich eine neue Nachricht empfangen habe, aktiviert -accessibility.prefs.messagereply.off=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn jemand auf meine Nachrichten antwortet, deaktiviert -accessibility.prefs.messagereply.on=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn jemand auf meine Nachrichten antwortet, aktiviert accessibility.prefs.officialimage=Offizielles Bild des Instituts als Profilbild verwenden -accessibility.prefs.onlinestatus=Anderen meinen Online-Status zeigen accessibility.prefs.overview=Emailbenachrichtigungen accessibility.prefs.requests.off=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn mich jemand als Verbindung hinzuf\u00fcgt, deaktiviert accessibility.prefs.requests.on=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn mich jemand als Verbindung hinzuf\u00fcgt, aktiviert -accessibility.prefs.twitterauthcode=Twitter-Authentisierungscode eingeben -accessibility.prefs.wallnew.off=Ich m\u00f6chte per-E-Mail benachrichtigt werden, wenn jemand auf meine Pinnwand postet, deaktiviert -accessibility.prefs.wallnew.on=Ich m\u00f6chte per-E-Mail benachrichtigt werden, wenn jemand auf meine Pinnwand postet, aktiviert -accessibility.prefs.worksite.off=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn mich eine Verbindung zu einer neuen Work-Site hinzuf\u00fcgt, deaktiviert -accessibility.prefs.worksite.on=Ich m\u00f6chte per E-Mail benachrichtigt werden, wenn mich eine Verbindung zu einer neuen Work-Site hinzuf\u00fcgt, aktiviert -accessibility.privacy.academic=Legen Sie fest, wer Ihre akademischen Daten, z. B. Informationen zu Hochschule, Institut oder Kurs, einsehen darf. -accessibility.privacy.basic=Legen Sie fest, wer Ihre Basisdaten, z. B. Nickname und Geburtsdatum, einsehen darf. -accessibility.privacy.birthyear=Legen Sie fest, ob Sie Ihr Geburtsjahr anzeigen oder ausblenden m\u00f6chten. Angekreuzt bedeutet sichtbar. -accessibility.privacy.business=Legen Sie fest, wer Ihre gesch\u00e4ftlichen Daten wie Branche, Position und beruflicher Werdegang einsehen darf. -accessibility.privacy.contact=Legen Sie fest, wer Angaben wie Ihre E-Mail-Adressen und Telefonnummern einsehen darf. -accessibility.privacy.friends=Legen Sie fest, wer Ihre Verbindungsliste einsehen darf. -accessibility.privacy.image=Legen Sie fest, wer Ihr Profilbild einsehen darf. -accessibility.privacy.kudos=Legen Sie fest, wer Ihre Erfahrungspunkte einsehen darf (falls diese Funktion in den Einstellungen aktiviert ist). -accessibility.privacy.messages=Legen Sie fest, wer Ihnen Nachrichten senden darf. -accessibility.privacy.onlinestatus=Legen Sie fest, wer Ihren Online-Status einsehen darf. -accessibility.privacy.overview=Legen Sie fest, wer welche Breiche Ihres Profils sehen darf -accessibility.privacy.personal=Legen Sie fest, wer Ihre Lieblingsb\u00fccher und Lieblingsserien etc. einsehen darf. -accessibility.privacy.pictures=Legen Sie fest, wer Ihre Bildergalerie einsehen darf. -accessibility.privacy.social=Legen Sie fest, wer Ihre Social Networking-Daten wie Facebook-, LinkedIn- und MySpace-Profile einsehen darf. -accessibility.privacy.staff=Legen Sie fest, wer Ihre Mitarbeiterdaten einsehen darf. -accessibility.privacy.status=Legen Sie fest, wer Ihre Statusaktualisierungen einsehen darf. -accessibility.privacy.student=Legen Sie fest, wer Ihre Studierendendaten einsehen darf. -accessibility.privacy.wall=Legen Sie fest, wer Ihre Pinnwand sehen darf -accessibility.profile.academicprofileurl.input=URL f\u00fcr Ihr akademisches Profil eingeben -accessibility.profile.birthday=W\u00e4hlen Sie Ihr Geburtsdatum aus. Sie k\u00f6nnen die Anzeige Ihres Geburtsjahres in Ihren Einstellungen festlegen. -accessibility.profile.businessbio.input=Geben Sie Ihren beruflichen Werdegang ein -accessibility.profile.companydescription.input=Beschreiben Sie diese Firma -accessibility.profile.companyname.input=Geben Sie den Namen dieser Firma an -accessibility.profile.companyurl.input=Geben Sie die Webadresse dieser Firma an -accessibility.profile.course.input=Geben Sie Ihren Kurs an -accessibility.profile.department.input=Geben Sie Ihr Institut an accessibility.profile.email.input=Geben Sie Ihre Email an accessibility.profile.facebookurl.input=Geben Sie Ihre Facebook-URL an -accessibility.profile.facsimile.input=Geben Sie Ihr Faxnummer an -accessibility.profile.favouritebooks.input=Geben Sie Ihre Lieblingsb\u00fccher an -accessibility.profile.favouritemovies.input=Geben Sie Ihre Lieblingsfilme an -accessibility.profile.favouritequotes.input=Geben Sie Ihre Lieblingszitate an -accessibility.profile.favouritetv.input=Geben Sie Ihre Lieblings-Fernsehserien an -accessibility.profile.homepage.input=Geben Sie die URL Ihrer Webseite an -accessibility.profile.homephone.input=Geben Sie Ihre pers\u00f6nliche Telefonnummer an accessibility.profile.linkedinurl.input=Geben Sie Ihre LinkedIn URL an -accessibility.profile.messagebody.input=Geben Sie Ihre Nachricht ein -accessibility.profile.messagerecipient.input=W\u00e4hlen Sie den/die Empf\u00e4ngerIn -accessibility.profile.messagesubject.input=Geben Sie den Betreff der Nachricht ein accessibility.profile.mobilephone.input=Geben Sie Ihre Mobilfunknumer an -accessibility.profile.myspaceurl.input=Geben Sie Ihre MySpace-URL an -accessibility.profile.name.recording=Record your name pronunciation accessibility.profile.nickname.input=Geben Sie Ihren Spitznamen (Nickname) an accessibility.profile.phonetic.input=Enter your phonetic pronunciation -accessibility.profile.position.input=Geben Sie Ihre Position an -accessibility.profile.publications.input=Geben Sie Ihre Ver\u00f6ffentlichungen an -accessibility.profile.room.input=Geben Sie Ihren Raum an -accessibility.profile.school.input=Geben Sie Ihre Schule an -accessibility.profile.skypeusername.input=Geben Sie Ihren Skype-Benutzernamen an -accessibility.profile.staffprofile.input=Geben Sie Ihr Mitarbeiterprofil an -accessibility.profile.status.clear=Ihren Status l\u00f6schen -accessibility.profile.status.input=Ihren Status eingeben -accessibility.profile.subjects.input=Geben sie Ihre F\u00e4cher an accessibility.profile.summaryinput=Geben Sie Ihre pers\u00f6nliche Zusammenfassung an -accessibility.profile.twitterurl.input=Geben Sie Ihre Twitter-URL an -accessibility.profile.uniprofileurl.input=Geben Sie Ihr Hochschulprofil an -accessibility.profile.wallpost.input=Geben Sie den Text Ihrer Pinnwandnachricht ein -accessibility.profile.workphone.input=Geben Sie Ihre dienstliche Telefonnummer an -accessibility.search.connections=Kontakte in Suchergebnisse aufnehmen -accessibility.search.worksite=Suche auf ausgew\u00e4hlte Work-Site begrenzen accessibility.tooltip=Beschreibung dieser Einstellung anzeigen -accessibility.wall.comment=Das Pinnwandposting von {0} kommentieren -accessibility.wall.remove.mine=M\u00f6chten Sie das Posting von Ihrer Pinnwand entfernen? -accessibility.wall.remove.other=M\u00f6chten Sie das Posting von {0} von Ihrer Pinnwand entfernen? -button.business.add.profile=Unternehmensprofil hinzuf\u00fcgen -button.business.remove.profile=Unternehmensprofil entfernen button.cancel=Abbrechen button.close=Schlie\u00dfen button.edit=Bearbeiten -button.friend.add=Verbindung hinzuf\u00fcgen -button.friend.cancel=Kontaktanfrage widerrufen -button.friend.confirm=Kontaktanfrage best\u00e4tigen -button.friend.ignore=Kontaktanfrage ignorieren -button.friend.remove=Verbindung aufheben -button.gallery.remove=Bild entfernen -button.gallery.remove.confirm=Entfernen best\u00e4tigen -button.gallery.setprofile=Als Profilbild festlegen -button.gallery.setprofile.confirm=Neues Profilbild best\u00e4tigen -button.gallery.upload=Ausgew\u00e4hlte Dateien hochladen button.link=Verlinken -button.message.reply=Antworten -button.message.send=Nachricht senden button.record=Record button.release.microphone=Release Microphone button.save=Speichern button.save.changes=\u00c4nderungen speichern button.save.settings=Einstellungen speichern button.sayit=Posten -button.search.byinterest=Nach gemeinsamen Interessen suchen -button.search.byname=Nach Name oder E-Mail-Adresse suchen -button.search.clear=Suche l\u00f6schen -button.search.generic=Suche -button.search.history.clear=Verlauf l\u00f6schen button.stop=Stop button.upload=Hochladen button.url.add=URL hinzuf\u00fcgen -button.wall.comment=Kommentar hinzuf\u00fcgen -button.wall.post=Auf Pinnwand posten -button.wall.remove=Von Pinnwand entfernen -button.worksite.cancel=Abbrechen -button.worksite.create=Erstellen -email.EmailAddressValidator=Ung\u00fcltige E-Mail-Adresse error.empty.file.uploaded=Sie haben versucht, eine leere Datei hochzuladen error.file.save.failed=Speichern der Datei fehlgeschlagen -error.friend.add.failed=Beim Senden einer Kontaktanfrage an {0} ist ein Fehler aufgetreten. -error.friend.already.confirmed=Sie haben {0} bereits zu Ihren Kontakten hinzugef\u00fcgt. -error.friend.already.pending=Sie haben an {0} bereits eine Kontaktanfrage gesendet. -error.friend.confirm.failed=Beim Best\u00e4tigen der Kontaktanfrage von {0} ist ein Fehler aufgetreten. -error.friend.ignore.failed=Beim Ignorieren der Kontaktanfrage von {0} ist ein Fehler aufgetreten. -error.friend.not.friend={0} befindet sich nicht in Ihrer Verbindungsliste, daher kann die Verbindung nicht aufgehoben werden\! -error.friend.not.pending.confirm=Es liegt keine Kontaktanfrage von {0} vor, daher k\u00f6nnen Sie diese nicht best\u00e4tigen\! -error.friend.not.pending.ignore=Es liegt keine Kontaktanfrage von {0} vor, daher k\u00f6nnen Sie diese nicht ignorieren\! -error.friend.remove.failed=Beim Entfernen von {0} aus Ihrer Verbindungsliste ist ein Fehler aufgetreten. -error.friend.view.disallowed=You cannot view {0}'s connections. -error.gallery.remove.failed=Bild konnte nicht aus der Galerie entfernt werden -error.gallery.setprofile.failed=Bild konnte nicht als Profilbild festgelegt werden -error.gallery.upload.warning=W\u00e4hlen Sie zun\u00e4chst eine oder mehrere Dateien aus error.invalid.image.type=Es sind nur Bilder im PNG-, JPG- und GIF-Format zul\u00e4ssig. -error.message.required.body=Die Nachricht darf nicht leer sein -error.message.required.to=Sie m\u00fcssen eine Verbindung ausw\u00e4hlen, um die Nachricht zu senden an -error.message.send.failed=Beim Senden Ihrer Nachricht ist ein Fehler aufgetreten error.no.file.uploaded=Sie haben keine Datei ausgew\u00e4hlt error.password.required=Passwort erforderlich error.preferences.save.failed=Speichern fehlgeschlagen -error.privacy.save.failed=Speichern fehlgeschlagen -error.profile.save.academic.failed=Speichern fehlgeschlagen -error.profile.save.business.failed=Speichern fehlgeschlagen error.profile.save.contact.failed=Speichern fehlgeschlagen error.profile.save.info.failed=Speichern fehlgeschlagen -error.profile.save.interests.failed=Speichern fehlgeschlagen -error.twitter.details.invalid=Ihre Twitter-Zugangsdaten konnten nicht verifiziert werden error.url.save.failed=Speichern der URL fehlgeschlagen error.username.required=Benutzername erforderlich -error.wall.comment.empty=Sie haben versucht, einen leeren Kommentar hinzuzuf\u00fcgen -error.wall.comment.failed=Kommentieren fehlgeschlagen -error.wall.post.empty=Sie haben versucht, ein leeres Posting hinzuzuf\u00fcgen -error.wall.post.failed=Posten fehlgeschlagen -error.worksite.create.failed=Erstellung der Work-Site fehlgeschlagen -error.worksite.no.title=Sie m\u00fcssen die Site benennen -error.worksite.title.maxLength=Title length cannot exceed {0} characters. Please provide a shorter title. -error.worksite.title.htmlStrippedToEmpty=Site title cannot contain HTML. Please provide a valid site title. exception.heading.session.expired=Session abgelaufen exception.text.session.expired=Leider ist Ihre Session abgelaufen. Aktualisieren Sie die Seite oder melden Sie sich zuerst ab und danach wieder an, um Ihre Session neu zu starten. facebookUrl.UrlValidator=Ung\u00fcltige URL facsimile.PhoneNumberValidator=Ung\u00fcltige Telefonnummer form.uploadTooLarge=Sie k\u00f6nnen Dateien mit einer maximalen Gr\u00f6\u00dfe von ${maxSize} hochladen -heading.academic=Akademische Daten -heading.academic.edit=Akademische Daten heading.basic=Basisdaten heading.basic.edit=Basisdaten -heading.business=Gesch\u00e4ftliche Daten -heading.business.edit=Gesch\u00e4ftliche Daten heading.contact=Kontaktinformationen heading.contact.edit=Kontaktinformationen -heading.friend.requests=Kontaktanfragen - -heading.friends.my=Meine Kontakte - -heading.friends.view=Kontakte von {0} - -heading.interests=Pers\u00f6nliche Daten -heading.interests.edit=Pers\u00f6nliche Daten -heading.messages=Meine Nachrichten heading.name.pronunciation=Name Pronunciation heading.name.pronunciation.edit=Name Pronunciation -heading.pictures.addpicture=Bild hinzuf\u00fcgen -heading.pictures.my.pictures=Meine Bilder -heading.pictures.view.pictures=Bilder von {0} heading.preferences=Einstellungen -heading.privacy=Privatsph\u00e4re-Einstellungen -heading.search=Profile suchen -heading.section.academic.staff=F\u00fcr Mitarbeiter\: -heading.section.academic.students=F\u00fcr Studierende\: heading.section.email=E-Mail-Benachrichtigungen heading.section.image=Profilbildeinstellungen -heading.section.twitter=Twitter-Integration heading.section.widget=Widget-Einstellungen heading.social=Social Networking heading.social.edit=Social Networking -heading.staff=Mitarbeiterdaten -heading.staff.edit=Mitarbeiterdaten -heading.student=Studierendendaten -heading.student.edit=Studierendendaten -heading.widget.my.friends=Meine Kontakte -heading.widget.my.kudos=Meine Erfahrungspunkte -heading.widget.my.pictures=Meine Bilder -heading.widget.view.friends=Kontakte von {0} -heading.widget.view.kudos=Erfahrungspunkte von {0} -heading.widget.view.pictures=Bilder von {0} -homepage.UrlValidator=Ung\u00fcltige URL -homephone.PhoneNumberValidator=Ung\u00fcltige Telefonnummer link.change.profile.picture=Bild \u00e4ndern link.edit=Bearbeiten link.edit.info=Daten bearbeiten -link.friend.add=Als Verbindung hinzuf\u00fcgen -link.friend.add.name={0} als Verbindung hinzuf\u00fcgen -link.friend.confirm=Kontaktanfrage best\u00e4tigen -link.friend.feed.search=Nach Kontakten suchen -link.friend.feed.view=Alle Kontakte anzeigen -link.friend.ignore=Kontaktanfrage ignorieren -link.friend.remove=Kontakt l\u00f6schen -link.friend.request.act=Aktion f\u00fcr diese Anfrage ausf\u00fchren -link.friend.search=Nach Kontakten suchen? -link.gallery.feed.addnew=Neues Bild hinzuf\u00fcgen -link.gallery.feed.view=Alle Bilder anzeigen -link.gallery.image.view=Bild anzeigen link.image.current.remove=Remove link.image.current.remove.confirm=This will remove the current profile image and set it back to default. You will need to upload a new one to change it again. Are you sure? -link.messages.back=Zur\u00fcck zur Nachrichtenliste -link.messages.compose=Nachricht erstellen -link.messages.mymessages=Meine Nachrichten -link.messages.viewthread=Thread anzeigen -link.my.friends=Kontakte -link.my.friends.search=Nach Kontakten suchen -link.my.friends.tooltip=Meine Kontakte anzeigen und verwalten -link.my.messages=Nachrichten -link.my.messages.tooltip=Private Nachrichten senden und lesen -link.my.pictures=Bilder -link.my.pictures.tooltip=Bilder hinzuf\u00fcgen und Galerie anzeigen -link.my.preferences=Einstellungen -link.my.preferences.tooltip=Meine Einstellungen verwalten -link.my.privacy=Privatsph\u00e4re -link.my.privacy.tooltip=Meine Privatsph\u00e4re verwalten link.my.profile=Mein Profil link.my.profile.tooltip=Mein Profil anzeigen und bearbeiten link.other.profile={0}'s profile -link.my.search=Suche -link.my.search.tooltip=Nach Personen suchen und deren Profil anzeigen link.profile.locked.false=M\u00f6chten Sie dieses Profil sperren? link.profile.locked.true=Profil wurde gesperrt. Entsperren? -link.status.clear=L\u00f6schen -link.status.update=Aktualisieren -link.tab.profile=Profil -link.tab.profile.tooltip=Profil anzeigen -link.tab.wall=Pinnwand -link.tab.wall.tooltip=Pinnwand anzeigen -link.title.confirmfriend=Kontaktanfrageanfrage best\u00e4tigen -link.title.ignorefriend=Kontaktanfrage ignorieren -link.title.removefriend=Kontakt entfernen link.title.rss=Personalisierten RSS-Feed anzeigen oder anpassen -link.title.unlinktwitter=Verkn\u00fcpfung zum Twitter-Konto aufheben -link.title.wall.comment=Das Pinnwandposting von {0} kommentieren -link.title.wall.remove=Von meiner Pinnwand entfernen -link.view.friends=Kontakte anzeigen -link.wall.item.comment=Kommentieren -link.wall.item.remove=Entfernen -link.worksite.create=Work-Site erstellen linkedinUrl.UrlValidator=Ung\u00fcltige URL -message.message=Nachricht -message.reply=Antworten -message.subject=Betreff -message.to=An mobilephone.PhoneNumberValidator=Ung\u00fcltige Telefonnummer -myspaceUrl.UrlValidator=Ung\u00fcltige URL page.title=Profil -palette.available=Verf\u00fcgbar -palette.selected=Ausgew\u00e4hlt -pictures.addpicture=Neue Bilddateien zur Galerie hinzuf\u00fcgen -pictures.filetypewarning=Only jpeg, png and gif files can be added to the gallery -pictures.removepicture=Dieses Bild aus der Galerie entfernen -pictures.removepicture.confirm=M\u00f6chten Sie dieses Bild wirklich aus Ihrer Galerie entfernen? -pictures.setprofileimage=Dieses Bild als mein Profilbild festlegen -pictures.setprofileimage.confirm=M\u00f6chten Sie Ihr aktuelles Profilbild wirklich durch dieses Bild ersetzen? preference.option.off=Aus preference.option.on=Ein -preferences.email.confirms=Best\u00e4tigt meine Kontaktsanfrage -preferences.email.message=Ich m\u00f6chte per E-Mail unter {0} benachrichtigt werden, wenn jemand\: -preferences.email.message.new=Mir eine neue Nachricht gesendet hat -preferences.email.message.reply=Auf meine Nachrichten geantwortet hat -preferences.email.none=(KEINE E-MAIL-ADRESSE ANGEGEBEN) -preferences.email.requests=Mich als Kontakt hinzuf\u00fcgt -preferences.email.wall.new=Auf meiner Pinnwand gepostet hat -preferences.email.worksite.new=Mich zu einer neuen Work-Site hinzugef\u00fcgen preferences.image.gravatar=Meinen Gravatar als Profilbild verwenden -preferences.image.message=Profilbildeinstellungen konfigurieren preferences.image.official=Offizielles Bild des Instituts als Profilbild verwenden -preferences.twitter.message=Ihre Statusaktualisierungen k\u00f6nnen auch den Status Ihres Twitter-Kontos aktualisieren -preferences.widget.gallery=Meine Bilder anzeigen -preferences.widget.gallery.tooltip=Bei Aktivierung dieser Funktion werden Ihre Bilder in Ihrem Profil angezeigt. -preferences.widget.kudos=Meine Erfahrungspunkte anzeigen -preferences.widget.kudos.tooltip=Ihre Erfahrungspunkte werden auf Ihrem Profil angezeigt, sobald Ihr Wert berechnet wurde -preferences.widget.message=Auf Ihrem Profil angezeigte Widgets festlegen -preferences.widget.onlinestatus=Meinen Online-Status anzeigen -preferences.widget.onlinestatus.tooltip=Zeigt an, ob Sie online sind oder nicht. Bei Aktivierung dieser Funktion k\u00f6nnen Sie diesbez\u00fcglich weitere Konfigurationen in Ihren Privatsph\u00e4re-Einstellungen vornehmen. Bei Deaktivierung dieser Funktion werden Sie im Offline-Status angezeigt -privacy.academicinfo=Akademische Daten -privacy.basicinfo=Basisdaten -privacy.birthyear=Geburtsjahr anzeigen -privacy.businessinfo=Gesch\u00e4ftliche Daten -privacy.contactinfo=Kontaktdaten -privacy.messages=Wer kann mir Nachrichten senden -privacy.myfriends=Wer kann meine Kontakte einsehen -privacy.mykudos=Wer kann meine Erfahrungspunkte einsehen -privacy.mypictures=Wer kann meine Bilder einsehen -privacy.mystatus=Wer kann meinen Status einsehen -privacy.mywall=Wer kann meine Pinnwand und meine Postings auf anderen Pinnw\u00e4nden einsehen -privacy.onlinestatus=Wer kann meinen Online-Status einsehen -privacy.option.everyone=Jeder -privacy.option.nobody=Niemand -privacy.option.onlyfriends=Nur meine Kontakte -privacy.option.onlyme=Nur ich -privacy.personalinfo=Personenbezogene Daten -privacy.profileimage=Profilbild -privacy.search=Suche -privacy.socialinfo=Soziale Daten -privacy.staffinfo=Mitarbeiterdaten -privacy.studentinfo=Studierendendaten -profile.academicprofileurl=Akademische/Forschungs-URL profile.birthday=Geburtstag -profile.business.bio=Beruflicher Werdegang -profile.business.company.description=Unternehmensbeschreibung -profile.business.company.name=Unternehmensname -profile.business.company.profile=Profil -profile.business.company.profiles=Unternehmensprofile -profile.business.company.web=Webadresse des Unternehmens -profile.business.update=Gesch\u00e4ftliche Daten im Profil aktualisiert profile.contact.update=Kontaktdaten im Profil aktualisiert -profile.course=Abschluss/Kurs -profile.department=Institut profile.email=E-Mail -profile.favourite.books=Lieblingsb\u00fccher -profile.favourite.movies=Lieblingsfilme -profile.favourite.quotes=Lieblingszitate -profile.favourite.tv=Lieblings-TV-Shows -profile.gallery.image.alt=My Pictures -profile.gallery.image.upload=In die Bildergalerie des Profils hochgeladen -profile.homepage=Startseite profile.image.change.upload=Profilbild ge\u00e4ndert profile.image.change.url=Profilbild ge\u00e4ndert profile.info.update=Basisdaten im Profil aktualisiert -profile.interests.update=Personenbezogene Daten im Profil aktualisiert -profile.name.first=Vorname -profile.name.first.none=Benutzer -profile.name.last=Nachname -profile.name.middle=Zweiter Vorname -profile.name.recording=Name Recording profile.nickname=Nickname profile.phonetic=Phonetic Pronunciation profile.phonetic.clear.recording.label=Clear existing recording @@ -375,133 +92,28 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=Fax -profile.phone.home=Telefon privat profile.phone.mobile=Telefon mobil -profile.phone.work=Telefon gesch\u00e4ftlich -profile.position=Position -profile.publications=Ver\u00f6ffentlichungen und Tagungen -profile.room=Raum -profile.school=Hochschule profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook-URL profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn-URL -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace-URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Skype-Benutzername -profile.socialnetworking.skype.link=Skype Me -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter-URL profile.socialnetworking.update=Social Networking-Details im Profil aktualisiert -profile.staff.update=Mitarbeiterdaten im Profil aktualisiert -profile.staffprofile=Mitarbeiterprofil -profile.student.update=Studierendendaten im Profil aktualisiert profile.subjects=F\u00e4cher profile.summary=Pers\u00f6nliche Zusammenfassung profile.universityprofileurl=Universit\u00e4tsprofil-URL -success.message.send.ok=Nachricht gesendet success.preferences.save.ok=Speicherung erfolgreich -success.privacy.save.ok=Speicherung erfolgreich text.edit.other.warning=Achtung\: Sie bearbeiten Daten von {0}. -text.friend.add={0} muss Ihre Anfrage best\u00e4tigen. -text.friend.already=Sie haben {0} bereits zu Ihren Kontakten hinzugef\u00fcgt. -text.friend.already.pending=Zwischen Ihnen und {0} liegt bereits eine Kontaktanfrage vor. -text.friend.cancel=M\u00f6chten Sie die Kontaktanfrage an {0} wirklich widerrufen? Diese Person wird nicht benachrichtigt. -text.friend.confirm=Hiermit best\u00e4tigen Sie die Kontaktanfrage von {0}. -text.friend.confirmed=Sie sind verbunden -text.friend.feed.num.many={0} Kontakte -text.friend.feed.num.none=0 Kontakte -text.friend.feed.num.one=1 Kontakte -text.friend.ignore=M\u00f6chten Sie die Kontaktanfrage von {0} wirklich ignorieren? Diese Person wird nicht benachrichtigt. -text.friend.none=Sie sind nicht mit {0} verbunden. -text.friend.pending=Kontaktanfrage liegt zur Beantwortung vor -text.friend.remove=M\u00f6chten Sie die Verbindung zu {0} wirklich aufheben? Diese Person wird nicht benachrichtigt. -text.friend.requested=Kontaktanfrage gesendet -text.friend.self=Das sind Sie\! -text.gallery.feed.num.none=0 Bilder -text.gallery.pictures.num.none=In Ihrer Bildergalerie sind noch keine Bilder. -text.gallery.upload.tooltip=Laden Sie Galeriebilder von Ihrem Computer hoch. Die Gesamtgr\u00f6\u00dfe der hochzuladenden Bilder darf {0} MB nicht \u00fcbersteigen. text.image.refresh=Note\: If the new image doesn't appear immediately, try refreshing your browser. text.image.url=Geben Sie die URL eines Bildes ein, das Sie als Profilbild verwenden m\u00f6chten. -text.messages.none=Keine Nachrichten text.name.pronunciation.description=Allows you to provide written phonetic pronunciation and/or audio recordings of your name.
This pronunciation will be visible to instructors / students enrolled in your course sites. text.no.fields=Sie haben bislang noch keine Daten angegeben -text.no.status=Erz\u00e4hl etwas text.or=or -text.privacy.academicinfo.tooltip=Legen Sie fest, wer Ihre akademischen Daten, z. B. Informationen zu Hochschule, Institut oder Kurs, einsehen darf. -text.privacy.basicinfo.tooltip=Legen Sie fest, wer Ihre Basisdaten, z. B. Nickname und Geburtsdatum, einsehen darf. -text.privacy.birthyear.tooltip=Legen Sie fest, ob Sie Ihr Geburtsjahr anzeigen oder ausblenden m\u00f6chten. Angekreuzt bedeutet sichtbar. -text.privacy.businessinfo.tooltip=Legen Sie fest, wer Ihre gesch\u00e4ftlichen Daten wie Branche, Position und beruflicher Werdegang einsehen darf. -text.privacy.cannot.modify=Diese Werte wurden von Ihrem Administrator gesperrt und k\u00f6nnen nicht ge\u00e4ndert werden. -text.privacy.contactinfo.tooltip=Legen Sie fest, wer Angaben wie Ihre E-Mail-Adressen und Telefonnummern einsehen darf. -text.privacy.messages.tooltip=Legen Sie fest, wer Ihnen Nachrichten senden darf. -text.privacy.myfriends.tooltip=Legen Sie fest, wer Ihre Verbindungsliste einsehen darf. -text.privacy.mykudos.tooltip=Legen Sie fest, wer Ihre Erfahrungspunkte einsehen darf (falls diese Funktion in den Einstellungen aktiviert ist). -text.privacy.mypictures.tooltip=Legen Sie fest, wer Ihre Bildergalerie einsehen darf. -text.privacy.mystatus.tooltip=Legen Sie fest, wer Ihre Statusaktualisierungen einsehen darf. -text.privacy.mywall.tooltip=Legen Sie fest, wer Ihre Pinnwand einsehen darf. -text.privacy.onlinestatus.tooltip=Legen Sie fest, wer Ihren Online-Status einsehen darf. Sie werden allen anderen im Offline-Status angezeigt. -text.privacy.personalinfo.tooltip=Legen Sie fest, wer Ihre Lieblingsb\u00fccher und Lieblings-TV-Shows etc. einsehen darf. -text.privacy.profileimage.tooltip=Legen Sie fest, wer Ihr Profilbild einsehen darf. -text.privacy.socialinfo.tooltip=Legen Sie fest, wer Ihre Social Networking-Daten wie Facebook-, LinkedIn- und MySpace-Profile einsehen darf. -text.privacy.staff.tooltip=Legen Sie fest, wer Ihre Mitarbeiterdaten einsehen darf. -text.privacy.student.tooltip=Legen Sie fest, wer Ihre Studierendendaten einsehen darf. -text.profile.birthyear.tooltip=Sie k\u00f6nnen in den Privatsph\u00e4re-Einstellungen festlegen, ob Sie Ihr Geburtsjahr anzeigen oder ausblenden m\u00f6chten text.profile.facebook.tooltip=z. B. http\://www.facebook.com/user text.profile.linkedin.tooltip=z. B.. http\://www.linkedin.com/pub/user text.profile.locked.false=Ist ein Profil gesperrt, kann der Benutzer seine Daten nicht bearbeiten. text.profile.locked.true=Wird ein Profil entsperrt, kann der Benutzer seine Daten wieder bearbeiten. -text.profile.myspace.tooltip=z. B. http\://myspace.com/user -text.profile.presence.away={0} ist abwesend -text.profile.presence.offline={0} ist nicht verf\u00fcgbar -text.profile.presence.online={0} ist online -text.profile.twitter.tooltip=z. B. http\://twitter.com/sakaiproject -text.search.byinterest.all.results={0} Ergebnisse anzeigen f\u00fcr\: {1} -text.search.byinterest.label=Gemeinsame Interessen -text.search.byinterest.no.results=Niemand teilt Ihr Interesse {0}. -text.search.byinterest.one.result=1 Ergebnis anzeigen f\u00fcr\: {0} -text.search.byinterest.paged.results={0} Ergebnisse anzeigen f\u00fcr (bis zu {1} Ergebnisse pro Seite)\: {2} -text.search.byinterest.tooltip=Geben Sie ein Interesse ein, z. B. \u201eRadfahren\u201c, um nach Personen mit \u00e4hnlichen Interessen zu suchen -text.search.byname.all.results={0} Ergebnisse anzeigen f\u00fcr\: {1} -text.search.byname.label=Name ode Email der Person -text.search.byname.no.results=F\u00fcr {0} liegen keine \u00fcbereinstimmenden Ergebnisse vor. -text.search.byname.one.result=1 Ergebnis anzeigen f\u00fcr\: {0} -text.search.byname.paged.results={0} Ergebnisse anzeigen f\u00fcr (bis zu {1} Ergebnisse pro Seite)\: {2} -text.search.byname.tooltip=Geben Sie einen Namen oder eine E-Mail-Adresse ein, um nach Personen zu suchen -text.search.history=Bisherige Suchen -text.search.include.connections=Kontakte in Suchergebnisse aufnehmen -text.search.include.worksite=Suche auf ausgew\u00e4hlte Work-Site begrenzen -text.search.no.input=Ihre Eingabe ist leer -text.search.no.results=F\u00fcr {0} liegen keine \u00fcbereinstimmenden Ergebnisse vor. -text.search.no.worksite=Sie sind noch kein Mitglied einer Work-Site. -text.search.paged.results={0} bis {1} von {2} Ergebnissen anzeigen f\u00fcr\: {3} -text.search.terms.label=Suchbegriffe -text.search.terms.tooltip=Geben Sie Suchbegriffe f\u00fcr die Suche nach Namen/E-Mail-Adresse oder Interessen ein. -text.search.toomany.results=Ihre Suche nach {0} ergab {1} oder mehr Suchergebnisse. Nur die ersten {1} werden angezeigt. text.upload.image.file=W\u00e4hlen Sie eine Bilddatei auf Ihrem Computer aus (max {0} MB)\: text.view.profile.nothing=Nicht jeder kann die Daten dieser Person einsehen oder diese Person hat keine Profildaten zur Anzeige ausgew\u00e4hlt -text.view.wall.nothing=Derzeit befinden sich auf der Pinnwand von {0} keine Eintr\u00e4ge. Seien Sie der Erste und posten Sie etwas\! -text.view.wall.restricted=Nur die Kontakte von {0} k\u00f6nnen diese Pinnwand einsehen. F\u00fcgen Sie {0} als Verbindung hinzu, um die Pinnwand anzuzeigen und Postings zu hinterlassen. -text.wall.no.items=Derzeit befinden sich auf Ihrer Pinnwand keine anzuzeigenden Eintr\u00e4ge. -text.wall.remove.mine=M\u00f6chten Sie das Posting von Ihrer Pinnwand entfernen? -text.wall.remove.other=Nachricht von {0} von Ihrer Pinnwand entfernen? -text.worksite.create=W\u00e4hlen Sie aus verf\u00fcgbaren Personen aus und erstellen Sie eine neue Work-Site. -text.worksite.refresh=Aktualisieren Sie Ihren Browser, um danach auf die neue Work-Site zugreifen zu k\u00f6nnen. title.change.profile.picture=Ihr Profilbild \u00e4ndern -title.friend.add={0} als Verbindung hinzuf\u00fcgen? -title.friend.cancel=Kontaktanfrage widerrufen -title.friend.confirm=Kontaktanfrage von {0} best\u00e4tigen? -title.friend.ignore=Kontaktanfrage ignorieren? -title.friend.remove=Verbindung aufheben? -title.message.compose=Neue Nachricht erstellen -title.wall.comment=Das Pinnwandposting von {0} kommentieren -title.wall.remove=Von Pinnwand entfernen? -twitter.auth.do=Twitter-Konto verkn\u00fcpfen -twitter.auth.linked=Twitter-Konto verkn\u00fcpft -twitter.enabled=Twitter-Integration aktivieren -twitterUrl.UrlValidator=Ung\u00fcltige URL urlField.Required=Sie haben keine URL angegeben -workphone.PhoneNumberValidator=Ung\u00fcltige Telefonnummer worksite.name=Bezeichnung der Work-Site diff --git a/profile2/api/src/resources/ProfileApplication_en_AU.properties b/profile2/api/src/resources/ProfileApplication_en_AU.properties index 255c1693809d..30b0f233249d 100644 --- a/profile2/api/src/resources/ProfileApplication_en_AU.properties +++ b/profile2/api/src/resources/ProfileApplication_en_AU.properties @@ -4,110 +4,35 @@ Required = All fields are required RequiredValidator = '${label}' is required -accessibility.connection.add = Add {0} as a connection? -accessibility.connection.confirm = Confirm {0}'s connection request? -accessibility.connection.ignore = Ignore {0}'s connection request? -accessibility.connection.remove = Remove {0} from your connections? accessibility.edit.basic = Edit Personal Information -accessibility.edit.business = Edit Business Information accessibility.edit.contact = Edit Basic Information -accessibility.edit.personal = Edit Contact Information accessibility.edit.social = Edit Social Networking Information -accessibility.edit.staff = Edit Staff Information -accessibility.edit.student = Edit Student Information accessibility.messages.unread = Unread message -accessibility.prefs.confirms.off = Email me when someone confirms my connection request, disabled -accessibility.prefs.confirms.on = Email me when someone confirms my connection request, enabled -accessibility.prefs.gallery = Show my pictures on my profile accessibility.prefs.gravatar = Use my gravatar as my profile image -accessibility.prefs.kudos = Show my kudos rating on my profile -accessibility.prefs.messagenew.off = Email me when someone sends me a new message, disabled -accessibility.prefs.messagenew.on = Email me when someone sends me a new message, enabled -accessibility.prefs.messagereply.off = Email me when someone replies to one of my messages, disabled -accessibility.prefs.messagereply.on = Email me when someone replies to one of my messages, enabled accessibility.prefs.officialimage = Use the official institutional image as my profile image accessibility.prefs.overview = Email notification preferences accessibility.prefs.requests.off = Email me when someone adds me as a connection, disabled accessibility.prefs.requests.on = Email me when someone adds me as a connection, enabled -accessibility.privacy.academic = Choose who can see your academic information like school, department or course. -accessibility.privacy.basic = Choose who can see your basic information like nickname and birthday. -accessibility.privacy.birthyear = Choose whether or not to show or hide your birth year. Ticked means visible. -accessibility.privacy.business = Choose who can see your business information, like industry, position and business bio. -accessibility.privacy.contact = Choose who can see things like your email addresses and phone numbers. -accessibility.privacy.friends = Choose who can view your list of connections. -accessibility.privacy.image = Choose who can see your profile picture. -accessibility.privacy.kudos = Choose who can see your kudos rating (if enabled in Preferences). -accessibility.privacy.messages = Choose who can send you messages. -accessibility.privacy.overview = Control who can see what parts of your profile -accessibility.privacy.personal = Choose who can see your favourite books and tv shows etc. -accessibility.privacy.pictures = Choose who can see your picture gallery. -accessibility.privacy.social = Choose who can see your social networking information, such as your Facebook, LinkedIn and MySpace profiles. -accessibility.privacy.staff = Choose who can see your staff information -accessibility.privacy.status = Choose who can see your status updates. -accessibility.privacy.student = Choose who can see your student information -accessibility.profile.birthday = Select your birth date. You can control the display of your birth year in your Preferences. -accessibility.profile.status.clear = Clear your status -button.business.add.profile = Add company profile -button.business.remove.profile = Remove company profile button.cancel = Cancel button.close = Close button.edit = Edit -button.friend.add = Add connection -button.friend.cancel = Cancel connection request -button.friend.confirm = Confirm connection request -button.friend.ignore = Ignore connection request -button.friend.remove = Remove connection -button.gallery.remove = Remove picture -button.gallery.remove.confirm = Confirm removal -button.gallery.setprofile = Set as profile image -button.gallery.setprofile.confirm = Confirm new profile image -button.gallery.upload = Upload chosen files button.link = Link -button.message.reply = Reply -button.message.send = Send Message button.save = Save button.save.changes = Save changes button.save.settings = Save settings button.sayit = Say it -button.search.byinterest = Search by common interest -button.search.byname = Search by name or email -button.search.clear = Clear search -button.search.history.clear = Clear history button.upload = Upload button.url.add = Add URL -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator = Invalid email address - error.empty.file.uploaded = You tried to upload an empty file error.file.save.failed = Saving the file failed -error.friend.add.failed = An error occurred sending a connection request to {0}. -error.friend.already.confirmed = You are already connected to {0}. -error.friend.already.pending = There is already a connection request pending with {0}. -error.friend.confirm.failed = An error occurred confirming {0}'s connection request. -error.friend.ignore.failed = An error occurred ignoring {0}'s connection request. -error.friend.not.friend = You are not connected to {0} so they cannot be removed! -error.friend.not.pending.confirm = There is no pending connection request from {0} so you cannot confirm it! -error.friend.not.pending.ignore = There is no pending connection request from {0} so you cannot ignore it! -error.friend.remove.failed = An error occurred removing {0} from your connections list. -error.gallery.remove.failed = Unable to remove picture from gallery -error.gallery.setprofile.failed = Unable to set picture as profile image -error.gallery.upload.warning = Choose file(s) first error.invalid.image.type = Only images of types PNG, JPG, and GIF are allowed. -error.message.required.body = The message cannot be blank -error.message.required.to = You must choose a connection to send the message to -error.message.send.failed = An error occurred sending your message error.no.file.uploaded = You didn't choose a file error.password.required = Password is required error.preferences.save.failed = Save failed -error.privacy.save.failed = Save failed -error.profile.save.academic.failed = Save failed -error.profile.save.business.failed = Save failed error.profile.save.contact.failed = Save failed error.profile.save.info.failed = Save failed -error.profile.save.interests.failed = Save failed -error.twitter.details.invalid = Your Twitter credentials could not be verified error.url.save.failed = Saving the url failed error.username.required = Username is required @@ -116,279 +41,64 @@ exception.text.session.expired = Unfortunately, your session has expired. Try facebookUrl.UrlValidator = Invalid URL -facsimile.PhoneNumberValidator = Invalid phone number - form.uploadTooLarge = The upload must be less than ${maxSize} -heading.academic = Academic Information -heading.academic.edit = Academic Information heading.basic = Basic Information heading.basic.edit = Basic Information -heading.business = Business Information -heading.business.edit = Business Information heading.contact = Contact Information heading.contact.edit = Contact Information -heading.friend.requests = Connection requests - -heading.friends.my = My connections - -heading.friends.view = {0}'s connections - -heading.interests = Personal Information -heading.interests.edit = Personal Information -heading.messages = My messages -heading.pictures.addpicture = Add picture -heading.pictures.my.pictures = My pictures -heading.pictures.view.pictures = {0}'s pictures heading.preferences = Preferences -heading.privacy = Privacy settings -heading.section.academic.staff = For staff: -heading.section.academic.students = For students: heading.section.email = Email notifications heading.section.image = Profile image settings -heading.section.twitter = Twitter integration heading.section.widget = Widget settings heading.social = Social Networking heading.social.edit = Social Networking -heading.staff = Staff Information -heading.staff.edit = Staff Information -heading.student = Student Information -heading.student.edit = Student Information -heading.widget.my.friends = My connections -heading.widget.my.kudos = My kudos -heading.widget.my.pictures = My pictures -heading.widget.view.friends = {0}'s connections -heading.widget.view.kudos = {0}'s kudos -heading.widget.view.pictures = {0}'s pictures - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator = Invalid URL - -homephone.PhoneNumberValidator = Invalid phone number link.change.profile.picture = Change picture link.edit = Edit link.edit.info = Edit information -link.friend.add = Add as a connection -link.friend.add.name = Add {0} as a connection -link.friend.feed.search = Search for connections -link.friend.feed.view = View all connections -link.friend.remove = Remove connection -link.friend.request.act = Act on this request -link.friend.search = Search for some connections? -link.gallery.feed.addnew = Add new picture -link.gallery.feed.view = View all pictures -link.gallery.image.view = View image -link.messages.back = Back to message list -link.messages.compose = Compose message -link.messages.mymessages = My messages -link.messages.viewthread = View thread -link.my.friends = Connections -link.my.friends.search = Search for connections -link.my.friends.tooltip = View and manage your connections -link.my.messages = Messages -link.my.messages.tooltip = Send and read private messages -link.my.pictures = Pictures -link.my.pictures.tooltip = Add pictures and view your gallery link.my.preferences = Preferences link.my.preferences.tooltip = Manage your preferences -link.my.privacy = Privacy -link.my.privacy.tooltip = Manage your privacy link.my.profile = My profile link.my.profile.tooltip = View and edit your profile -link.my.search = Search -link.my.search.tooltip = Search for people and view their profiles link.profile.locked.false = Lock this profile? link.profile.locked.true = Profile locked. Unlock? -link.status.clear = Clear -link.status.update = Update -link.title.confirmfriend = Confirm connection request -link.title.ignorefriend = Ignore connection request -link.title.removefriend = Remove connection link.title.rss = View or customise your personalised RSS feed -link.title.unlinktwitter = Unlink Twitter account -link.view.friends = View connections linkedinUrl.UrlValidator = Invalid URL -message.message = Message -message.reply = Reply -message.subject = Subject -message.to = To - mobilephone.PhoneNumberValidator = Invalid phone number -myspaceUrl.UrlValidator = Invalid URL - page.title = Profile -pictures.addpicture = Add new picture files to the gallery -pictures.removepicture = Remove this picture from the gallery -pictures.removepicture.confirm = Are you sure you want to remove this picture from your gallery? -pictures.setprofileimage = Set this picture as my profile image -pictures.setprofileimage.confirm = Are you sure you want to replace your current profile image with this image? - preference.option.off = Off preference.option.on = On -preferences.email.confirms = Confirms my connection request -preferences.email.message = Email me at {0} when someone: -preferences.email.message.new = Sends me a new message -preferences.email.message.reply = Replies to one of my messages -preferences.email.none = (NO EMAIL ADDRESS SET) -preferences.email.requests = Adds me as a connection preferences.image.gravatar = Use my gravatar as my profile image preferences.image.message = Configure settings related to your profile image preferences.image.official = Use the official institutional image as my profile image -preferences.twitter.message = Your status updates can also update your Twitter account -preferences.widget.gallery = Show my pictures -preferences.widget.gallery.tooltip = Your pictures will appear on your Profile if checked. -preferences.widget.kudos = Show my kudos rating -preferences.widget.kudos.tooltip = Your kudos rating will appear on your Profile once your score has been calculated. -preferences.widget.message = Control which widgets appear on your profile - -privacy.academicinfo = Academic Info -privacy.basicinfo = Basic Info -privacy.birthyear = Show Birth Year -privacy.businessinfo = Business Info -privacy.contactinfo = Contact Info -privacy.messages = Who can send me messages? -privacy.myfriends = Who can view my connections? -privacy.mykudos = Who can see my kudos rating? -privacy.mypictures = Who can view my pictures? -privacy.mystatus = Who can see my status updates? -privacy.onlinestatus = Who can see my online status? -privacy.option.everyone = Everyone -privacy.option.nobody = Nobody -privacy.option.onlyfriends = Only my connections -privacy.option.onlyme = Only me -privacy.personalinfo = Personal Info -privacy.profileimage = Profile Image -privacy.search = Search -privacy.socialinfo = Social Info -privacy.staffinfo = Staff Info -privacy.studentinfo = Student Info -profile.academicprofileurl = Academic/research URL -profile.birthday = Birthday -profile.business.bio = Business biography -profile.business.company.description = Company description -profile.business.company.name = Company name -profile.business.company.profile = Profile -profile.business.company.profiles = Company profiles -profile.business.company.web = Company web address -profile.course = Degree/Course -profile.department = Department profile.email = Email -profile.favourite.books = Favourite books -profile.favourite.movies = Favourite movies -profile.favourite.quotes = Favourite quotes -profile.favourite.tv = Favourite TV shows -profile.homepage = Home page -profile.name.first = First Name -profile.name.first.none = User -profile.name.last = Last Name -profile.name.middle = Middle Name profile.nickname = Nickname -profile.phone.facsimile = Facsimile -profile.phone.home = Home phone profile.phone.mobile = Mobile phone -profile.phone.work = Work phone -profile.position = Position -profile.publications = Publications and conferences -profile.room = Room -profile.school = School profile.socialnetworking.facebook = Facebook profile.socialnetworking.facebook.edit = Facebook URL profile.socialnetworking.linkedin = LinkedIn profile.socialnetworking.linkedin.edit = LinkedIn URL -profile.socialnetworking.myspace = MySpace -profile.socialnetworking.myspace.edit = MySpace URL -profile.socialnetworking.skype = Skype -profile.socialnetworking.skype.edit = Skype username -profile.socialnetworking.skype.link = Skype Me -profile.socialnetworking.twitter = Twitter -profile.socialnetworking.twitter.edit = Twitter URL -profile.staffprofile = Staff profile -profile.subjects = Subjects profile.summary = Personal summary -profile.universityprofileurl = University profile URL -success.message.send.ok = Message sent success.preferences.save.ok = Saved successfully -success.privacy.save.ok = Saved successfully text.edit.other.warning = Caution: You are editing {0}'s information. -text.friend.add = {0} will have to confirm your request. -text.friend.already = You are already connected to {0}. -text.friend.already.pending = There is already a connection request pending between you and {0}. -text.friend.cancel = Are you sure you want to cancel your pending connection request to {0}? They will not be notified. -text.friend.confirm = This will confirm {0}'s connection request. -text.friend.confirmed = You are connected -text.friend.feed.num.many = {0} connections -text.friend.feed.num.none = 0 connections -text.friend.feed.num.one = 1 connection -text.friend.ignore = Are you sure you want to ignore {0}'s connection request? They will not be notifed. -text.friend.none = You are not connected to {0}. -text.friend.pending = Connection request pending -text.friend.remove = Are you sure you want to remove {0} as a connection? They will not be notified. -text.friend.requested = Connection requested -text.friend.self = This is you! -text.gallery.feed.num.none = 0 pictures -text.gallery.pictures.num.none = Your gallery doesn't contain any pictures yet. -text.gallery.upload.tooltip = Upload gallery images from your computer. The combined size of the images to upload should not exceed {0}MB. text.image.refresh = Note: If the new image doesn't appear immediately, try refreshing your browser. text.image.url = Enter the URL of an image to use as your profile picture -text.messages.none = No messages text.no.fields = You haven't filled out any information yet text.no.status = Say something -text.privacy.academicinfo.tooltip = Choose who can see your academic information like school, department or course. -text.privacy.basicinfo.tooltip = Choose who can see your basic information like nickname and birthday. -text.privacy.birthyear.tooltip = Choose whether or not to show or hide your birth year. Ticked means visible. -text.privacy.businessinfo.tooltip = Choose who can see your business information, like industry, position and business bio. -text.privacy.cannot.modify = These values are locked by your administrator and cannot be changed. -text.privacy.contactinfo.tooltip = Choose who can see things like your email addresses and phone numbers. -text.privacy.messages.tooltip = Choose who can send you messages. -text.privacy.myfriends.tooltip = Choose who can view your list of connections. -text.privacy.mykudos.tooltip = Choose who can see your kudos rating (if enabled in Preferences). -text.privacy.mypictures.tooltip = Choose who can see your picture gallery. -text.privacy.mystatus.tooltip = Choose who can see your status updates. -text.privacy.personalinfo.tooltip = Choose who can see your favourite books and tv shows etc. -text.privacy.profileimage.tooltip = Choose who can see your profile picture. -text.privacy.socialinfo.tooltip = Choose who can see your social networking information, such as your Facebook, LinkedIn and MySpace profiles. -text.privacy.staff.tooltip = Choose who can see your staff information -text.privacy.student.tooltip = Choose who can see your student information -text.profile.birthyear.tooltip = You can choose to show/hide your birthyear in your Privacy settings text.profile.locked.false = Locking a profile means the user cannot edit their information. text.profile.locked.true = Unlocking a profile will allow a user to edit their information. -text.search.byinterest.all.results = Displaying {0} results for: {1} -text.search.byinterest.no.results = There are no people with common interests matching {0}. -text.search.byinterest.one.result = Displaying 1 result for: {0} -text.search.byinterest.paged.results = Displaying {0} results (up to {1} results per page) for: {2} -text.search.byinterest.tooltip = Enter an interest, eg 'cycling' to find people with similar interests -text.search.byname.all.results = Displaying {0} results for: {1} -text.search.byname.no.results = There are no results matching {0}. -text.search.byname.one.result = Displaying 1 result for: {0} -text.search.byname.paged.results = Displaying {0} results (up to {1} results per page) for: {2} -text.search.byname.tooltip = Enter a name or e-mail address to find people -text.search.no.input = You didn't enter anything -text.search.no.results = There are no results for {0}. -text.search.paged.results = Displaying {0} - {1} out of {2} results for: {3} -text.search.toomany.results = Your search for {0} returned {1} or more results. Only the first {1} have been provided. text.upload.image.file = Select an image file on your computer (max {0}MB): text.view.profile.nothing = This person has restricted viewing of their information or has no profile information to share. title.change.profile.picture = Change your profile picture -title.friend.add = Add {0} as a connection? -title.friend.cancel = Cancel connection request? -title.friend.confirm = Confirm {0}'s connection request? -title.friend.ignore = Ignore connection request? -title.friend.remove = Remove connection? -title.message.compose = Compose new message - -twitter.auth.do = Link Twitter account -twitter.auth.linked = Twitter account linked -twitter.enabled = Enable Twitter integration - -twitterUrl.UrlValidator = Invalid URL urlField.Required = You didn't enter a URL - -workphone.PhoneNumberValidator = Invalid phone number diff --git a/profile2/api/src/resources/ProfileApplication_en_US_DEBUG.properties b/profile2/api/src/resources/ProfileApplication_en_US_DEBUG.properties index 0e9be794ccef..5b40d3a81c08 100644 --- a/profile2/api/src/resources/ProfileApplication_en_US_DEBUG.properties +++ b/profile2/api/src/resources/ProfileApplication_en_US_DEBUG.properties @@ -13,62 +13,23 @@ RequiredValidator = ** RequiredValidator** UrlValidator = ** UrlValidator** -button.business.add.profile = ** button.business.add.profile** -button.business.remove.profile = ** button.business.remove.profile** button.cancel = ** button.cancel** button.close = ** button.close** button.edit = ** button.edit** -button.friend.add = ** button.friend.add** -button.friend.cancel = ** button.friend.cancel** -button.friend.confirm = ** button.friend.confirm** -button.friend.ignore = ** button.friend.ignore** -button.friend.remove = ** button.friend.remove** -button.gallery.remove = ** button.gallery.remove** -button.gallery.remove.confirm = ** button.gallery.remove.confirm** -button.gallery.setprofile = ** button.gallery.setprofile** -button.gallery.setprofile.confirm = ** button.gallery.setprofile.confirm ** -button.gallery.upload = ** button.gallery.upload** -button.message.backtolist = ** button.message.backtolist** -button.message.new = ** button.message.new** -button.message.reply = ** button.message.reply** -button.message.send = ** button.message.send** button.save.changes = ** button.save.changes** button.save.settings = ** button.save.settings** button.sayit = ** button.sayit** -button.search.byinterest = ** button.search.byinterest** -button.search.byname = ** button.search.byname** button.upload = ** button.upload** button.url.add = ** button.url.add** error.empty.file.uploaded = ** error.empty.file.uploaded** error.file.save.failed = ** error.file.save.failed** -error.friend.add.failed = ** error.friend.add.failed** -error.friend.already.confirmed = ** error.friend.already.confirmed** -error.friend.already.pending = ** error.friend.already.pending** -error.friend.confirm.failed = ** error.friend.confirm.failed** -error.friend.ignore.failed = ** error.friend.ignore.failed** -error.friend.not.friend = ** error.friend.not.friend** -error.friend.not.pending.confirm = ** error.friend.not.pending.confirm** -error.friend.not.pending.ignore = ** error.friend.not.pending.ignore** -error.friend.remove.failed = ** error.friend.remove.failed** -error.gallery.remove.failed = ** error.gallery.remove.failed** -error.gallery.setprofile.failed = ** error.gallery.setprofile.failed** -error.gallery.upload.warning = ** error.gallery.upload.warning** error.invalid.image.type = ** error.invalid.image.type** -error.message.required.body = ** error.message.required.body** -error.message.required.to = ** error.message.required.to** -error.message.send.failed = ** error.message.send.failed** error.no.file.uploaded = ** error.no.file.uploaded** error.password.required = ** error.password.required** error.preferences.save.failed = ** error.preferences.save.failed** -error.privacy.save.failed = ** error.privacy.save.failed** -error.profile.save.academic.failed = ** error.profile.save.academic.failed** -error.profile.save.business.failed = ** error.profile.save.business.failed** error.profile.save.contact.failed = ** error.profile.save.contact.failed** error.profile.save.info.failed = ** error.profile.save.info.failed** -error.profile.save.interests.failed = ** error.profile.save.interests.failed** -error.twitter.details.invalid = ** error.twitter.details.invalid** -error.twitter.details.required = ** error.twitter.details.required** error.url.save.failed = ** error.url.save.failed** error.username.required = ** error.username.required** @@ -77,240 +38,51 @@ exception.text.session.expired = ** exception.text.session.expired** form.uploadTooLarge = ** form.uploadTooLarge** -heading.academic = ** heading.academic** -heading.academic.edit = ** heading.academic.edit** heading.basic = ** heading.basic** heading.basic.edit = ** heading.basic.edit** -heading.business = ** heading.business** -heading.business.edit = ** heading.business.edit** heading.contact = ** heading.contact** heading.contact.edit = ** heading.contact.edit** -heading.feed.my.friends = ** heading.feed.my.friends** -heading.feed.my.pictures = ** heading.feed.my.pictures** -heading.feed.view.friends = ** heading.feed.view.friends** -heading.feed.view.pictures = ** heading.feed.view.pictures** -heading.friend.requests = ** heading.friend.requests** -heading.friends.my = ** heading.friends.my** -heading.friends.view = ** heading.friends.view** -heading.interests = ** heading.interests** -heading.interests.edit = ** heading.interests.edit** -heading.pictures.addpicture = ** heading.pictures.addpicture** -heading.pictures.my.pictures = ** heading.pictures.my.pictures** -heading.pictures.view.pictures = ** heading.pictures.view.pictures** heading.preferences = ** heading.preferences** -heading.privacy = ** heading.privacy** -heading.section.academic.staff = ** heading.section.academic.staff** -heading.section.academic.students = ** heading.section.academic.students** heading.section.email = ** heading.section.email** heading.section.image = ** heading.section.image** -heading.section.twitter = ** heading.section.twitter** heading.social = ** heading.social** heading.social.edit = ** heading.social.edit** -heading.staff = ** heading.staff** -heading.staff.edit = ** heading.staff.edit** -heading.student = ** heading.student** -heading.student.edit = ** heading.student.edit** link.change.profile.picture = ** link.change.profile.picture** link.edit = ** link.edit** link.edit.info = ** link.edit.info** -link.friend.add = ** link.friend.add** -link.friend.add.name = ** link.friend.add.name** -link.friend.feed.search = ** link.friend.feed.search** -link.friend.feed.view = ** link.friend.feed.view** -link.friend.remove = ** link.friend.remove** -link.friend.request.act = ** link.friend.request.act** -link.friend.search = ** link.friend.search** -link.gallery.feed.addnew = ** link.gallery.feed.addnew** -link.gallery.feed.view = ** link.gallery.feed.view** -link.gallery.image.view = ** link.gallery.image.view** -link.my.friends = ** link.my.friends** -link.my.friends.search = ** link.my.friends.search** -link.my.friends.tooltip = ** link.my.friends.tooltip** -link.my.messages = ** link.my.messages** -link.my.messages.tooltip = ** link.my.messages.tooltip** -link.my.pictures = ** link.my.pictures** -link.my.pictures.tooltip = ** link.my.pictures.tooltip** link.my.preferences = ** link.my.preferences** link.my.preferences.tooltip = ** link.my.preferences.tooltip** -link.my.privacy = ** link.my.privacy** -link.my.privacy.tooltip = ** link.my.privacy.tooltip** link.my.profile = ** link.my.profile** link.my.profile.tooltip = ** link.my.profile.tooltip** -link.my.search = ** link.my.search** -link.my.search.tooltip = ** link.my.search.tooltip** link.profile.locked.false = ** link.profile.locked.false** link.profile.locked.true = ** link.profile.locked.true** -link.status.clear = ** link.status.clear** -link.status.update = ** link.status.update** -link.title.confirmfriend = ** link.title.confirmfriend** -link.title.ignorefriend = ** link.title.ignorefriend** -link.title.removefriend = ** link.title.removefriend** link.title.rss = ** link.title.rss** -link.view.friends = ** link.view.friends** - -message.message = ** message.message** -message.reply = ** message.reply** -message.subject = ** message.subject** -message.to = ** message.to** - -pictures.addpicture = ** pictures.addpicture** -pictures.removepicture = ** pictures.removepicture** -pictures.removepicture.confirm = ** pictures.removepicture.confirm** -pictures.setprofileimage = ** pictures.setprofileimage** -pictures.setprofileimage.confirm = ** pictures.setprofileimage.confirm ** preference.option.off = ** preference.option.off** preference.option.on = ** preference.option.on** -preferences.email.confirms = ** preferences.email.confirms** -preferences.email.message = ** preferences.email.message** -preferences.email.message.new = ** preferences.email.message.new** -preferences.email.message.reply = ** preferences.email.message.reply** -preferences.email.none = ** preferences.email.none** -preferences.email.requests = ** preferences.email.requests** -preferences.image.message = ** preferences.image.message** preferences.image.official = ** preferences.image.official** -preferences.twitter.message = ** preferences.twitter.message** -preferences.twitter.password = ** preferences.twitter.password** -preferences.twitter.username = ** preferences.twitter.username** -privacy.academicinfo = ** privacy.academicinfo** -privacy.basicinfo = ** privacy.basicinfo** -privacy.birthyear = ** privacy.birthyear** -privacy.businessinfo = ** privacy.businessinfo** -privacy.contactinfo = ** privacy.contactinfo** -privacy.messages = ** privacy.messages** -privacy.myfriends = ** privacy.myfriends** -privacy.mypictures = ** privacy.mypictures** -privacy.mystatus = ** privacy.mystatus** -privacy.onlinestatus = ** privacy.onlinestatus** -privacy.option.everyone = ** privacy.option.everyone** -privacy.option.onlyfriends = ** privacy.option.onlyfriends** -privacy.option.onlyme = ** privacy.option.onlyme** -privacy.personalinfo = ** privacy.personalinfo** -privacy.profileimage = ** privacy.profileimage** -privacy.search = ** privacy.search** -privacy.socialinfo = ** privacy.socialinfo** -privacy.staffinfo = ** privacy.staffinfo** -privacy.studentinfo = ** privacy.studentinfo** - -profile.academicprofileurl = ** profile.academicprofileurl** -profile.birthday = ** profile.birthday** -profile.business.bio = ** profile.business.bio** -profile.business.company.description = ** profile.business.company.description** -profile.business.company.name = ** profile.business.company.name** -profile.business.company.profile = ** profile.business.company.profile** -profile.business.company.profiles = ** profile.business.company.profiles** -profile.business.company.web = ** profile.business.company.web** -profile.course = ** profile.course** -profile.department = ** profile.department** profile.email = ** profile.email** -profile.favourite.books = ** profile.favourite.books** -profile.favourite.movies = ** profile.favourite.movies** -profile.favourite.quotes = ** profile.favourite.quotes** -profile.favourite.tv = ** profile.favourite.tv** -profile.homepage = ** profile.homepage** -profile.name.first = ** profile.name.first** -profile.name.last = ** profile.name.last** -profile.name.middle = ** profile.name.middle** profile.nickname = ** profile.nickname** -profile.phone.facsimile = ** profile.phone.facsimile** -profile.phone.home = ** profile.phone.home** profile.phone.mobile = ** profile.phone.mobile** -profile.phone.work = ** profile.phone.work** -profile.position = ** profile.position** -profile.publications = ** profile.publications** -profile.room = ** profile.room** -profile.school = ** profile.school** profile.socialnetworking.facebook = ** profile.socialnetworking.facebook** profile.socialnetworking.facebook.edit = ** profile.socialnetworking.facebook.edit** profile.socialnetworking.linkedin = ** profile.socialnetworking.linkedin** profile.socialnetworking.linkedin.edit = ** profile.socialnetworking.linkedin.edit** -profile.socialnetworking.myspace = ** profile.socialnetworking.myspace** -profile.socialnetworking.myspace.edit = ** profile.socialnetworking.myspace.edit** -profile.socialnetworking.skype = ** profile.socialnetworking.skype** -profile.socialnetworking.skype.edit = ** profile.socialnetworking.skype.edit** -profile.socialnetworking.skype.link = ** profile.socialnetworking.skype.link** -profile.socialnetworking.twitter = ** profile.socialnetworking.twitter** -profile.socialnetworking.twitter.edit = ** profile.socialnetworking.twitter.edit** -profile.staffprofile = ** profile.staffprofile** -profile.subjects = ** profile.subjects** profile.summary = ** profile.summary** -profile.universityprofileurl = ** profile.universityprofileurl** -success.message.send.ok = ** success.message.send.ok** success.preferences.save.ok = ** success.preferences.save.ok** -success.privacy.save.ok = ** success.privacy.save.ok** text.edit.other.warning = ** text.edit.other.warning** -text.friend.add = ** text.friend.add** -text.friend.already = ** text.friend.already** -text.friend.already.pending = ** text.friend.already.pending** -text.friend.cancel = ** text.friend.cancel** -text.friend.confirm = ** text.friend.confirm** -text.friend.confirmed = ** text.friend.confirmed** -text.friend.feed.num.many = ** text.friend.feed.num.many** -text.friend.feed.num.none = ** text.friend.feed.num.none** -text.friend.feed.num.one = ** text.friend.feed.num.one** -text.friend.ignore = ** text.friend.ignore** -text.friend.none = ** text.friend.none** -text.friend.pending = ** text.friend.pending** -text.friend.remove = ** text.friend.remove** -text.friend.requested = ** text.friend.requested** -text.friend.self = ** text.friend.self** -text.gallery.feed.num.none = ** text.gallery.feed.num.none** -text.gallery.pictures.num.none = ** text.gallery.pictures.num.none** -text.gallery.upload.tooltip = ** text.gallery.upload.tooltip** text.image.refresh = ** text.image.refresh** text.image.url = ** text.image.url** -text.messages.none = ** text.messages.none** text.no.fields = ** text.no.fields** text.no.status = ** text.no.status** -text.privacy.academicinfo.tooltip = ** text.privacy.academicinfo.tooltip** -text.privacy.basicinfo.tooltip = ** text.privacy.basicinfo.tooltip** -text.privacy.birthyear.tooltip = ** text.privacy.birthyear.tooltip** -text.privacy.businessinfo.tooltip = ** text.privacy.businessinfo.tooltip** -text.privacy.cannot.modify = ** text.privacy.cannot.modify** -text.privacy.contactinfo.tooltip = ** text.privacy.contactinfo.tooltip** -text.privacy.messages.tooltip = ** text.privacy.messages.tooltip** -text.privacy.myfriends.tooltip = ** text.privacy.myfriends.tooltip** -text.privacy.mypictures.tooltip = ** text.privacy.mypictures.tooltip** -text.privacy.mystatus.tooltip = ** text.privacy.mystatus.tooltip** -text.privacy.personalinfo.tooltip = ** text.privacy.personalinfo.tooltip** -text.privacy.profileimage.tooltip = ** text.privacy.profileimage.tooltip** -text.privacy.search.tooltip = ** text.privacy.search.tooltip** -text.privacy.socialinfo.tooltip = ** text.privacy.socialinfo.tooltip** -text.privacy.staff.tooltip = ** text.privacy.staff.tooltip** -text.privacy.student.tooltip = ** text.privacy.student.tooltip** -text.profile.birthyear.tooltip = ** text.profile.birthyear.tooltip** text.profile.locked.false = ** text.profile.locked.false** text.profile.locked.true = ** text.profile.locked.true** -text.search.byinterest.all.results = ** text.search.byinterest.all.results** -text.search.byinterest.no.results = ** text.search.byinterest.no.results** -text.search.byinterest.one.result = ** text.search.byinterest.one.result** -text.search.byinterest.paged.results = ** text.search.byinterest.paged.results** -text.search.byinterest.tooltip = ** text.search.byinterest.tooltip** -text.search.byname.all.results = ** text.search.byname.all.results** -text.search.byname.no.results = ** text.search.byname.no.results** -text.search.byname.one.result = ** text.search.byname.one.result** -text.search.byname.paged.results = ** text.search.byname.paged.results** -text.search.byname.tooltip = ** text.search.byname.tooltip** -text.search.no.input = ** text.search.no.input** -text.search.no.results = ** text.search.no.results** -text.search.paged.results = ** text.search.paged.results** -text.search.toomany.results = ** text.search.toomany.results** text.upload.image.file = ** text.upload.image.file** text.view.profile.nothing = ** text.view.profile.nothing** title.change.profile.picture = ** title.change.profile.picture** -title.friend.add = ** title.friend.add** -title.friend.cancel = ** title.friend.cancel** -title.friend.confirm = ** title.friend.confirm** -title.friend.ignore = ** title.friend.ignore** -title.friend.remove = ** title.friend.remove** -title.message.compose = ** title.message.compose** - -twitter.enabled = ** twitter.enabled** -twitter.password = ** twitter.password** -twitter.username = ** twitter.username** diff --git a/profile2/api/src/resources/ProfileApplication_es.properties b/profile2/api/src/resources/ProfileApplication_es.properties index f75601c5083c..940c76c275e2 100644 --- a/profile2/api/src/resources/ProfileApplication_es.properties +++ b/profile2/api/src/resources/ProfileApplication_es.properties @@ -14,183 +14,52 @@ # RequiredValidator=''${label}'' requerido -accessibility.connection.add=\u00bfA\u00f1adir a {0} como contacto? -accessibility.connection.confirm=\u00bfDesea confirmar la petici\u00f3n de contacto de {0}? -accessibility.connection.ignore=\u00bfDesea ignorar la petici\u00f3n de contacto de {0}? -accessibility.connection.remove=\u00bfEliminar {0} de los contactos? accessibility.edit.basic=Editar informaci\u00f3n b\u00e1sica -accessibility.edit.business=Editar informaci\u00f3n de negocio accessibility.edit.contact=Editar informaci\u00f3n de contacto -accessibility.edit.personal=Editar informaci\u00f3n personal accessibility.edit.pronunciation=Editar la pronunciaci\u00f3n del nombre accessibility.edit.social=Editar informaci\u00f3n de redes sociales -accessibility.edit.staff=Editar informaci\u00f3n institucional -accessibility.edit.student=Editar informaci\u00f3n de estudiante accessibility.image.upload=Suba una foto para su perfil accessibility.image.url=Introduzca la url de su foto de perfil -accessibility.messages.unread=Mensaje no le\u00eddo -accessibility.prefs.confirms.off=Enviarme un correo cuando alguien confirme mi solucitud de contacto, desactivado -accessibility.prefs.confirms.on=Enviarme un correo cuando alguien confirme mi solucitud de contacto, activado -accessibility.prefs.gallery=Mostrar mis im\u00e1genes en el perfil accessibility.prefs.gravatar=Usar mi gravatar como imagen del perfil -accessibility.prefs.kudos=Mostrar mi puntuaci\u00f3n de kudos en mi perfil -accessibility.prefs.messagenew.off=Enviarme un correo cuando alguien me env\u00ede un nuevo mensaje, desactivado -accessibility.prefs.messagenew.on=Enviarme un correo cuando alguien me env\u00ede un nuevo mensaje, activado -accessibility.prefs.messagereply.off=Enviarme un correo cuando alguien responda a mis mensajes, desactivado -accessibility.prefs.messagereply.on=Enviarme un correo cuando alguien responda a mis mensajes, activado accessibility.prefs.officialimage=Usar la imagen institucional oficial como mi imagen de perfil -accessibility.prefs.onlinestatus=Mostrar mi estado de conexi\u00f3n. accessibility.prefs.overview=Preferencias de las notificaciones por correo electr\u00f3nico -accessibility.prefs.requests.off=Enviarme un correo cuando alguien me agrega como contacto, desactivado -accessibility.prefs.requests.on=Enviarme un correo cuando alguien me agrega como contacto, activado -accessibility.prefs.wallnew.off=Enviarme un correo cuando alguien publica en mi muro, desactivado -accessibility.prefs.wallnew.on=Enviarme un correo cuando alguien publica en mi muro, activado -accessibility.prefs.worksite.off=Enviarme un correo cuando un contacto me a\u00f1ade a un nuevo sitio, desactivado -accessibility.prefs.worksite.on=Enviarme un correo cuando un contacto me a\u00f1ade a un nuevo sitio, ctivado -accessibility.privacy.academic=Elige qui\u00e9n puede ver tu informaci\u00f3n acad\u00e9mica. -accessibility.privacy.basic=Elige qui\u00e9n puede ver tu informaci\u00f3n b\u00e1sica. -accessibility.privacy.birthyear=Elige mostrar o no tu fecha de nacimiento. Si est\u00e1 seleccionado ser\u00e1 visible. -accessibility.privacy.business=Elige qui\u00e9n puede ver su informaci\u00f3n de negocio. -accessibility.privacy.contact=Elige qui\u00e9n puede ver tu email o n\u00fameros de tel\u00e9fono. -accessibility.privacy.friends=Elige qui\u00e9n puede ver tu lista de contactos. -accessibility.privacy.image=Elige qui\u00e9n puede ver tu imagen del perfil. -accessibility.privacy.kudos=Elige qui\u00e9n puede ver tu puntuaci\u00f3n de kudos (si est\u00e1 permitido en Preferencias). -accessibility.privacy.messages=Elige qui\u00e9n puede enviarte mensajes. -accessibility.privacy.onlinestatus=Elija qui\u00e9n puede ver su estado de conexi\u00f3n. -accessibility.privacy.overview=Controle qui\u00e9n puede ver qu\u00e9 informaci\u00f3n de su perfil -accessibility.privacy.personal=Elige qui\u00e9n puede ver tus libros, pel\u00edculas o shows favoritos. -accessibility.privacy.pictures=Elige qui\u00e9n puede ver su galer\u00eda de im\u00e1genes. -accessibility.privacy.social=Elige qui\u00e9n puede ver su informaci\u00f3n de redes sociales, como sus perfiles de Facebook, LinkedIn y MySpace. -accessibility.privacy.staff=Elige qui\u00e9n puede ver su informaci\u00f3n institucional -accessibility.privacy.status=Elige qui\u00e9n puede ver tus actualizaciones de estado. -accessibility.privacy.student=Elige qui\u00e9n puede ver tu informaci\u00f3n de estudiante -accessibility.privacy.wall=Elige qui\u00e9n puede ver tu muro. -accessibility.profile.academicprofileurl.input=Introduzca la URL para su perfil acad\u00e9mico -accessibility.profile.birthday=Selecciona tu fecha de nacimiento. Puedes elegir si mostrar esta fecha en tus preferencias. -accessibility.profile.businessbio.input=Escriba su biograf\u00eda de negocios. -accessibility.profile.companydescription.input=Escriba la descripci\u00f3n de esta empresa -accessibility.profile.companyname.input=Introduzca el nombre de esta empresa -accessibility.profile.companyurl.input=Introduzca la direcci\u00f3n web de esta empresa -accessibility.profile.course.input=Introduzca su curso -accessibility.profile.department.input=Introduzca su departamento accessibility.profile.email.input=Introduzca su email accessibility.profile.facebookurl.input=Introduzca su URL de Facebook -accessibility.profile.facsimile.input=Introduzca su n\u00famero de fax -accessibility.profile.favouritebooks.input=Introduzca sus libros favoritos -accessibility.profile.favouritemovies.input=Introduzca sus pel\u00edculas favoritas -accessibility.profile.favouritequotes.input=Introduzca sus citas favoritas -accessibility.profile.favouritetv.input=Introduzca sus programas de televisi\u00f3n favoritos -accessibility.profile.homepage.input=Introduzca la URL de su p\u00e1gina web -accessibility.profile.homephone.input=Introduzca el n\u00famero de tel\u00e9fono de casa accessibility.profile.linkedinurl.input=Introduzca la URL de su LinkedIn -accessibility.profile.messagebody.input=Introduzca su mensaje -accessibility.profile.messagerecipient.input=Seleccione un destinatario -accessibility.profile.messagesubject.input=Escriba un asunto accessibility.profile.mobilephone.input=Ingrese su n\u00famero de tel\u00e9fono m\u00f3vil -accessibility.profile.name.recording=Grabe la pronunciaci\u00f3n de su nombre accessibility.profile.nickname.input=Introduzca su apodo accessibility.profile.phonetic.input=Introduzca la pronunciaci\u00f3n de su nombre -accessibility.profile.position.input=Introduzca su posici\u00f3n -accessibility.profile.publications.input=Introduzca sus publicaciones -accessibility.profile.room.input=Introduzca su habitaci\u00f3n -accessibility.profile.school.input=Introduzca su escuela -accessibility.profile.skypeusername.input=Introduzca su nombre de usuario de Skype -accessibility.profile.staffprofile.input=Introduzca el perfil de su personal -accessibility.profile.status.clear=Borrar tu estado -accessibility.profile.status.input=Introduzca su estado actual -accessibility.profile.subjects.input=Introduzca sus temas accessibility.profile.summaryinput=Introduzca su resumen personal -accessibility.profile.uniprofileurl.input=Introduzca la URL de su perfil en la universidad -accessibility.profile.wallpost.input=Introduzca el texto de su post en el muro -accessibility.profile.workphone.input=Introduzca el n\u00famero de tel\u00e9fono del trabajo accessibility.profile.pronouns.select=Seleccionar un conjunto de pronombres de la lista accessibility.profile.pronouns.input=Introduzca sus propios pronombres -accessibility.search.connections=Incluir contactos en los resultados de la b\u00fasqueda -accessibility.search.worksite=Limitar b\u00fasqueda al sitio elegido accessibility.tooltip=Mostrar informaci\u00f3n sobre esta opci\u00f3n -accessibility.wall.comment=Hacer un comentario en la entrada del muro de {0} -accessibility.wall.remove.mine=\u00bfBorrar entrada de tu muro? -accessibility.wall.remove.other=\u00bfBorrar la entrada de {0} de tu muro? -button.business.add.profile=A\u00f1adir perfil de la compa\u00f1\u00eda -button.business.remove.profile=Borrar perfil de la compa\u00f1\u00eda button.cancel=Cancelar button.close=Cerrar button.edit=Editar -button.friend.add=A\u00f1adir contacto -button.friend.cancel=Cancelar petici\u00f3n de contacto -button.friend.confirm=Confirmar petici\u00f3n de contacto -button.friend.ignore=Ignora esta petici\u00f3n de contacto -button.friend.remove=\u00bfBorrar contacto? -button.gallery.remove=Borrar la imagen -button.gallery.remove.confirm=Confirme el borrado -button.gallery.setprofile=Establecer como imagen del perfil -button.gallery.setprofile.confirm=Confirme la nueva imagen del perfil -button.gallery.upload=Subir archivos seleccionados button.link=Enlace -button.message.reply=Responder -button.message.send=Enviar mensaje button.record=Grabar button.release.microphone=Soltar micr\u00f3fono button.save=Guardar button.save.changes=Guardar cambios button.save.settings=Guardar preferencias button.sayit=Publicar -button.search.byinterest=Buscar por intereses -button.search.byname=Buscar por nombre o email -button.search.clear=Limpiar b\u00fasqueda -button.search.generic=Buscar -button.search.history.clear=Limpiar historial de b\u00fasqueda button.stop=Detener button.upload=Subir button.url.add=A\u00f1adir URL -button.wall.comment=A\u00f1adir comentario -button.wall.post=A\u00f1adir entrada en el muro -button.wall.remove=Borrar del muro -button.worksite.cancel=Cancelar -button.worksite.create=Crear #EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=Direcci\u00f3n de correo inv\u00e1lida error.empty.file.uploaded=Usted intent\u00f3 subir un archivo vac\u00edo error.file.save.failed=Error guardando el archivo -error.friend.add.failed=Ha ocurrido un error enviando la petici\u00f3n de contacto a {0}. -error.friend.already.confirmed=Tienes a {0} como contacto. -error.friend.already.pending=Ya tienes una petici\u00f3n de contacto pendiente con {0}. -error.friend.confirm.failed=Ha ocurrido un error mientras confirmaba la petici\u00f3n de contacto de {0}. -error.friend.ignore.failed=Ha ocurrido un error mientras ignoraba la petici\u00f3n de contacto de {0}. -error.friend.not.friend=\u00a1No tienes como contacto a {0} por lo que no puedes eliminarlo\! -error.friend.not.pending.confirm=\u00a1No tienes una petici\u00f3n de contacto pendiente con {0} por lo que no puedes confirmarlo\! -error.friend.not.pending.ignore=\u00a1No tienes una petici\u00f3n de contacto pendiente con {0} por lo que no puedes ignorarlo\! -error.friend.remove.failed=Ha ocurrido un error borrando a {0} de tu lista de contactos. -error.friend.view.disallowed=No puede ver los contactos de {0}. -error.gallery.remove.failed=No fue posible eliminar la imagen de la galer\u00eda -error.gallery.setprofile.failed=No fue posible establecer la imagen como imagen del perfil -error.gallery.upload.warning=Elija los archivos primero error.invalid.image.type=S\u00f3lo se permiten im\u00e1genes de tipo PNG, JPG, y GIF. -error.message.required.body=El mensaje no puede estar en blanco -error.message.required.to=Tienes que elegir un contacto para enviar el mensaje -error.message.send.failed=Error enviado tu mensaje error.no.file.uploaded=No has seleccionado un archivo error.password.required=Se requiere contrase\u00f1a error.preferences.save.failed=Error guardando -error.privacy.save.failed=Error guardando -error.profile.save.academic.failed=Error guardando -error.profile.save.business.failed=Error guardando error.profile.save.contact.failed=Error guardando error.profile.save.info.failed=Error guardando -error.profile.save.interests.failed=Error guardando error.url.save.failed=Error guardando la URL error.username.required=Se requiere nombre de usuario -error.wall.comment.empty=Has tratado de insertar un comentario vac\u00edo -error.wall.comment.failed=Error al insertar comentario -error.wall.post.empty=Has tratado de insertar una entrada vac\u00eda -error.wall.post.failed=Error al insertar entrada -error.worksite.create.failed=Error al crear sitio -error.worksite.no.title=Tienes que proporcionar un nombre al sitio -error.worksite.title.maxLength=La longitud del t\u00edtulo no puede exceder los {0} caracteres. Proporcione un t\u00edtulo m\u00e1s corto. -error.worksite.title.htmlStrippedToEmpty=El t\u00edtulo del sitio no puede contener c\u00f3digo HTML. Proporcione un t\u00edtulo de sitio v\u00e1lido. exception.heading.session.expired=La sesi\u00f3n ha expirado exception.text.session.expired=Desafortunadamente, tu sesi\u00f3n ha expirado. Prueba a recargar la p\u00e1gina o vuelve a acceder. @@ -201,203 +70,51 @@ facsimile.PhoneNumberValidator=N\u00famero de tel\u00e9fono no v\u00e1lido form.uploadTooLarge=El archivo debe ser menor que ${maxSize} -heading.academic=Informaci\u00f3n acad\u00e9mica -heading.academic.edit=Informaci\u00f3n acad\u00e9mica heading.basic=Informaci\u00f3n b\u00e1sica heading.basic.edit=Informaci\u00f3n b\u00e1sica -heading.business=Informaci\u00f3n negocio -heading.business.edit=Informaci\u00f3n negocio heading.contact=Informaci\u00f3n de contacto heading.contact.edit=Informaci\u00f3n de contacto -heading.friend.requests=Peticiones de contacto - -heading.friends.my=Mis contactos - -heading.friends.view=Contactos de {0} - -heading.interests=Informaci\u00f3n personal -heading.interests.edit=Informaci\u00f3n personal -heading.messages=Mis mensajes heading.name.pronunciation=Pronunciaci\u00f3n del nombre heading.name.pronunciation.edit=Pronunciaci\u00f3n del nombre -heading.pictures.addpicture=A\u00f1ada la imagen -heading.pictures.my.pictures=Mis im\u00e1genes -heading.pictures.view.pictures=Im\u00e1genes de {0} heading.preferences=Preferencias -heading.privacy=Preferencias de privacidad -heading.search=Buscar perfiles -heading.section.academic.staff=Para la instituci\u00f3n\: -heading.section.academic.students=Para estudiantes\: heading.section.email=Notificaciones de email heading.section.image=Preferencias de imagen de perfil heading.section.widget=Preferencias de Widget heading.social=Redes sociales heading.social.edit=Redes sociales -heading.staff=Informaci\u00f3n institucional -heading.staff.edit=Informaci\u00f3n institucional -heading.status=Estado -heading.student=Informaci\u00f3n de estudiante -heading.student.edit=Informaci\u00f3n de estudiante -heading.widget.my.friends=Mis contactos -heading.widget.my.kudos=Mis kudos -heading.widget.my.pictures=Mis im\u00e1genes -heading.widget.view.friends=Contactos de {0} -heading.widget.view.kudos=Kudos de {0} -heading.widget.view.pictures=Im\u00e1genes de {0} -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=URL inv\u00e1lida - -homephone.PhoneNumberValidator=N\u00famero de tel\u00e9fono no v\u00e1lido link.change.profile.picture=Cambiar imagen link.edit=Editar link.edit.info=Editar informaci\u00f3n -link.friend.add=\u00bfA\u00f1adir como contacto? -link.friend.add.name=A\u00f1adir a {0} como contacto -link.friend.confirm=Confirmar contacto -link.friend.feed.search=Buscar contactos -link.friend.feed.view=Ver todos los contactos -link.friend.ignore=Ignorar contacto -link.friend.remove=\u00bfBorrar contacto? -link.friend.request.act=Actuar sobre esta solicitud -link.friend.search=\u00bfBuscar m\u00e1s contactos? -link.gallery.feed.addnew=A\u00f1ada una nueva imagen -link.gallery.feed.view=Vea todas las im\u00e1genes -link.gallery.image.view=Ver imagen link.image.current.remove=Borrar link.image.current.remove.confirm=Se va a eliminar la foto actual del perfil y dejar la foto por defecto. Deber\u00e1 subir una nueva foto para cambiarlo de nuevo. \u00bfEst\u00e1 seguro? -link.messages.back=Volver a lista de mensajes -link.messages.compose=Escribir mensaje -link.messages.mymessages=Mis mensajes -link.messages.viewthread=Ver hilo -link.my.friends=Contactos -link.my.friends.search=Buscar contactos -link.my.friends.tooltip=Ver y gestionar tus contactos -link.my.messages=Mensajes -link.my.messages.tooltip=Enviar y leer mensajes privados -link.my.pictures=Im\u00e1genes -link.my.pictures.tooltip=A\u00f1ade im\u00e1genes y visita tu galer\u00eda link.my.preferences=Preferencias link.my.preferences.tooltip=Gestionar tus preferencias -link.my.privacy=Privacidad -link.my.privacy.tooltip=Gestionar tu privacidad link.my.profile=Mi perfil link.my.profile.tooltip=Ver y editar tu perfil link.other.profile=Perfil de {0} -link.my.search=Buscar -link.my.search.tooltip=Buscar personas y ver sus perfiles link.profile.locked.false=\u00bfBloquear este perfil? link.profile.locked.true=Perfil bloqueado. \u00bfDesbloquear? -link.status.clear=Limpiar -link.status.update=Actualizar -link.tab.profile=Perfil -link.tab.profile.tooltip=Ver perfil -link.tab.wall=Muro -link.tab.wall.tooltip=Ver muro -link.title.confirmfriend=Confirmar petici\u00f3n de contacto -link.title.ignorefriend=Ignora esta petici\u00f3n de contacto -link.title.removefriend=\u00bfBorrar contacto? link.title.rss=Ver o personalizar tu sindicaci\u00f3n RSS -link.title.wall.comment=Hacer un comentario en la entrada del muro de {0} -link.title.wall.remove=Eliminar de tu muro -link.view.friends=Ver contactos -link.wall.item.comment=Comentario -link.wall.item.remove=Borrar -link.worksite.create=Crear sitio linkedinUrl.UrlValidator=URL inv\u00e1lida -message.message=Mensaje -message.reply=Responder -message.subject=Asunto -message.to=A - mobilephone.PhoneNumberValidator=N\u00famero de tel\u00e9fono no v\u00e1lido page.title=Perfil -palette.available=Disponible -palette.selected=Seleccionada - -pictures.addpicture=A\u00f1ada los nuevos archivos de im\u00e1genes a la galer\u00eda -pictures.filetypewarning=S\u00f3lo se pueden a\u00f1adir archivos jpeg, png y gif a la galer\u00eda -pictures.removepicture=Quite esta imagen de la galer\u00eda -pictures.removepicture.confirm=\u00bfEst\u00e1 usted seguro de querer quitar esta imagen de su galer\u00eda? -pictures.setprofileimage=Establezca esta imagen como su imagen de perfil -pictures.setprofileimage.confirm=\u00bfEst\u00e1 usted seguro de querer sustituir su imagen actual de perfil por esta imagen? - preference.option.off=Off preference.option.on=On -preferences.email.confirms=Confirme mi petici\u00f3n de contacto -preferences.email.message=Notif\u00edcame por email a {0} cuando alguien\: -preferences.email.message.new=Me env\u00eda un nuevo mensaje -preferences.email.message.reply=Contesta a uno de mis mensajes -preferences.email.none=(NO SE HA ESPECIFICADO UNA DIRECCI\u00d3N DE EMAIL) -preferences.email.requests=Me a\u00f1ade como contacto -preferences.email.wall.new=A\u00f1aden entradas a mi muro -preferences.email.worksite.new=Me a\u00f1aden a un sitio preferences.image.gravatar=Usar mi gravatar como imagen del perfil -preferences.image.message=Configurar preferencias relacionadas con tu imagen de perfil preferences.image.official=Usar la imagen institucional oficial como mi imagen de perfil -preferences.widget.gallery=Mostrar mis im\u00e1genes -preferences.widget.gallery.tooltip=Tus im\u00e1genes aparecer\u00e1n en tu Perfil si marcas esta opci\u00f3n. -preferences.widget.kudos=Mostrar mi puntuaci\u00f3n de kudos -preferences.widget.kudos.tooltip=Tu puntuaci\u00f3n de kudos aparecer\u00e1 en tu Perfil una vez calculada. -preferences.widget.message=Controla los widgets que aparecer\u00e1n en tu perfil -preferences.widget.onlinestatus=Mostrar mi estado de conexi\u00f3n -preferences.widget.onlinestatus.tooltip=Muestra si est\u00e1s o no en l\u00ednea. Si lo activas puedes controlarlo en las preferencias de privacidad. Si lo desactivas apareces como no conectado -privacy.academicinfo=Informaci\u00f3n acad\u00e9mica -privacy.basicinfo=Informaci\u00f3n b\u00e1sica -privacy.birthyear=Mostrar fecha de nacimiento -privacy.businessinfo=Informaci\u00f3n negocio -privacy.contactinfo=Informaci\u00f3n de contacto -privacy.messages=Qui\u00e9n puede enviarme mensajes -privacy.myfriends=Qui\u00e9n puede ver mis contactos -privacy.mykudos=Qui\u00e9n puede ver mis kudos -privacy.mypictures=Qui\u00e9n puede ver mis fotos -privacy.mystatus=Qui\u00e9n puede ver mi estado -privacy.mywall=Qui\u00e9n puede ver mi muro y mis entradas en otros muros -privacy.onlinestatus=Qui\u00e9n puede ver si estoy conectado -privacy.option.everyone=Cualquiera -privacy.option.nobody=Nadie -privacy.option.onlyfriends=\u00danicamente mis contactos -privacy.option.onlyme=\u00danicamente yo -privacy.personalinfo=Informaci\u00f3n personal -privacy.profileimage=Imagen del perfil -privacy.search=Buscar -privacy.socialinfo=Informaci\u00f3n social -privacy.staffinfo=Informaci\u00f3n institucional -privacy.studentinfo=Informaci\u00f3n de estudiante - -profile.academicprofileurl=URL acad\u00e9mica/de la investigaci\u00f3n -profile.birthday=Fecha de nacimiento -profile.business.bio=Biograf\u00eda del negocio -profile.business.company.description=Descripci\u00f3n de la compa\u00f1\u00eda -profile.business.company.name=Nombre de compa\u00f1\u00eda -profile.business.company.profile=Perfil -profile.business.company.profiles=Perfiles de compa\u00f1\u00eda -profile.business.company.web=Direccionamiento de la web de la compa\u00f1\u00eda -profile.business.update=Informaci\u00f3n de la compa\u00f1\u00eda actualizada en el perfil profile.contact.update=Informaci\u00f3n de contacto actualizada en el perfil -profile.course=Grado/curso -profile.department=Departamento profile.email=Correo -profile.favourite.books=Libros favoritos -profile.favourite.movies=Pel\u00edculas favoritas -profile.favourite.quotes=Citas favoritas -profile.favourite.tv=Programas de TV favoritos -profile.gallery.image.alt=Mis im\u00e1genes -profile.gallery.image.upload=Subido a la galer\u00eda de im\u00e1genes del perfil -profile.homepage=P\u00e1gina personal profile.image.change.upload=Imagen del perfil actualizada profile.image.change.url=Imagen del perfil actualizada profile.info.update=Informaci\u00f3n b\u00e1sica del perfil actualizada -profile.interests.update=Informaci\u00f3n personal del perfil actualizada -profile.name.first=Nombre -profile.name.first.none=Usuario -profile.name.last=Segundo apellido -profile.name.middle=Primer apellido -profile.name.recording=Grabaci\u00f3n del nombre profile.nickname=Nickname profile.pronouns=Pronombres profile.pronouns.options=\u00c9l/Ella @@ -414,157 +131,34 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=Fax -profile.phone.home=Tel\u00e9fono fijo profile.phone.mobile=Tel\u00e9fono m\u00f3vil -profile.phone.work=Tel\u00e9fono del trabajo -profile.position=Posici\u00f3n -profile.publications=Publicaciones y conferencias -profile.room=Clase -profile.school=Escuela profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=URL de Facebook profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=URL de LinkedIn profile.socialnetworking.instagram=Instagram profile.socialnetworking.instagram.edit=Instagram URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Nombre de usuario de Skype -profile.socialnetworking.skype.link=Skype Me profile.socialnetworking.update=Informaci\u00f3n de las redes sociales del perfil actualizada -profile.staff.update=Informaci\u00f3n institucional del perfil actualizada -profile.staffprofile=Perfil institucional -profile.student.update=Informaci\u00f3n de estudiante del perfil actualizada profile.subjects=Asignaturas profile.summary=Resumen personal -profile.universityprofileurl=URL del perfil de la universidad -success.message.send.ok=Mensaje enviado success.preferences.save.ok=Guardado con \u00e9xito -success.privacy.save.ok=Guardado con \u00e9xito text.edit.other.warning=Atenci\u00f3n\: est\u00e1 editando la informaci\u00f3n de {0}. -text.friend.add={0} confirmar\u00e1 tu petici\u00f3n de contacto. -text.friend.already=Tienes a {0} como contacto. -text.friend.already.pending=Ya dispones de una petici\u00f3n de contacto entre tu y {0}. -text.friend.cancel=Est\u00e1s seguro que deseas cancelar la petici\u00f3n de contacto con {0}? No se le notificar\u00e1. -text.friend.confirm=Esto confirmar\u00e1 su petici\u00f3n de contacto con {0}. -text.friend.confirmed=Est\u00e1s conectado -text.friend.feed.num.many={0} contactos -text.friend.feed.num.none=0 contactos -text.friend.feed.num.one=1 contacto -text.friend.ignore=\u00bfEst\u00e1 seguro de que desea ignorar la petici\u00f3n de contacto de {0}? No se le notificar\u00e1. -text.friend.none=No tienes a {0} como contacto. -text.friend.pending=Petici\u00f3n de contacto pendiente -text.friend.remove=\u00bfEst\u00e1s seguro de que deseas eliminar a {0} como contacto? No se le notificar\u00e1. -text.friend.requested=Petici\u00f3n de contacto -text.friend.self=\u00a1Eres t\u00fa\! -text.gallery.feed.num.none=0 im\u00e1genes -text.gallery.pictures.num.none=Su galer\u00eda no contiene ninguna imagen todav\u00eda. -text.gallery.upload.tooltip=Suba im\u00e1genes a la galer\u00eda desde su ordenador. El tama\u00f1o de las im\u00e1genes subidas no debe exceder {0}MB. text.image.refresh=Nota\: si la nueva imagen no aparece inmediatamente int\u00e9ntelo refrescando el navegador. text.image.url=Introduce la URL de la imagen a usar en tu perfil -text.messages.none=No hay mensajes text.name.pronunciation.description=Puede indicar aqu\u00ed la pronunciaci\u00f3n fon\u00e9tica escrita de su nombre y/o puede grabar una archivo de audio donde se oiga su nombre.
Esta informaci\u00f3n ser\u00e1 accesible a las personas que participen en sus sitios de docencia. text.no.fields=No has rellenado ninguna informaci\u00f3n text.no.status=Di algo text.or=o -text.privacy.academicinfo.tooltip=Elige qui\u00e9n puede ver tu informaci\u00f3n acad\u00e9mica. -text.privacy.basicinfo.tooltip=Elige qui\u00e9n puede ver tu informaci\u00f3n b\u00e1sica. -text.privacy.birthyear.tooltip=Elige mostrar o no tu fecha de nacimiento. Si est\u00e1 seleccionado ser\u00e1 visible. -text.privacy.businessinfo.tooltip=Elige qui\u00e9n puede ver su informaci\u00f3n de negocio. -text.privacy.cannot.modify=Estos valores los ha cambiado el admistrador y est\u00e1n bloqueados. -text.privacy.contactinfo.tooltip=Elige qui\u00e9n puede ver tu email o n\u00fameros de tel\u00e9fono. -text.privacy.messages.tooltip=Elige qui\u00e9n puede enviarte mensajes. -text.privacy.myfriends.tooltip=Elige qui\u00e9n puede ver tu lista de contactos. -text.privacy.mykudos.tooltip=Elige qui\u00e9n puede ver tu puntuaci\u00f3n de kudos (si est\u00e1 permitido en Preferencias). -text.privacy.mypictures.tooltip=Elige qui\u00e9n puede ver su galer\u00eda de im\u00e1genes. -text.privacy.mystatus.tooltip=Elige qui\u00e9n puede ver tus actualizaciones de estado. -text.privacy.mywall.tooltip=Elige qui\u00e9n puede ver tu muro. -text.privacy.onlinestatus.tooltip=Elige qui\u00e9n puede ver tu estado de conexi\u00f3n. Aparecer\u00e1s como desconectado a otros. -text.privacy.personalinfo.tooltip=Elige qui\u00e9n puede ver tus libros, pel\u00edculas o shows favoritos. -text.privacy.profileimage.tooltip=Elige qui\u00e9n puede ver tu imagen del perfil. -text.privacy.socialinfo.tooltip=Elige qui\u00e9n puede ver su informaci\u00f3n de redes sociales, como sus perfiles de Facebook, LinkedIn y MySpace. -text.privacy.staff.tooltip=Elige qui\u00e9n puede ver su informaci\u00f3n institucional -text.privacy.student.tooltip=Elige qui\u00e9n puede ver tu informaci\u00f3n de estudiante -text.profile.birthyear.tooltip=Puedes elegir mostrar o no tu fecha de nacimiento en las preferencias de privacidad text.profile.facebook.tooltip=ejemplo. http\://www.facebook.com/user text.profile.linkedin.tooltip=ejemplo. http\://www.linkedin.com/pub/user text.profile.locked.false=Bloquear un perfil significa que el usuario no podr\u00e1 editar su informaci\u00f3n. text.profile.locked.true=Desbloquear un perfil permite a un usuario editar su informaci\u00f3n. text.profile.instagram.tooltip=ejemplo\: https\://www.instagram.com/user/ -text.profile.presence.away={0} est\u00e1 ausente -text.profile.presence.offline={0} no est\u00e1 conectado -text.profile.presence.online={0} est\u00e1 conectado -text.search.byinterest.all.results=Mostrando {0} resultados para\: {1} -text.search.byinterest.label=Intereses comunes -text.search.byinterest.no.results=No hay contactos con intereses similares a {0}. -text.search.byinterest.one.result=Mostrando 1 resultado para\: {0} -text.search.byinterest.paged.results=Mostrando {0} resultados (hasta {1} resultados por p\u00e1gina) para\: {2} -text.search.byinterest.tooltip=Introduce un inter\u00e9s, ej. ''tenis'' y encuentra gente con intereses similares -text.search.byname.all.results=Mostrando {0} resultados para\: {1} -text.search.byname.label=Nombre o correo electr\u00f3nico de la persona -text.search.byname.no.results=No hay resultados para {0}. -text.search.byname.one.result=Mostrando 1 resultado para\: {0} -text.search.byname.paged.results=Mostrando {0} resultados (hasta {1} resultados por p\u00e1gina) para\: {2} -text.search.byname.tooltip=Introduce el nombre o el email para encontrar contactos -text.search.history=B\u00fasquedas previas -text.search.include.connections=Incluir contactos en los resultados de la b\u00fasqueda -text.search.include.worksite=Limitar la b\u00fasqueda al sitio seleccionado -text.search.no.input=No has introducido nada -text.search.no.results=No hay resultados para {0}. -text.search.no.worksite=Todav\u00eda no eres miembro de ning\u00fan sitio. -text.search.paged.results=Mostrando {0} - {1} de {2} resultados para\: {3} -text.search.terms.label=T\u00e9rminos de b\u00fasqueda -text.search.terms.tooltip=Introduce t\u00e9rminos de b\u00fasqueda al buscar por nombre/email o por intereses -text.search.toomany.results=Tu b\u00fasqueda para {0} ha devuelto {1} o m\u00e1s resultados. Solo el primer {1} se mostrar\u00e1. text.upload.image.file=Selecciona una imagen de tu ordenador (max {0}MB)\: text.view.profile.nothing=Esta persona tiene la informaci\u00f3n restringida o no tiene un perfil que mostrar. -text.view.wall.nothing=No hay entradas en el muro de {0}. \u00a1Puede ser el primero en escribir\! -text.view.wall.restricted=Solamente los contactos de {0} pueden ver su muro. A\u00f1ada a {0} como contacto para ver y escribir en su muro. -text.wall.no.items=No hay entradas en tu muro. -text.wall.remove.mine=\u00bfBorrar entrada de tu muro? -text.wall.remove.other=\u00bfBorrar la entrada de {0} de tu muro? -text.worksite.create=Selecciona a la gente disponible y crea un nuevo sitio. -text.worksite.refresh=Refresca el navegador para acceder al nuevo sitio despu\u00e9s de crearlo title.change.profile.picture=Cambia tu imagen de perfil -title.friend.add=\u00bfA\u00f1adir a {0} como contacto? -title.friend.cancel=\u00bfCancelar petici\u00f3n de contacto? -title.friend.confirm=\u00bfDesea confirmar la petici\u00f3n de contacto de {0}? -title.friend.ignore=\u00bfIgnorar petici\u00f3n de contacto? -title.friend.remove=\u00bfBorrar contacto? -title.message.compose=Escribir nuevo mensaje -title.wall.comment=Hacer un comentario en la entrada del muro de {0} -title.wall.remove=\u00bfBorrar del muro? urlField.Required=No has introducido una URL - -workphone.PhoneNumberValidator=N\u00famero de tel\u00e9fono no v\u00e1lido - -worksite.name=Nombre del sitio - -email.connectionrequest.subject=te a\u00f1adi\u00f3 como contacto en -email.connectionrequest.added=te a\u00f1adi\u00f3 como contacto en -email.connectionrequest.toconfirm1=Para confirmar la petici\u00f3n de amistad desde -email.connectionrequest.toconfirm2=pulse en link inferior\: - -email.connectionconfirm.subject=confirm\u00f3 la petici\u00f3n de amistad en -email.connectionconfirm.confirmed=confirm\u00f3 la petici\u00f3n de amistad en -email.connectionconfirm.toview1=Para ver el perfil de -email.connectionconfirm.toview2=, pulse el link inferior\: - -email.messagenew.subject=le ha enviado un mensaje en -email.messagenew.sent=le ha enviado un mensaje en -email.messagenew.toview1=Para ver el mensaje, pulse el link inferior\: - -email.messagereply.subject=ha respondido tu mensaje en - -email.profilechange.subject=cambi\u00f3 su perfil en - -email.wallnew.subject=ha posteado en su muro -email.wall.viewtheir=Para ver el mensaje, pulse el link inferior\: -email.wall.viewmy=Para ver tu muro, pulse el link inferior\: - -email.mywallnew.subject=ha posteado en tu perfil del muro en -email.wall.theirstatus.subject=nuevo estado ha sido establecido su muro en diff --git a/profile2/api/src/resources/ProfileApplication_eu.properties b/profile2/api/src/resources/ProfileApplication_eu.properties index e36cfb9dfbd7..303163745a99 100644 --- a/profile2/api/src/resources/ProfileApplication_eu.properties +++ b/profile2/api/src/resources/ProfileApplication_eu.properties @@ -14,399 +14,108 @@ # RequiredValidator='${label}' behar da -accessibility.connection.add={0} kontaktu gisa gehitu nahi duzu? -accessibility.connection.confirm=Berretsi nahi duzu {0}(r)en eskaera? -accessibility.connection.ignore=Baztertu {0}(r)en kontaktu izateko eskaera? -accessibility.connection.remove=Kendu behar da {0} zure kontaktuetatik? accessibility.edit.basic=Editatu oinarrizko informazioa -accessibility.edit.business=Editatu negozio informazioa accessibility.edit.contact=Editatu kontaktu informazioa -accessibility.edit.personal=Editatu informazio pertsonala accessibility.edit.pronunciation=Editatu izenaren ahoskera accessibility.edit.social=Editatu sare sozialen informazioa -accessibility.edit.staff=Editatu erakunde informazioa -accessibility.edit.student=Editatu ikaslearen informazioa accessibility.image.upload=Kargatu irudi bat zure profilerako accessibility.image.url=Idatzi zure profileko irudirako url-a -accessibility.messages.unread=Mezu hau irakurri gabe duzu -accessibility.prefs.confirms.off=Bidali niri email bat norbaitek berresten duenean kontaktu izateko nire eskaera\: desgaitu -accessibility.prefs.confirms.on=Bidali niri email bat norbaitek berresten duenean kontaktu izateko nire eskaera\: gaitu -accessibility.prefs.gallery=Erakutsi nire profileko irudiak accessibility.prefs.gravatar=Erabili nire gravatarra nire profil irudi gisa -accessibility.prefs.kudos=Erakutsi nire profileko kudos puntuazioa -accessibility.prefs.messagenew.off=Bidali niri email bat norbaitek mezu bat bidaltzen didanean; desgaitu -accessibility.prefs.messagenew.on=Bidali niri email bat norbaitek mezu bat bidaltzen didanean; gaitu -accessibility.prefs.messagereply.off=Bidali niri email bat norbaitek nire mezu bati erantzuten dionean; desgaitu -accessibility.prefs.messagereply.on=Bidali niri email bat norbaitek nire mezu bati erantzuten dionean; gaitu accessibility.prefs.officialimage=Erabili erakunde irudi ofiziala profil irudi gisa -accessibility.prefs.onlinestatus=Erakutsi nire online egoera besteei accessibility.prefs.overview=Lehentasunak email jakinarazpenetarako -accessibility.prefs.requests.off=Bidali niri email bat norbaitek konexio izateko gehitzen nauenean; desgaitua -accessibility.prefs.requests.on=Bidali niri email bat norbaitek konexio izateko gehitzen nauenean; gaitua -accessibility.prefs.twitterauthcode=Idatzi zure Twitter baimenaren kodea -accessibility.prefs.wallnew.off=Bidali niri email bat norbaitek nire horman argitaratzen duenean; desgaitua -accessibility.prefs.wallnew.on=Bidali niri email bat norbaitek nire horman argitaratzen duenean; gaitua -accessibility.prefs.worksite.off=Bidali niri email bat kontaktu batek gune berri batean gehitzen nauenean; desgaitu -accessibility.prefs.worksite.on=Bidali niri email bat kontaktu batek gune berri batean gehitzen nauenean; gaitu -accessibility.privacy.academic=Aukeratu nork ikusiko duen zure informazio akademikoa, esaterako, eskola, saila edo ikasmaila. -accessibility.privacy.basic=Aukeratu nork ikusiko duen zure oinarrizko informazioa, esaterako, goitizena eta jaioteguna. -accessibility.privacy.birthyear=Aukeratu ikusiko den edo ez zure jaioteguna. Markatua badago, ikusiko da. -accessibility.privacy.business=Aukeratu nork ikusiko duen zure negozio informazioa, esaterako, industria, lanpostu eta negozioan duzun biografia. -accessibility.privacy.contact=Aukeratu nork ikusiko dituen, esaterako,. zure email helbideak eta tel. zenbakiak. -accessibility.privacy.friends=Aukeratu nork ikusiko duen zuren kontaktu zerrenda. -accessibility.privacy.image=Aukeratu nork ikusiko duen zure profil irudia. -accessibility.privacy.kudos=Aukeratu nork ikusiko duen zure kudos puntuazioa (hobespenetan baldin badago). -accessibility.privacy.messages=Aukeratu nork bidaliko dizkizun mezuak. -accessibility.privacy.onlinestatus=Aukeratu nork ikusiko duen zure linea egoera. -accessibility.privacy.overview=Kontrolatu nork ikusiko duen zure profileko zer parte -accessibility.privacy.personal=Nork ikusiko ditu zure gogoko liburuak, tb ikuskariak eta abarrak . -accessibility.privacy.pictures=Nork ikusiko du zure pintura galeria. -accessibility.privacy.social=Nork ikusiko du zure your sare sozialen informazioa (Facebook, LinkedIn eta MySpace profilak). -accessibility.privacy.staff=Nork ikusiko du zure erakunde informazioa. -accessibility.privacy.status=Nork ikusiko ditu zure egoeraren eguneratzeak. -accessibility.privacy.student=Nork ikusiko du zure ikasle informazioa -accessibility.privacy.wall=Nork ikusiko du zure horma. -accessibility.profile.academicprofileurl.input=Idatzi zure profil akademikoaren url-a -accessibility.profile.birthday=Hautatu zure jaioteguna. Baduzu modua zure jaiotegunaren bista Hobespenetan kontrolatzeko. -accessibility.profile.businessbio.input=Idatzi negozioan duzun biografia. -accessibility.profile.companydescription.input=Idatzi enpresaren deskripzioa -accessibility.profile.companyname.input=Idatzi enpresaren izena -accessibility.profile.companyurl.input=Idatzi enpresaren helbide berria -accessibility.profile.course.input=Idatzi zein den zure ikasturtea -accessibility.profile.department.input=Idatzi zure saila accessibility.profile.email.input=Idatzi zure emaila accessibility.profile.facebookurl.input=Idatzi zure Facebook url-a -accessibility.profile.facsimile.input=Idatzi zure fax zenbakia -accessibility.profile.favouritebooks.input=Idatzi zure gogoko liburuak -accessibility.profile.favouritemovies.input=Idatzi zure gogoko filmak -accessibility.profile.favouritequotes.input=Idatzi zure gogoko aipuak -accessibility.profile.favouritetv.input=Idatzi zure gogoko tb ikuskariak -accessibility.profile.homepage.input=Idatzi zure web-orrialdearen url-a -accessibility.profile.homephone.input=Idatzi zure home telefono zenbakia accessibility.profile.linkedinurl.input=Idatzi zure LinkedIn url-a -accessibility.profile.messagebody.input=Idatzi zure mezua -accessibility.profile.messagerecipient.input=Hautatu hartzaile bat -accessibility.profile.messagesubject.input=Idatzi mezuaren gaia accessibility.profile.mobilephone.input=Idatzi zure sakelako telefonoaren zk. -accessibility.profile.myspaceurl.input=Idatzi zure LinkedIn url-a -accessibility.profile.name.recording=Graba ezazu nola ahoskatzen den zure izena accessibility.profile.nickname.input=Idatzi zure goitizena accessibility.profile.phonetic.input=Idatz ezazu nola ahoskatzen den -accessibility.profile.position.input=Idatzi zure lanpostua -accessibility.profile.publications.input=Idatzi zure argitalpenak -accessibility.profile.room.input=Idatzi zure gela -accessibility.profile.school.input=Idatzi zure eskola -accessibility.profile.skypeusername.input=Idatzi zure Skype erabiltzaile-izena -accessibility.profile.staffprofile.input=Idatzi zure erakunde profila -accessibility.profile.status.clear=Garbitu zure egoera -accessibility.profile.status.input=Idatzi zure oraingo egoera -accessibility.profile.subjects.input=Idatzi zure gaiak accessibility.profile.summaryinput=Idatzi zure laburpen pertsonala -accessibility.profile.twitterurl.input=Idatzi zure Twitter url-a -accessibility.profile.uniprofileurl.input=Idatzi zure unibertsitate profilaren url-a -accessibility.profile.wallpost.input=Idatzi hormako zure mezuaren testua -accessibility.profile.workphone.input=Idatzi zure laneko telefonoaren zenbakia accessibility.profile.pronouns.select=Hautatu zerrendako izenordain multzo bat accessibility.profile.pronouns.input=Idatzi zure izenordainak -accessibility.search.connections=Sartu kontaktuak bilaketaren emaitzetan -accessibility.search.worksite=Mugatu bilaketa hautatu duzun gunera accessibility.tooltip=Aukera honen informazioa erakutsi -accessibility.wall.comment=Egin iruzkin bat {0}(r)en horma-mezuari -accessibility.wall.remove.mine=Kendu sarrera hormatik? -accessibility.wall.remove.other=Kendu egin nahi duzu zure hormatik sarrera hau, "{0}? -button.business.add.profile=Gehitu enpresaren profila -button.business.remove.profile=Kendu enpresaren profila button.cancel=Utzi button.close=Itxi button.edit=Editatu -button.friend.add=Gehitu kontaktua -button.friend.cancel=Utzi kontaktua bilatzeari -button.friend.confirm=Berretsi eskaera -button.friend.ignore=Ezikusi kontaktu izateko eskaera -button.friend.remove=Kendu kontaktua -button.gallery.remove=Kendu irudia -button.gallery.remove.confirm=Berretsi -button.gallery.setprofile=Ezarri profil irudi gisa -button.gallery.setprofile.confirm=Berretsi profil berriaren irudia -button.gallery.upload=Kargatu hautatu dituzun irudiak button.link=Esteka -button.message.reply=Erantzun -button.message.send=Bidali mezua button.record=Grabatu button.release.microphone=Mikrofonoa gaitu button.save=Gorde button.save.changes=Gorde aldaketak button.save.settings=Gorde ezarpenak button.sayit=Esan -button.search.byinterest=Bilatu interes komunen arabera -button.search.byname=Bilatu izenaren edo emailaren arabera -button.search.clear=Garbitu bilaketa -button.search.generic=Bilatu -button.search.history.clear=Garbitu historia button.stop=Gelditu button.upload=Kargatu button.url.add=Gehitu URL-a -button.wall.comment=Gehitu iruzkina -button.wall.post=Mezua hormarako -button.wall.remove=Kendu hormatik -button.worksite.cancel=Utzi -button.worksite.create=Sortu #EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=Email helbidea baliogabea da error.empty.file.uploaded=Fitxategi huts bat kargatzen saiatu zara error.file.save.failed=Akats bat izan da fitxategia gordetzean -error.friend.add.failed=Akats bat izan da konexio eskaera bat bidaltzean hona\: {0}. -error.friend.already.confirmed=Lehendik baduzu kontaktu hau\: {0}. -error.friend.already.pending=Kontaktu izateko eskaera bat duzu lehendik honekin\: {0}. -error.friend.confirm.failed=Akats bat izan da {0}}(r)en kontaktu izateko eskaera berrestean. -error.friend.ignore.failed=Akats bat izan da {0}}(r)en kontaktu izateko eskaera ezikustean. -error.friend.not.friend=Ez duzu kontakturik hauekin\: {0} eta, hortaz, ezin dira kendu\! -error.friend.not.pending.confirm=Ez duzu zain kontaktu izateko eskaerarik honengandik\: {0} eta, hortaz, ezin duzu berretsi\! -error.friend.not.pending.ignore=Ez duzu zain kontaktu izateko eskaerarik honengandik\: {0} eta, hortaz, ezin duzu ezikusi\! -error.friend.remove.failed=Akats bat izan da {0} kentzean zure kontaktu zerrendatik. -error.friend.view.disallowed=Ezin duzu ikusi {0}(r)en kontaktuak. -error.gallery.remove.failed=Ezin da kendu irudia galeriatik -error.gallery.setprofile.failed=Ezin da ezarri irudia profil irudi gisa -error.gallery.upload.warning=Hautatu fitxategiak aurrena error.invalid.image.type=Mota hauetako irudiak soilik dira baimendunak\: PNG, JPG, eta GIF. -error.message.required.body=Mezua ezin da hutsik egon -error.message.required.to=Kontaktu bat hautatu hari mezua bidaltzeko -error.message.send.failed=Akats bat izan da zure mezua bidaltzean error.no.file.uploaded=Ez duzu fitxategirik hautatu error.password.required=Pasahitza behar da error.preferences.save.failed=Ezin da gorde -error.privacy.save.failed=Ezin da gorde -error.profile.save.academic.failed=Ezin da gorde -error.profile.save.business.failed=Ezin da gorde error.profile.save.contact.failed=Ezin da gorde error.profile.save.info.failed=Ezin da gorde -error.profile.save.interests.failed=Ezin da gorde -error.twitter.details.invalid=Ezin izan dira egiaztatu zure Twitter kredentzialak error.url.save.failed=Akats bat izan da url-a gordetzean error.username.required=Erabiltzaile izena behar da -error.wall.comment.empty=Iruzkin huts bat sartzen saiatu zara -error.wall.comment.failed=Akats bat izan da iruzkina sartzean -error.wall.post.empty=Iruzkin huts bat egiten saiatu zara -error.wall.post.failed=Akats bat izan da mezua bidaltzean -error.worksite.create.failed=Akats bat izan da gunea sortzean -error.worksite.no.title=Izen bat eman behar diozu guneari -error.worksite.title.maxLength=Titulua ezin da izan {0} karakterekoa baino luzeagoa. Idatzi titulu laburrago bat. -error.worksite.title.htmlStrippedToEmpty=Gunearen tituluak ezin du eduki HTML-rik. Eman guneari titulu baliodun bat. exception.heading.session.expired=Saioa iraungi da exception.text.session.expired=Zure saioa iraungi egin da. Saiatu orrialdea freskatzen edo atera zaitez eta has zaitez berriz ere saioa berrabiarazteko. facebookUrl.UrlValidator=URL baliogabea da -facsimile.PhoneNumberValidator=Telefono zenbaki hori baliogabea da - form.uploadTooLarge=Kargaren neurria hau baino txikiagoa izanen da\: ${geh. neurria} -heading.academic=Informazio akademikoa -heading.academic.edit=Informazio akademikoa heading.basic=Oinarrizko informazioa heading.basic.edit=Oinarrizko informazioa -heading.business=Negozio informazioa -heading.business.edit=Negozio informazioa heading.contact=Kontaktu informazioa heading.contact.edit=Kontaktu informazioa -heading.friend.requests=Kontaktu eskaerak - -heading.friends.my=Nire kontaktuak - -heading.friends.view={0}(r)en kontaktuak - -heading.interests=Informazio pertsonala -heading.interests.edit=Informazio pertsonala -heading.messages=Nire mezuak heading.name.pronunciation=Izenaren ahoskera eta izenordaina heading.name.pronunciation.edit=Izenaren ahoskera eta izenordaina -heading.pictures.addpicture=Gehitu irudia -heading.pictures.my.pictures=Nire irudiak -heading.pictures.view.pictures={0}(r)en irudiak heading.preferences=Lehentasunak -heading.privacy=Ezarpen pribatuak -heading.search=Bilatu profilak -heading.section.academic.staff=Langileentzat\: -heading.section.academic.students=Ikasleentzat\: heading.section.email=Email jakinarazpenak heading.section.image=Profil irudiaren ezarpenak -heading.section.twitter=Twitter integrazioa heading.section.widget=Widget ezarpenak heading.social=Sare sozialak heading.social.edit=Sare sozialak -heading.staff=Erakunde informazioa -heading.staff.edit=Erakunde informazioa -heading.status=Estatusa -heading.student=Ikasleei buruzko informazioa -heading.student.edit=Ikasleei buruzko informazioa -heading.widget.my.friends=Nire kontaktuak -heading.widget.my.kudos=Nire kudo-ak -heading.widget.my.pictures=Nire irudiak -heading.widget.view.friends={0}(r)en kontaktuak -heading.widget.view.kudos={0}(r)en kudo-ak -heading.widget.view.pictures={0}(r)en irudiak - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=URL baliogabea da - -homephone.PhoneNumberValidator=Telefono zenbakia baliogabea da link.change.profile.picture=Aldatu irudia link.edit=Editatu link.edit.info=Editatu informazioa -link.friend.add=Gehitu kontaktu izateko -link.friend.add.name=Gehitu {0} kontaktu gisa -link.friend.confirm=Berretsi kontaktua -link.friend.feed.search=Bilatu kontaktuak -link.friend.feed.view=Ikusi kontaktu guztiak -link.friend.ignore=Ezikusi kontaktua -link.friend.remove=Kendu kontaktua -link.friend.request.act=Ekin eskaera honi -link.friend.search=Kontakturen bat bilatu nahi duzu? -link.gallery.feed.addnew=Gehitu irudi berri bat -link.gallery.feed.view=Ikusi irudi guztiak -link.gallery.image.view=Ikusi irudia link.image.current.remove=Kendu link.image.current.remove.confirm=Honekin kendu eginen da uneko profil irudia eta lehenetsia ezarriko da berriz ere. Berri bat kargatu behar duzu berriz aldatzeko. Ziur zaude egin nahi duzula? -link.messages.back=Atzera mezu zerrendara -link.messages.compose=Prestatu mezua -link.messages.mymessages=Nire mezuak -link.messages.viewthread=Ikusi haria -link.my.friends=Kontaktuak -link.my.friends.search=Bilatu kontaktuak -link.my.friends.tooltip=Ikusi eta kudeatu zure kontaktuak -link.my.messages=Mezuak -link.my.messages.tooltip=Bidali eta irakurri mezu pribatuak -link.my.pictures=Irudiak -link.my.pictures.tooltip=Gehitu irudiak eta ikusi zure galeria link.my.preferences=Lehentasunak link.my.preferences.tooltip=Kudeatu zure hobespenak -link.my.privacy=Pribatutasuna -link.my.privacy.tooltip=Kudeatu zure pribatutasuna link.my.profile=Nire profila link.my.profile.tooltip=Ikusi eta editatu zure profila link.other.profile={0}-(r)en profila -link.my.search=Bilatu -link.my.search.tooltip=Bilatu pertsonak eta ikusi beren profilak link.profile.locked.false=Profil hau blokeatu nahi duzu? link.profile.locked.true=Profila blokeatu da. Desblokeatu? link.status.clear=Garbitu link.status.update=Eguneratu -link.tab.profile=Profila -link.tab.profile.tooltip=Ikusi profila -link.tab.wall=Horma -link.tab.wall.tooltip=Ikusi Horma -link.title.confirmfriend=Berretsi eskaera -link.title.ignorefriend=Ezikusi kontaktu izateko eskaera -link.title.removefriend=Kendu kontaktua link.title.rss=Ikusi edo customizatu zure RSS feed pertsonalizatua link.title.unlinktwitter=Kendu Twitter kontuaren esteka -link.title.wall.comment=Egin iruzkin bat {0}(r)en horma-mezuari -link.title.wall.remove=Kendu zure hormatik -link.view.friends=Ikusi kontaktuak -link.wall.item.comment=Iruzkina -link.wall.item.remove=Kendu -link.worksite.create=Sortu gunea linkedinUrl.UrlValidator=URL baliogabea da -message.message=Mezua -message.reply=Erantzun -message.subject=Gaia -message.to=Norentzat - mobilephone.PhoneNumberValidator=Telefono zenbakia baliogabea da -myspaceUrl.UrlValidator=URL baliogabea da - page.title=Profila -palette.available=Erabilgarri dago -palette.selected=Hautatua - -pictures.addpicture=Gehitu hemen irudi berriak\: -pictures.filetypewarning=Irudietarako formatu baliodun bakarrak hauek dira\: jpeg, png eta gif. -pictures.removepicture=Kendu irudi hau galeriatik -pictures.removepicture.confirm=Ziur zaude kendu egin nahi duzula irudi hau galeriatik? -pictures.setprofileimage=Ezarri irudi hau nire profil irudi gisa -pictures.setprofileimage.confirm=Ziur zaude orain duzun profil irudia kendu eta horren ordez irudi hau jarri nahi duzula? - preference.option.off=Itzali preference.option.on=Piztu -preferences.email.confirms=Kontaktu izateko nire eskaera berretsiko du -preferences.email.message=Bidali niri email bat hona\: {0} norbaitek hau egiten duenean\: -preferences.email.message.new=Beste mezu bat bidaliko dit -preferences.email.message.reply=Nire mezu bati erantzunen dio -preferences.email.none=(EMAIL HELBIDERIK EZ DUZU IDATZI) -preferences.email.requests=Kontaktu gisa gehituko nau -preferences.email.wall.new=Mezuak bidaliko ditu nire hormara -preferences.email.worksite.new=Gune berri batera gehituko nau preferences.image.gravatar=Erabili nire gravatarra nire profil irudi gisa -preferences.image.message=Konfiguratu zure profil irudiari dagozkion ezarpenak preferences.image.official=Erabili erakunde irudi ofiziala profil irudi gisa -preferences.twitter.message=Baliteke zure egoeraren eguneratzeak zure Twitter kontua ere aldatzea -preferences.widget.gallery=Erakutsi nire irudiak -preferences.widget.gallery.tooltip=Zure irudiak profilean azalduko zaizkizu horrela markatzen baduzu. -preferences.widget.kudos=Erakutsi nire kudoen puntuazioa -preferences.widget.kudos.tooltip=Zure kudos puntuazioa zure profilean azalduko da kalkulatzen denean -preferences.widget.message=Kontrolatu zure profilean azalduko diren widgets-ak -preferences.widget.onlinestatus=Erakutsi nire online egoera -preferences.widget.onlinestatus.tooltip=Online zauden edo ez erakusten dizu. Gaitzen baduzu pribatutasun ezarpenetan kontrolatuko duzu. Desgaitzen baduzu konexiorik gabe azalduko zara. -privacy.academicinfo=Info. akademikoa -privacy.basicinfo=Oinarrizko informazioa -privacy.birthyear=Erakutsi jaioteguna -privacy.businessinfo=Negozio informazioa -privacy.contactinfo=Kontaktu informazioa -privacy.messages=Nork bidaliko dizkidan mezuak -privacy.myfriends=Nork ikusiko dituen nire kontaktuak -privacy.mykudos=Nork ikusiko duen nire kudos puntuazioa -privacy.mypictures=Nork ikusiko dituen nire irudiak -privacy.mystatus=Nork ikusiko duen nire egoera -privacy.mywall=Nork ikusiko dituen nire horma eta nire mezuak beste horma batzuetara -privacy.onlinestatus=Nork ikusiko duen konektatua nagoen. -privacy.option.everyone=Denek -privacy.option.nobody=Inork ez -privacy.option.onlyfriends=Nire kontaktuek bakarrik -privacy.option.onlyme=Nik bakarrik -privacy.personalinfo=Informazio pertsonala -privacy.profileimage=Profil irudia -privacy.search=Bilatu -privacy.socialinfo=Informazio soziala -privacy.staffinfo=Erakunde informazioa -privacy.studentinfo=Ikasleei buruzko informazioa -profile.academicprofileurl=Ikerketaren URL akademikoa -profile.birthday=Jaioteguna -profile.business.bio=Negozioan duzun biografia -profile.business.company.description=Enpresaren deskripzioa -profile.business.company.name=Enpresaren izena -profile.business.company.profile=Profila -profile.business.company.profiles=Enpresaren profilak -profile.business.company.web=Enpresaren web helbidea -profile.business.update=Eguneratu da negozio informazioa profilean profile.contact.update=Kontaktuaren informazioa profilean eguneratua -profile.course=Ikasmaila/Ikasturtea -profile.department=Saila profile.email=Emaila -profile.favourite.books=Liburu gogokoak -profile.favourite.movies=Film gogokoak -profile.favourite.quotes=Aipu gogokoak -profile.favourite.tv=TB programa gogokoak -profile.gallery.image.alt=Nire irudiak -profile.gallery.image.upload=Kargatu da profileko irudi galeriara -profile.homepage=Orrialde nagusia profile.image.change.upload=Aldatu da profil irudia profile.image.change.url=Aldatu da profil irudia profile.info.update=Eguneratu da oinarrizko informazioa profilean -profile.interests.update=Eguneratu da oinarrizko informazioa profilean -profile.name.first=Aurreneko izena -profile.name.first.none=Erabiltzailea -profile.name.last=Deiturak -profile.name.middle=Erdiko izena -profile.name.recording=Izen erregistroa profile.nickname=Goitizena profile.pronouns=Izenordainak profile.pronouns.options=He/Him/His,She/Her/Hers,They/Them/Theirs,Xe/Xem/Xyr(s),Ze/Hir/Hir(s),Ze/Zir/Zirs @@ -423,169 +132,33 @@ profile.phonetic.example.1.pronun=Kris-TTIN Beraedt profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=A - yit -txaa la profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=Faksimilea -profile.phone.home=Etxeko tel. profile.phone.mobile=Sakelako tel. -profile.phone.work=Tel. zk. -profile.position=Posizioa -profile.publications=Argitalpenak eta hitzaldiak -profile.room=Gela -profile.school=Eskola profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook URL-a profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn URL-a -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace URL-a profile.socialnetworking.instagram=Instagram profile.socialnetworking.instagram.edit=Instagram URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Skype erabiltzaile izena -profile.socialnetworking.skype.link=Skype Me -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter URL-a profile.socialnetworking.update=Eguneratu dira sare sozialen xehetasunak profilean -profile.staff.update=Eguneratu da erakunde informazioa profilean -profile.staffprofile=Erakunde profila -profile.student.update=Eguneratu dua ikasle informazioa profilean -profile.subjects=Gaiak profile.summary=Laburpen pertsonala -profile.universityprofileurl=Unibertsitatearen profilaren URL-a -success.message.send.ok=Bidali da mezua success.preferences.save.ok=Ongi gorde da -success.privacy.save.ok=Ongi gorde da text.edit.other.warning=Kontuz\: {0}-(r)en informazioa editatzen ari zara. -text.friend.add={0}-(e)k zure eskaera berretsi beharko du. -text.friend.already=Lehendik baduzu kontaktu hau\: {0}. -text.friend.already.pending=Lehendik baduzu kontaktu izateko eskaera bat zain hauen artean\: zu eta {0}. -text.friend.cancel=Ziur zaude utzi egin nahi duzula kontaktu izateko eskaera bat zain hauen artean\: zu eta {0}? Ez da jakinarazpenik izanen. -text.friend.confirm=Honek berretsi eginen du {0}-(r)en kontaktu izateko eskaera. -text.friend.confirmed=Konektatua zaude -text.friend.feed.num.many={0} kontaktu -text.friend.feed.num.none=0 kontaktu -text.friend.feed.num.one=1 kontaktu -text.friend.ignore=Ziur zaude ezikusi egin nahi duzula {0} r)en kontaktu izateko eskaera? Ez da jakinarazpenik izanen. (Ikusi gaztelaniazkoa; ez dio gauza bera eta) -text.friend.none=Ez duzu {0} zure kontaktuetan. -text.friend.pending=Kontaktu izateko eskaera bat zain daukazu -text.friend.remove=Ziur zaude kendu egin nahi duzula {0} kontaktu gisa? Ez da jakinarazpenik izanen. -text.friend.requested=Kontaktu izateko eskaera -text.friend.self=Zu zara eta\! -text.gallery.feed.num.none=0 irudi -text.gallery.pictures.num.none=Zure galeriak ez du irudirik oraindik. -text.gallery.upload.tooltip=Kargatu irudiak zure ordenagailutik. Irudien neurria batez beste ezin da izan {0}MB baino handiagoa. text.image.refresh=Oharra\: irudia ez bazaizu berehala azaltzen, saia zaitez nabigatzailea freskatzen. text.image.url=Idatzi irudi baten URL-a zure profil irudia izateko -text.messages.none=Mezurik ez dago text.name.pronunciation.description=Zure izena nola ahoskatzen den idatzi eta grabatu dezakezu hemen. text.no.fields=Ez duzu informaziorik eman oraindik text.no.status=Esan zerbait text.or=edo -text.privacy.academicinfo.tooltip=Aukeratu nork ikusiko duen zure informazio akademikoa, esaterako, eskola, saila edo gunea. -text.privacy.basicinfo.tooltip=Aukeratu nork ikusiko duen zure oinarrizko informazioa, esaterako, goitizena eta jaioteguna. -text.privacy.birthyear.tooltip=Aukeratu ikusiko den edo ez zure jaioteguna. Markatua badago, ikusiko da. -text.privacy.businessinfo.tooltip=Aukeratu nork ikusiko duen zure negozio informazioa, esaterako, industria, lanpostu eta negozioan duzun biografia. -text.privacy.cannot.modify=Balio hauek zure administratzaileak blokeatu ditu eta ezin dira aldatu. -text.privacy.contactinfo.tooltip=Aukeratu nork ikusiko dituen, esaterako,. zure email helbideak eta tel. zenbakiak. -text.privacy.messages.tooltip=Aukeratu nork bidaliko dizkizun mezuak. -text.privacy.myfriends.tooltip=Aukeratu nork ikusiko duen zuren kontaktu zerrenda. -text.privacy.mykudos.tooltip=Aukeratu nork ikusiko duen zure kudos puntuazioa (hobespenetan baldin badago). -text.privacy.mypictures.tooltip=Aukeratu nork ikusiko duen zure pintura galeria. -text.privacy.mystatus.tooltip=Aukeratu nork ikusiko dituen zure egoeraren eguneratzeak. -text.privacy.mywall.tooltip=Aukeratu nork ikusiko duen zure horma. -text.privacy.onlinestatus.tooltip=Aukeratu nork ikusiko duen zure linea egoera. Konexiorik gabe azalduko zara -text.privacy.personalinfo.tooltip=Aukeratu nork ikusiko dituen zure gogoko liburuak, tb ikuskariak eta abarrak . -text.privacy.profileimage.tooltip=Aukeratu nork ikusiko duen zure profil irudia. -text.privacy.socialinfo.tooltip=Aukeratu nork ikusiko duen zure your sare sozialen informazioa (Facebook, LinkedIn eta MySpace profilak). -text.privacy.staff.tooltip=Aukeratu nork ikusiko duen zure erakunde informazioa. -text.privacy.student.tooltip=Aukeratu nork ikusiko duen zure ikasle informazioa -text.profile.birthyear.tooltip=Aukeratu ikusiko den edo ez zure jaioteguna pribatutasun ezarpenetan text.profile.facebook.tooltip=adib. http\://www.facebook.com/user text.profile.linkedin.tooltip=adib. http\://www.linkedin.com/pub/user text.profile.locked.false=Profil bat blokeatzen baduzu, erabiltzaileak ezin izanen du editatu bere informazioa. text.profile.locked.true=Profil bat desblokeatzen baduzu, erabiltzaileak modua izanen du bere informazioa editatzeko. -text.profile.myspace.tooltip=adib. http\://myspace.com/user text.profile.instagram.tooltip=e.g. https\://www.instagram.com/user/ -text.profile.presence.away={0} ez dago -text.profile.presence.offline={0} ez dago konektatua -text.profile.presence.online={0} linean dago -text.profile.twitter.tooltip=adib. http\://twitter.com/sakaiproject -text.search.byinterest.all.results={0} emaitza erakusten ari da honetarako\: {1} -text.search.byinterest.label=Interes komunak -text.search.byinterest.no.results=Ez dago interes komuneko pertsonarik honekin bat\: {0}. -text.search.byinterest.one.result=Emaitza 1 erakusten ari da honetarako\: {0} -text.search.byinterest.paged.results={0} emaitza erakusten ari da ({1}(e)tik gora emaitza orrialdeko) honetarako\: {2} -text.search.byinterest.tooltip=Idatzi zure interesetako bat, adib. 'txirrindularitza', interes bereko pertsonak aurkitzeko -text.search.byname.all.results={0} emaitza erakusten ari da honetarako\: {1} -text.search.byname.label=Pertsonaren izena edo emaila -text.search.byname.no.results=Ez da honekin bat datorren emaitzarik\: {0}. -text.search.byname.one.result=Emaitza 1 erakusten ari da honetarako\: {0} -text.search.byname.paged.results={0} emaitza erakusten ari da ({1}(e)tik gora emaitza orrialdeko) honetarako\: {2} -text.search.byname.tooltip=Idatzi izena edo helbide elektronikoa pertsonak aurkitzeko -text.search.history=Aurreko bilaketak -text.search.include.connections=Sartu kontaktuak bilaketaren emaitzetan -text.search.include.worksite=Bilaketa mugatu hautatuko gunera\: -text.search.no.input=Ez duzu ezer idatzi -text.search.no.results=Ez dago emaitzarik honetarako\: {0}. -text.search.no.worksite=Oraindik ez zara inongo gunetako kide -text.search.paged.results={0} - {1} emaitza erakusten ari da {2} emaitzatatik honetarako\:\: {3} -text.search.terms.label=Bilatzeko terminoak -text.search.terms.tooltip=idatzi bilatzeko hitzak, bilaketa irizpidearen arabera\: izenaren/emailaren arabera edo interesaren arabera -text.search.toomany.results=Zure bilaketak honetarako\: {0} {1} edo gehiago emaitza eman du. Aurreneko {1} emaitza soilik aterako da. text.upload.image.file=Hautatu irudi bat zure ordenagailuan (geh. {0}MB)\: text.view.profile.nothing=Pertsona honek murriztu egin du bere informazioaren bista edo ez du profil informaziorik partekatzeko. -text.view.wall.nothing=Orain ez dago itemik {0}>(r)en horman. Izan zaitez lehena zerbait idazten\! -text.view.wall.restricted={0}(r)en kontaktuek soilik ikusiko dute horma hau. Gehitu {0} kontaktu gisa, horma ikus dezan eta bidal ditzan mezuak. -text.wall.no.items=Orain ez dago itemik zure horman bistaratzeko. -text.wall.remove.mine=Kendu post from your wall? -text.wall.remove.other=Kendu egin nahi duzu {0}(r)en posta zure hormatik? -text.worksite.create=Hautatu erabilgarri daudenen artetik eta sortu beste gune bat. -text.worksite.refresh=Freskatu nabigatzailea gune berrira sartzeko, hura sortu ondoren title.change.profile.picture=Aldatu zure profil irudia -title.friend.add={0} kontaktu gisa gehitu nahi duzu? -title.friend.cancel=Utzi egin nahi duzu kontaktu izateko eskaera? -title.friend.confirm=Berretsi nahi duzu {0}(r)en eskaera? -title.friend.ignore=Ezikusi kontaktu izateko eskaera? -title.friend.remove=Kendu kontaktua? -title.message.compose=Prestatu beste mezu bat -title.wall.comment=Egin iruzkin bat {0}(r)en horma-mezuari -title.wall.remove=Kendu hormatik - -twitter.auth.do=Estekatu Twitter kontua -twitter.auth.linked=Twitter kontua estekatu da -twitter.enabled=Gaitu Twitter integrazioa - -twitterUrl.UrlValidator=URL baliogabea da urlField.Required=Ez duzu URL-rik idatzi - -workphone.PhoneNumberValidator=Telefono zenbakia baliogabea da - -worksite.name=Gunearen izena - -email.connectionrequest.subject=kontaktu gisa gehitu zaitu -email.connectionrequest.added=kontaktu gisa gehitu zaitu -email.connectionrequest.toconfirm1=Berresteko kontaktua izateko pertsona honen eskaera\: -email.connectionrequest.toconfirm2=beheko url-a jarraitu - -email.connectionconfirm.subject=(e)k berretsi du zure kontaktua izateko eskaera data honetan -email.connectionconfirm.confirmed=(e)k berretsi du zure kontaktua izateko eskaera data honetan -email.connectionconfirm.toview1=Ikusteko honen profila -email.connectionconfirm.toview2=, jarraitu beheko url-a\: - -email.messagenew.subject=bidali dizu mezu bat -email.messagenew.sent=bidali dizu mezu bat -email.messagenew.toview1=Mezu hau ikusteko jarraitu beheko esteka\: - -email.messagereply.subject=erantzun du zure mezua hemen - -email.profilechange.subject=aldatuta profila hemen - -email.wallnew.subject=bidali du haien hormara hemen -email.wall.viewtheir=Bere horma ikusteko jarraitu beheko esteka\: -email.wall.viewmy=Zure horma ikusteko jarraitu beheko esteka\: - -email.mywallnew.subject=idatzi berri du zure profilaren horman data honetan\: -email.wall.theirstatus.subject=(r)en estatus berria idatzi du bere profilaren horman data honetan\: diff --git a/profile2/api/src/resources/ProfileApplication_fa_IR.properties b/profile2/api/src/resources/ProfileApplication_fa_IR.properties index 07a9c79473d1..9d154ae461d3 100644 --- a/profile2/api/src/resources/ProfileApplication_fa_IR.properties +++ b/profile2/api/src/resources/ProfileApplication_fa_IR.properties @@ -15,175 +15,42 @@ # RequiredValidator=${label} \u0627\u0644\u0632\u0627\u0645\u06cc \u0627\u0633\u062a -accessibility.connection.add=\u0627\u0641\u0632\u0648\u062f\u0646 {0} \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0648\u0633\u062a\u061f -accessibility.connection.confirm=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc {0} \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u0645\u06cc\u06a9\u0646\u06cc\u062f\u061f -accessibility.connection.ignore=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc {0} \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0645\u06cc\u06af\u06cc\u0631\u06cc\u062f\u061f -accessibility.connection.remove=\u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f {0} \u0631\u0627 \u0627\u0632 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u062e\u0648\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f accessibility.edit.basic=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc -accessibility.edit.business=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06cc accessibility.edit.contact=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u0647 -accessibility.edit.personal=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0645\u0627\u0633 accessibility.edit.social=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc -accessibility.edit.staff=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646 -accessibility.edit.student=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u06cc accessibility.image.upload=\u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f accessibility.image.url=Url \u0628\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.messages.unread=\u067e\u06cc\u0627\u0645 \u062e\u0648\u0627\u0646\u062f\u0647 \u0646\u0634\u062f\u0647 -accessibility.prefs.confirms.off=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u0645\u0646 \u0631\u0627 \u062a\u0627\u0626\u06cc\u062f \u0645\u06cc\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.confirms.on=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u0645\u0646 \u0631\u0627 \u062a\u0627\u0626\u06cc\u062f \u0645\u06cc\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.gallery=\u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u0646 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 accessibility.prefs.gravatar=\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0648\u0627\u062a\u0627\u0631 \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 -accessibility.prefs.kudos=\u0646\u0645\u0627\u06cc\u0634 \u0631\u062a\u0628\u0647 \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u0645\u0646 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 -accessibility.prefs.messagenew.off=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062c\u062f\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.messagenew.on=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062c\u062f\u06cc\u062f \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.messagereply.off=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0628\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0645\u0646 \u067e\u0627\u0633\u062e \u0645\u06cc\u062f\u0647\u062f\u060c \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.messagereply.on=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0628\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0645\u0646 \u067e\u0627\u0633\u062e \u0645\u06cc\u062f\u0647\u062f\u060c \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 accessibility.prefs.officialimage=\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 -accessibility.prefs.onlinestatus=\u0646\u0645\u0627\u06cc\u0634 \u0648\u0636\u0639\u06cc\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0645\u0646 \u0628\u0647 \u062f\u06cc\u06af\u0631\u0627\u0646 accessibility.prefs.overview=\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0627\u0637\u0644\u0627\u0639 \u0631\u0633\u0627\u0646\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0645\u06cc\u0644 -accessibility.prefs.requests.off=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.requests.on=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.twitterauthcode=\u06a9\u062f \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062a\u0648\u0626\u06cc\u062a\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.prefs.wallnew.off=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0645\u0637\u0644\u0628\u06cc \u062f\u0631 \u0646\u0645\u0627\u06cc\u0647 \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.wallnew.on=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06a9\u0633\u06cc \u0645\u0637\u0644\u0628\u06cc \u062f\u0631 \u0646\u0645\u0627\u06cc\u0647 \u0645\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.worksite.off=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646\u0645 \u0645\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.prefs.worksite.on=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646\u0645 \u0645\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f\u060c \u0628\u0631\u0627\u06cc\u0645 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u060c \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 -accessibility.privacy.academic=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u062d\u0635\u06cc\u0644\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u062f\u0631\u0633\u0647\u060c \u06af\u0631\u0648\u0647 \u06cc\u0627 \u062f\u0631\u0633 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.basic=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0645\u0627\u0646\u0646\u062f \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0648 \u062a\u0627\u0631\u06cc\u062e \u062a\u0648\u0644\u062f \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.birthyear=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0633\u0627\u0644 \u062a\u0648\u0644\u062f \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0639\u0644\u0627\u0645\u062a \u0632\u062f\u0646 \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0633\u062a. -accessibility.privacy.business=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0635\u0646\u0639\u062a\u060c \u0634\u063a\u0644 \u06cc\u0627 \u062e\u0644\u0627\u0635\u0647 \u06a9\u0627\u0631\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.contact=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.friends=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.image=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.kudos=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u062a\u062c\u0644\u06cc\u0644 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f (\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f). -accessibility.privacy.messages=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u0646\u062f. -accessibility.privacy.onlinestatus=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0648\u0636\u0639\u06cc\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.overview=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0686\u0647 \u0628\u062e\u0634 \u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f -accessibility.privacy.personal=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u060c \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062a\u0644\u0648\u0632\u06cc\u0648\u0646\u06cc \u0648 \u062f\u06cc\u06af\u0631 \u0645\u0648\u0627\u0631\u062f \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.pictures=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u06af\u0627\u0644\u0631\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.social=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0645\u0627\u0646\u0646\u062f \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0641\u06cc\u0633\u0628\u0648\u06a9\u060c LinkedIn \u0648 MySpace \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.staff=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06a9\u0646\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f -accessibility.privacy.status=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0627\u06cc \u0648\u0636\u0639\u06cc\u062a \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.privacy.student=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f -accessibility.privacy.wall=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0646\u0645\u0627\u06cc\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -accessibility.profile.academicprofileurl.input=Url \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062a\u062d\u0635\u06cc\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.birthday=\u062a\u0627\u0631\u06cc\u062e \u062a\u0648\u0644\u062f \u062e\u0648\u062f \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f. \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u0628\u062e\u0634 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0646\u062d\u0648\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0633\u0627\u0644 \u062a\u0648\u0644\u062f \u062e\u0648\u062f \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u06cc\u062f. -accessibility.profile.businessbio.input=\u062e\u0644\u0627\u0635\u0647 \u0634\u0631\u062d \u06a9\u0627\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f. -accessibility.profile.companydescription.input=\u0634\u0631\u062d \u0634\u0631\u06a9\u062a \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.companyname.input=\u0646\u0627\u0645 \u0627\u06cc\u0646 \u0634\u0631\u06a9\u062a \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.companyurl.input=\u0622\u062f\u0631\u0633 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0627\u06cc\u0646 \u0634\u0631\u06a9\u062a \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.course.input=\u062f\u0648\u0631\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.department.input=\u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f accessibility.profile.email.input=\u0627\u06cc\u0645\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f accessibility.profile.facebookurl.input=\u0622\u062f\u0631\u0633 \u0641\u06cc\u0633\u0628\u0648\u06a9 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.facsimile.input=\u0634\u0645\u0627\u0631\u0647 \u0641\u06a9\u0633 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.favouritebooks.input=\u06a9\u062a\u0627\u0628 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.favouritemovies.input=\u0641\u06cc\u0644\u0645 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.favouritequotes.input=\u0646\u0642\u0644 \u0642\u0648\u0644 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.favouritetv.input=\u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062a\u0644\u0648\u06cc\u0632\u06cc\u0648\u0646\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.homepage.input=Url \u0635\u0641\u062d\u0647 \u0648\u0628 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.homephone.input=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0645\u0646\u0632\u0644 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f accessibility.profile.linkedinurl.input=\u0622\u062f\u0631\u0633 LinkedIn \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.messagebody.input=\u067e\u06cc\u0627\u0645 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.messagerecipient.input=\u06af\u06cc\u0631\u0646\u062f\u0647 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f -accessibility.profile.messagesubject.input=\u0645\u0648\u0636\u0648\u0639 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f accessibility.profile.mobilephone.input=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0645\u0648\u0628\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.myspaceurl.input=\u0622\u062f\u0631\u0633 LinkedIn \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f accessibility.profile.nickname.input=\u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.position.input=\u0634\u063a\u0644 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.publications.input=\u0646\u0634\u0631\u06cc\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.room.input=\u0627\u062a\u0627\u0642 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.school.input=\u0645\u062f\u0631\u0633\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.skypeusername.input=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc Skype\u200c \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.staffprofile.input=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u06a9\u0646\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.status.clear=\u0648\u0636\u0639\u06cc\u062a \u062e\u0648\u062f \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u062f -accessibility.profile.status.input=\u0648\u0636\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.subjects.input=\u0631\u0634\u062a\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f accessibility.profile.summaryinput=\u062e\u0644\u0627\u0635\u0647 \u0634\u062e\u0635\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.twitterurl.input=\u0622\u062f\u0631\u0633 \u062a\u0648\u0626\u06cc\u062a\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.uniprofileurl.input=Url \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062f\u0627\u0646\u0634\u06af\u0627\u0647\u06cc \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.wallpost.input=\u0645\u062a\u0646 \u0628\u0631\u0627\u06cc \u067e\u0633\u062a \u0646\u0645\u0627\u06cc\u0647 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.profile.workphone.input=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0645\u062d\u0644 \u06a9\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -accessibility.search.connections=\u062f\u0631\u0646\u0638\u0631 \u06af\u06cc\u0631\u06cc \u062f\u0648\u0633\u062a\u0627\u0646 \u062f\u0631 \u0646\u062a\u0627\u06cc\u062c \u062c\u0633\u062a\u062c\u0648 -accessibility.search.worksite=\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062c\u0633\u062a\u062c\u0648 \u0628\u0647 \u0633\u0627\u06cc\u062a \u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 -accessibility.wall.comment=\u0646\u0648\u0634\u062a\u0646 \u0646\u0638\u0631 \u062f\u0631 \u067e\u0633\u062a \u0646\u0645\u0627\u06cc\u0647 {0} -accessibility.wall.remove.mine=\u0622\u06cc\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0633\u062a \u0631\u0627 \u0646\u0645\u0627\u06cc\u0647 \u062e\u0648\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f -accessibility.wall.remove.other=\u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0633\u062a {0} \u0631\u0627 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0647 \u062e\u0648\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f -button.business.add.profile=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0631\u06a9\u062a \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f -button.business.remove.profile=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0631\u06a9\u062a \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f button.cancel=\u0644\u063a\u0648 button.close=\u0628\u0633\u062a\u0646 button.edit=\u0648\u06cc\u0631\u0627\u06cc\u0634 -button.friend.add=\u0627\u0641\u0632\u0648\u062f\u0646 \u062f\u0648\u0633\u062a -button.friend.cancel=\u0644\u063a\u0648 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc -button.friend.confirm=\u062a\u0627\u06cc\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc -button.friend.ignore=\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc -button.friend.remove=\u062d\u0630\u0641 \u062f\u0648\u0633\u062a -button.gallery.remove=\u062d\u0630\u0641 \u062a\u0635\u0648\u06cc\u0631 -button.gallery.remove.confirm=\u062a\u0627\u0626\u06cc\u062f \u062d\u0630\u0641 -button.gallery.setprofile=\u0627\u0646\u062a\u062e\u0627\u0628 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -button.gallery.setprofile.confirm=\u062a\u0627\u0626\u06cc\u062f \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f -button.gallery.upload=\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 button.link=\u0644\u06cc\u0646\u06a9 -button.message.reply=\u067e\u0627\u0633\u062e -button.message.send=\u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 button.save=\u0630\u062e\u064a\u0631\u0647 button.save.changes=\u0630\u062e\u06cc\u0631\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a button.save.settings=\u0630\u062e\u06cc\u0631\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a button.sayit=\u0628\u06af\u0648\u06cc\u06cc\u062f -button.search.byinterest=\u062c\u0633\u062a\u062c\u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0644\u0627\u06cc\u0642 \u0645\u0634\u062a\u0631\u06a9 -button.search.byname=\u062c\u0633\u062a\u062c\u0648 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0627\u0645 \u06cc\u0627 \u0627\u06cc\u0645\u06cc\u0644 -button.search.clear=\u062c\u0633\u062a\u062c\u0648 \u067e\u0627\u06a9 \u0634\u0648\u062f -button.search.generic=\u062c\u0633\u062a\u062c\u0648 -button.search.history.clear=\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0631\u06cc\u062e\u0686\u0647 button.upload=\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc button.url.add=\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 URL -button.wall.comment=\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0646\u0638\u0631 -button.wall.post=\u0627\u0631\u0633\u0627\u0644 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0647 -button.wall.remove=\u062d\u0630\u0641 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0647 -button.worksite.cancel=\u0644\u063a\u0648 -button.worksite.create=\u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0646 - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=\u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 error.empty.file.uploaded=\u0634\u0645\u0627 \u062a\u0644\u0627\u0634 \u062f\u0627\u0634\u062a\u06cc\u062f \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062e\u0627\u0644\u06cc \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f error.file.save.failed=\u0630\u062e\u06cc\u0631\u0647 \u0641\u0627\u06cc\u0644 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.friend.add.failed=\u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u0628\u0647 {0} \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f. -error.friend.already.confirmed=\u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646 {0} \u0647\u0633\u062a\u06cc\u062f. -error.friend.already.pending=\u0647\u0646\u0648\u0632 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0628\u0631\u0627\u06cc {0} \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. -error.friend.confirm.failed=\u062f\u0631 \u0632\u0645\u0627\u0646 \u062a\u0627\u0626\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc {0} \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f. -error.friend.ignore.failed=\u062f\u0631 \u0632\u0645\u0627\u0646 \u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc {0} \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f. -error.friend.not.friend=\u0634\u0645\u0627 \u062f\u0631 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 {0} \u0642\u0631\u0627\u0631 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0648 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\! -error.friend.not.pending.confirm=\u0647\u06cc\u0686 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0627\u0632 {0} \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062a\u0627\u0626\u06cc\u062f \u06a9\u0646\u06cc\u062f\! -error.friend.not.pending.ignore=\u0647\u06cc\u0686 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0627\u0632 {0} \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0634\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f\! -error.friend.remove.failed=\u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u062d\u0630\u0641 {0} \u0627\u0632 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u0634\u0645\u0627 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f. -error.gallery.remove.failed=\u0627\u0645\u06a9\u0627\u0646 \u062d\u0630\u0641 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 \u06af\u0627\u0644\u0631\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f -error.gallery.setprofile.failed=\u0627\u0645\u06a9\u0627\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f -error.gallery.upload.warning=\u0627\u0628\u062a\u062f\u0627 \u0641\u0627\u06cc\u0644(\u0647\u0627) \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f error.invalid.image.type=\u062a\u0646\u0647\u0627 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0627 \u0641\u0631\u0645\u062a PNG\u060c JPG \u0648 GIF \u0645\u062c\u0627\u0632 \u0647\u0633\u062a\u0646\u062f. -error.message.required.body=\u067e\u06cc\u0627\u0645 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u062e\u0627\u0644\u06cc \u0628\u0627\u0634\u062f -error.message.required.to=\u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062f\u0648\u0633\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f -error.message.send.failed=\u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u067e\u06cc\u0627\u0645 \u0634\u0645\u0627 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f error.no.file.uploaded=\u0634\u0645\u0627 \u0641\u0627\u06cc\u0644\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u06a9\u0631\u062f\u06cc\u062f error.password.required=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a error.preferences.save.failed=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.privacy.save.failed=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.profile.save.academic.failed=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.profile.save.business.failed=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f error.profile.save.contact.failed=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f error.profile.save.info.failed=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.profile.save.interests.failed=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.twitter.details.invalid=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u0628\u0631\u06cc \u062a\u0648\u06cc\u06cc\u062a\u0631 \u062a\u0627\u06cc\u06cc\u062f \u0646\u0634\u062f error.url.save.failed=\u0630\u062e\u06cc\u0631\u0647 Url \u0645\u0648\u0641\u0642 \u0646\u0628\u0648\u062f error.username.required=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a -error.wall.comment.empty=\u0634\u0645\u0627 \u062a\u0644\u0627\u0634 \u062f\u0627\u0634\u062a\u06cc\u062f \u06cc\u06a9 \u0646\u0638\u0631 \u062e\u0627\u0644\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f -error.wall.comment.failed=\u0646\u0638\u0631 \u062f\u0627\u062f\u0646 \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.wall.post.empty=\u0634\u0645\u0627 \u0633\u0639\u06cc \u062f\u0627\u0634\u062a\u06cc\u062f \u06cc\u06a9 \u067e\u0633\u062a \u062e\u0627\u0644\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f -error.wall.post.failed=\u0627\u0631\u0633\u0627\u0644 \u067e\u0633\u062a \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.worksite.create.failed=\u0627\u06cc\u062c\u0627\u062f \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0648\u062f -error.worksite.no.title=\u0628\u0627\u06cc\u062f \u0646\u0627\u0645\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u06cc\u062a \u0627\u0631\u0627\u0626\u0647 \u06a9\u0646\u06cc\u062f exception.heading.session.expired=\u0633\u0634\u0646 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 exception.text.session.expired=\u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647\u060c \u0633\u0634\u0646 \u0634\u0645\u0627 \u0645\u0646\u0642\u0636\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0635\u0641\u062d\u0647 \u0631\u0627 \u0645\u062c\u062f\u062f\u0627\u064b \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u06cc\u06a9 \u0628\u0627\u0631 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645 \u062e\u0627\u0631\u062c \u0648 \u0633\u067e\u0633 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0627\u0631\u062f \u0634\u0648\u06cc\u062f \u0648 \u0633\u0634\u0646 \u062e\u0648\u062f \u0631\u0627 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. @@ -194,340 +61,76 @@ facsimile.PhoneNumberValidator=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641 form.uploadTooLarge=\u062d\u062c\u0645 \u0641\u0627\u06cc\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0628\u0627\u06cc\u062f \u06a9\u0645\u062a\u0631 \u0627\u0632 ${maxSize} \u0628\u0627\u0634\u062f -heading.academic=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u062d\u0635\u06cc\u0644\u06cc -heading.academic.edit=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u062d\u0635\u06cc\u0644\u06cc heading.basic=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u0647 heading.basic.edit=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u0647 -heading.business=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06cc -heading.business.edit=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06cc heading.contact=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0645\u0627\u0633 heading.contact.edit=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0645\u0627\u0633 -heading.friend.requests=\u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u062f\u0648\u0633\u062a\u06cc - -heading.friends.my=\u062f\u0648\u0633\u062a\u0627\u0646 \u0645\u0646 - -heading.friends.view=\u062f\u0648\u0633\u062a\u0627\u0646 {0} - -heading.interests=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc -heading.interests.edit=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc -heading.messages=\u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0645\u0646 -heading.pictures.addpicture=\u0627\u0641\u0632\u0648\u062f\u0646 \u0639\u06a9\u0633 -heading.pictures.my.pictures=\u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u0646 -heading.pictures.view.pictures=\u062a\u0635\u0627\u0648\u06cc\u0631 {0} heading.preferences=\u062a\u0646\u0638\u06cc\u0645\u0627\u062a -heading.privacy=\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc -heading.search=\u062c\u0633\u062a\u062c\u0648\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0647\u0627 -heading.section.academic.staff=\u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646\: -heading.section.academic.students=\u0628\u0631\u0627\u06cc \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u0627\u0646\: heading.section.email=\u0627\u0637\u0644\u0627\u0639\u06cc\u0647 \u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 heading.section.image=\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -heading.section.twitter=\u0627\u062f\u063a\u0627\u0645 \u062a\u0648\u06cc\u06cc\u062a\u0631 heading.section.widget=\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648\u06cc\u062c\u062a heading.social=\u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc heading.social.edit=\u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc -heading.staff=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646 -heading.staff.edit=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646 -heading.student=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u06cc -heading.student.edit=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u06cc -heading.widget.my.friends=\u062f\u0648\u0633\u062a\u0627\u0646 \u0645\u0646 -heading.widget.my.kudos=\u062a\u062c\u0644\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0646 -heading.widget.my.pictures=\u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u0646 -heading.widget.view.friends=\u062f\u0648\u0633\u062a\u0627\u0646 {0} -heading.widget.view.kudos=\u062a\u062c\u0644\u06cc\u0644 \u0647\u0627\u06cc {0} -heading.widget.view.pictures=\u062a\u0635\u0627\u0648\u06cc\u0631 {0} #UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=URL \u0646\u0627\u0645\u0639\u062a\u0628\u0631 -homephone.PhoneNumberValidator=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 link.change.profile.picture=\u062a\u063a\u06cc\u06cc\u0631 \u062a\u0635\u0648\u06cc\u0631 link.edit=\u0648\u06cc\u0631\u0627\u06cc\u0634 link.edit.info=\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a -link.friend.add=\u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0648\u0633\u062a -link.friend.add.name=\u0627\u0641\u0632\u0648\u062f\u0646 {0} \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0648\u0633\u062a -link.friend.confirm=\u062a\u0627\u0626\u06cc\u062f \u062f\u0648\u0633\u062a\u06cc -link.friend.feed.search=\u062c\u0633\u062a\u062c\u0648 \u0628\u0631\u0627\u06cc \u062f\u0648\u0633\u062a\u0627\u0646 -link.friend.feed.view=\u0645\u0634\u0627\u0647\u062f\u0647 \u062a\u0645\u0627\u0645\u06cc \u062f\u0648\u0633\u062a\u0627\u0646 -link.friend.ignore=\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u062f\u0648\u0633\u062a\u06cc -link.friend.remove=\u062d\u0630\u0641 \u062f\u0648\u0633\u062a -link.friend.request.act=\u0627\u0642\u062f\u0627\u0645 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a -link.friend.search=\u062c\u0633\u062a\u062c\u0648 \u0628\u0631\u0627\u06cc \u062f\u0648\u0633\u062a\u0627\u0646 -link.gallery.feed.addnew=\u0627\u0641\u0632\u0648\u062f\u0646 \u0639\u06a9\u0633 \u062c\u062f\u06cc\u062f -link.gallery.feed.view=\u0645\u0634\u0627\u0647\u062f\u0647 \u0647\u0645\u0647 \u062a\u0635\u0627\u0648\u06cc\u0631 -link.gallery.image.view=\u0645\u0634\u0627\u0647\u062f\u0647 \u062a\u0635\u0648\u06cc\u0631 link.image.current.remove=\u062d\u062f\u0641 link.image.current.remove.confirm=\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0641\u0639\u0644\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062d\u0630\u0641 \u0634\u062f\u0647 \u0648 \u0628\u0647 \u062d\u0627\u0644\u062a \u067e\u06cc\u0634 \u0641\u0631\u0636 \u062f\u0631 \u062e\u0648\u0627\u0647\u062f \u0622\u0645\u062f. \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0645\u062c\u062f\u062f \u0622\u0646 \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f. \u0622\u06cc\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u062f\u061f -link.messages.back=\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u0644\u06cc\u0633\u062a \u067e\u06cc\u0627\u0645 \u0647\u0627 -link.messages.compose=\u0627\u06cc\u062c\u0627\u062f \u067e\u06cc\u0627\u0645 -link.messages.mymessages=\u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0645\u0646 -link.messages.viewthread=\u0645\u0634\u0627\u0647\u062f\u0647 \u0628\u062d\u062b -link.my.friends=\u062f\u0648\u0633\u062a\u0627\u0646 -link.my.friends.search=\u062c\u0633\u062a\u062c\u0648 \u0628\u0631\u0627\u06cc \u062f\u0648\u0633\u062a\u0627\u0646 -link.my.friends.tooltip=\u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062f\u0648\u0633\u062a\u0627\u0646 -link.my.messages=\u067e\u06cc\u0627\u0645 \u0647\u0627 -link.my.messages.tooltip=\u0627\u0631\u0633\u0627\u0644 \u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u062e\u0635\u0648\u0635\u06cc -link.my.pictures=\u062a\u0635\u0627\u0648\u06cc\u0631 -link.my.pictures.tooltip=\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u06af\u0627\u0644\u0631\u06cc \u062e\u0648\u062f link.my.preferences=\u062a\u0646\u0638\u06cc\u0645\u0627\u062a link.my.preferences.tooltip=\u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0634\u0645\u0627 -link.my.privacy=\u062e\u0635\u0648\u0635\u06cc \u0633\u0627\u0632\u06cc -link.my.privacy.tooltip=\u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0631\u06cc\u0645 \u062e\u0635\u0648\u0635\u06cc \u0634\u0645\u0627 link.my.profile=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 link.my.profile.tooltip=\u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 link.other.profile=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 {0} -link.my.search=\u062c\u0633\u062a\u062c\u0648 -link.my.search.tooltip=\u062c\u0633\u062a\u062c\u0648 \u0628\u0631\u0627\u06cc \u0627\u0641\u0631\u0627\u062f \u0648 \u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0622\u0646\u0647\u0627 link.profile.locked.false=\u0622\u06cc\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u0646 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0642\u0641\u0644 \u06a9\u0646\u06cc\u062f\u061f link.profile.locked.true=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0642\u0641\u0644 \u0634\u062f\u0647. \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f\u061f -link.status.clear=\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 -link.status.update=\u0628\u0647\u200c\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc -link.tab.profile=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -link.tab.profile.tooltip=\u0645\u0634\u0627\u0647\u062f\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -link.tab.wall=\u0646\u0645\u0627\u06cc\u0647 -link.tab.wall.tooltip=\u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u0645\u0627\u06cc\u0647 -link.title.confirmfriend=\u062a\u0627\u06cc\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc -link.title.ignorefriend=\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc -link.title.removefriend=\u062d\u0630\u0641 \u062f\u0648\u0633\u062a link.title.rss=\u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u0634\u062e\u0635\u06cc \u0633\u0627\u0632\u06cc \u0641\u06cc\u062f RSS -link.title.unlinktwitter=\u0642\u0637\u0639 \u06a9\u0631\u062f\u0646 \u0627\u0631\u062a\u0628\u0627\u0637 \u062d\u0633\u0627\u0628 \u062a\u0648\u0626\u06cc\u062a\u0631 -link.title.wall.comment=\u0646\u0648\u0634\u062a\u0646 \u0646\u0638\u0631 \u062f\u0631 \u067e\u0633\u062a \u0646\u0645\u0627\u06cc\u0647 {0} -link.title.wall.remove=\u062d\u0630\u0641 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0647 \u062e\u0648\u062f -link.view.friends=\u0645\u0634\u0627\u0647\u062f\u0647 \u062f\u0648\u0633\u062a\u0627\u0646 -link.wall.item.comment=\u0646\u0638\u0631 -link.wall.item.remove=\u062d\u062f\u0641 -link.worksite.create=\u0627\u06cc\u062c\u0627\u062f \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc linkedinUrl.UrlValidator=URL \u0646\u0627\u0645\u0639\u062a\u0628\u0631 -message.message=\u067e\u06cc\u0627\u0645 -message.reply=\u067e\u0627\u0633\u062e -message.subject=\u0645\u0648\u0636\u0648\u0639 -message.to=\u0628\u0647 - mobilephone.PhoneNumberValidator=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 -myspaceUrl.UrlValidator=URL \u0646\u0627\u0645\u0639\u062a\u0628\u0631 - page.title=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -palette.available=\u062f\u0631 \u062f\u0633\u062a\u0631\u0633 -palette.selected=\u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 - -pictures.addpicture=\u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631\u06cc \u062c\u062f\u06cc\u062f \u0628\u0647 \u06af\u0627\u0644\u0631\u06cc -pictures.filetypewarning=\u062a\u0646\u0647\u0627 \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0628\u0627 \u0641\u0631\u0645\u062a jpeg\u060c png \u0648 gif \u0631\u0627 \u0628\u0647 \u06af\u0627\u0644\u0631\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f -pictures.removepicture=\u062d\u0630\u0641 \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0627\u0632 \u06af\u0627\u0644\u0631\u06cc -pictures.removepicture.confirm=\u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0627\u0632 \u06af\u0627\u0644\u0631\u06cc \u062e\u0648\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f -pictures.setprofileimage=\u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 -pictures.setprofileimage.confirm=\u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u062a\u0635\u0648\u06cc\u0631 \u0641\u0639\u0644\u06cc \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0639\u0648\u0636 \u06a9\u0646\u06cc\u062f\u061f - preference.option.off=\u062e\u0627\u0645\u0648\u0634 preference.option.on=\u062f\u0631 -preferences.email.confirms=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u0645\u0646 \u0631\u0627 \u062a\u0627\u0626\u06cc\u062f \u0645\u06cc\u06a9\u0646\u062f -preferences.email.message=\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0641\u0631\u062f\u06cc \u0627\u06cc\u0646 \u0627\u0642\u062f\u0627\u0645 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u062f\u0647\u062f\u060c \u0628\u0647 \u0622\u062f\u0631\u0633 {0} \u0628\u0647 \u0645\u0646 \u06cc\u06a9 \u0627\u06cc\u0645\u06cc\u0644 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\: -preferences.email.message.new=\u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0645\u0646 \u0645\u06cc\u0641\u0631\u0633\u062a\u062f -preferences.email.message.reply=\u0628\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0645\u0646 \u067e\u0627\u0633\u062e \u0645\u06cc\u062f\u0647\u062f -preferences.email.none=(\u0647\u06cc\u0686 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\u06cc \u0645\u0634\u062e\u0635 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a) -preferences.email.requests=\u0645\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062f\u0648\u0633\u062a \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f -preferences.email.wall.new=\u0628\u0631 \u0631\u0648\u06cc \u0646\u0645\u0627\u06cc\u0647 \u0645\u0646 \u067e\u0633\u062a\u06cc \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u062f -preferences.email.worksite.new=\u0645\u0646 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc \u062c\u062f\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u06a9\u0646\u062f preferences.image.gravatar=\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0648\u0627\u062a\u0627\u0631 \u0645\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 preferences.image.message=\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 preferences.image.official=\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0631\u0633\u0645\u06cc \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0645\u0646 -preferences.twitter.message=\u0628\u0627 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0648\u0636\u0639\u06cc\u062a\u060c \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062a\u0648\u0626\u06cc\u062a\u0631 \u0634\u0645\u0627 \u0647\u0645 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0645\u06cc\u0634\u0648\u062f -preferences.widget.gallery=\u0646\u0645\u0627\u06cc\u0634 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u0646 -preferences.widget.gallery.tooltip=\u0627\u06af\u0631 \u06af\u0632\u06cc\u0646\u0647 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f\u060c \u062a\u0635\u0627\u0648\u06cc\u0631 \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f. -preferences.widget.kudos=\u0646\u0645\u0627\u06cc\u0634 \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u062a\u062c\u0644\u06cc\u0644 \u0645\u0646 -preferences.widget.kudos.tooltip=\u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0645\u062a\u06cc\u0627\u0632 \u0634\u0645\u0627 \u0645\u062d\u0627\u0633\u0628\u0647 \u0634\u0648\u062f\u060c \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u062a\u062c\u0644\u06cc\u0644 \u0634\u0645\u0627 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f -preferences.widget.message=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u062f\u0627\u0645 \u0648\u06cc\u062c\u062a \u0647\u0627 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u0646\u062f -preferences.widget.onlinestatus=\u0646\u0645\u0627\u06cc\u0634 \u0648\u0636\u0639\u06cc\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0645\u0646 -preferences.widget.onlinestatus.tooltip=\u0646\u0634\u0627\u0646 \u0645\u06cc\u062f\u0647\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0634\u0645\u0627 \u0622\u0646\u0644\u0627\u06cc\u0646 \u0647\u0633\u062a\u06cc\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062e\u0635\u0648\u0635\u06cc\u060c \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0631\u0627 \u0628\u06cc\u0634\u062a\u0631 \u06a9\u0646\u062a\u0631\u0644 \u0648 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f. \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0628\u0627\u0634\u062f\u060c \u0634\u0645\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0641\u0644\u0627\u06cc\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f - -privacy.academicinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u062d\u0635\u06cc\u0644\u06cc -privacy.basicinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u0647 -privacy.birthyear=\u0646\u0645\u0627\u06cc\u0634 \u0633\u0627\u0644 \u062a\u0648\u0644\u062f -privacy.businessinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06cc -privacy.contactinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0645\u0627\u0633 -privacy.messages=\u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0645\u0646 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u0646\u062f\u061f -privacy.myfriends=\u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u062f\u0648\u0633\u062a\u0627\u0646 \u0645\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u061f -privacy.mykudos=\u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u062a\u062c\u0644\u06cc\u0644 \u0645\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u061f -privacy.mypictures=\u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u061f -privacy.mystatus=\u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0648\u0636\u0639\u06cc\u062a \u0645\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u061f -privacy.mywall=\u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0646\u0645\u0627\u06cc\u0647 \u0648 \u0627\u0631\u0633\u0627\u0644\u0627\u062a \u0645\u0646 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0647 \u062f\u06cc\u06af\u0631\u0627\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u061f -privacy.onlinestatus=\u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0648\u0636\u0639\u06cc\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0648\u062f\u0646 \u0645\u0646 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f\u061f -privacy.option.everyone=\u0647\u0645\u0647 -privacy.option.nobody=\u0647\u06cc\u0686 \u06a9\u0633 -privacy.option.onlyfriends=\u062a\u0646\u0647\u0627 \u062f\u0648\u0633\u062a\u0627\u0646 \u0645\u0646 -privacy.option.onlyme=\u0641\u0642\u0637 \u0645\u0646 -privacy.personalinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc -privacy.profileimage=\u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -privacy.search=\u062c\u0633\u062a\u062c\u0648 -privacy.socialinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u062c\u062a\u0645\u0627\u0639\u06cc -privacy.staffinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06a9\u0646\u06cc -privacy.studentinfo=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u06cc -profile.academicprofileurl=URL \u0639\u0644\u0645\u06cc / \u067e\u0632\u0648\u0647\u0634\u06cc -profile.birthday=\u062a\u0627\u0631\u06cc\u062e \u062a\u0648\u0644\u062f -profile.business.bio=\u062e\u0644\u0627\u0635\u0647 \u0634\u0631\u062d \u06a9\u0627\u0631\u06cc -profile.business.company.description=\u0634\u0631\u062d \u0634\u0631\u06a9\u062a -profile.business.company.name=\u0646\u0627\u0645 \u0634\u0631\u06a9\u062a -profile.business.company.profile=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -profile.business.company.profiles=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0631\u06a9\u062a -profile.business.company.web=\u0622\u062f\u0631\u0633 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0634\u0631\u06a9\u062a -profile.business.update=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0633\u0628 \u0648 \u06a9\u0627\u0631 \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 profile.contact.update=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0645\u0627\u0633 \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -profile.course=\u0645\u062f\u0631\u06a9/\u062f\u0648\u0631\u0647 -profile.department=\u062f\u067e\u0627\u0631\u062a\u0645\u0627\u0646 profile.email=\u067e\u0633\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9 -profile.favourite.books=\u06a9\u062a\u0627\u0628 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 -profile.favourite.movies=\u0641\u06cc\u0644\u0645 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 -profile.favourite.quotes=\u0646\u0642\u0644 \u0648 \u0642\u0648\u0644 \u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 -profile.favourite.tv=\u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062a\u0644\u0648\u06cc\u0632\u06cc\u0648\u0646\u06cc \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 -profile.gallery.image.alt=\u062a\u0635\u0627\u0648\u06cc\u0631 \u0645\u0646 -profile.gallery.image.upload=\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0628\u0647 \u06af\u0627\u0644\u0631\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -profile.homepage=\u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc profile.image.change.upload=\u062a\u063a\u06cc\u06cc\u0631 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 profile.image.change.url=\u062a\u063a\u06cc\u06cc\u0631 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 profile.info.update=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -profile.interests.update=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u062e\u0635\u06cc \u0628\u0647 \u0631\u0648\u0632 \u0634\u062f\u0647 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -profile.name.first=\u0646\u0627\u0645 \u06a9\u0648\u0686\u06a9 -profile.name.first.none=\u06a9\u0627\u0631\u0628\u0631 -profile.name.last=\u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc -profile.name.middle=\u0646\u0627\u0645 \u0648\u0633\u0637 profile.nickname=\u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 -profile.phone.facsimile=\u0631\u0648\u0646\u0648\u0634\u062a -profile.phone.home=\u062a\u0644\u0641\u0646 \u062e\u0627\u0646\u0647 profile.phone.mobile=\u062a\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647 -profile.phone.work=\u062a\u0644\u0641\u0646 \u0645\u062d\u0644 \u06a9\u0627\u0631 -profile.position=\u0645\u0642\u0627\u0645 -profile.publications=\u0646\u0634\u0631\u06cc\u0627\u062a \u0648 \u06a9\u0646\u0641\u0631\u0627\u0646\u0633\u200c\u0647\u0627 -profile.room=\u0627\u062a\u0627\u0642 -profile.school=\u0645\u062f\u0631\u0633\u0647 profile.socialnetworking.facebook=\u0641\u06cc\u0633\u0628\u0648\u06a9 profile.socialnetworking.facebook.edit=URL \u0641\u06cc\u0633\u0628\u0648\u06a9 profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=\u0622\u062f\u0631\u0633 LinkedIn -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=\u0622\u062f\u0631\u0633 MySpace -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=\u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc Skype -profile.socialnetworking.skype.link=\u0627\u0632 \u0637\u0631\u06cc\u0642 Skype \u0628\u0627 \u0645\u0646 \u062f\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627\u0634\u06cc\u062f -profile.socialnetworking.twitter=\u062a\u0648\u0626\u06cc\u062a\u0631 -profile.socialnetworking.twitter.edit=URL \u062a\u0648\u0626\u06cc\u062a\u0631 profile.socialnetworking.update=\u062c\u0632\u0626\u06cc\u0627\u062a \u0634\u0628\u06a9\u0647 \u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0634\u062f -profile.staff.update=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06a9\u0646\u06cc \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0634\u062f\u0647 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -profile.staffprofile=\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u06a9\u0627\u0631\u06a9\u0646\u06cc -profile.student.update=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u06cc \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0634\u062f\u0647 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -profile.subjects=\u0645\u0648\u0636\u0648\u0639\u0627\u062a profile.summary=\u062e\u0644\u0627\u0635\u0647 \u0634\u062e\u0635\u06cc -profile.universityprofileurl=\u0622\u062f\u0631\u0633 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062f\u0627\u0646\u0634\u06af\u0627\u0647\u06cc -success.message.send.ok=\u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f success.preferences.save.ok=\u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f -success.privacy.save.ok=\u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f text.edit.other.warning=\u062a\u0648\u062c\u0647\: \u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a {0} \u0647\u0633\u062a\u06cc\u062f. -text.friend.add={0} \u0628\u0627\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0645\u0627 \u0631\u0627 \u062a\u0627\u0626\u06cc\u062f \u06a9\u0646\u06cc\u062f. -text.friend.already=\u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646 {0} \u0647\u0633\u062a\u06cc\u062f. -text.friend.already.pending=\u0647\u0646\u0648\u0632 \u0647\u06cc\u0686 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0628\u06cc\u0646 \u0634\u0645\u0627 \u0648 {0} \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. -text.friend.cancel=\u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u067e\u0627\u0633\u062e \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0628\u0647 {0} \u0631\u0627 \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0627\u0642\u062f\u0627\u0645 \u0634\u0645\u0627 \u0628\u0647 \u0627\u0648 \u06af\u0632\u0627\u0631\u0634 \u062f\u0627\u062f\u0647 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f. -text.friend.confirm=\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc {0} \u062a\u0627\u0626\u06cc\u062f \u062e\u0648\u0627\u0647\u062f \u0634\u062f. -text.friend.confirmed=\u0634\u0645\u0627 \u062f\u0631 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u06cc\u062f -text.friend.feed.num.many=\u062f\u0648\u0633\u062a\u0627\u0646 {0} -text.friend.feed.num.none=\u0628\u062f\u0648\u0646 \u062f\u0648\u0633\u062a -text.friend.feed.num.one=1 \u062f\u0648\u0633\u062a -text.friend.ignore=\u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc {0} \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f\u061f \u0627\u06cc\u0646 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u0627\u0648 \u06af\u0632\u0627\u0631\u0634 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f. -text.friend.none=\u0634\u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0632 \u062f\u0648\u0633\u062a\u0627\u0646 {0} \u0646\u06cc\u0633\u062a\u06cc\u062f. -text.friend.pending=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u0628\u062f\u0648\u0646 \u062c\u0648\u0627\u0628 -text.friend.remove=\u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f {0} \u0631\u0627 \u0627\u0632 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f \u0627\u06cc\u0646 \u0627\u0642\u062f\u0627\u0645 \u0628\u0647 \u0622\u0646\u0647\u0627 \u06af\u0632\u0627\u0631\u0634 \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f. -text.friend.requested=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc -text.friend.self=\u0627\u06cc\u0646 \u0634\u0645\u0627 \u0647\u0633\u062a\u06cc\u062f\! -text.gallery.feed.num.none=\u06f0 \u062a\u0635\u0648\u06cc\u0631 -text.gallery.pictures.num.none=\u06af\u0627\u0644\u0631\u06cc \u0634\u0645\u0627 \u0647\u0646\u0648\u0632 \u062d\u0627\u0648\u06cc \u062a\u0635\u0648\u06cc\u0631\u06cc \u0646\u06cc\u0633\u062a. -text.gallery.upload.tooltip=\u062a\u0635\u0627\u0648\u06cc\u0631 \u06af\u0627\u0644\u0631\u06cc \u0631\u0627 \u0627\u0632 \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631 \u062e\u0648\u062f \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f. \u062d\u062c\u0645 \u0645\u062c\u0645\u0648\u0639 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0646\u0628\u0627\u06cc\u062f \u0627\u0632 {0} \u0645\u06af\u0627\u0628\u0627\u06cc\u062a \u0628\u06cc\u0634\u062a\u0631 \u0634\u0648\u062f. text.image.refresh=\u062a\u0648\u062c\u0647\: \u0627\u06af\u0631 \u062a\u0635\u0648\u06cc\u0631 \u062c\u062f\u06cc\u062f \u0628\u0644\u0627\u0641\u0627\u0635\u0644\u0647 \u0638\u0627\u0647\u0631 \u0646\u0634\u062f\u060c \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f. text.image.url=URL \u062a\u0635\u0648\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0622\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f -text.messages.none=\u0647\u06cc\u0686 \u067e\u06cc\u0627\u0645\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f text.no.fields=\u0634\u0645\u0627 \u0647\u0646\u0648\u0632 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062a\u06a9\u0645\u06cc\u0644 \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f text.no.status=\u0686\u06cc\u0632\u06cc \u0628\u06af\u0648\u06cc\u06cc\u062f text.or=\u06cc\u0627 -text.privacy.academicinfo.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u062d\u0635\u06cc\u0644\u06cc \u0645\u0627\u0646\u0646\u062f \u0645\u062f\u0631\u0633\u0647\u060c \u06af\u0631\u0648\u0647 \u06cc\u0627 \u062f\u0631\u0633 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.basicinfo.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0627\u06cc\u0647\u200c\u0627\u06cc \u0645\u0627\u0646\u0646\u062f \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0648 \u062a\u0627\u0631\u06cc\u062e \u062a\u0648\u0644\u062f \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.birthyear.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0633\u0627\u0644 \u062a\u0648\u0644\u062f \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0639\u0644\u0627\u0645\u062a \u0632\u062f\u0646 \u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0633\u062a. -text.privacy.businessinfo.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06cc \u0645\u0627\u0646\u0646\u062f \u0635\u0646\u0639\u062a\u060c \u0634\u063a\u0644 \u06cc\u0627 \u062e\u0644\u0627\u0635\u0647 \u06a9\u0627\u0631\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.cannot.modify=\u0627\u06cc\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0648\u0633\u0637 \u0645\u062f\u06cc\u0631 \u0634\u0645\u0627 \u0642\u0641\u0644 \u0634\u062f\u0647 \u0648 \u0627\u0645\u06a9\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. -text.privacy.contactinfo.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0645\u0627\u0646\u0646\u062f \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646\u200c\u0647\u0627\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.messages.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0634\u0645\u0627 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u0646\u062f. -text.privacy.myfriends.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.mykudos.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0645\u062a\u06cc\u0627\u0632\u0627\u062a \u062a\u062c\u0644\u06cc\u0644 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f (\u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0641\u0639\u0627\u0644 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f). -text.privacy.mypictures.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u06af\u0627\u0644\u0631\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.mystatus.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0627\u06cc \u0648\u0636\u0639\u06cc\u062a \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.mywall.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0646\u0645\u0627\u06cc\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.onlinestatus.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0648\u0636\u0639\u06cc\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0628\u0648\u062f\u0646 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u062f\u06cc\u06af\u0631\u0627\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0641\u0644\u0627\u06cc\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f. -text.privacy.personalinfo.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u06a9\u062a\u0627\u0628\u200c\u0647\u0627\u060c \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u062a\u0644\u0648\u0632\u06cc\u0648\u0646\u06cc \u0648 \u062f\u06cc\u06af\u0631 \u0645\u0648\u0627\u0631\u062f \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.profileimage.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.socialinfo.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0634\u0628\u06a9\u0647\u200c\u0647\u0627\u06cc \u0627\u062c\u062a\u0645\u0627\u0639\u06cc\u060c \u0645\u0627\u0646\u0646\u062f \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0641\u06cc\u0633\u0628\u0648\u06a9\u060c LinkedIn \u0648 MySpace \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. -text.privacy.staff.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u06a9\u0627\u0631\u06a9\u0646\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f -text.privacy.student.tooltip=\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0647 \u06a9\u0633\u0627\u0646\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0627\u0646\u0634 \u0622\u0645\u0648\u0632\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f -text.profile.birthyear.tooltip=\u062f\u0631 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062e\u0635\u0648\u0635\u06cc \u0633\u0627\u0632\u06cc \u0645\u06cc\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0633\u0627\u0644 \u062a\u0648\u0644\u062f\u062a\u0627\u0646 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f \u06cc\u0627 \u067e\u0646\u0647\u0627\u0646 \u0634\u0648\u062f text.profile.facebook.tooltip=\u0645\u062b\u0627\u0644 http\://www.facebook.com/user text.profile.linkedin.tooltip=\u0645\u062b\u0627\u0644 http\://www.linkedin.com/pub/user text.profile.locked.false=\u0642\u0641\u0644 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0646\u062f. text.profile.locked.true=\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0642\u0641\u0644 \u06cc\u06a9 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0645\u06a9\u0627\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0645\u06cc\u062f\u0647\u062f. -text.profile.myspace.tooltip=\u0645\u062b\u0627\u0644 http\://myspace.com/user -text.profile.presence.away={0} \u0627\u06cc\u0646\u062c\u0627 \u0646\u06cc\u0633\u062a -text.profile.presence.offline={0} \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a -text.profile.presence.online={0} \u0622\u0646\u0644\u0627\u06cc\u0646 \u0627\u0633\u062a -text.profile.twitter.tooltip=\u0645\u062b\u0627\u0644 http\://twitter.com/sakaiproject -text.search.byinterest.all.results=\u0646\u0645\u0627\u06cc\u0634 {0} \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0627\u06cc\: {1} -text.search.byinterest.label=\u0639\u0644\u0627\u06cc\u0642 \u0645\u0634\u062a\u0631\u06a9 -text.search.byinterest.no.results=\u0647\u06cc\u0686 \u0641\u0631\u062f\u06cc \u0628\u0627 \u0639\u0644\u0627\u06cc\u0642 \u0645\u0634\u062a\u0631\u06a9 \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 {0} \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. -text.search.byinterest.one.result=\u0646\u0645\u0627\u06cc\u0634 \u06f1 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0627\u06cc\: {0} -text.search.byinterest.paged.results=\u0646\u0645\u0627\u06cc\u0634 {0} \u0646\u062a\u06cc\u062c\u0647 (\u062a\u0627 {1} \u0646\u062a\u06cc\u062c\u0647 \u062f\u0631 \u0647\u0631 \u0635\u0641\u062d\u0647) \u0628\u0631\u0627\u06cc\: {2} -text.search.byinterest.tooltip=\u06cc\u06a9 \u0645\u0648\u0636\u0648\u0639 \u0639\u0644\u0627\u0642\u0647 \u0645\u0627\u0646\u0646\u062f \u062f\u0648\u0686\u0631\u062e\u0647\u200c\u0633\u0648\u0627\u0631\u06cc \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0641\u0631\u0627\u062f \u0628\u0627 \u0639\u0644\u0627\u06cc\u0642 \u0645\u0634\u0627\u0628\u0647 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f -text.search.byname.all.results=\u0646\u0645\u0627\u06cc\u0634 {0} \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0627\u06cc\: {1} -text.search.byname.label=\u0646\u0627\u0645 \u06cc\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0641\u0631\u062f -text.search.byname.no.results=\u0647\u06cc\u0686 \u0646\u062a\u06cc\u062c\u0647\u200c\u0627\u06cc \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 {0} \u06cc\u0627\u0641\u062a \u0646\u0634\u062f. -text.search.byname.one.result=\u0646\u0645\u0627\u06cc\u0634 \u06f1 \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0627\u06cc\: {0} -text.search.byname.paged.results=\u0646\u0645\u0627\u06cc\u0634 {0} \u0646\u062a\u06cc\u062c\u0647 (\u062a\u0627 {1} \u0646\u062a\u06cc\u062c\u0647 \u062f\u0631 \u0647\u0631 \u0635\u0641\u062d\u0647) \u0628\u0631\u0627\u06cc\: {2} -text.search.byname.tooltip=\u0628\u0631\u0627\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0627\u0641\u0631\u0627\u062f \u0646\u0627\u0645 \u06cc\u0627 \u0627\u06cc\u0645\u06cc\u0644 \u0641\u0631\u062f \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -text.search.history=\u062c\u0633\u062a\u062c\u0648\u0647\u0627\u06cc \u0642\u0628\u0644\u06cc -text.search.include.connections=\u062f\u0631\u0646\u0638\u0631 \u06af\u06cc\u0631\u06cc \u062f\u0648\u0633\u062a\u0627\u0646 \u062f\u0631 \u0646\u062a\u0627\u06cc\u062c \u062c\u0633\u062a\u062c\u0648 -text.search.include.worksite=\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062c\u0633\u062a\u062c\u0648 \u0628\u0647 \u0633\u0627\u06cc\u062a \u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 -text.search.no.input=\u0634\u0645\u0627 \u0686\u06cc\u0632\u06cc \u0648\u0627\u0631\u062f \u0646\u06a9\u0631\u062f\u06cc\u062f -text.search.no.results=\u0647\u06cc\u0686 \u0646\u062a\u06cc\u062c\u0647\u200c\u0627\u06cc \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 {0} \u06cc\u0627\u0641\u062a \u0646\u0634\u062f. -text.search.no.worksite=\u0634\u0645\u0627 \u0647\u0646\u0648\u0632 \u0639\u0636\u0648 \u0647\u06cc\u0686 \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc \u0646\u0634\u062f\u0647 \u0627\u06cc\u062f -text.search.paged.results=\u0646\u0645\u0627\u06cc\u0634 {0} - {1} \u0627\u0632 {2} \u0646\u062a\u06cc\u062c\u0647 \u0628\u0631\u0627\u06cc\: {3} -text.search.terms.label=\u0639\u0628\u0627\u0631\u062a \u062c\u0633\u062a\u062c\u0648 -text.search.terms.tooltip=\u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0627\u0645 / \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u06cc\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0639\u0644\u0627\u06cc\u0642 \u062c\u0633\u062a\u062c\u0648 \u0645\u06cc\u06a9\u0646\u06cc\u062f\u060c \u0639\u0628\u0627\u0631\u062a \u062c\u0633\u062a\u062c\u0648 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f -text.search.toomany.results=\u062c\u0633\u062a\u062c\u0648\u06cc \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc {0} \u062a\u0639\u062f\u0627\u062f {1} \u0646\u062a\u06cc\u062c\u0647 \u06cc\u0627 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0628\u0631 \u062f\u0627\u0634\u062a. \u062a\u0646\u0647\u0627 {1} \u0646\u062a\u06cc\u062c\u0647 \u0627\u0648\u0644 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. text.upload.image.file=\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0639\u06a9\u0633 \u0627\u0632 \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631 \u062e\u0648\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f (\u062d\u062f\u0627\u06a9\u062b\u0631 \u062d\u062c\u0645 {0} \u0645\u06af\u0627\u0628\u0627\u06cc\u062a)\: text.view.profile.nothing=\u0627\u06cc\u0646 \u0634\u062e\u0635 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062e\u0648\u062f \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a \u0648 \u06cc\u0627 \u0647\u06cc\u0686 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644\u06cc \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0646\u06af\u0630\u0627\u0634\u062a\u0647 \u0627\u0633\u062a. -text.view.wall.nothing=\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0647\u06cc\u0686 \u0622\u06cc\u062a\u0645\u06cc \u062f\u0631 \u0646\u0645\u0627\u06cc\u0647 {0} \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0633\u06cc \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0686\u06cc\u0632\u06cc \u062f\u0631 \u0622\u0646 \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u06a9\u0646\u06cc\u062f\! -text.view.wall.restricted=\u062a\u0646\u0647\u0627 \u062f\u0648\u0633\u062a\u0627\u0646 {0} \u0645\u06cc\u062a\u0648\u0627\u0646\u0646\u062f \u0627\u06cc\u0646 \u0646\u0645\u0627\u06cc\u0647 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0646\u0646\u062f. {0} \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062f\u0648\u0633\u062a \u0628\u0647 \u0644\u06cc\u0633\u062a \u062f\u0648\u0633\u062a\u0627\u0646 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0645\u0627\u06cc\u0647 \u0627\u0648 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0648 \u062f\u0631 \u0622\u0646 \u0645\u0637\u0644\u0628 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f. -text.wall.no.items=\u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0647\u06cc\u0686 \u0645\u0637\u0644\u0628\u06cc \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0631 \u0646\u0645\u0627\u06cc\u0647 \u0634\u0645\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f. -text.wall.remove.mine=\u0622\u06cc\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0633\u062a \u0631\u0627 \u0646\u0645\u0627\u06cc\u0647 \u062e\u0648\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f -text.wall.remove.other=\u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u067e\u0633\u062a {0} \u0631\u0627 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0647 \u062e\u0648\u062f \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f -text.worksite.create=\u0627\u0632 \u0645\u06cc\u0627\u0646 \u0627\u0641\u0631\u0627\u062f \u0645\u0648\u062c\u0648\u062f \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0647 \u0648 \u06cc\u06a9 \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. -text.worksite.refresh=\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc \u062c\u062f\u06cc\u062f \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0622\u0646\u060c \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 refresh \u06a9\u0646\u06cc\u062f title.change.profile.picture=\u062a\u0639\u06cc\u06cc\u0631 \u062a\u0635\u0648\u06cc\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 -title.friend.add=\u0627\u0641\u0632\u0648\u062f\u0646 {0} \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0648\u0633\u062a\u061f -title.friend.cancel=\u0622\u06cc\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u0631\u0627 \u0644\u063a\u0648 \u06a9\u0646\u06cc\u062f\u061f -title.friend.confirm=\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc {0} \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u0645\u06cc\u06a9\u0646\u06cc\u062f\u061f -title.friend.ignore=\u0622\u06cc\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0648\u0633\u062a\u06cc \u0631\u0627 \u0646\u0627\u062f\u06cc\u062f\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f\u061f -title.friend.remove=\u0622\u06cc\u0627 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0648\u0633\u062a \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f -title.message.compose=\u0646\u0648\u0634\u062a\u0646 \u067e\u06cc\u0627\u0645 \u062c\u062f\u06cc\u062f -title.wall.comment=\u0646\u0648\u0634\u062a\u0646 \u0646\u0638\u0631 \u062f\u0631 \u067e\u0633\u062a \u0646\u0645\u0627\u06cc\u0647 {0} -title.wall.remove=\u062d\u0630\u0641 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0647 - -twitter.auth.do=\u0645\u062a\u0635\u0644 \u06a9\u0631\u062f\u0646 \u062d\u0633\u0627\u0628 \u062a\u0648\u0626\u06cc\u062a\u0631 -twitter.auth.linked=\u062d\u0633\u0627\u0628 \u062a\u0648\u0626\u06cc\u062a\u0631 \u0645\u062a\u0635\u0644 \u0634\u062f -twitter.enabled=\u0641\u0639\u0627\u0644\u200c\u0633\u0627\u0632\u06cc \u0627\u062f\u063a\u0627\u0645 \u062a\u0648\u06cc\u06cc\u062a\u0631 - -twitterUrl.UrlValidator=URL \u0646\u0627\u0645\u0639\u062a\u0628\u0631 urlField.Required=\u0634\u0645\u0627 URL \u0648\u0627\u0631\u062f \u0646\u06a9\u0631\u062f\u06cc\u062f - -workphone.PhoneNumberValidator=\u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 - -worksite.name=\u0646\u0627\u0645 \u0633\u0627\u06cc\u062a \u06a9\u0627\u0631\u06cc - diff --git a/profile2/api/src/resources/ProfileApplication_fr_FR.properties b/profile2/api/src/resources/ProfileApplication_fr_FR.properties index 34495564d1e7..4c3e5b552836 100644 --- a/profile2/api/src/resources/ProfileApplication_fr_FR.properties +++ b/profile2/api/src/resources/ProfileApplication_fr_FR.properties @@ -14,395 +14,104 @@ # RequiredValidator='${label}' est obligatoire -accessibility.connection.add=Ajouter {0} comme contact? -accessibility.connection.confirm=Accepter l'invitation de {0}? -accessibility.connection.ignore=Ignorer {0}'s de demande de connexion? -accessibility.connection.remove=Supprimer {0} de vos connexions? accessibility.edit.basic=Modifier les renseignements personnels -accessibility.edit.business=Modifier les renseignements professionnels accessibility.edit.contact=Modifier les renseignements de base -accessibility.edit.personal=Modifier les coordonn\u00e9es accessibility.edit.social=Modifier les renseignements sur les r\u00e9seaux sociaux -accessibility.edit.staff=Modifier les renseignements sur le personnel -accessibility.edit.student=Modifier les renseignements sur les \u00e9tudiants accessibility.image.upload=D\u00e9poser une photo pour votre profil accessibility.image.url=Saisissez l'url de votre photo de profil -accessibility.messages.unread=Message non lu -accessibility.prefs.confirms.off=Me contacter par courrier \u00e9lectronique si quelqu'un confirme ma demande de contact (fonction d\u00e9sactiv\u00e9e) -accessibility.prefs.confirms.on=Me contacter par courrier \u00e9lectronique si quelqu'un confirme ma demande de contact (fonction activ\u00e9e) -accessibility.prefs.gallery=Afficher mes images sur mon profil accessibility.prefs.gravatar=Utiliser mon avatar universel comme photo de profil -accessibility.prefs.kudos=Afficher ma note en Kudos sur mon profil -accessibility.prefs.messagenew.off=Me contacter par courrier \u00e9lectronique si quelqu'un m'envoie un nouveau message (fonction d\u00e9sactiv\u00e9e) -accessibility.prefs.messagenew.on=Me contacter par courrier \u00e9lectronique si quelqu'un m'envoie un nouveau message (fonction activ\u00e9e) -accessibility.prefs.messagereply.off=Me contacter par courrier \u00e9lectronique si quelqu'un r\u00e9pond \u00e0 l'un de mes messages (fonction d\u00e9sactiv\u00e9e) -accessibility.prefs.messagereply.on=Me contacter par courrier \u00e9lectronique si quelqu'un r\u00e9pond \u00e0 l'un de mes messages (fonction activ\u00e9e) accessibility.prefs.officialimage=Utiliser l'image institutionnelle officielle comme photo de profil -accessibility.prefs.onlinestatus=Rendre mon \u00e9tat de connexion visible par les autres personnes accessibility.prefs.overview=Pr\u00e9f\u00e9rences de notification par courriel -accessibility.prefs.requests.off=Me contacter par courrier \u00e9lectronique si quelqu'un m'ajoute en tant que contact (fonction d\u00e9sactiv\u00e9e) -accessibility.prefs.requests.on=Me contacter par courrier \u00e9lectronique si quelqu'un m'ajoute en tant que contact (fonction activ\u00e9e) -accessibility.prefs.twitterauthcode=Entrez votre code d'autorisation Twitter -accessibility.prefs.wallnew.off=Me contacter par courrier \u00e9lectronique si quelqu'un publie un article sur mon mur (fonction d\u00e9sactiv\u00e9e) -accessibility.prefs.wallnew.on=Me contacter par courrier \u00e9lectronique si quelqu'un publie un article sur mon mur (fonction activ\u00e9e) -accessibility.prefs.worksite.off=Me contacter par courrier \u00e9lectronique si un contact m'ajoute \u00e0 un nouveau site de travail (fonction d\u00e9sactiv\u00e9e) -accessibility.prefs.worksite.on=Me contacter par courrier \u00e9lectronique si un contact m'ajoute \u00e0 un nouveau site de travail (fonction activ\u00e9e) -accessibility.privacy.academic=Choose who can see your academic information like school, department or course. -accessibility.privacy.basic=D\u00e9finissez qui peut acc\u00e9der \u00e0 vos renseignements de base tels que votre date d'anniversaire... -accessibility.privacy.birthyear=Choose whether or not to show or hide your birth year. Ticked means visible. -accessibility.privacy.business=Choose who can see your business information, like industry, position and business bio. -accessibility.privacy.contact=D\u00e9finissez qui peut acc\u00e9der \u00e0 votre adresse de courrier \u00e9lectronique et \u00e0 vos num\u00e9ros de t\u00e9l\u00e9phone. -accessibility.privacy.friends=D\u00e9finissez qui peut visualiser votre liste de contacts. -accessibility.privacy.image=D\u00e9finissez qui peut voir l'image de votre profil. -accessibility.privacy.kudos=Choisissez les personnes autoris\u00e9es \u00e0 afficher votre note en Kudos (si l'option est activ\u00e9e dans Pr\u00e9f\u00e9rences). -accessibility.privacy.messages=Choisissez les personnes autoris\u00e9es \u00e0 vous envoyer des messages. -accessibility.privacy.onlinestatus=Choisissez les personnes autoris\u00e9es \u00e0 afficher votre \u00e9tat de connexion. -accessibility.privacy.overview=D\u00e9terminer les personnes autoris\u00e9es \u00e0 afficher telle ou telle partie de votre profil -accessibility.privacy.personal=D\u00e9finissez qui peut visualiser vos livres, films pr\u00e9f\u00e9r\u00e9s, etc. -accessibility.privacy.pictures=Choisissez les personnes autoris\u00e9es \u00e0 afficher votre galerie d'images. -accessibility.privacy.social=Choose who can see your social networking information, such as your Facebook, LinkedIn and MySpace profiles. -accessibility.privacy.staff=Choisissez les personnes autoris\u00e9es \u00e0 afficher vos renseignements concernant le personnel. -accessibility.privacy.status=D\u00e9finissez qui peut voir vos mises \u00e0 jour d'\u00e9tat. -accessibility.privacy.student=Choisissez les personnes autoris\u00e9es \u00e0 afficher vos renseignements concernant les \u00e9tudiants. -accessibility.privacy.wall=Choisissez les personnes autoris\u00e9es \u00e0 voir votre mur. -accessibility.profile.academicprofileurl.input=Saisissez l'url de votre profil acad\u00e9mique -accessibility.profile.birthday=Select your birth date. You can control the display of your birth year in your Preferences. -accessibility.profile.businessbio.input=Saisissez votre biographie professionnelle. -accessibility.profile.companydescription.input=Saisissez la description de cette soci\u00e9t\u00e9/institution -accessibility.profile.companyname.input=Saisissez le nom de cette soci\u00e9t\u00e9/institution -accessibility.profile.companyurl.input=Saisissez l'adresse web de cette soci\u00e9t\u00e9/institution -accessibility.profile.course.input=Saisissez votre cours -accessibility.profile.department.input=Saisissez votre d\u00e9partement accessibility.profile.email.input=Saisissez votre courriel accessibility.profile.facebookurl.input=Saisissez l'url de votre Facebook -accessibility.profile.facsimile.input=Saisissez votre num\u00e9ro de fax -accessibility.profile.favouritebooks.input=Saisissez vos livres pr\u00e9f\u00e9r\u00e9s -accessibility.profile.favouritemovies.input=Saisissez vos films pr\u00e9f\u00e9r\u00e9s -accessibility.profile.favouritequotes.input=Saisissez vos citations pr\u00e9f\u00e9r\u00e9es -accessibility.profile.favouritetv.input=Saisissez vos \u00e9missions tv pr\u00e9f\u00e9r\u00e9es -accessibility.profile.homepage.input=Saisissez l'url de votre page Web -accessibility.profile.homephone.input=Saisissez votre num\u00e9ro de t\u00e9l\u00e9phone personnel accessibility.profile.linkedinurl.input=Saisissez votre url LinkedIn -accessibility.profile.messagebody.input=Saisissez votre message -accessibility.profile.messagerecipient.input=S\u00e9lectionnez un destinataire -accessibility.profile.messagesubject.input=Saisissez l'objet du message accessibility.profile.mobilephone.input=Saisissez votre num\u00e9ro de t\u00e9l\u00e9phone portable -accessibility.profile.myspaceurl.input=Saisissez votre url LinkedIn -accessibility.profile.name.recording=Record your name pronunciation accessibility.profile.nickname.input=Saisissez votre Pseudo accessibility.profile.phonetic.input=Enter your phonetic pronunciation -accessibility.profile.position.input=Saisissez votre poste -accessibility.profile.publications.input=Saisissez vos publications -accessibility.profile.room.input=Saisissez votre bureau -accessibility.profile.school.input=Saisissez votre facult\u00e9 -accessibility.profile.skypeusername.input=Saisissez votre nom d'utilisateur Skype -accessibility.profile.staffprofile.input=Saisissez votre profil professionnel -accessibility.profile.status.clear=Effacer votre \u00e9tat -accessibility.profile.status.input=Saisissez votre statut actuel -accessibility.profile.subjects.input=Saisissez vos sujets accessibility.profile.summaryinput=Saisissez votre r\u00e9sum\u00e9 personnel -accessibility.profile.twitterurl.input=Saisissez l'url de votre compte Twitter -accessibility.profile.uniprofileurl.input=Saisissez l'url de votre profil \u00e0 l'Universit\u00e9 -accessibility.profile.wallpost.input=Saisissez le texte pour votre mur -accessibility.profile.workphone.input=Saisissez votre num\u00e9ro de t\u00e9l\u00e9phone professionnel -accessibility.search.connections=Inclure les contacts dans les r\u00e9sultats de la recherche -accessibility.search.worksite=Limiter la recherche au site s\u00e9lectionn\u00e9 accessibility.tooltip=Afficher des informations sur cette option -accessibility.wall.comment=Commenter l'article publi\u00e9 sur le mur de {0} -accessibility.wall.remove.mine=Supprimer l'article de forum de votre mur? -accessibility.wall.remove.other=Supprimer message de {0} de votre mur ? -button.business.add.profile=Ajouter le profil de la soci\u00e9t\u00e9 -button.business.remove.profile=Supprimer le profil de la soci\u00e9t\u00e9 button.cancel=Annuler button.close=Fermer button.edit=Modifier -button.friend.add=Ajouter un lien -button.friend.cancel=Annuler l'invitation -button.friend.confirm=Accepter la demande d'invitation -button.friend.ignore=Rejeter la demande d'invitation -button.friend.remove=Supprimer le lien -button.gallery.remove=Supprimer l'image -button.gallery.remove.confirm=Confirmer la suppression -button.gallery.setprofile=D\u00e9finir en tant que photo de profil -button.gallery.setprofile.confirm=Confirmer la nouvelle photo de profil -button.gallery.upload=D\u00e9poser les fichiers s\u00e9lectionn\u00e9s button.link=Lier -button.message.reply=R\u00e9pondre -button.message.send=Envoyer un message button.record=Record button.release.microphone=Release Microphone button.save=Enregistrer button.save.changes=Enregistrer les modifications button.save.settings=Enregistrer les param\u00e8tres button.sayit=Exprimez-vous -button.search.byinterest=Recherche par centre d'int\u00e9r\u00eat commun -button.search.byname=Recherche par nom ou adresse de courrier \u00e9lectronique -button.search.clear=Effacer la recherche -button.search.generic=Rechercher -button.search.history.clear=Nettoyer l'historique button.stop=Stop button.upload=D\u00e9poser button.url.add=Ajouter une URL -button.wall.comment=Ajouter un commentaire -button.wall.post=Publier sur le mur -button.wall.remove=Supprimer du mur -button.worksite.cancel=Annuler -button.worksite.create=Cr\u00e9er - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=adresse de courrier \u00e9lectronique non valide error.empty.file.uploaded=Vous avez tent\u00e9 de charger un fichier vide. error.file.save.failed=La sauvegarde du fichier a \u00e9chou\u00e9 -error.friend.add.failed=Une erreur s'est produite lors de l'envoi de l'invitation \u00e0 {0}. -error.friend.already.confirmed={0} fait d\u00e9j\u00e0 partie de vos contacts. -error.friend.already.pending=Il y a d\u00e9j\u00e0 une demande d'invitation en cours avec {0}. -error.friend.confirm.failed=Une erreur s'est produite lors de la confirmation de l'invitation de {0}. -error.friend.ignore.failed=Une erreur s'est produite lors du rejet de l'invitation de {0}. -error.friend.not.friend={0} ne figure pas dans vos contacts, suppression impossible\! -error.friend.not.pending.confirm=There is no pending connection request from {0} so you cannot confirm it\! -error.friend.not.pending.ignore=There is no pending connection request from {0} so you cannot ignore it\! -error.friend.remove.failed=Une erreur s'est produite lors de la suppression de {0} de la liste de vos contacts -error.friend.view.disallowed=You cannot view {0}'s connections. -error.gallery.remove.failed=Impossible de supprimer l'image de la galerie -error.gallery.setprofile.failed=Impossible d'utiliser l'image comme photo de profil -error.gallery.upload.warning=S\u00e9lectionner d'abord les fichiers error.invalid.image.type=Seules les images au format PNG, JPG et GIF sont accept\u00e9es. -error.message.required.body=Le message ne peut pas \u00eatre vide. -error.message.required.to=Vous devez choisir le contact auquel le message est destin\u00e9. -error.message.send.failed=Une erreur s'est produite lors de l'envoi de votre message. error.no.file.uploaded=Vous n'avez pas s\u00e9lectionn\u00e9 de fichier error.password.required=Mot de passe requis error.preferences.save.failed=La sauvegarde a \u00e9chou\u00e9 -error.privacy.save.failed=La sauvegarde a \u00e9chou\u00e9 -error.profile.save.academic.failed=La sauvegarde a \u00e9chou\u00e9 -error.profile.save.business.failed=La sauvegarde a \u00e9chou\u00e9 error.profile.save.contact.failed=La sauvegarde a \u00e9chou\u00e9 error.profile.save.info.failed=La sauvegarde a \u00e9chou\u00e9 -error.profile.save.interests.failed=La sauvegarde a \u00e9chou\u00e9 error.twitter.details.invalid=Votre compte Twitter n'a pu \u00eatre v\u00e9rifi\u00e9 error.url.save.failed=La sauvegarde de l'URL a \u00e9chou\u00e9 error.username.required=Identifiant requis -error.wall.comment.empty=Vous avez tent\u00e9 d'ajouter un commentaire vide. -error.wall.comment.failed=\u00c9chec du commentaire -error.wall.post.empty=Vous avez tent\u00e9 de cr\u00e9er un article de forum vide. -error.wall.post.failed=\u00c9chec de la publication -error.worksite.create.failed=La cr\u00e9ation du site de travail a \u00e9chou\u00e9. -error.worksite.no.title=Vous devez attribuer un nom au site. -error.worksite.title.maxLength=Title length cannot exceed {0} characters. Please provide a shorter title. -error.worksite.title.htmlStrippedToEmpty=Site title cannot contain HTML. Please provide a valid site title. exception.heading.session.expired=La session a expir\u00e9 exception.text.session.expired=Unfortunately, your session has expired. Try refreshing the page or logout then login again to restart your session. facebookUrl.UrlValidator=URL invalide -facsimile.PhoneNumberValidator=Num\u00e9ro de t\u00e9l\u00e9phone non valide - form.uploadTooLarge=Le fichier ne peut exc\u00e9der ${maxSize} -heading.academic=Renseignements scolaires/universitaires -heading.academic.edit=Renseignements scolaires/universitaires heading.basic=Informations de base heading.basic.edit=Informations de base -heading.business=Renseignements professionnels -heading.business.edit=Renseignements professionnels heading.contact=Coordonn\u00e9es heading.contact.edit=Coordonn\u00e9es -heading.friend.requests=Demandes d'invitation - -heading.friends.my=Mes contacts - -heading.friends.view=Les contacts de {0} - -heading.interests=Renseignements personnels -heading.interests.edit=Renseignements personnels -heading.messages=Mes messages heading.name.pronunciation=Name Pronunciation heading.name.pronunciation.edit=Name Pronunciation -heading.pictures.addpicture=Ajouter une image -heading.pictures.my.pictures=Mes images -heading.pictures.view.pictures=Images de {0} heading.preferences=Pr\u00e9f\u00e9rences -heading.privacy=Param\u00e8tres de confidentialit\u00e9 -heading.search=Profils de recherche -heading.section.academic.staff=Pour le personnel\: -heading.section.academic.students=Pour les \u00e9tudiants\: heading.section.email=Notifications par courrier \u00e9lectronique heading.section.image=Param\u00e8tres des photos de profil -heading.section.twitter=Int\u00e9gration dans Twitter heading.section.widget=Param\u00e8tres des composants heading.social=R\u00e9seaux sociaux heading.social.edit=R\u00e9seaux sociaux -heading.staff=Renseignements sur le personnel -heading.staff.edit=Renseignements sur le personnel -heading.student=Renseignements sur les \u00e9tudiants -heading.student.edit=Renseignements sur les \u00e9tudiants -heading.widget.my.friends=Mes contacts -heading.widget.my.kudos=Mes Kudos -heading.widget.my.pictures=Mes images -heading.widget.view.friends=Contacts de {0} -heading.widget.view.kudos=Kudos de {0} -heading.widget.view.pictures=Images de {0} #UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=URL invalide -homephone.PhoneNumberValidator=Num\u00e9ro de t\u00e9l\u00e9phone non valide link.change.profile.picture=Changer d'image link.edit=Modifier link.edit.info=Modifier les renseignements -link.friend.add=Ajouter comme contact -link.friend.add.name=Ajouter {0} comme contact -link.friend.confirm=Confirmer le contact -link.friend.feed.search=Rechercher des contacts -link.friend.feed.view=Voir tous vos contacts -link.friend.ignore=Ignorer le contact -link.friend.remove=Supprimer le lien -link.friend.request.act=Agir sur cette demande -link.friend.search=Rechercher des contacts? -link.gallery.feed.addnew=Ajouter une nouvelle image -link.gallery.feed.view=Afficher toutes les images -link.gallery.image.view=Afficher l'image link.image.current.remove=Supprimer link.image.current.remove.confirm=This will remove the current profile image and set it back to default. You will need to upload a new one to change it again. Are you sure? -link.messages.back=Revenir \u00e0 la liste des messages -link.messages.compose=Composer un message -link.messages.mymessages=Mes messages -link.messages.viewthread=Afficher le fil de discussion -link.my.friends=Contacts -link.my.friends.search=Rechercher des contacts -link.my.friends.tooltip=Voir et g\u00e9rer vos contacts -link.my.messages=Messages -link.my.messages.tooltip=Envoyer et lire des messages priv\u00e9s -link.my.pictures=Photos -link.my.pictures.tooltip=Ajouter des photos et voir votre galerie link.my.preferences=Pr\u00e9f\u00e9rences link.my.preferences.tooltip=G\u00e9rer vos pr\u00e9f\u00e9rences -link.my.privacy=Confidentialit\u00e9 -link.my.privacy.tooltip=G\u00e9rer votre confidentialit\u00e9 link.my.profile=Mon profil link.my.profile.tooltip=Voir et modifier votre profil link.other.profile=Profil de {0} -link.my.search=Rechercher -link.my.search.tooltip=Rechercher des personnes et consulter leurs profils link.profile.locked.false=Verrouiller ce profil? link.profile.locked.true=Profil verrouill\u00e9. D\u00e9verrouiller? -link.status.clear=Effacer -link.status.update=Mise \u00e0 jour -link.tab.profile=Profil -link.tab.profile.tooltip=Afficher le profil -link.tab.wall=Mur -link.tab.wall.tooltip=Afficher le mur -link.title.confirmfriend=Accepter la demande d'invitation -link.title.ignorefriend=Rejeter la demande d'invitation -link.title.removefriend=Supprimer le lien link.title.rss=Voir ou personnaliser votre fil RSS personnel link.title.unlinktwitter=Supprimer le lien du compte Twitter -link.title.wall.comment=Commenter l'article publi\u00e9 sur le mur de {0} -link.title.wall.remove=Supprimer de votre mur -link.view.friends=Voir contacts -link.wall.item.comment=Commentaire -link.wall.item.remove=Supprimer -link.worksite.create=Cr\u00e9er un site de travail linkedinUrl.UrlValidator=URL invalide -message.message=Message -message.reply=R\u00e9pondre -message.subject=Sujet \: -message.to=\u00c0 - mobilephone.PhoneNumberValidator=Num\u00e9ro de t\u00e9l\u00e9phone non valide -myspaceUrl.UrlValidator=URL invalide - page.title=Profil -palette.available=Disponible -palette.selected=S\u00e9lectionn\u00e9 - -pictures.addpicture=Ajouter de nouveaux fichiers image \u00e0 la galerie -pictures.filetypewarning=Seuls des fichiers jpeg, png et gif peuvent \u00eatre ajout\u00e9s \u00e0 la galerie -pictures.removepicture=Supprimer cette image de la galerie -pictures.removepicture.confirm=Voulez-vous vraiment supprimer cette image de votre galerie? -pictures.setprofileimage=Utiliser cette image comme photo de profil -pictures.setprofileimage.confirm=Are you sure you want to replace your current profile image with this image? - preference.option.off=Inactif preference.option.on=Actif -preferences.email.confirms=Confirmer ma demande d'invitation -preferences.email.message=Envoyez-moi un courrier \u00e9lectronique \u00e0 {0} quand quelqu'un\: -preferences.email.message.new=M'envoie un nouveau message. -preferences.email.message.reply=R\u00e9pond \u00e0 un de mes messages. -preferences.email.none=(AUCUN COURRIEL CONFIGUR\u00c9) -preferences.email.requests=Ajoutez-moi comme contact -preferences.email.wall.new=Publie sur mon mur. -preferences.email.worksite.new=M'ajoute \u00e0 un nouveau site de travail. preferences.image.gravatar=Utiliser mon avatar universel comme photo de profil -preferences.image.message=Configurer les param\u00e8tres relatifs \u00e0 la photo de votre profil preferences.image.official=Utiliser l'image institutionnelle officielle comme photo de profil -preferences.twitter.message=La mise \u00e0 jour de votre \u00e9tat peut aussi \u00eatre transmise \u00e0 votre compte Twitter -preferences.widget.gallery=Afficher mes images -preferences.widget.gallery.tooltip=Vos images apparaitront sur votre profil si elles sont coch\u00e9es. -preferences.widget.kudos=Afficher ma note en Kudos -preferences.widget.kudos.tooltip=Your kudos rating will appear on your Profile once your score has been calculated -preferences.widget.message=D\u00e9terminer les composants qui apparaitront sur votre profil -preferences.widget.onlinestatus=Afficher mon \u00e9tat de connexion -preferences.widget.onlinestatus.tooltip=Shows whether or not you are online. If enabled you can further control this in your Privacy settings. If disabled you will appear to be offline -privacy.academicinfo=Renseignements scolaires/universitaires -privacy.basicinfo=Renseignements de base -privacy.birthyear=Afficher ma date d'anniversaire -privacy.businessinfo=Renseignements professionnels -privacy.contactinfo=Renseignements destin\u00e9s aux contacts -privacy.messages=Personnes autoris\u00e9es \u00e0 m'envoyer des messages -privacy.myfriends=Qui peut voir mes contacts -privacy.mykudos=Personnes autoris\u00e9es \u00e0 voir ma note en Kudos -privacy.mypictures=Personnes autoris\u00e9es \u00e0 afficher mes images -privacy.mystatus=Qui peut voir mon \u00e9tat -privacy.mywall=Personnes autoris\u00e9es \u00e0 voir mon mur et les articles que j'ai publi\u00e9s sur d'autres murs -privacy.onlinestatus=Personnes autoris\u00e9es \u00e0 afficher mon \u00e9tat de connexion -privacy.option.everyone=Tout le monde -privacy.option.nobody=Personne -privacy.option.onlyfriends=Seulement mes contacts -privacy.option.onlyme=Seulement moi -privacy.personalinfo=Renseignements personnels -privacy.profileimage=Image du profil -privacy.search=Rechercher -privacy.socialinfo=Renseignements sociaux -privacy.staffinfo=Renseignements sur le personnel -privacy.studentinfo=Renseignements sur les \u00e9tudiants - -profile.academicprofileurl=URL scolaire/de recherche -profile.birthday=Anniversaire -profile.business.bio=Biographie professionnelle -profile.business.company.description=Description de la soci\u00e9t\u00e9 -profile.business.company.name=Nom de la soci\u00e9t\u00e9 -profile.business.company.profile=Profil -profile.business.company.profiles=Profils de soci\u00e9t\u00e9 -profile.business.company.web=Adresse Web de la soci\u00e9t\u00e9 -profile.business.update=Renseignements professionnels mis \u00e0 jour dans le profil profile.contact.update=Coordonn\u00e9es mises \u00e0 jour dans le profil -profile.course=Dipl\u00f4me/Niveau -profile.department=Service/D\u00e9partement profile.email=Courriel -profile.favourite.books=Livres pr\u00e9f\u00e9r\u00e9s -profile.favourite.movies=Films pr\u00e9f\u00e9r\u00e9s -profile.favourite.quotes=Citations pr\u00e9f\u00e9r\u00e9es -profile.favourite.tv=\u00c9missions de T\u00e9l\u00e9 pr\u00e9f\u00e9r\u00e9s -profile.gallery.image.alt=My Pictures -profile.gallery.image.upload=Charg\u00e9 dans la galerie d'images du profil -profile.homepage=Page d'accueil profile.image.change.upload=Photo de profil modifi\u00e9e profile.image.change.url=Photo de profil modifi\u00e9e profile.info.update=Renseignements de base mis \u00e0 jour dans le profil -profile.interests.update=Renseignements personnels mis \u00e0 jour dans le profil -profile.name.first=Pr\u00e9nom -profile.name.first.none=Utilisateur -profile.name.last=Nom -profile.name.middle=Deuxi\u00e8me pr\u00e9nom -profile.name.recording=Name Recording profile.nickname=Pseudonyme profile.phonetic=Phonetic Pronunciation profile.phonetic.clear.recording.label=Clear existing recording @@ -413,141 +122,29 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=T\u00e9l\u00e9copie -profile.phone.home=T\u00e9l\u00e9phone personnel profile.phone.mobile=T\u00e9l\u00e9phone portable -profile.phone.work=T\u00e9l\u00e9phone professionnel -profile.position=Emplacement -profile.publications=Publications et conf\u00e9rences -profile.room=Bureau\t -profile.school=\u00c9tablissement profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=URL Facebook profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=URL LinkedIn -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=URL MySpace -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Nom d'utilisateur Skype -profile.socialnetworking.skype.link=Skype Me -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=URL Twitter profile.socialnetworking.update=Renseignements sur les r\u00e9seaux sociaux mis \u00e0 jour dans le profil -profile.staff.update=Renseignements sur le personnel mis \u00e0 jour dans le profil -profile.staffprofile=Profil du personnel -profile.student.update=Renseignements sur les \u00e9tudiants mis \u00e0 jour dans le profil -profile.subjects=Sujets profile.summary=Fiche personnelle -profile.universityprofileurl=URL du profil universitaire -success.message.send.ok=Message envoy\u00e9 success.preferences.save.ok=Sauvegarde r\u00e9ussie -success.privacy.save.ok=Sauvegarde r\u00e9ussie text.edit.other.warning=Attention\: Vous modifiez les renseignements de {0}. -text.friend.add={0} devra accepter votre invitation. -text.friend.already={0} fait d\u00e9j\u00e0 partie de vos contacts. -text.friend.already.pending=There is already a connection request pending between you and {0}. -text.friend.cancel=Are you sure you want to cancel your pending connection request to {0}? They will not be notified. -text.friend.confirm=Ceci confirmera la demande d'invitation de {0}. -text.friend.confirmed=Vous \u00eates connect\u00e9 -text.friend.feed.num.many={0} contacts -text.friend.feed.num.none=0 contact -text.friend.feed.num.one=1 contact -text.friend.ignore=Are you sure you want to ignore {0}'s connection request? They will not be notifed. -text.friend.none=Vous n'\u00eates pas en contact avec {0}. -text.friend.pending=Demande d'invitation en cours -text.friend.remove=Are you sure you want to remove {0} as a connection? They will not be notified. -text.friend.requested=Demande de lien -text.friend.self=C'est vous \! -text.gallery.feed.num.none=0\u00a0image -text.gallery.pictures.num.none=Votre galerie ne contient pas encore d'image. -text.gallery.upload.tooltip=Upload gallery images from your computer. The combined size of the images to upload should not exceed {0}MB. text.image.refresh=Note\: If the new image doesn't appear immediately, try refreshing your browser. text.image.url=Entrez l'URL de l'image \u00e0 utiliser dans votre profil -text.messages.none=Aucun message text.name.pronunciation.description=Allows you to provide written phonetic pronunciation and/or audio recordings of your name.
This pronunciation will be visible to instructors / students enrolled in your course sites. text.no.fields=Vous n'avez compl\u00e9t\u00e9 aucune information pour le moment -text.no.status=Dites quelque chose text.or=ou -text.privacy.academicinfo.tooltip=Choose who can see your academic information like school, department or course. -text.privacy.basicinfo.tooltip=D\u00e9finissez qui peut acc\u00e9der \u00e0 vos renseignements de base tels que votre date d'anniversaire... -text.privacy.birthyear.tooltip=Choose whether or not to show or hide your birth year. Ticked means visible. -text.privacy.businessinfo.tooltip=Choose who can see your business information, like industry, position and business bio. -text.privacy.cannot.modify=Ces valeurs sont verrouill\u00e9es par l'administrateur et ne peuvent \u00eatre modifi\u00e9es. -text.privacy.contactinfo.tooltip=D\u00e9finissez qui peut acc\u00e9der \u00e0 votre adresse de courrier \u00e9lectronique et \u00e0 vos num\u00e9ros de t\u00e9l\u00e9phone. -text.privacy.messages.tooltip=Choisissez les personnes autoris\u00e9es \u00e0 vous envoyer des messages. -text.privacy.myfriends.tooltip=D\u00e9finissez qui peut visualiser votre liste de contacts. -text.privacy.mykudos.tooltip=Choisissez les personnes autoris\u00e9es \u00e0 afficher votre note en Kudos (si l'option est activ\u00e9e dans Pr\u00e9f\u00e9rences). -text.privacy.mypictures.tooltip=Choisissez les personnes autoris\u00e9es \u00e0 afficher votre galerie d'images. -text.privacy.mystatus.tooltip=D\u00e9finissez qui peut voir vos mises \u00e0 jour d'\u00e9tat. -text.privacy.mywall.tooltip=Choisissez les personnes autoris\u00e9es \u00e0 voir votre mur. -text.privacy.onlinestatus.tooltip=Choose who can see your online status. You will appear offline to all others. -text.privacy.personalinfo.tooltip=D\u00e9finissez qui peut visualiser vos livres, films pr\u00e9f\u00e9r\u00e9s, etc. -text.privacy.profileimage.tooltip=D\u00e9finissez qui peut voir l'image de votre profil. -text.privacy.socialinfo.tooltip=Choose who can see your social networking information, such as your Facebook, LinkedIn and MySpace profiles. -text.privacy.staff.tooltip=Choisissez les personnes autoris\u00e9es \u00e0 afficher vos renseignements concernant le personnel. -text.privacy.student.tooltip=Choisissez les personnes autoris\u00e9es \u00e0 afficher vos renseignements concernant les \u00e9tudiants. -text.profile.birthyear.tooltip=Vous pouvez choisir d'afficher/cacher votre date d'anniversaire dans vos param\u00e8tres de confidentialit\u00e9. text.profile.facebook.tooltip=par exemple, http\://www.facebook.com/user text.profile.linkedin.tooltip=par exemple, http\://www.linkedin.com/pub/user text.profile.locked.false=Verrouiller un profil signifie que l'utilisateur ne pourra pas le modifier. text.profile.locked.true=D\u00e9verrouiller un profil autorisera l'utilisateur \u00e0 le modifier. -text.profile.myspace.tooltip=par exemple, http\://myspace.com/user -text.profile.presence.away={0} est absent(e) -text.profile.presence.offline={0} n'est pas disponible -text.profile.presence.online={0} est en ligne -text.profile.twitter.tooltip=par exemple, http\://twitter.com/sakaiproject -text.search.byinterest.all.results={0} r\u00e9sultats trouv\u00e9s pour\: {1} -text.search.byinterest.label=Centre d'int\u00e9r\u00eat commun -text.search.byinterest.no.results=Personne n'a indiqu\u00e9 {0} dans ses centres d\u2019int\u00e9r\u00eat. -text.search.byinterest.one.result=1 r\u00e9sultat trouv\u00e9 pour\: {0} -text.search.byinterest.paged.results=Affichage de {0}\u00a0r\u00e9sultats (jusqu'\u00e0 {1}\u00a0r\u00e9sultats par page) pour\: {2} -text.search.byinterest.tooltip=Entrez un centre d'int\u00e9r\u00eat, ex\: \u00abVoile\u00bb pour rechercher des contacts partageant ce centre d'int\u00e9r\u00eat -text.search.byname.all.results={0} r\u00e9sultats trouv\u00e9s pour\: {1} -text.search.byname.label=Nom ou adresse de courrier \u00e9lectronique recherch\u00e9 -text.search.byname.no.results=Il n'y a pas de r\u00e9sultat correspondant \u00e0 {0}. -text.search.byname.one.result=1 r\u00e9sultat trouv\u00e9 pour\: {0} -text.search.byname.paged.results=Affichage de {0}\u00a0r\u00e9sultats (jusqu'\u00e0 {1}\u00a0r\u00e9sultats par page) pour\: {2} -text.search.byname.tooltip=Entrez un nom ou une adresse de courrier \u00e9lectronique pour rechercher la personne -text.search.history=Recherches pr\u00e9c\u00e9dentes -text.search.include.connections=Inclure les contacts dans les r\u00e9sultats de la recherche -text.search.include.worksite=Limiter la recherche au site s\u00e9lectionn\u00e9 -text.search.no.input=Vous n'avez rien saisi -text.search.no.results=Il n'y a pas de r\u00e9sultat pour {0}. -text.search.no.worksite=Vous n'\u00eates membre d'aucun site -text.search.paged.results=Affichage des r\u00e9sultats de {0} \u00e0 {1} sur {2} pour\: {3} -text.search.terms.label=Termes recherch\u00e9s -text.search.terms.tooltip=Enter search terms depending on whether searching by name/email or by interest -text.search.toomany.results=Your search for {0} returned {1} or more results. Only the first {1} have been provided. text.upload.image.file=S\u00e9lectionner un fichier image sur votre ordinateur (max {0}Mo)\: text.view.profile.nothing=This person has restricted viewing of their information or has no profile information to share. -text.view.wall.nothing=There are currently no items on {0}'s wall. Be first to post something\! -text.view.wall.restricted=Only {0}'s connections can see this wall. Add {0} as a connection to view and post to this wall. -text.wall.no.items=Il n'existe actuellement aucun \u00e9l\u00e9ment \u00e0 afficher sur ce mur. -text.wall.remove.mine=Supprimer l'article de forum de votre mur? -text.wall.remove.other=Supprimer le message de {0} de votre mur ? -text.worksite.create=S\u00e9lectionnez parmi les personnes disponibles et cr\u00e9ez un nouveau site de travail. -text.worksite.refresh=Actualisez le navigateur pour acc\u00e9der au nouveau site de travail apr\u00e8s l'avoir cr\u00e9\u00e9. title.change.profile.picture=Modifier l'image de votre profil -title.friend.add=Ajouter {0} comme contact? -title.friend.cancel=Rejeter l'invitation? -title.friend.confirm=Accepter l'invitation de {0}? -title.friend.ignore=Rejeter l'invitation? -title.friend.remove=Supprimer le contact? -title.message.compose=Composer un nouveau message -title.wall.comment=Commenter l'article publi\u00e9 sur le mur de {0} -title.wall.remove=Supprimer du mur? - -twitter.auth.do=Lier un compte Twitter -twitter.auth.linked=Compte Twitter li\u00e9 -twitter.enabled=Activer l'int\u00e9gration de Twitter - -twitterUrl.UrlValidator=URL invalide urlField.Required=Vous n'avez pas saisi d'URL - -workphone.PhoneNumberValidator=Num\u00e9ro de t\u00e9l\u00e9phone non valide - -worksite.name=Nom du site de travail diff --git a/profile2/api/src/resources/ProfileApplication_hi_IN.properties b/profile2/api/src/resources/ProfileApplication_hi_IN.properties index 6f0e070f142c..40d040bb3470 100644 --- a/profile2/api/src/resources/ProfileApplication_hi_IN.properties +++ b/profile2/api/src/resources/ProfileApplication_hi_IN.properties @@ -15,513 +15,119 @@ # RequiredValidator=''${\u0932\u0947\u092c\u0932}'' \u0915\u0940 \u0906\u0935\u0936\u094d\u092f\u0915\u0924\u093e \u0939\u0948 -accessibility.connection.add={0} \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u091c\u094b\u0921\u093c\u0947\u0902? -accessibility.connection.confirm={0} \u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f? -accessibility.connection.ignore={0} \u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u0909\u092a\u0947\u0915\u094d\u0937\u093e? -accessibility.connection.remove={0} \u0938\u0947 \u0906\u092a\u0915\u093e \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0928\u093f\u0915\u093e\u0932\u0947\u0902? accessibility.edit.basic=\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 -accessibility.edit.business=\u0935\u094d\u092f\u0935\u0938\u093e\u092f \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 accessibility.edit.contact=\u092c\u0941\u0928\u093f\u092f\u093e\u0926\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 -accessibility.edit.personal=\u0938\u0902\u092a\u0930\u094d\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 accessibility.edit.social=\u0938\u093e\u092e\u093e\u091c\u093f\u0915 \u0928\u0947\u091f\u0935\u0930\u094d\u0915\u093f\u0902\u0917 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 -accessibility.edit.staff=\u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 -accessibility.edit.student=\u091b\u093e\u0924\u094d\u0930 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 accessibility.image.upload=\u0905\u092a\u0928\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0915\u0947 \u0932\u093f\u090f \u0915\u094b\u0908 \u091a\u093f\u0924\u094d\u0930 \u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0947\u0902 accessibility.image.url=\u0906\u092a\u0915\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091a\u093f\u0924\u094d\u0930 \u0915\u0947 \u0932\u093f\u090f \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.messages.unread=\u0905\u092a\u0920\u093f\u0924 \u0938\u0902\u0926\u0947\u0936 -accessibility.prefs.confirms.off=\u091c\u092c \u0915\u094b\u0908 \u092e\u0947\u0930\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902 \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0905\u0915\u094d\u0937\u092e -accessibility.prefs.confirms.on=\u091c\u092c \u0915\u094b\u0908 \u092e\u0947\u0930\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902 \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0938\u0915\u094d\u0937\u092e -accessibility.prefs.gallery=\u092e\u0947\u0930\u0940 \u0924\u0938\u094d\u0935\u0940\u0930\u0947\u0902 \u092e\u0947\u0930\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092a\u0930 \u0926\u093f\u0916\u093e\u090f\u0901 accessibility.prefs.gravatar=\ \u092e\u0947\u0930\u0947 \u0917\u094d\u0930\u0947\u0935\u091f\u0930 \u0915\u094b \u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 -accessibility.prefs.kudos=\u092e\u0947\u0930\u093e \u092f\u0936 \u0926\u0930\u094d\u091c\u093c\u093e \u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092a\u0930 \u0926\u093f\u0916\u093e\u090f\u0901 -accessibility.prefs.messagenew.off=\u091c\u092c \u0915\u093f\u0938\u0940 \u0928\u0947 \u092e\u0941\u091d\u0947 \u090f\u0915 \u0928\u092f\u093e \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u093e \u0939\u0948 \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0905\u0915\u094d\u0937\u092e -accessibility.prefs.messagenew.on=\u091c\u092c \u0915\u093f\u0938\u0940 \u0928\u0947 \u092e\u0941\u091d\u0947 \u090f\u0915 \u0928\u092f\u093e \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u093e \u0939\u0948 \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0938\u0915\u094d\u0937\u092e -accessibility.prefs.messagereply.off=\u0915\u093f\u0938\u0940 \u0928\u0947 \u092e\u0947\u0930\u0947 \u0938\u0902\u0926\u0947\u0936\u094b\u0902 \u092e\u0947\u0902 \u0938\u0947 \u090f\u0915 \u0915\u093e \u091c\u0935\u093e\u092c \u0926\u093f\u092f\u093e \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0905\u0915\u094d\u0937\u092e -accessibility.prefs.messagereply.on=\u0915\u093f\u0938\u0940 \u0928\u0947 \u092e\u0947\u0930\u0947 \u0938\u0902\u0926\u0947\u0936\u094b\u0902 \u092e\u0947\u0902 \u0938\u0947 \u090f\u0915 \u0915\u093e \u091c\u0935\u093e\u092c \u0926\u093f\u092f\u093e \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0938\u0915\u094d\u0937\u092e accessibility.prefs.officialimage=\u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0906\u0927\u093f\u0915\u093e\u0930\u093f\u0915 \u0938\u0902\u0938\u094d\u0925\u093e\u0917\u0924 \u091b\u0935\u093f \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 -accessibility.prefs.onlinestatus=\u092e\u0947\u0930\u0947 \u0911\u0928\u0932\u093e\u0907\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0942\u0938\u0930\u094b\u0902 \u0915\u094b \u0926\u093f\u0916\u093e\u090f\u0901 accessibility.prefs.overview=\u0908\u092e\u0947\u0932 \u0905\u0927\u093f\u0938\u0942\u091a\u0928\u093e \u0935\u0930\u0940\u092f\u0924\u093e\u090f\u0901 -accessibility.prefs.requests.off=\u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902 \u091c\u092c \u0915\u094b\u0908 \u092e\u0941\u091d\u0947 \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u091c\u094b\u0921\u093c\u0924\u093e \u0939\u0948, \u0905\u0915\u094d\u0937\u092e -accessibility.prefs.requests.on=\u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902 \u091c\u092c \u0915\u094b\u0908 \u092e\u0941\u091d\u0947 \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u091c\u094b\u0921\u093c\u0924\u093e \u0939\u0948, \u0938\u0915\u094d\u0937\u092e accessibility.prefs.twitterauthcode=\u0906\u092a\u0915\u0947 \u091f\u094d\u0935\u093f\u091f\u0930(Twitter) \u092a\u094d\u0930\u093e\u0927\u093f\u0915\u093e\u0930 \u0915\u094b\u0921 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.prefs.wallnew.off=\u091c\u092c \u0915\u094b\u0908 \u092e\u0947\u0930\u0940 \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0932) \u092a\u0930 \u092a\u094b\u0938\u094d\u091f \u0915\u0930\u0924\u093e \u0939\u0948 \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0905\u0915\u094d\u0937\u092e -accessibility.prefs.wallnew.on=\u091c\u092c \u0915\u094b\u0908 \u092e\u0947\u0930\u0940 \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0932) \u092a\u0930 \u092a\u094b\u0938\u094d\u091f \u0915\u0930\u0924\u093e \u0939\u0948 \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0938\u0915\u094d\u0937\u092e -accessibility.prefs.worksite.off=\u091c\u092c \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u092e\u0941\u091d\u0947 \u090f\u0915 \u0928\u090f \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0915\u0947 \u0932\u093f\u090f \u092e\u0941\u091d\u0947 \u091c\u094b\u0921\u093c\u0924\u093e \u0939\u0948 \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0905\u0915\u094d\u0937\u092e \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u0948 -accessibility.prefs.worksite.on=\u091c\u092c \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u092e\u0941\u091d\u0947 \u090f\u0915 \u0928\u090f \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0915\u0947 \u0932\u093f\u090f \u092e\u0941\u091d\u0947 \u091c\u094b\u0921\u093c\u0924\u093e \u0939\u0948 \u0924\u094b \u092e\u0941\u091d\u0947 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u0938\u0915\u094d\u0937\u092e \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u0948 -accessibility.privacy.academic=\u091a\u092f\u0928 \u0915\u0930\u0947\u0902 ,\u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0905\u0915\u093e\u0926\u092e\u093f\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u091c\u0948\u0938\u0947 \u0938\u094d\u0915\u0942\u0932, \u0935\u093f\u092d\u093e\u0917 \u092f\u093e \u092a\u093e\u0920\u094d\u092f\u0915\u094d\u0930\u092e \u0926\u0947\u0916 \u0938\u0915\u0924\u093e \u0939\u0948\u0964 accessibility.privacy.basic=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u092a\u094d\u0930\u091a\u0932\u093f\u0924 \u0928\u093e\u092e \u0914\u0930 \u091c\u0928\u094d\u092e\u0926\u093f\u0928 \u0915\u0940 \u0924\u0930\u0939 \u0905\u092a\u0928\u0947 \u092c\u0941\u0928\u093f\u092f\u093e\u0926\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.privacy.birthyear=\u091a\u0941\u0928\u0947\u0902,\u0905\u092a\u0928\u0947 \u091c\u0928\u094d\u092e \u0935\u0930\u094d\u0937 \u0915\u094b \u091b\u0941\u092a\u093e\u0928\u0947 \u092f\u093e \u0926\u093f\u0916\u093e\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f\u0964 \u091a\u093f\u0939\u094d\u0928\u093f\u0924 \u0915\u093e \u092e\u0924\u0932\u092c \u0926\u0943\u0936\u094d\u092f\u0924\u093e \u0939\u0948\u0964 -accessibility.privacy.business=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u0935\u094d\u092f\u0935\u0938\u093e\u092f \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u091c\u0948\u0938\u0947 \u0909\u0926\u094d\u092f\u094b\u0917, \u0914\u0930 \u0935\u094d\u092f\u093e\u092a\u093e\u0930 \u091c\u0948\u0935 \u0915\u0940 \u0938\u094d\u0925\u093f\u0924\u093f \u0915\u094b \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 accessibility.privacy.contact=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u0908\u092e\u0947\u0932 \u092a\u0924\u0947 \u0914\u0930 \u092b\u094b\u0928 \u0928\u0902\u092c\u0930 \u091c\u0948\u0938\u0940 \u091a\u0940\u091c\u094b\u0902 \u0915\u094b \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.privacy.friends=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0940 \u0938\u0942\u091a\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 accessibility.privacy.image=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091a\u093f\u0924\u094d\u0930 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.privacy.kudos=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u092f\u0936 \u0930\u0947\u091f\u093f\u0902\u0917 \u0905\u0917\u0930 (\u0935\u0930\u0940\u092f\u0924\u093e\u090f\u0901 \u092e\u0947\u0902 \u0938\u0915\u094d\u0937\u092e) \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.privacy.messages=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u094b \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.privacy.onlinestatus=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0940 \u0911\u0928\u0932\u093e\u0907\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 accessibility.privacy.overview=\u0928\u093f\u092f\u0902\u0924\u094d\u0930\u0923 \u0915\u0930\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0915\u0947 \u0915\u0941\u091b \u0939\u093f\u0938\u094d\u0938\u094b\u0902 \u0915\u094d\u092f\u093e \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 accessibility.privacy.personal=\u0915\u094c\u0928 \u0905\u092a\u0928\u0947 \u092a\u0938\u0902\u0926\u0940\u0926\u093e \u0915\u093f\u0924\u093e\u092c\u094b\u0902 \u0914\u0930 \u091f\u0940\u0935\u0940 \u0936\u094b \u0906\u0926\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902\u0964 -accessibility.privacy.pictures=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0924\u0938\u094d\u0935\u0940\u0930 \u0917\u0948\u0932\u0930\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 accessibility.privacy.social=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0938\u093e\u092e\u093e\u091c\u093f\u0915 \u0928\u0947\u091f\u0935\u0930\u094d\u0915\u093f\u0902\u0917 \u091c\u093e\u0928\u0915\u093e\u0930\u0940, \u091c\u0948\u0938\u0947 \u0906\u092a\u0915\u093e \u092b\u0947\u0938\u092c\u0941\u0915, \u0932\u093f\u0902\u0915\u094d\u0921\u0907\u0928 \u0914\u0930 \u092e\u093e\u0907\u0938\u094d\u092a\u0947\u0938 \u092a\u094d\u0930\u094b\u092b\u093e\u0907\u0932 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.privacy.staff=\u091a\u0941\u0928\u0947\u0902, \u0915\u094c\u0928 \u0905\u092a\u0928\u0947 \u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 -accessibility.privacy.status=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0947 \u0905\u0926\u094d\u092f\u0924\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.privacy.student=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0947 \u0935\u093f\u0926\u094d\u092f\u093e\u0930\u094d\u0925\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 -accessibility.privacy.wall=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0926\u0940\u0935\u093e\u0930(\u0935\u0949\u0932) \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.profile.academicprofileurl.input=\u0906\u092a\u0915\u0940 \u0936\u0948\u0915\u094d\u0937\u0923\u093f\u0915 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0915\u0947 \u0932\u093f\u090f \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.birthday=\u0906\u092a\u0915\u0940 \u091c\u0928\u094d\u092e \u0924\u093e\u0930\u0940\u0916 \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902\u0964 \u0906\u092a \u0905\u092a\u0928\u0940 \u0935\u0930\u0940\u092f\u0924\u093e\u090f\u0901 \u092e\u0947\u0902 \u0905\u092a\u0928\u0947 \u091c\u0928\u094d\u092e \u0935\u0930\u094d\u0937 \u0915\u0947 \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u0928 \u0915\u094b \u0928\u093f\u092f\u0902\u0924\u094d\u0930\u093f\u0924 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -accessibility.profile.businessbio.input=\u0906\u092a\u0915\u093e \u0935\u094d\u092f\u0935\u0938\u093e\u092f \u091c\u0940\u0935\u0928\u0940 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902\u0964 -accessibility.profile.companydescription.input=\u0907\u0938 \u0915\u0902\u092a\u0928\u0940 \u0915\u093e \u0935\u093f\u0935\u0930\u0923 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.companyname.input=\u0907\u0938 \u0915\u0902\u092a\u0928\u0940 \u0915\u093e \u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.companyurl.input=\u0907\u0938 \u0915\u0902\u092a\u0928\u0940 \u0915\u093e \u0935\u0947\u092c \u092a\u0924\u093e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.course.input=\u0905\u092a\u0928\u093e \u092a\u093e\u0920\u094d\u092f\u0915\u094d\u0930\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.department.input=\u0905\u092a\u0928\u093e \u0935\u093f\u092d\u093e\u0917 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 accessibility.profile.email.input=\u0905\u092a\u0928\u093e \u0908\u092e\u0947\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 accessibility.profile.facebookurl.input=\u0905\u092a\u0928\u093e \u092b\u0947\u0938\u092c\u0941\u0915 \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.facsimile.input=\u0905\u092a\u0928\u093e \u092b\u093c\u0948\u0915\u094d\u0938 \u0928\u0902\u092c\u0930 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.favouritebooks.input=\u0905\u092a\u0928\u0940 \u092a\u0938\u0902\u0926\u0940\u0926\u093e \u092a\u0941\u0938\u094d\u0924\u0915\u0947\u0902 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.favouritemovies.input=\u0905\u092a\u0928\u0940 \u092a\u0938\u0902\u0926\u0940\u0926\u093e \u092b\u093f\u0932\u094d\u092e\u0947\u0902 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.favouritequotes.input=\u0905\u092a\u0928\u0947 \u092a\u0938\u0902\u0926\u0940\u0926\u093e \u0909\u0926\u094d\u0927\u0930\u0923 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.favouritetv.input=\u0905\u092a\u0928\u0947 \u092a\u0938\u0902\u0926\u0940\u0926\u093e \u091f\u0940\u0935\u0940 \u0936\u094b \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.homepage.input=\u0905\u092a\u0928\u093e \u0935\u0947\u092c\u092a\u0947\u091c \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.homephone.input=\u0905\u092a\u0928\u0947 \u0918\u0930 \u0915\u093e \u092b\u093c\u094b\u0928 \u0928\u0902\u092c\u0930 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 accessibility.profile.linkedinurl.input=\u0905\u092a\u0928\u093e \u0932\u093f\u0902\u0915\u094d\u0921\u0907\u0928 \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.messagebody.input=\u0905\u092a\u0928\u093e \u0938\u0902\u0926\u0947\u0936 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.messagerecipient.input=\u090f\u0915 \u092a\u094d\u0930\u093e\u092a\u094d\u0924\u0915\u0930\u094d\u0924\u093e \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902 -accessibility.profile.messagesubject.input=\u090f\u0915 \u0938\u0902\u0926\u0947\u0936 \u0935\u093f\u0937\u092f \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 accessibility.profile.mobilephone.input=\u0905\u092a\u0928\u093e \u092e\u094b\u092c\u093e\u0907\u0932 \u092b\u093c\u094b\u0928 \u0928\u0902\u092c\u0930 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.myspaceurl.input=\u0905\u092a\u0928\u093e \u0932\u093f\u0902\u0915\u094d\u0921\u0907\u0928 \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 accessibility.profile.nickname.input=\u0905\u092a\u0928\u093e \u0909\u092a\u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.position.input=\u0905\u092a\u0928\u0940 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.publications.input=\u0905\u092a\u0928\u0947 \u092a\u094d\u0930\u0915\u093e\u0936\u0928\u094b\u0902 \u0915\u094b \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.room.input=\u0905\u092a\u0928\u0947 \u0915\u092e\u0930\u0947 \u092e\u0947\u0902 \u092a\u094d\u0930\u0935\u0947\u0936 \u0915\u0930\u0947\u0902 -accessibility.profile.school.input=\u0905\u092a\u0928\u0947 \u0938\u094d\u0915\u0942\u0932 \u092e\u0947\u0902 \u092a\u094d\u0930\u0935\u0947\u0936 \u0915\u0930\u0947\u0902 -accessibility.profile.skypeusername.input=\u0905\u092a\u0928\u093e \u0938\u094d\u0915\u093e\u0907\u092a \u092a\u094d\u0930\u092f\u094b\u0915\u094d\u0924\u093e \u0928\u093e\u092e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.staffprofile.input=\u0905\u092a\u0928\u093e \u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u0935\u093f\u0935\u0930\u0923 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.status.clear=\u0905\u092a\u0928\u0940 \u0938\u094d\u0925\u093f\u0924\u093f \u0938\u093e\u092b\u093c \u0915\u0930\u0947\u0902 -accessibility.profile.status.input=\u0905\u092a\u0928\u0940 \u0935\u0930\u094d\u0924\u092e\u093e\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.subjects.input=\u0905\u092a\u0928\u0947 \u0935\u093f\u0937\u092f \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 accessibility.profile.summaryinput=\u0905\u092a\u0928\u093e \u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u0938\u093e\u0930\u093e\u0902\u0936 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.twitterurl.input=\u0905\u092a\u0928\u093e \u091f\u094d\u0935\u093f\u091f\u0930 \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.uniprofileurl.input=\u0905\u092a\u0928\u0947 \u0935\u093f\u0936\u094d\u0935\u0935\u093f\u0926\u094d\u092f\u093e\u0932\u092f \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0915\u0947 \u0932\u093f\u090f \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.wallpost.input=\u0905\u092a\u0928\u0947 \u0935\u0949\u0932 \u092a\u094b\u0938\u094d\u091f \u0915\u0947 \u0932\u093f\u090f \u092a\u093e\u0920 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.profile.workphone.input=\u0905\u092a\u0928\u093e \u0915\u093e\u0930\u094d\u092f\u093e\u0932\u092f \u092b\u094b\u0928 \u0928\u0902\u092c\u0930 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -accessibility.search.connections=\u0916\u094b\u091c \u092a\u0930\u093f\u0923\u093e\u092e\u094b\u0902 \u092e\u0947\u0902 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0936\u093e\u092e\u093f\u0932 \u0915\u0930\u0947\u0902 -accessibility.search.worksite=\u091a\u092f\u0928\u093f\u0924 \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0915\u0947 \u0932\u093f\u090f \u0916\u094b\u091c \u0915\u094b \u0938\u0940\u092e\u093f\u0924 \u0915\u0930\u0947\u0902 -accessibility.wall.comment={0} \u0915\u0947 \u0935\u0949\u0932 \u092a\u094b\u0938\u094d\u091f \u092a\u0930 \u091f\u093f\u092a\u094d\u092a\u0923\u0940 -accessibility.wall.remove.mine=\u0905\u092a\u0928\u0940 \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0945\u0932) \u0938\u0947 \u092a\u094b\u0938\u094d\u091f \u0939\u091f\u093e\u090f\u0901? -accessibility.wall.remove.other={0} \u0938\u0947 \u0905\u092a\u0928\u0940 \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0945\u0932) \u0938\u0947 \u092a\u094b\u0938\u094d\u091f \u0939\u091f\u093e\u090f\u0901? -button.business.add.profile=\u0915\u0902\u092a\u0928\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091c\u094b\u0921\u093c\u0947\u0902 -button.business.remove.profile=\u0915\u0902\u092a\u0928\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0939\u091f\u093e\u090f\u0901 button.cancel=\u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902 button.close=\u092c\u0902\u0926 \u0915\u0930\u0947\u0902 button.edit=\u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 -button.friend.add=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u091c\u094b\u0921\u093c\u0947\u0902 -button.friend.cancel=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902 -button.friend.confirm=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902 -button.friend.ignore=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u092a\u0930 \u0927\u094d\u092f\u093e\u0928 \u0928 \u0926\u0947\u0902 -button.friend.remove=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0928\u093f\u0915\u093e\u0932\u0947\u0902 -button.gallery.remove=\u091a\u093f\u0924\u094d\u0930 \u0928\u093f\u0915\u093e\u0932\u0947\u0902 -button.gallery.remove.confirm=\u0939\u091f\u093e\u0928\u0947 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902 -button.gallery.setprofile=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0938\u0947\u091f \u0915\u0930\u0947\u0902 -button.gallery.setprofile.confirm=\u0928\u0908 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902 -button.gallery.upload=\u091a\u0941\u0928\u0947 \u0939\u0941\u090f \u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0947\u0902 button.link=\u0932\u093f\u0902\u0915 -button.message.reply=\u0909\u0924\u094d\u0924\u0930 \u0926\u0947\u0902 -button.message.send=\u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0947\u0902 button.save=\u0938\u0939\u0947\u091c\u0947\u0902 button.save.changes=\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u0928 \u0938\u0941\u0930\u0915\u094d\u0937\u093f\u0924 \u0915\u0930\u0947\u0902 button.save.settings=\u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u0938\u0939\u0947\u091c\u0947\u0902 button.sayit=\u092f\u0939 \u0915\u0939\u0928\u093e \u0939\u0948 \u0915\u093f -button.search.byinterest=\u0906\u092e \u0930\u0941\u091a\u093f \u0926\u094d\u0935\u093e\u0930\u093e \u0916\u094b\u091c -button.search.byname=\u0928\u093e\u092e \u092f\u093e \u0908\u092e\u0947\u0932 \u0915\u0947 \u0926\u094d\u0935\u093e\u0930\u093e \u0916\u094b\u091c -button.search.clear=\u0916\u094b\u091c \u0938\u093e\u092b\u093c \u0915\u0930\u0947\u0902 -button.search.generic=\u0916\u094b\u091c\u0947\u0902 -button.search.history.clear=\u0907\u0924\u093f\u0939\u093e\u0938 \u0938\u093e\u092b\u093c \u0915\u0930\u0947\u0902 button.upload=\u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0947\u0902 button.url.add=\u092f\u0942\u0906\u0930\u090f\u0932 \u091c\u094b\u0921\u093c\u0947\u0902 -button.wall.comment=\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093c\u0947\u0902 -button.wall.post=\u0935\u0949\u0932 \u092a\u094b\u0938\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f -button.wall.remove=\u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0932) \u0938\u0947 \u0939\u091f\u093e\u090f\u0902 -button.worksite.cancel=\u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902 -button.worksite.create=\u092c\u0928\u093e\u090f\u0901 - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u0908\u092e\u0947\u0932 \u092a\u0924\u093e error.empty.file.uploaded=\u0906\u092a\u0928\u0947 \u0915\u094b\u0908 \u0916\u093e\u0932\u0940 \u092b\u093c\u093e\u0907\u0932 \u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0915\u094b\u0936\u093f\u0936 \u0915\u0940 error.file.save.failed=\u092b\u093c\u093e\u0907\u0932 \u0938\u0941\u0930\u0915\u094d\u0937\u093f\u0924 \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 -error.friend.add.failed={0} \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u092d\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0915\u094b\u0908 \u0924\u094d\u0930\u0941\u091f\u093f \u0909\u0924\u094d\u092a\u0928\u094d\u0928 \u0939\u0941\u0908\u0964 -error.friend.already.confirmed=\u0906\u092a {0} \u0938\u0947 \u092a\u0939\u0932\u0947 \u0938\u0947 \u0939\u0940 \u0915\u0928\u0947\u0915\u094d\u091f\u0947\u0921 \u0939\u0948\u0902\u0964 -error.friend.already.pending=\u092a\u0939\u0932\u0947 \u0938\u0947 \u0939\u0940 {0} \u0915\u0947 \u0938\u093e\u0925 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0932\u0902\u092c\u093f\u0924 \u0939\u0948\u0964 -error.friend.confirm.failed=\u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0928\u0947 \u0935\u093e\u0932\u0947 {0} \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u092e\u0947\u0902 \u0924\u094d\u0930\u0941\u091f\u093f \u0909\u0924\u094d\u092a\u0928\u094d\u0928 \u0939\u0941\u0908\u0964 -error.friend.ignore.failed=\ \u0924\u094d\u0930\u0941\u091f\u093f \u0909\u0924\u094d\u092a\u0928\u094d\u0928 \u0939\u0941\u0908 {0} \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u094b \u0905\u0928\u0926\u0947\u0916\u093e \u0915\u0930 \u0930\u0939\u093e \u0939\u0948\u0964 -error.friend.not.friend=\u0906\u092a {0} \u0938\u0947 \u0915\u0928\u0947\u0915\u094d\u091f\u0947\u0921 \u0928\u0939\u0940\u0902 \u0939\u0948\u0902 \u0924\u094b \u0935\u0947 \u0939\u091f\u093e\u090f \u0928\u0939\u0940\u0902 \u091c\u093e \u0938\u0915\u0924\u0947\! -error.friend.not.pending.confirm=\u0935\u0939\u093e\u0901 \u0915\u094b\u0908 \u0932\u0902\u092c\u093f\u0924 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 {0} \u0938\u0947 \u0928\u0939\u0940\u0902 \u0939\u0948, \u0924\u094b \u0906\u092a \u092f\u0939 \u092a\u0941\u0937\u094d\u091f\u093f \u0928\u0939\u0940\u0902 \u0915\u0930 \u0938\u0915\u0924\u0947\! -error.friend.not.pending.ignore=\u0935\u0939\u093e\u0901 \u0915\u094b\u0908 \u0932\u0902\u092c\u093f\u0924 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 {0} \u0938\u0947 \u0928\u0939\u0940\u0902 \u0939\u0948, \u0924\u094b \u0906\u092a \u0907\u0938\u0947 \u0928\u091c\u0930\u0905\u0902\u0926\u093e\u091c \u0928\u0939\u0940\u0902 \u0915\u0930 \u0938\u0915\u0924\u0947\! -error.friend.remove.failed=\u0915\u094b\u0908 \u0924\u094d\u0930\u0941\u091f\u093f \u0909\u0924\u094d\u092a\u0928\u094d\u0928 \u0939\u0941\u0908 \u0939\u0948 {0} \u0915\u094b \u0906\u092a\u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0940 \u0938\u0942\u091a\u0940 \u0938\u0947 \u0928\u093f\u0915\u093e\u0932\u093e \u091c\u093e \u0930\u0939\u093e \u0939\u0948\u0964 -error.gallery.remove.failed=\u0917\u0948\u0932\u0930\u0940 \u0938\u0947 \u091a\u093f\u0924\u094d\u0930 \u0928\u093f\u0915\u093e\u0932\u0928\u0947 \u092e\u0947\u0902 \u0905\u0938\u092e\u0930\u094d\u0925 \u0939\u0948\u0902 -error.gallery.setprofile.failed=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u091a\u093f\u0924\u094d\u0930 \u0938\u0947\u091f \u0915\u0930\u0928\u0947 \u092e\u0947\u0902 \u0905\u0938\u092e\u0930\u094d\u0925 \u0939\u0948\u0902 -error.gallery.upload.warning=\u092b\u093c\u093e\u0907\u0932 (\u092b\u093c\u093e\u0907\u0932\u0947\u0902) \u092a\u0939\u0932\u0947 \u091a\u0941\u0928\u0947\u0902 error.invalid.image.type=\u0915\u0947\u0935\u0932 \u092a\u0940\u090f\u0928\u091c\u0940, \u091c\u0947\u092a\u0940\u091c\u0940 \u0914\u0930 \u091c\u0940\u0906\u0908\u090f\u092b \u092a\u094d\u0930\u0915\u093e\u0930 \u0915\u0940 \u091b\u0935\u093f\u092f\u094b\u0902 \u0915\u0940 \u0905\u0928\u0941\u092e\u0924\u093f \u0939\u0948\u0964 -error.message.required.body=\u0938\u0902\u0926\u0947\u0936 \u0930\u093f\u0915\u094d\u0924 \u0928\u0939\u0940\u0902 \u0939\u094b \u0938\u0915\u0924\u093e -error.message.required.to=\u0906\u092a\u0915\u094b \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0915\u093f\u0938\u0940 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0928\u093e \u0939\u094b\u0917\u093e \u091c\u093f\u0938\u0947 \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0928\u093e \u0939\u0948 -error.message.send.failed=\u090f\u0915 \u0924\u094d\u0930\u0941\u091f\u093f \u0905\u092a\u0928\u093e \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0939\u0941\u0908 error.no.file.uploaded=\u0906\u092a\u0928\u0947 \u0915\u093f\u0938\u0940 \u092b\u093c\u093e\u0907\u0932 \u0915\u093e \u091a\u092f\u0928 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u0925\u093e error.password.required=\u092a\u093e\u0938\u0935\u0930\u094d\u0921 \u0915\u0940 \u0906\u0935\u0936\u094d\u092f\u0915\u0924\u093e \u0939\u0948 error.preferences.save.failed=\u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 -error.privacy.save.failed=\u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 -error.profile.save.academic.failed=\u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 -error.profile.save.business.failed=\u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 error.profile.save.contact.failed=\u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 error.profile.save.info.failed=\u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 -error.profile.save.interests.failed=\u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 error.twitter.details.invalid=\u0906\u092a\u0915\u093e \u091f\u094d\u0935\u093f\u091f\u0930 \u0915\u094d\u0930\u0947\u0921\u0947\u0902\u0936\u093f\u092f\u0932 \u0938\u0924\u094d\u092f\u093e\u092a\u093f\u0924 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u0924\u093e \u0939\u0948 error.url.save.failed=\u092f\u0942\u0906\u0930\u090f\u0932 \u0915\u094b \u0938\u0939\u0947\u091c\u0928\u0947 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 \u0930\u0939\u093e error.username.required=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0928\u093e\u092e \u0915\u0940 \u0906\u0935\u0936\u094d\u092f\u0915\u0924\u093e \u0939\u0948 -error.wall.comment.empty=\u0924\u0941\u092e\u0928\u0947 \u090f\u0915 \u0916\u093e\u0932\u0940 \u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u091c\u094b\u0921\u093c\u0928\u0947 \u0915\u0940 \u0915\u094b\u0936\u093f\u0936 \u0915\u0940 -error.wall.comment.failed=\u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 \u0930\u0939\u093e -error.wall.post.empty=\u0924\u0941\u092e\u0928\u0947 \u090f\u0915 \u0916\u093e\u0932\u0940 \u092a\u0926 \u092c\u0928\u093e\u0928\u0947 \u0915\u0940 \u0915\u094b\u0936\u093f\u0936 \u0915\u0940 -error.wall.post.failed=\u092a\u094b\u0938\u094d\u091f \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 \u0930\u0939\u093e -error.worksite.create.failed=\u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0930\u091a\u0928\u093e \u092e\u0947\u0902 \u0935\u093f\u092b\u0932 \u0930\u0939\u093e -error.worksite.no.title=\u0906\u092a\u0915\u094b \u0938\u093e\u0907\u091f \u0915\u094b \u090f\u0915 \u0928\u093e\u092e \u0926\u0947\u0928\u093e \u0906\u0935\u0936\u094d\u092f\u0915 \u0939\u0948 exception.heading.session.expired=\u0938\u0924\u094d\u0930 \u0938\u092e\u093e\u092a\u094d\u0924 \u0939\u094b \u0917\u092f\u093e exception.text.session.expired=\u0926\u0941\u0930\u094d\u092d\u093e\u0917\u094d\u092f \u0938\u0947, \u0906\u092a\u0915\u093e \u0938\u0924\u094d\u0930 \u0938\u092e\u093e\u092a\u094d\u0924 \u0939\u094b \u0917\u092f\u093e \u0939\u0948\u0964 \u092a\u0943\u0937\u094d\u0920 \u0930\u0940\u092b\u093c\u094d\u0930\u0947\u0936 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0915\u094b\u0936\u093f\u0936 \u0915\u0930\u094b \u092f\u093e \u0932\u0949\u0917\u0906\u0909\u091f \u0915\u0930\u0915\u0947 \u092b\u093f\u0930 \u0938\u0947 \u0932\u0949\u0917\u093f\u0928 \u0915\u0930\u094b \u0938\u0924\u094d\u0930 \u0915\u094b \u092a\u0941\u0928\u0903 \u0906\u0930\u0902\u092d \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f\u0964 facebookUrl.UrlValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092f\u0942\u0906\u0930\u090f\u0932 -facsimile.PhoneNumberValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092b\u093c\u094b\u0928 \u0928\u0902\u092c\u0930 - form.uploadTooLarge=\u0905\u092a\u0932\u094b\u0921 ${maxSize} \u0938\u0947 \u0915\u092e \u0939\u094b\u0928\u093e \u091a\u093e\u0939\u093f\u090f -heading.academic=\u0936\u0948\u0915\u094d\u0937\u0923\u093f\u0915 \u0938\u0942\u091a\u0928\u093e -heading.academic.edit=\u0936\u0948\u0915\u094d\u0937\u0923\u093f\u0915 \u0938\u0942\u091a\u0928\u093e heading.basic=\u092c\u0941\u0928\u093f\u092f\u093e\u0926\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 heading.basic.edit=\u092c\u0941\u0928\u093f\u092f\u093e\u0926\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -heading.business=\u0935\u094d\u092f\u093e\u092a\u093e\u0930 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -heading.business.edit=\u0935\u094d\u092f\u093e\u092a\u093e\u0930 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 heading.contact=\u0938\u0902\u092a\u0930\u094d\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 heading.contact.edit=\u0938\u0902\u092a\u0930\u094d\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -heading.friend.requests=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927- -heading.friends.my=\u092e\u0947\u0930\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928- -heading.friends.view={0} \u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928- -heading.interests=\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -heading.interests.edit=\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -heading.messages=\u092e\u0947\u0930\u0947 \u0938\u0902\u0926\u0947\u0936 -heading.pictures.addpicture=\u091a\u093f\u0924\u094d\u0930 \u091c\u094b\u0921\u093c\u0947\u0902 -heading.pictures.my.pictures=\u092e\u0947\u0930\u0940 \u0924\u0938\u094d\u0935\u0940\u0930\u0947\u0902 -heading.pictures.view.pictures={0} \u0915\u0947 \u091a\u093f\u0924\u094d\u0930 heading.preferences=\u0935\u0930\u0940\u092f\u0924\u093e\u090f\u0901 -heading.privacy=\u0917\u094b\u092a\u0928\u0940\u092f\u0924\u093e \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 -heading.search=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932\u094d\u0938 \u0916\u094b\u091c\u0947 -heading.section.academic.staff=\u0938\u094d\u091f\u093e\u092b \u0915\u0947 \u0932\u093f\u090f\: -heading.section.academic.students=\u091b\u093e\u0924\u094d\u0930\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f\: heading.section.email=\u0908\u092e\u0947\u0932 \u0938\u0942\u091a\u0928\u093e\u090f\u0901 heading.section.image=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 -heading.section.twitter=\u091f\u094d\u0935\u093f\u091f\u0930 \u090f\u0915\u0940\u0915\u0930\u0923 heading.section.widget=\u0935\u093f\u091c\u0947\u091f \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 heading.social=\u0938\u093e\u092e\u093e\u091c\u093f\u0915 \u0928\u0947\u091f\u0935\u0930\u094d\u0915\u093f\u0902\u0917 heading.social.edit=\u0938\u093e\u092e\u093e\u091c\u093f\u0915 \u0928\u0947\u091f\u0935\u0930\u094d\u0915\u093f\u0902\u0917 -heading.staff=\u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -heading.staff.edit=\u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -heading.student=\u091b\u093e\u0924\u094d\u0930 \u0938\u0942\u091a\u0928\u093e -heading.student.edit=\u091b\u093e\u0924\u094d\u0930 \u0938\u0942\u091a\u0928\u093e -heading.widget.my.friends=\u092e\u0947\u0930\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 -heading.widget.my.kudos=\u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u0936\u0902\u0938\u093e -heading.widget.my.pictures=\u092e\u0947\u0930\u0940 \u0924\u0938\u094d\u0935\u0940\u0930\u0947\u0902 -heading.widget.view.friends={0} \u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 -heading.widget.view.kudos={0} \u0915\u0947 \u092f\u0936 -heading.widget.view.pictures={0} \u0915\u0947 \u091a\u093f\u0924\u094d\u0930 - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092f\u0942\u0906\u0930\u090f\u0932 - -homephone.PhoneNumberValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092b\u093c\u094b\u0928 \u0928\u0902\u092c\u0930 link.change.profile.picture=\u091a\u093f\u0924\u094d\u0930 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924 link.edit=\u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 link.edit.info=\u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 -link.friend.add=\u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u091c\u094b\u0921\u093c\u0947\u0902 -link.friend.add.name={0} \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u091c\u094b\u0921\u093c\u0947\u0902 -link.friend.confirm=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902 -link.friend.feed.search=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0947 \u0932\u093f\u090f \u0916\u094b\u091c -link.friend.feed.view=\u0938\u092d\u0940 \u0915\u0928\u0947\u0915\u094d\u0936\u0902\u0938 \u0926\u0947\u0916\u0947 -link.friend.ignore=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u092a\u0930 \u0927\u094d\u092f\u093e\u0928 \u0928 \u0926\u0947\u0902 -link.friend.remove=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0939\u091f\u093e\u090f\u0901 -link.friend.request.act=\u0907\u0938 \u0905\u0928\u0941\u0930\u094b\u0927 \u092a\u0930 \u0915\u093e\u0930\u094d\u092f\u0935\u093e\u0939\u0940 -link.friend.search=\u0915\u0941\u091b \u0915\u0928\u0947\u0915\u094d\u0936\u0902\u0938 \u0915\u0947 \u0932\u093f\u090f \u0916\u094b\u091c? -link.gallery.feed.addnew=\u0928\u090f \u091a\u093f\u0924\u094d\u0930 \u091c\u094b\u0921\u093c\u0947\u0902 -link.gallery.feed.view=\u0938\u092d\u0940 \u0924\u0938\u094d\u0935\u0940\u0930\u0947\u0902 \u0926\u0947\u0916\u0947\u0902 -link.gallery.image.view=\u091a\u093f\u0924\u094d\u0930 \u0926\u0947\u0916\u0947\u0902 -link.messages.back=\u0938\u0902\u0926\u0947\u0936 \u0938\u0942\u091a\u0940 \u092a\u0930 \u0935\u093e\u092a\u0938 \u091c\u093e\u090f\u0901 -link.messages.compose=\u0938\u0902\u0926\u0947\u0936 \u0932\u093f\u0916\u0947\u0902 -link.messages.mymessages=\u092e\u0947\u0930\u0947 \u0938\u0902\u0926\u0947\u0936 -link.messages.viewthread=\u0925\u094d\u0930\u0947\u0921 \u0926\u0947\u0916\u0947\u0902 -link.my.friends=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 -link.my.friends.search=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0947 \u0932\u093f\u090f \u0916\u094b\u091c -link.my.friends.tooltip=\u0905\u092a\u0928\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0902\u0938 \u0926\u0947\u0916\u0947\u0902 \u0914\u0930 \u092a\u094d\u0930\u092c\u0902\u0927\u093f\u0924 \u0915\u0930\u0947\u0902 -link.my.messages=\u0938\u0902\u0926\u0947\u0936 -link.my.messages.tooltip=\u0928\u093f\u091c\u0940 \u0938\u0902\u0926\u0947\u0936 \u092a\u0922\u093c\u0947 \u0914\u0930 \u092d\u0947\u091c\u0947 -link.my.pictures=\u091a\u093f\u0924\u094d\u0930 -link.my.pictures.tooltip=\u091a\u093f\u0924\u094d\u0930 \u091c\u094b\u0921\u093c\u0947\u0902 \u0914\u0930 \u0905\u092a\u0928\u0940 \u0917\u0948\u0932\u0930\u0940 \u0926\u0947\u0916\u0947\u0902 link.my.preferences=\u0935\u0930\u0940\u092f\u0924\u093e\u090f\u0901 link.my.preferences.tooltip=\u0905\u092a\u0928\u0940 \u092a\u094d\u0930\u093e\u0925\u092e\u093f\u0915\u0924\u093e\u090f\u0902 \u092a\u094d\u0930\u092c\u0902\u0927\u093f\u0924 \u0915\u0930\u0947\u0902 -link.my.privacy=\u0917\u094b\u092a\u0928\u0940\u092f\u0924\u093e -link.my.privacy.tooltip=\u0905\u092a\u0928\u0940 \u0917\u094b\u092a\u0928\u0940\u092f\u0924\u093e \u092a\u094d\u0930\u092c\u0902\u0927\u093f\u0924 \u0915\u0930\u0928\u093e link.my.profile=\u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 link.my.profile.tooltip=\u0905\u092a\u0928\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0926\u0947\u0916\u0947\u0902 \u0914\u0930 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0947\u0902 -link.my.search=\u0916\u094b\u091c\u0947\u0902 -link.my.search.tooltip=\u0932\u094b\u0917\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f \u0916\u094b\u091c \u0914\u0930 \u0909\u0928\u0915\u0947 \u092a\u094d\u0930\u094b\u092b\u093e\u0907\u0932 \u0926\u0947\u0916\u0947\u0902 link.profile.locked.false=\u0907\u0938 \u092a\u094d\u0930\u094b\u092b\u093e\u0907\u0932 \u0915\u094b \u0932\u0949\u0915 \u0915\u0930\u0947\u0902? link.profile.locked.true=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092c\u0902\u0926 \u0915\u0930 \u0926\u093f\u092f\u093e\u0964 \u0905\u0928\u0932\u0949\u0915? -link.status.clear=\u0939\u091f\u093e\u090f\u0901 -link.status.update=\u0905\u092a\u0921\u0947\u091f \u0915\u0930\u0947\u0902 -link.tab.profile=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 -link.tab.profile.tooltip=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0926\u0947\u0916\u0947\u0902 -link.tab.wall=\u0926\u0940\u0935\u093e\u0930 -link.tab.wall.tooltip=\u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0932) \u0926\u0947\u0916\u0947\u0902 -link.title.confirmfriend=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902 -link.title.ignorefriend=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u092a\u0930 \u0927\u094d\u092f\u093e\u0928 \u0928 \u0926\u0947\u0902 -link.title.removefriend=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0928\u093f\u0915\u093e\u0932\u0928\u093e link.title.rss=\u0905\u092a\u0928\u0947 \u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u0906\u0930\u090f\u0938\u090f\u0938 \u092b\u093c\u0940\u0921 \u0926\u0947\u0916\u0947\u0902 \u092f\u093e \u0905\u0928\u0941\u0915\u0942\u0932\u093f\u0924 \u0915\u0930\u0947 -link.title.unlinktwitter=\u091f\u094d\u0935\u093f\u091f\u0930 \u0916\u093e\u0924\u093e \u0905\u0928\u0932\u093f\u0902\u0915 \u0915\u0930\u0947\u0902 -link.title.wall.comment={0} \u0915\u0947 \u0935\u0949\u0932 \u092a\u094b\u0938\u094d\u091f \u092a\u0930 \u091f\u093f\u092a\u094d\u092a\u0923\u0940 -link.title.wall.remove=\u0905\u092a\u0928\u0947 \u0935\u093e\u0932 \u0938\u0947 \u0939\u091f\u093e\u090f\u0901 -link.view.friends=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0926\u0947\u0916\u0947\u0902 -link.wall.item.comment=\u091f\u093f\u092a\u094d\u092a\u0923\u0940 -link.wall.item.remove=\u0939\u091f\u093e\u090f\u0901 -link.worksite.create=\u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u092c\u0928\u093e\u090f\u0901 linkedinUrl.UrlValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092f\u0942\u0906\u0930\u090f\u0932 -message.message=\u0938\u0902\u0926\u0947\u0936 -message.reply=\u0909\u0924\u094d\u0924\u0930 \u0926\u0947\u0902 -message.subject=\u0935\u093f\u0937\u092f -message.to=\u0915\u0947 \u092a\u094d\u0930\u0924\u093f - mobilephone.PhoneNumberValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092b\u093c\u094b\u0928 \u0928\u0902\u092c\u0930 -myspaceUrl.UrlValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092f\u0942\u0906\u0930\u090f\u0932 - page.title=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 -palette.available=\u0909\u092a\u0932\u092c\u094d\u0927 -palette.selected=\u091a\u092f\u0928\u093f\u0924 - -pictures.addpicture=\u0917\u0948\u0932\u0930\u0940 \u0915\u0947 \u0932\u093f\u090f \u0928\u090f \u091a\u093f\u0924\u094d\u0930 \u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u091c\u094b\u0921\u093c\u0947\u0902 -pictures.filetypewarning=\u0915\u0947\u0935\u0932 jpeg, png \u0914\u0930 gif \u092b\u093c\u093e\u0907\u0932\u0947\u0902 \u0917\u0948\u0932\u0930\u0940 \u092e\u0947\u0902 \u091c\u094b\u0921\u093c\u0940 \u091c\u093e \u0938\u0915\u0924\u0940 \u0939\u0948 -pictures.removepicture=\u0917\u0948\u0932\u0930\u0940 \u0938\u0947 \u0907\u0938 \u0924\u0938\u094d\u0935\u0940\u0930 \u0915\u094b \u0939\u091f\u093e\u090f\u0901 -pictures.removepicture.confirm=\u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0915\u0930\u0947\u0902 \u0915\u093f \u0906\u092a \u0905\u092a\u0928\u0947 \u0917\u0948\u0932\u0930\u0940 \u0938\u0947 \u0907\u0938 \u091a\u093f\u0924\u094d\u0930 \u0915\u094b \u0939\u091f\u093e\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? -pictures.setprofileimage=\u0907\u0938 \u0924\u0938\u094d\u0935\u0940\u0930 \u0915\u094b \u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0938\u0947\u091f \u0915\u0930\u0947\u0902 -pictures.setprofileimage.confirm=\u0915\u094d\u092f\u093e \u0935\u093e\u0915\u0908 \u0906\u092a \u0907\u0938 \u091b\u0935\u093f \u0915\u0947 \u0938\u093e\u0925 \u0905\u092a\u0928\u0947 \u0935\u0930\u094d\u0924\u092e\u093e\u0928 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u092c\u0926\u0932\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? - preference.option.off=\u092c\u0902\u0926 preference.option.on=\u091a\u093e\u0932\u0942 -preferences.email.confirms=\u092e\u0947\u0930\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f -preferences.email.message=\u092e\u0941\u091d\u0947 {0} \u092a\u0930 \u0908\u092e\u0947\u0932 \u0915\u0930\u0947\u0902, \u091c\u092c \u0915\u093f\u0938\u0940 \u0928\u0947 \: -preferences.email.message.new=\u092e\u0941\u091d\u0947 \u090f\u0915 \u0928\u092f\u093e \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0947 -preferences.email.message.reply=\u092e\u0947\u0930\u0940 \u0938\u0902\u0926\u0947\u0936\u094b\u0902 \u092e\u0947\u0902 \u0938\u0947 \u090f\u0915 \u0915\u093e \u0909\u0924\u094d\u0924\u0930 \u0926\u0947\u0902 -preferences.email.none=(\u0915\u094b\u0908 \u0908\u092e\u0947\u0932 \u092a\u0924\u093e \u0938\u0947\u091f \u0928\u0939\u0940\u0902 \u0939\u0948) -preferences.email.requests=\u092e\u0941\u091d\u0947 \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u091c\u094b\u095c\u0947\u0902 -preferences.email.wall.new=\u092e\u0947\u0930\u0940 \u0935\u093e\u0932 \u092a\u0930 \u092a\u094b\u0938\u094d\u091f \u0915\u0930\u0947\u0902 -preferences.email.worksite.new=\u092e\u0941\u091d\u0947 \u090f\u0915 \u0928\u090f \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u092e\u0947\u0902 \u091c\u094b\u095c\u0947\u0902 preferences.image.gravatar=\ \u092e\u0947\u0930\u0947 \u0917\u094d\u0930\u0947\u0935\u091f\u0930 \u0915\u094b \u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902 -preferences.image.message=\u0906\u092a\u0915\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0938\u0902\u092c\u0902\u0927\u093f\u0924 \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u0915\u0949\u0928\u094d\u092b\u093c\u093f\u0917\u0930 \u0915\u0930\u0947\u0902 preferences.image.official=\u0906\u0927\u093f\u0915\u093e\u0930\u093f\u0915 \u0938\u0902\u0938\u094d\u0925\u093e\u0917\u0924 \u091b\u0935\u093f \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u092e\u0947\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0915\u0930\u0947\u0902 -preferences.twitter.message=\u0906\u092a\u0915\u0947 \u0938\u094d\u0925\u093f\u0924\u093f \u0905\u0926\u094d\u092f\u0924\u0928 \u0906\u092a\u0915\u0947 \u091f\u094d\u0935\u093f\u091f\u0930 \u0916\u093e\u0924\u0947 \u0915\u094b \u092d\u0940 \u0905\u0926\u094d\u092f\u0924\u0928 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 -preferences.widget.gallery=\u092e\u0947\u0930\u0947 \u091a\u093f\u0924\u094d\u0930 \u0926\u093f\u0916\u093e\u090f\u0901 -preferences.widget.gallery.tooltip=\u092f\u0926\u093f \u091a\u0947\u0915 \u0915\u0930 \u0926\u093f\u092f\u093e, \u0924\u094b \u0906\u092a\u0915\u0947 \u091a\u093f\u0924\u094d\u0930 \u0906\u092a\u0915\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092a\u0930 \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0902\u0917\u0947\u0964 -preferences.widget.kudos=\u092e\u0947\u0930\u093e \u092f\u0936 \u0926\u0930\u094d\u091c\u093c\u093e \u0926\u093f\u0916\u093e\u090f\u0901 -preferences.widget.kudos.tooltip=\u090f\u0915 \u092c\u093e\u0930 \u0906\u092a\u0915\u0947 \u0938\u094d\u0915\u094b\u0930 \u0915\u0940 \u0917\u0923\u0928\u093e \u0915\u0930 \u0932\u0940 \u0917\u0908, \u0906\u092a\u0915\u0947 \u092f\u0936 \u0930\u0947\u091f\u093f\u0902\u0917 \u0906\u092a\u0915\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092a\u0930 \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0902\u0917\u0947 -preferences.widget.message=\u0928\u093f\u092f\u0902\u0924\u094d\u0930\u0923 \u0915\u0930\u0947\u0902, \u091c\u094b \u0935\u093f\u0917\u0947\u091f\u094d\u0938 \u0906\u092a\u0915\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092a\u0930 \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0902 -preferences.widget.onlinestatus=\u092e\u0947\u0930\u0940 \u0911\u0928\u0932\u093e\u0907\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u093f\u0916\u093e\u090f\u0901 -preferences.widget.onlinestatus.tooltip=\u0906\u092a \u0911\u0928\u0932\u093e\u0907\u0928 \u0939\u0948\u0902 \u092f\u093e \u0928\u0939\u0940\u0902, \u0926\u0930\u094d\u0936\u093e\u0924\u093e \u0939\u0948\u0964 \u092f\u0926\u093f \u0938\u0915\u094d\u0937\u092e \u0939\u0948, \u0924\u094b \u0906\u092a \u0906\u0917\u0947 \u0907\u0938 \u092e\u0947\u0902 \u0905\u092a\u0928\u0940 \u0917\u094b\u092a\u0928\u0940\u092f\u0924\u093e \u0938\u0947\u091f\u093f\u0902\u0917 \u0928\u093f\u092f\u0902\u0924\u094d\u0930\u093f\u0924 \u0915\u0930 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 \u092f\u0926\u093f \u0905\u0915\u094d\u0937\u092e \u0939\u0948, \u0906\u092a \u0911\u092b\u093c\u0932\u093e\u0907\u0928 \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0902\u0917\u0947 - -privacy.academicinfo=\u0936\u0948\u0915\u094d\u0937\u093f\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -privacy.basicinfo=\u092c\u0941\u0928\u093f\u092f\u093e\u0926\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -privacy.birthyear=\u091c\u0928\u094d\u092e \u0935\u0930\u094d\u0937 \u0926\u093f\u0916\u093e\u090f\u0901 -privacy.businessinfo=\u0935\u094d\u092f\u093e\u092a\u093e\u0930 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -privacy.contactinfo=\u0938\u0902\u092a\u0930\u094d\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -privacy.messages=\u0915\u094c\u0928 \u092e\u0941\u091d\u0947 \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c \u0938\u0915\u0924\u0947 \u0939\u0948\u0902? -privacy.myfriends=\u0915\u094c\u0928 \u092e\u0947\u0930\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902? -privacy.mykudos=\u0915\u094c\u0928 \u092e\u0947\u0930\u0947 \u092f\u0936 \u0930\u0947\u091f\u093f\u0902\u0917 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902? -privacy.mypictures=\u0915\u094c\u0928 \u092e\u0947\u0930\u0947 \u091a\u093f\u0924\u094d\u0930\u094b\u0902 \u0915\u094b \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902? -privacy.mystatus=\u0915\u094c\u0928 \u092e\u0947\u0930\u0940 \u0938\u094d\u0925\u093f\u0924\u093f \u0905\u0926\u094d\u092f\u0924\u0928 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902? -privacy.mywall=\u0915\u094c\u0928 \u092e\u0947\u0930\u0940 \u0926\u0940\u0935\u093e\u0930 \u0914\u0930 \u0905\u0928\u094d\u092f \u0926\u0940\u0935\u093e\u0930\u094b\u0902 \u0915\u094c\u0928 \u092e\u0947\u0930\u0940 \u092a\u094b\u0938\u094d\u091f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902? -privacy.onlinestatus=\u0915\u094c\u0928 \u092e\u0947\u0930\u0940 \u0911\u0928\u0932\u093e\u0907\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902? -privacy.option.everyone=\u0939\u0930 \u0915\u094b\u0908 -privacy.option.nobody=\u0915\u094b\u0908 \u092d\u0940 \u0928\u0939\u0940\u0902 -privacy.option.onlyfriends=\u0915\u0947\u0935\u0932 \u092e\u0947\u0930\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 -privacy.option.onlyme=\u0915\u0947\u0935\u0932 \u092e\u0941\u091d\u0947 -privacy.personalinfo=\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -privacy.profileimage=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f -privacy.search=\u0916\u094b\u091c\u0947\u0902 -privacy.socialinfo=\u0938\u093e\u092e\u093e\u091c\u093f\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -privacy.staffinfo=\u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -privacy.studentinfo=\u091b\u093e\u0924\u094d\u0930 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -profile.academicprofileurl=\u0936\u0948\u0915\u094d\u0937\u0923\u093f\u0915/\u0905\u0928\u0941\u0938\u0902\u0927\u093e\u0928 \u092f\u0942\u0906\u0930\u090f\u0932 -profile.birthday=\u091c\u0928\u094d\u200d\u092e\u0926\u093f\u0928 -profile.business.bio=\u0935\u094d\u092f\u093e\u092a\u093e\u0930 \u091c\u0940\u0935\u0928\u0940 -profile.business.company.description=\u0915\u0902\u092a\u0928\u0940 \u0935\u093f\u0935\u0930\u0923 -profile.business.company.name=\u0915\u0902\u092a\u0928\u0940 \u0915\u093e \u0928\u093e\u092e -profile.business.company.profile=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 -profile.business.company.profiles=\u0915\u0902\u092a\u0928\u0940 \u092a\u094d\u0930\u094b\u092b\u093e\u0907\u0932 -profile.business.company.web=\u0915\u0902\u092a\u0928\u0940 \u0935\u0947\u092c \u092a\u0924\u0947 -profile.business.update=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u0905\u0926\u094d\u092f\u0924\u0928 \u0915\u0940 \u0917\u0908 \u0935\u094d\u092f\u093e\u092a\u093e\u0930 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 profile.contact.update=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u0905\u0926\u094d\u092f\u0924\u0928 \u0915\u0940 \u0917\u0908 \u0938\u0902\u092a\u0930\u094d\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -profile.course=\u0921\u093f\u0917\u094d\u0930\u0940/\u092a\u093e\u0920\u094d\u092f\u0915\u094d\u0930\u092e -profile.department=\u0935\u093f\u092d\u093e\u0917 profile.email=\u0908\u092e\u0947\u0932 -profile.favourite.books=\u092a\u0938\u0902\u0926\u0940\u0926\u093e \u092a\u0941\u0938\u094d\u0924\u0915\u0947\u0902 -profile.favourite.movies=\u092a\u0938\u0902\u0926\u0940\u0926\u093e \u092b\u093f\u0932\u094d\u092e\u0947\u0902 -profile.favourite.quotes=\u092a\u0938\u0902\u0926\u0940\u0926\u093e \u0909\u0926\u094d\u0927\u0930\u0923 -profile.favourite.tv=\u092a\u0938\u0902\u0926\u0940\u0926\u093e \u091f\u0940\u0935\u0940 \u0936\u094b -profile.gallery.image.upload=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0924\u0938\u094d\u0935\u0940\u0930 \u0917\u0948\u0932\u0930\u0940 \u092e\u0947\u0902 \u0905\u092a\u0932\u094b\u0921 \u0915\u0940 -profile.homepage=\u092e\u0941\u0916 \u092a\u0943\u0937\u094d\u0920 profile.image.change.upload=\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f profile.image.change.url=\u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091b\u0935\u093f profile.info.update=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u0905\u0926\u094d\u092f\u0924\u0928 \u092c\u0941\u0928\u093f\u092f\u093e\u0926\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -profile.interests.update=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u0905\u0926\u094d\u092f\u0924\u0928 \u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -profile.name.first=\u092a\u094d\u0930\u0925\u092e \u0928\u093e\u092e -profile.name.first.none=\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e -profile.name.last=\u0905\u0902\u0924\u093f\u092e \u0928\u093e\u092e -profile.name.middle=\u092e\u0927\u094d\u092f \u0928\u093e\u092e profile.nickname=\u0909\u092a\u0928\u093e\u092e -profile.phone.facsimile=\u092a\u094d\u0930\u0924\u093f\u0915\u0943\u0924\u093f -profile.phone.home=\u0918\u0930 \u0915\u093e \u092b\u094b\u0928 profile.phone.mobile=\u092e\u094b\u092c\u093e\u0907\u0932 \u092b\u094b\u0928 -profile.phone.work=\u0915\u093e\u0930\u094d\u092f\u093e\u0932\u092f \u0915\u093e \u092b\u093c\u094b\u0928 -profile.position=\u0938\u094d\u0925\u093f\u0924\u093f -profile.publications=\u092a\u094d\u0930\u0915\u093e\u0936\u0928\u094b\u0902 \u0914\u0930 \u0938\u092e\u094d\u092e\u0947\u0932\u0928\u094b\u0902 -profile.room=\u0915\u092e\u0930\u093e -profile.school=\u0938\u094d\u0915\u0942\u0932 profile.socialnetworking.facebook=\u092b\u0947\u0938\u092c\u0941\u0915 profile.socialnetworking.facebook.edit=\u092b\u0947\u0938\u092c\u0941\u0915 \u092f\u0942\u0906\u0930\u090f\u0932 profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn \u092f\u0942\u0906\u0930\u090f\u0932 -profile.socialnetworking.myspace=\u092e\u093e\u0907\u0938\u094d\u092a\u0947\u0938(MySpace) -profile.socialnetworking.myspace.edit=\u092e\u093e\u0907\u0938\u094d\u092a\u0947\u0938(MySpace) \u092f\u0942\u0906\u0930\u090f\u0932 -profile.socialnetworking.skype=\u0938\u094d\u0915\u093e\u0907\u092a\u0947(Skype) -profile.socialnetworking.skype.edit=\u0938\u094d\u0915\u093e\u0907\u092a(Skype) \u092a\u094d\u0930\u092f\u094b\u0915\u094d\u0924\u093e \u0928\u093e\u092e -profile.socialnetworking.skype.link=\u092e\u0941\u091d\u0947 \u0938\u094d\u0915\u093e\u0907\u092a\u0947(Skype) \u0915\u0930\u0947\u0902 -profile.socialnetworking.twitter=\u091f\u094d\u0935\u093f\u091f\u0930(Twitter) -profile.socialnetworking.twitter.edit=\u091f\u094d\u0935\u093f\u091f\u0930(Twitter) \u092f\u0942\u0906\u0930\u090f\u0932 profile.socialnetworking.update=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u0905\u0926\u094d\u092f\u0924\u0928 \u0938\u093e\u092e\u093e\u091c\u093f\u0915 \u0928\u0947\u091f\u0935\u0930\u094d\u0915\u093f\u0902\u0917 \u0935\u093f\u0935\u0930\u0923 -profile.staff.update=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u0905\u0926\u094d\u092f\u0924\u0928 \u0915\u0940 \u0917\u0908 \u0938\u094d\u091f\u093e\u092b \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -profile.staffprofile=\u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u092a\u094d\u0930\u094b\u092b\u093e\u0908\u0932 -profile.student.update=\u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092e\u0947\u0902 \u0905\u0926\u094d\u092f\u0924\u0928 \u0915\u0940 \u0917\u0908 \u091b\u093e\u0924\u094d\u0930 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 -profile.subjects=\u0935\u093f\u0937\u092f\u094b\u0902 profile.summary=\u0935\u094d\u092f\u0915\u094d\u0924\u093f\u0917\u0924 \u0938\u093e\u0930\u093e\u0902\u0936 -profile.universityprofileurl=\u092f\u0942\u0928\u093f\u0935\u0930\u094d\u0938\u093f\u091f\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u092f\u0942\u0906\u0930\u090f\u0932 -success.message.send.ok=\u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c\u0947 \u0917\u090f success.preferences.save.ok=\u0938\u092b\u0932\u0924\u093e\u092a\u0942\u0930\u094d\u0935\u0915 \u0938\u0939\u0947\u091c\u093e \u0917\u092f\u093e -success.privacy.save.ok=\u0938\u092b\u0932\u0924\u093e\u092a\u0942\u0930\u094d\u0935\u0915 \u0938\u0939\u0947\u091c\u093e \u0917\u092f\u093e text.edit.other.warning=\u0938\u093e\u0935\u0927\u093e\u0928\u0940\: \u0906\u092a {0} \u0915\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902\u0964 -text.friend.add={0} \u0915\u094b \u0906\u092a\u0915\u0947 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0928\u0940 \u0939\u094b\u0917\u0940\u0964 -text.friend.already=\u0906\u092a {0} \u0938\u0947 \u092a\u0939\u0932\u0947 \u0938\u0947 \u0939\u0940 \u0915\u0928\u0947\u0915\u094d\u091f\u0947\u0921 \u0939\u0948\u0902\u0964 -text.friend.already.pending=\u0935\u0939\u093e\u0901 \u092a\u0939\u0932\u0947 \u0938\u0947 \u0939\u0940 \u0906\u092a\u0915\u0947 \u0914\u0930 {0} \u0915\u0947 \u092c\u0940\u091a \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0932\u0902\u092c\u093f\u0924 \u0939\u0948\u0964 -text.friend.cancel=\u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0915\u0930\u0947\u0902 \u0915\u093f \u0915\u094d\u092f\u093e \u0906\u092a \u0905\u092a\u0928\u0947 \u0932\u0902\u092c\u093f\u0924 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 {0} \u0915\u094b \u0930\u0926\u094d\u0926 \u0915\u0930\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? \u0909\u0928\u094d\u0939\u0947\u0902 \u0938\u0942\u091a\u093f\u0924 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 -text.friend.confirm=\u0907\u0938 {0} \u0915\u094b \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0917\u093e\u0964 -text.friend.confirmed=\u0906\u092a \u0915\u0928\u0947\u0915\u094d\u091f\u0947\u0921 \u0939\u0948\u0902 -text.friend.feed.num.many={0} \u0915\u0928\u0947\u0915\u094d\u0936\u0928 -text.friend.feed.num.none=0 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 -text.friend.feed.num.one=1 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 -text.friend.ignore=\u0915\u094d\u092f\u093e \u0906\u092a \u0935\u093e\u0915\u0908 {0} \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u094b \u0905\u0928\u0926\u0947\u0916\u093e \u0915\u0930\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? \u0935\u0947 \u0938\u0942\u091a\u093f\u0924 \u0928\u0939\u0940\u0902 \u0939\u094b\u0917\u093e\u0964 -text.friend.none=\u0906\u092a {0} \u0938\u0947 \u0915\u0928\u0947\u0915\u094d\u091f \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 -text.friend.pending=\u0932\u0902\u092c\u093f\u0924 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 -text.friend.remove=\u0906\u092a \u0938\u0941\u0928\u093f\u0936\u094d\u091a\u093f\u0924 \u0915\u0930\u0947\u0902 \u0915\u093f \u0906\u092a {0} \u0915\u094b \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0939\u091f\u093e\u0928\u093e \u091a\u093e\u0939\u0924\u0947 \u0939\u0948\u0902? \u0935\u0947 \u0938\u0942\u091a\u093f\u0924 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e\u090f\u0917\u093e\u0964 -text.friend.requested=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u093f\u092f\u093e -text.friend.self=\u092f\u0939 \u0906\u092a \u0939\u0948\! -text.gallery.feed.num.none=0 \u091a\u093f\u0924\u094d\u0930\u094b\u0902 -text.gallery.pictures.num.none=\u0906\u092a\u0915\u0940 \u0917\u0948\u0932\u0930\u0940 \u0905\u092d\u0940 \u0924\u0915 \u0915\u093f\u0938\u0940 \u092d\u0940 \u091a\u093f\u0924\u094d\u0930 \u0915\u094b \u0936\u093e\u092e\u093f\u0932 \u0928\u0939\u0940\u0902 \u0915\u0930\u0924\u0940 \u0939\u0948\u0964 -text.gallery.upload.tooltip=\u0917\u0948\u0932\u0930\u0940 \u091b\u0935\u093f\u092f\u094b\u0902 \u0915\u094b \u0905\u092a\u0928\u0947 \u0915\u0902\u092a\u094d\u092f\u0942\u091f\u0930 \u0938\u0947 \u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0947\u0902\u0964 \u091b\u0935\u093f\u092f\u094b\u0902 \u0915\u094b \u0905\u092a\u0932\u094b\u0921 \u0915\u0930\u0928\u0947 \u0915\u093e \u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0906\u0915\u093e\u0930 {0} MB \u0938\u0947 \u0905\u0927\u093f\u0915 \u0928\u0939\u0940\u0902 \u0939\u094b\u0928\u093e \u091a\u093e\u0939\u093f\u090f\u0964 text.image.url=\u0906\u092a\u0915\u0947 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091a\u093f\u0924\u094d\u0930 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u091b\u0935\u093f \u0915\u093e \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -text.messages.none=\u0915\u094b\u0908 \u0938\u0902\u0926\u0947\u0936 \u0928\u0939\u0940\u0902 text.no.fields=\u0906\u092a\u0928\u0947 \u0905\u092d\u0940 \u0924\u0915 \u0915\u094b\u0908 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0928\u0939\u0940\u0902 \u092d\u0930\u0940 \u0939\u0948 text.no.status=\u0915\u0941\u091b \u0924\u094b \u092c\u094b\u0932\u094b -text.privacy.academicinfo.tooltip=\u091a\u092f\u0928 \u0915\u0930\u0947\u0902, \u0906\u092a\u0915\u0940 \u0905\u0915\u093e\u0926\u092e\u093f\u0915 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u091c\u0948\u0938\u0947 \u0938\u094d\u0915\u0942\u0932, \u0935\u093f\u092d\u093e\u0917 \u092f\u093e \u092a\u093e\u0920\u094d\u092f\u0915\u094d\u0930\u092e \u0915\u094c\u0928 \u0926\u0947\u0916 \u0938\u0915\u0924\u093e \u0939\u0948\u0964 -text.privacy.basicinfo.tooltip=\u091a\u0941\u0928\u0947\u0902, \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u092c\u0941\u0928\u093f\u092f\u093e\u0926\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u091c\u0948\u0938\u0947 \u092a\u094d\u0930\u091a\u0932\u093f\u0924 \u0928\u093e\u092e \u0914\u0930 \u091c\u0928\u094d\u092e\u0926\u093f\u0928 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.birthyear.tooltip=\u0905\u092a\u0928\u0947 \u091c\u0928\u094d\u092e \u0935\u0930\u094d\u0937 \u0915\u094b \u091b\u0941\u092a\u093e\u0928\u0947 \u092f\u093e \u0926\u093f\u0916\u093e\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u091a\u0941\u0928\u0947\u0902\u0964 \u091a\u093f\u0939\u094d\u0928\u093f\u0924 \u0915\u093e \u092e\u0924\u0932\u092c \u0926\u0943\u0936\u094d\u092f\u0924\u093e \u0939\u0948\u0964 -text.privacy.businessinfo.tooltip=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u0935\u094d\u092f\u0935\u0938\u093e\u092f \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u091c\u0948\u0938\u0947 \u0909\u0926\u094d\u092f\u094b\u0917, \u0914\u0930 \u0935\u094d\u092f\u093e\u092a\u093e\u0930 \u091c\u0948\u0935 \u0915\u0940 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.cannot.modify=\u092f\u0947 \u092e\u093e\u0928 \u0906\u092a\u0915\u0947 \u0935\u094d\u092f\u0935\u0938\u094d\u0925\u093e\u092a\u0915 \u0926\u094d\u0935\u093e\u0930\u093e \u0905\u0935\u0930\u094b\u0927\u093f\u0924 \u0939\u0948\u0902 \u0914\u0930 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924 \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u091c\u093e \u0938\u0915\u0924\u093e\u0964 -text.privacy.contactinfo.tooltip=\u091a\u0941\u0928\u0947\u0902, \u091c\u094b \u0906\u092a\u0915\u0947 \u0908\u092e\u0947\u0932 \u092a\u0924\u0947 \u0914\u0930 \u092b\u094b\u0928 \u0928\u0902\u092c\u0930 \u091c\u0948\u0938\u0940 \u091a\u0940\u091c\u094b\u0902 \u0915\u094b \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.messages.tooltip=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u094b \u0938\u0902\u0926\u0947\u0936 \u092d\u0947\u091c \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.myfriends.tooltip=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0940 \u0938\u0942\u091a\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.mykudos.tooltip=\u091a\u0941\u0928\u0947\u0902 \u091c\u094b \u0906\u092a\u0915\u0947 \u092f\u0936 \u0930\u0947\u091f\u093f\u0902\u0917(\u0905\u0917\u0930 \u0935\u0930\u0940\u092f\u0924\u093e\u090f\u0901 \u092e\u0947\u0902 \u0938\u0915\u094d\u0937\u092e \u0939\u0948) \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.mypictures.tooltip=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0924\u0938\u094d\u0935\u0940\u0930 \u0917\u0948\u0932\u0930\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.mystatus.tooltip=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0905\u0926\u094d\u092f\u0924\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.mywall.tooltip=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0926\u0940\u0935\u093e\u0930(\u0935\u0949\u0932) \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.onlinestatus.tooltip=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0911\u0928\u0932\u093e\u0907\u0928 \u0938\u094d\u0925\u093f\u0924\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 \u0906\u092a \u0905\u0928\u094d\u092f \u0938\u092d\u0940 \u0915\u094b \u0911\u092b\u093c\u0932\u093e\u0907\u0928 \u0926\u093f\u0916\u093e\u0908 \u0926\u0947\u0902\u0917\u0947\u0964 -text.privacy.personalinfo.tooltip=\u0915\u094c\u0928 \u0906\u092a\u0915\u0947 \u092a\u0938\u0902\u0926\u0940\u0926\u093e \u0915\u093f\u0924\u093e\u092c\u094b\u0902 \u0914\u0930 \u091f\u0940\u0935\u0940 \u0936\u094b \u0906\u0926\u093f \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902\u0964 -text.privacy.profileimage.tooltip=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091a\u093f\u0924\u094d\u0930 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.socialinfo.tooltip=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0938\u093e\u092e\u093e\u091c\u093f\u0915 \u0928\u0947\u091f\u0935\u0930\u094d\u0915\u093f\u0902\u0917 \u091c\u093e\u0928\u0915\u093e\u0930\u0940, \u091c\u0948\u0938\u0947 \u0906\u092a\u0915\u093e \u092b\u0947\u0938\u092c\u0941\u0915, \u0932\u093f\u0902\u0915\u094d\u0921\u0907\u0928 \u0914\u0930 \u092e\u093e\u0907\u0938\u094d\u092a\u0947\u0938 \u092a\u094d\u0930\u094b\u092b\u093e\u0907\u0932 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 -text.privacy.staff.tooltip=\u091a\u0941\u0928\u0947\u0902, \u0915\u094c\u0928 \u0905\u092a\u0928\u0947 \u0915\u0930\u094d\u092e\u091a\u093e\u0930\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 -text.privacy.student.tooltip=\u091a\u0941\u0928\u0947\u0902 \u0915\u094c\u0928 \u0906\u092a\u0915\u0940 \u0935\u093f\u0926\u094d\u092f\u093e\u0930\u094d\u0925\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 -text.profile.birthyear.tooltip=\u0906\u092a \u0905\u092a\u0928\u0940 \u0917\u094b\u092a\u0928\u0940\u092f\u0924\u093e \u0938\u0947\u091f\u093f\u0902\u0917\u094d\u0938 \u092e\u0947\u0902 \u0905\u092a\u0928\u0947 \u091c\u0928\u094d\u092e \u0935\u0930\u094d\u0937 \u091b\u093f\u092a\u093e\u0928\u0947 / \u0926\u093f\u0916\u093e\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u091a\u0941\u0928 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902 text.profile.facebook.tooltip=\u0909\u0926\u093e\u0939\u0930\u0923 \u0915\u0947 \u0932\u093f\u090f http\://www.facebook.com/user text.profile.linkedin.tooltip=\u0909\u0926\u093e\u0939\u0930\u0923 \u0915\u0947 \u0932\u093f\u090f http\://www.linkedin.com/pub/user text.profile.locked.false=\u090f\u0915 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0932\u0949\u0915\u093f\u0902\u0917 \u0915\u093e \u0905\u0930\u094d\u0925 \u0939\u0948 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0909\u0928\u0915\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0928\u0939\u0940\u0902 \u0915\u0930 \u0938\u0915\u0924\u0947\u0964 text.profile.locked.true=\u090f\u0915 \u092a\u094d\u0930\u094b\u092b\u093e\u0907\u0932 \u0905\u0928\u0932\u0949\u0915\u093f\u0902\u0917 \u0938\u0947 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0909\u0928\u0915\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0915\u094b \u0938\u0902\u092a\u093e\u0926\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0940 \u0905\u0928\u0941\u092e\u0924\u093f \u0926\u0947\u0917\u093e -text.profile.myspace.tooltip=\u0909\u0926\u093e\u0939\u0930\u0923 \u0915\u0947 \u0932\u093f\u090f http\://myspace.com/user -text.profile.presence.away={0} \u0926\u0942\u0930 \u0939\u0948 -text.profile.presence.offline={0} \u0909\u092a\u0932\u092c\u094d\u0927 \u0928\u0939\u0940\u0902 \u0939\u0948 -text.profile.presence.online={0} \u0911\u0928\u0932\u093e\u0907\u0928 \u0939\u0948 -text.profile.twitter.tooltip=\u0909\u0926\u093e\u0939\u0930\u0923 \u0915\u0947 \u0932\u093f\u090f http\://twitter.com/sakaiproject -text.search.byinterest.all.results={1}\: \u0915\u0947 \u0932\u093f\u090f {0} \u092a\u0930\u093f\u0923\u093e\u092e \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u0915\u0930\u0924\u093e \u0939\u0948 -text.search.byinterest.label=\u0938\u093e\u092e\u093e\u0928\u094d\u092f \u0939\u093f\u0924 -text.search.byinterest.no.results=\u0906\u092e \u0939\u093f\u0924\u094b\u0902 \u0915\u0947 \u0938\u093e\u0925 \u0915\u094b\u0908 \u0935\u094d\u092f\u0915\u094d\u0924\u093f {0} \u0938\u0947 \u092e\u0947\u0932 \u0928\u0939\u0940\u0902 \u0916\u093e\u0924\u0947 \u0939\u0948\u0902\u0964 -text.search.byinterest.one.result=\ 1 \u092a\u0930\u093f\u0923\u093e\u092e\: {0}\u0915\u0947 \u0932\u093f\u090f \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 -text.search.byinterest.paged.results=\ {0} \u092a\u0930\u093f\u0923\u093e\u092e \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u0915\u0930 \u0930\u0939\u093e \u0939\u0948 (\u092a\u094d\u0930\u0924\u093f \u092a\u0943\u0937\u094d\u0920 {1} \u092a\u0930\u093f\u0923\u093e\u092e \u0924\u0915) \: {2}\u0915\u0947 \u0932\u093f\u090f -text.search.byinterest.tooltip=\u0938\u092e\u093e\u0928 \u0930\u0941\u091a\u093f\u092f\u094b\u0902 \u0935\u093e\u0932\u0947 \u0932\u094b\u0917\u094b\u0902 \u0915\u094b \u0916\u094b\u091c\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u090f\u0915 \u0930\u0941\u091a\u093f, \u091c\u0948\u0938\u0947 ''\u0938\u093e\u0907\u0915\u093f\u0932 \u091a\u093e\u0932\u0928'' \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -text.search.byname.all.results=\u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 {0} \u092a\u0930\u093f\u0923\u093e\u092e\: {1}\u0915\u0947 \u0932\u093f\u090f -text.search.byname.label=\u0935\u094d\u092f\u0915\u094d\u0924\u093f \u0915\u093e \u0928\u093e\u092e \u092f\u093e \u0908\u092e\u0947\u0932 -text.search.byname.no.results=\u0935\u0939\u093e\u0901 \u0915\u094b\u0908 \u092a\u0930\u093f\u0923\u093e\u092e {0} \u0938\u0947 \u092e\u0947\u0932 \u0928\u0939\u0940\u0902 \u0916\u093e\u0924\u0947 \u0939\u0948\u0902\u0964 -text.search.byname.one.result=\u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f 1 \u092a\u0930\u093f\u0923\u093e\u092e\: {0} -text.search.byname.paged.results=\ {0} \u092a\u0930\u093f\u0923\u093e\u092e \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u0915\u0930 \u0930\u0939\u093e \u0939\u0948 (\u092a\u094d\u0930\u0924\u093f \u092a\u0943\u0937\u094d\u0920 {1} \u092a\u0930\u093f\u0923\u093e\u092e \u0924\u0915) \: {2}\u0915\u0947 \u0932\u093f\u090f -text.search.byname.tooltip=\u0932\u094b\u0917\u094b\u0902 \u0915\u094b \u0916\u094b\u091c\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0915\u094b\u0908 \u0928\u093e\u092e \u092f\u093e \u0908-\u092e\u0947\u0932 \u092a\u0924\u093e \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 -text.search.history=\u092a\u093f\u091b\u0932\u0940 \u0916\u094b\u091c\u0947\u0902 -text.search.include.connections=\u0916\u094b\u091c \u092a\u0930\u093f\u0923\u093e\u092e\u094b\u0902 \u092e\u0947\u0902 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0936\u093e\u092e\u093f\u0932 \u0915\u0930\u0947\u0902 -text.search.include.worksite=\u091a\u092f\u0928\u093f\u0924 \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0915\u0947 \u0932\u093f\u090f \u0916\u094b\u091c \u0915\u094b \u0938\u0940\u092e\u093f\u0924 \u0915\u0930\u0947\u0902 -text.search.no.input=\u0906\u092a\u0928\u0947 \u0915\u0941\u091b \u092d\u0940 \u0926\u0930\u094d\u091c \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u0925\u093e -text.search.no.results=\u0935\u0939\u093e\u0901 {0} \u0915\u0947 \u0932\u093f\u090f \u0915\u094b\u0908 \u092a\u0930\u093f\u0923\u093e\u092e \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 -text.search.no.worksite=\u0906\u092a \u0915\u093f\u0938\u0940 \u092d\u0940 \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0915\u0947 \u0938\u0926\u0938\u094d\u092f \u0905\u092d\u0940 \u0924\u0915 \u0928\u0939\u0940\u0902 \u0939\u0948\u0902 -text.search.paged.results=\ {2} \u092a\u0930\u093f\u0923\u093e\u092e \u0938\u0947 {0} - {1} \u092c\u093e\u0939\u0930 \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f\: {3} -text.search.terms.label=\u0936\u092c\u094d\u0926 \u0916\u094b\u091c\u0947\u0902 -text.search.terms.tooltip=\u0916\u094b\u091c \u0936\u092c\u094d\u0926 \u0926\u0930\u094d\u091c \u0915\u0930\u0947\u0902 \u0915\u093f \u0915\u094d\u092f\u093e \u0928\u093e\u092e / \u0908\u092e\u0947\u0932 \u092f\u093e \u0930\u0941\u091a\u093f \u0926\u094d\u0935\u093e\u0930\u093e \u0916\u094b\u091c\u0947\u0902 -text.search.toomany.results={0} \u0915\u0947 \u0932\u093f\u090f \u0906\u092a\u0915\u0940 \u0916\u094b\u091c {1} \u0935\u093e\u092a\u093f\u0938 \u0915\u0930\u0924\u0940 \u0939\u0948 \u092f\u093e \u0905\u0927\u093f\u0915 \u092a\u0930\u093f\u0923\u093e\u092e\u0964 \u0915\u0947\u0935\u0932 \u092a\u0939\u0932\u093e {1} \u092a\u094d\u0930\u0926\u093e\u0928 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u0948\u0964 text.upload.image.file=\u0905\u092a\u0928\u0947 \u0915\u0902\u092a\u094d\u092f\u0942\u091f\u0930 \u092a\u0930 (\u0905\u0927\u093f\u0915\u0924\u092e {0} MB) \u0915\u094b\u0908 \u091b\u0935\u093f \u092b\u093c\u093e\u0907\u0932 \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902\: text.view.profile.nothing=\u0907\u0938 \u0935\u094d\u092f\u0915\u094d\u0924\u093f \u0915\u094b \u0909\u0928\u0915\u0940 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0926\u0947\u0916\u0928\u0947 \u0938\u0947 \u0930\u094b\u0915 \u0926\u093f\u092f\u093e \u0939\u0948 \u092f\u093e \u0915\u094b\u0908 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u091c\u093e\u0928\u0915\u093e\u0930\u0940 \u0938\u093e\u091d\u093e \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0928\u0939\u0940\u0902 \u0939\u0948\u0964 -text.view.wall.nothing={0} \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0945\u0932) \u092a\u0930 \u0935\u0930\u094d\u0924\u092e\u093e\u0928 \u092e\u0947\u0902 \u0915\u094b\u0908 \u0906\u0907\u091f\u092e \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 \u0915\u0941\u091b \u092a\u094b\u0938\u094d\u091f \u0915\u0930\u0928\u0947 \u0935\u093e\u0932\u0947 \u092a\u0939\u0932\u0947 \u0935\u094d\u092f\u0915\u094d\u0924\u093f \u092c\u0928\u0947\u0902\! -text.view.wall.restricted=\u0915\u0947\u0935\u0932 {0} \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0907\u0938 \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0945\u0932) \u0915\u094b \u0926\u0947\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948\u0902\u0964 {0} \u0915\u094b \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u091c\u094b\u0921\u093c\u0947\u0902 \u0907\u0938 \u0926\u0940\u0935\u093e\u0930 (\u0935\u093e\u0945\u0932) \u092a\u0930 \u0926\u0947\u0916\u0928\u0947 \u0914\u0930 \u092a\u094b\u0938\u094d\u091f \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f\u0964 -text.wall.no.items=\u0935\u0939\u093e\u0901 \u0935\u0930\u094d\u0924\u092e\u093e\u0928 \u092e\u0947\u0902 \u0906\u092a\u0915\u0940 \u0926\u0940\u0935\u093e\u0930 (\u0935\u093e\u0945\u0932) \u092a\u0930 \u092a\u094d\u0930\u0926\u0930\u094d\u0936\u093f\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0915\u094b\u0908 \u0906\u0907\u091f\u092e \u0928\u0939\u0940\u0902 \u0939\u0948\u0902\u0964 -text.wall.remove.mine=\u0905\u092a\u0928\u0940 \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0945\u0932) \u0938\u0947 \u092a\u094b\u0938\u094d\u091f \u0939\u091f\u093e\u090f\u0901? -text.wall.remove.other=\ \u0905\u092a\u0928\u0940 {0} \u0938\u0947 \u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0945\u0932) \u0938\u0947 \u092a\u094b\u0938\u094d\u091f \u0939\u091f\u093e\u090f\u0901? -text.worksite.create=\u0909\u092a\u0932\u092c\u094d\u0927 \u0932\u094b\u0917\u094b\u0902 \u092e\u0947\u0902 \u0938\u0947 \u090f\u0915 \u0915\u093e \u091a\u092f\u0928 \u0915\u0930\u0947\u0902 \u0914\u0930 \u090f\u0915 \u0928\u092f\u093e \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u092c\u0928\u093e\u090f\u0901\u0964 -text.worksite.refresh=\u092c\u0928\u093e\u0928\u0947 \u0915\u0947 \u092c\u093e\u0926 \u0928\u090f \u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0915\u0940 \u092a\u0939\u0941\u0901\u091a \u092a\u094d\u0930\u093e\u092a\u094d\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u092c\u094d\u0930\u093e\u0909\u091c\u093c\u0930 \u0915\u094b \u0924\u093e\u091c\u093c\u093e \u0915\u0930\u0947\u0902 title.change.profile.picture=\u0905\u092a\u0928\u0940 \u092a\u094d\u0930\u094b\u092b\u093c\u093e\u0907\u0932 \u0924\u0938\u094d\u0935\u0940\u0930 \u092a\u0930\u093f\u0935\u0930\u094d\u0924\u093f\u0924 \u0915\u0930\u0947\u0902 -title.friend.add={0} \u0915\u0947 \u0930\u0942\u092a \u092e\u0947\u0902 \u090f\u0915 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u091c\u094b\u0921\u093c\u0947\u0902? -title.friend.cancel=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0930\u0926\u094d\u0926 \u0915\u0930\u0947\u0902? -title.friend.confirm={0} \u0915\u0947 \u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u0915\u0940 \u092a\u0941\u0937\u094d\u091f\u093f \u0915\u0930\u0947\u0902? -title.friend.ignore=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0905\u0928\u0941\u0930\u094b\u0927 \u092a\u0930 \u0927\u094d\u092f\u093e\u0928 \u0928 \u0926\u0947\u0902 -title.friend.remove=\u0915\u0928\u0947\u0915\u094d\u0936\u0928 \u0939\u091f\u093e\u092f\u0947\u0902? -title.message.compose=\u0928\u092f\u093e \u0938\u0902\u0926\u0947\u0936 \u0932\u093f\u0916\u0947\u0902 -title.wall.comment={0} \u0935\u0949\u0932 \u092a\u094b\u0938\u094d\u091f \u092a\u0930 \u091f\u093f\u092a\u094d\u092a\u0923\u0940 \u0915\u0930\u0947\u0902 -title.wall.remove=\u0926\u0940\u0935\u093e\u0930(\u0935\u093e\u0932) \u0938\u0947 \u0939\u091f\u093e\u090f\u0902? - -twitter.auth.do=\u091f\u094d\u0935\u093f\u091f\u0930 \u0916\u093e\u0924\u0947 \u0915\u094b \u0932\u093f\u0902\u0915 \u0915\u0930\u0947\u0902 -twitter.auth.linked=\u091f\u094d\u0935\u093f\u091f\u0930 \u0916\u093e\u0924\u0947 \u0938\u0947 \u0932\u093f\u0902\u0915 -twitter.enabled=\u091f\u094d\u0935\u093f\u091f\u0930 \u090f\u0915\u0940\u0915\u0930\u0923 \u0915\u094b \u0938\u0915\u094d\u0937\u092e \u0915\u0930\u0947\u0902 - -twitterUrl.UrlValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092f\u0942\u0906\u0930\u090f\u0932 urlField.Required=\u0906\u092a\u0928\u0947 \u092f\u0942\u0906\u0930\u090f\u0932 \u0926\u0930\u094d\u091c \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u0925\u093e - -workphone.PhoneNumberValidator=\u0905\u092e\u093e\u0928\u094d\u092f \u092b\u093c\u094b\u0928 \u0928\u0902\u092c\u0930 - -worksite.name=\u0915\u093e\u0930\u094d\u092f\u0938\u094d\u0925\u0932 \u0915\u093e \u0928\u093e\u092e - diff --git a/profile2/api/src/resources/ProfileApplication_in_ID.properties b/profile2/api/src/resources/ProfileApplication_in_ID.properties index aa2a2ef24cf3..753dd68814ff 100644 --- a/profile2/api/src/resources/ProfileApplication_in_ID.properties +++ b/profile2/api/src/resources/ProfileApplication_in_ID.properties @@ -8,65 +8,20 @@ Required = Semua isian wajib RequiredValidator = '${label}' diperlukan -accessibility.connection.add = Tambahkan {0} sebagai teman? -accessibility.connection.confirm = Konfirmasi permintaan berteman dari {0}? -accessibility.connection.ignore = Abaikan {0}''s permintaan sambungan? -accessibility.connection.remove = Hapus {0} dari koneksi Anda? -accessibility.privacy.academic = Pilih siapa yang dapat melihat informasi akademik anda seperti sekolah, departemen atau program studi. -accessibility.privacy.basic = Pilih siapa yang dapat melihat informasi dasar Anda seperti nama panggilan dan tanggal ulang tahun. -accessibility.privacy.birthyear = Pilih mau atau tidak untuk menampilkan atau menyembunyikan tahun kelahiran anda. Dicentang berarti bisa dilihat. -accessibility.privacy.contact = Pilih siapa yang dapat melihat hal-hal seperti alamat email dan nomor telepon. -accessibility.privacy.friends = Pilih siapa yang dapat melihat daftar teman anda. -accessibility.privacy.image = Pilih siapa yang dapat melihat foto profil anda. -accessibility.privacy.personal = Pilih siapa yang dapat melihat favorit buku, acara tv, dll. -accessibility.privacy.status = Pilih siapa yang dapat melihat update status anda. - button.cancel = Batalkan button.close = Tutup button.edit = Ubah -button.friend.add = Tambahkan sebagai teman -button.friend.cancel = Batalkan permintaan untuk perteman -button.friend.confirm = Konfirmasi permintaan untuk berteman -button.friend.ignore = Abaikan permintaan untuk berteman -button.friend.remove = Hapus dari teman button.save.changes = Simpan perubahan button.save.settings = Simpan pengaturan button.sayit = Katakan -button.search.byinterest = Cari berdasarkan minat yang sama -button.search.byname = Cari berdasarkan nama atau email button.upload = Upload button.url.add = Tambah URL -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator = Alamat email tidak sah -email.footer.1 = --- -email.footer.2 = Permberitahuan ini dikirimkan secara otomatis oleh {0} ({1}) -email.footer.3 = Kendalikan permberitahuan via email yang diterima dari teman di Ruang Kerjaku > {0} > Pilihan -email.friend.confirm.link = Untuk melihat profil {0}, ikuti tautan di bawah ini: -email.friend.confirm.link.href = {0} -email.friend.confirm.message = {0} telah menyetujui permintaan anda untuk berteman pada {1}. -email.friend.confirm.subject = {0} telah menyetujui permintaan anda untuk berteman pada {1} -email.friend.request.link = Untuk menyetujui permintaan untuk berteman {0}, ikuti tautan berikut: -email.friend.request.link.href = {0} -email.friend.request.message = {0} mau berteman sama kamu pada {1}. -email.friend.request.subject = {0} mau berteman sama kamu pada {1} - error.file.save.failed = Gagal menyimpan berkas -error.friend.add.failed = Gagal mengirimkan permintaan untuk berteman ke {0}. -error.friend.already.confirmed = Kamu sudah berteman dengan {0}. -error.friend.already.pending = Sudah ada permintaan untuk berteman dengan {0} yang belum disetujui. -error.friend.confirm.failed = Kesalahan terjadi ketika mengkonfirmasi {0} sebagai teman. -error.friend.ignore.failed = Kesalahan terjadi ketika mengabaikan permintaan {0} sebagai teman. -error.friend.not.friend = Anda tidak terhubung dengan {0} sehingga dia tidak bisa dihapus! -error.friend.not.pending.confirm = Tidak ada permintaan berteman dari {0} jadi anda tidak bisa mengkonfirmasi! -error.friend.not.pending.ignore = Tidak ada permintaan berteman dari {0} jadi anda tidak bisa mengabaikan! -error.friend.remove.failed = Kesalahan terjadi ketika menghapus {0} dari daftar teman. error.invalid.image.type = Hanya gambar jenis PNG, JPG, dan GIF diperbolehkan. error.no.file.uploaded = Anda tidak memilih file error.password.required = Kata sandi diperlukan error.preferences.save.failed = Gagal menyimpan -error.privacy.save.failed = Gagal menyimpan -error.twitter.details.invalid = Identitas Twitter anda tidak dapat diverifikasi error.url.save.failed = Gagal menyimpan url error.username.required = Nama user diperlukan @@ -77,62 +32,27 @@ facsimile.PhoneNumberValidator = Nomor telepon tidak valid form.uploadTooLarge = File harus lebih kecil dari ${maxSize} -heading.academic = Data Akademis -heading.academic.edit = Data Akademis heading.basic = Informasi Dasar heading.basic.edit = Informasi Dasar heading.contact = Informasi Kontak heading.contact.edit = Informasi Kontak -heading.feed.my.friends = Teman saya -heading.feed.view.friends = Temannya {0} -heading.friend.requests = Permintaan Pertemanan - -heading.friends.my = Teman saya - -heading.friends.view = Temannya {0} - -heading.interests = Informasi Pribadi -heading.interests.edit = Informasi Pribadi heading.preferences = Pilihan -heading.privacy = Pengaturan privasi -heading.section.academic.staff = Untuk staf: heading.section.academic.students = Untuk mahasiswa: heading.section.email = Pemberitahuan lewat email -heading.section.twitter = Integrasi dengan Twitter - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator = URL tidak sah - -homephone.PhoneNumberValidator = Nomor telepon tidak valid link.change.profile.picture = Ganti foto link.edit = Ubah link.edit.info = Ubah informasi -link.friend.add = Tambahkan sebagai teman -link.friend.add.name = Tambahkan {0} sebagai teman -link.friend.feed.search = Mencari teman -link.friend.feed.view = Lihat semua teman -link.friend.remove = Hapuskan teman -link.friend.request.act = Menindaklanjuti permintaan ini -link.friend.search = Mencari teman? -link.my.friends = Hubungan -link.my.friends.tooltip = Lihat dan kelola teman -link.my.messages = Pesan -link.my.messages.tooltip = Kirim dan baca pesan pribadi link.my.preferences = Pilihan link.my.preferences.tooltip = Kelola pilihan anda -link.my.privacy = Privasi -link.my.privacy.tooltip = Kelola privasi anda link.my.profile = Profil saya link.my.profile.tooltip = Lihat dan ubah profil anda -link.my.search = Cari -link.my.search.tooltip = Cari seseorang dan lihat profilnya link.profile.locked.false = Kunci profil ini? link.profile.locked.true = Profil dikunci. Buka kunci? -link.status.clear = Hapus -link.status.update = Ubah link.title.confirmfriend = Konfirmasi permintaan berteman link.title.ignorefriend = Abaikan permintaan berteman link.title.removefriend = Hapus teman link.title.rss = Lihat dan sesuaikan RSS feed -link.view.friends = Lihat daftar teman mobilephone.PhoneNumberValidator = Nomor telepon tidak valid @@ -141,105 +61,21 @@ page.title = Profil preference.option.off = Tidak aktif preference.option.on = Aktif -preferences.email.confirms = Konfirmasi Confirms my teman request -preferences.email.message = Email saya di {0} ketika seseorang: -preferences.email.none = (TIDAK ADA ALAMAT EMAIL YANG DISET) -preferences.email.requests = Tambahkan saya sebagai teman -preferences.twitter.message = Status baru anda bisa secara otomatis mengubah status akun Twitter anda - -privacy.academicinfo = Data Akademis -privacy.basicinfo = Info dasar -privacy.birthyear = Tunjukan tahun lahir -privacy.contactinfo = Informasi kontak -privacy.myfriends = Siapa yang bisa teman saya -privacy.mystatus = Siapa yang bisa lihat status saya -privacy.option.everyone = Semua -privacy.option.nobody = Tidak ada seorangpun -privacy.option.onlyfriends = Hanya teman saya -privacy.option.onlyme = Hanya saya -privacy.personalinfo = Informasi Personal -privacy.profileimage = Foto profil -privacy.search = Cari - -profile.birthday = Tanggal lahir -profile.course = Program Studi -profile.department = Departemen profile.email = Email -profile.favourite.books = Buku favorit -profile.favourite.movies = Film favorit -profile.favourite.quotes = Kutipan favorit -profile.favourite.tv = Film TV favorit -profile.homepage = Halaman muka -profile.name.first = Nama depan -profile.name.last = Nama belakang -profile.name.middle = Nama tengah profile.nickname = Nama panggilan profile.other = Informasi lainnya -profile.phone.facsimile = Faksimil -profile.phone.home = Telepon rumah profile.phone.mobile = Telepon HP -profile.phone.work = Telepon kantor -profile.position = Jabatan -profile.room = Ruang -profile.school = Sekolah -profile.subjects = Mata kuliah success.preferences.save.ok = Berhasil disimpan success.privacy.save.ok = Berhasil disimpan text.edit.other.warning = Perhatian: Anda mengubah informasi tentang {0}. -text.friend.add = {0} akan mengkonfirmasi permintaan anda -text.friend.already = Anda sudah terhubung ke {0}. -text.friend.already.pending = Sudah ada permintaan berteman yang tertunda antara anda dan {0}. -text.friend.cancel = Apakah anda yakin ingin membatalkan permintaan berteman anda untuk (0) ? Mereka tidak akan diberitahu. -text.friend.confirm = Ini akan mengkonfirmasi permintaan berteman dari {0}. -text.friend.confirmed = Kamu telah terhubung -text.friend.feed.num.many = {0} teman -text.friend.feed.num.none = 0 teman -text.friend.feed.num.one = 1 teman -text.friend.ignore = Apakah anda yakin untuk mengabaikan permintaan berteman dari {0}? Mereka tidak akan diberitahu. -text.friend.none = Anda tidak terhubung dengan {0}. -text.friend.pending = Permintaan hubungan tertunda -text.friend.remove = Apakah anda yakin untuk menghapus {0} sebagai teman? Mereka tidak akan diberitahu. -text.friend.requested = Hubungan sudah diminta -text.friend.self = Ini anda! text.image.url = Masukkan URL foto untuk digunakan sebagai foto profil anda text.no.fields = Anda belum mengisi informasi text.no.status = Katakan sesuatu -text.privacy.academicinfo.tooltip = Pilih siapa yang dapat melihat informasi akademik anda seperti sekolah, departemen atau program studi. -text.privacy.basicinfo.tooltip = Pilih siapa yang dapat melihat informasi dasar Anda seperti nama panggilan dan tanggal ulang tahun. -text.privacy.birthyear.tooltip = Pilih mau atau tidak untuk menampilkan atau menyembunyikan tahun kelahiran anda. Dicentang berarti bisa dilihat. -text.privacy.cannot.modify = Nilai-nilai ini dikunci oleh administrator anda dan tidak dapat diubah. -text.privacy.contactinfo.tooltip = Pilih siapa yang dapat melihat hal-hal seperti alamat email dan nomor telepon. -text.privacy.myfriends.tooltip = Pilih siapa yang dapat melihat daftar teman anda. -text.privacy.mystatus.tooltip = Pilih siapa yang dapat melihat update status anda. -text.privacy.personalinfo.tooltip = Pilih siapa yang dapat melihat favorit buku, acara tv, dll. -text.privacy.profileimage.tooltip = Pilih siapa yang dapat melihat foto profil anda. -text.profile.birthyear.tooltip = Anda dapat memilih untuk menampilkan / menyembunyikan tahun lahir anda dalam pengaturan privasi text.profile.locked.false = Mengunci profil berarti tidak memperbolehkan pengguna untuk mengngubah informasi mereka. text.profile.locked.true = Membuka kunci profil memperbolehkan pengguna untuk mengubah informasi mereka. -text.search.byinterest.all.results = Menampilkan {0} hasil untuk: {1} -text.search.byinterest.no.results = Tidak ada orang yang memiliki minat {0}. -text.search.byinterest.one.result = Menampilkan 1 hasil untuk: {0} -text.search.byinterest.tooltip = Masukkan minat, misalnya 'bersepeda' untuk menemukan orang-orang dengan minat yang sama -text.search.byname.all.results = Menampilkan {0} hasil untuk: {1} -text.search.byname.no.results = Tidak ada hasil yang sama dengan {0}. -text.search.byname.one.result = Displaying 1 result for: {0} -text.search.byname.tooltip = Masukkan alamat nama atau e-mail untuk menemukan orang -text.search.no.input = Anda tidak memasukkan apa-apa -text.search.no.results = Tidak ada hasil untuk {0}. -text.search.paged.results = Menampilkan {0} - {1} dari {2} hasil untuk {3} -text.search.toomany.results = Pencarian anda untuk {0} mengembalikan {1} atau lebih hasil. Hanya {1} pertama yang ditampilkan. text.upload.image.file = Pilih file gambar pada komputer anda (max {0}MB): text.view.profile.nothing = Orang ini telah membatasi informasi mereka yang ditampilkan atau tidak memiliki informasi profil untuk dibagikan. title.change.profile.picture = Ganti foto profil anda -title.friend.add = Tambahkan {0} sebagai teman? -title.friend.cancel = Batalkan permintaan berteman? -title.friend.confirm = Konfirmasi permintaan berteman dari {0}? -title.friend.ignore = Abaikan permintaan untuk teman? -title.friend.remove = Hapus teman? - -twitter.enabled = Aktifkan integrasi dengan Twitter - -workphone.PhoneNumberValidator = Nomor telepon tidak valid diff --git a/profile2/api/src/resources/ProfileApplication_ja.properties b/profile2/api/src/resources/ProfileApplication_ja.properties index 9d65a229a9a4..41311f5bfab5 100644 --- a/profile2/api/src/resources/ProfileApplication_ja.properties +++ b/profile2/api/src/resources/ProfileApplication_ja.properties @@ -1,484 +1,100 @@ RequiredValidator=\u300c${label}\u300d\u304c\u5fc5\u8981\u3067\u3059 -accessibility.connection.add=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066{0}\u3092\u8ffd\u52a0 -accessibility.connection.confirm={0}\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d\u3057\u307e\u3059\u304b? -accessibility.connection.ignore={0}\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7121\u8996\u3057\u307e\u3059\u304b? -accessibility.connection.remove=\u524a\u9664{0}\u306b\u63a5\u7d9a\u304b\u3089\uff1f accessibility.edit.basic=\u500b\u4eba\u60c5\u5831\u3092\u7de8\u96c6 -accessibility.edit.business=\u52e4\u52d9\u5148\u60c5\u5831\u3092\u7de8\u96c6 accessibility.edit.contact=\u57fa\u672c\u60c5\u5831\u3092\u7de8\u96c6 -accessibility.edit.personal=\u9023\u7d61\u5148\u60c5\u5831\u3092\u7de8\u96c6 accessibility.edit.social=SNS \u60c5\u5831\u3092\u7de8\u96c6 -accessibility.edit.staff=\u30b9\u30bf\u30c3\u30d5\u60c5\u5831\u3092\u7de8\u96c6 -accessibility.edit.student=\u53d7\u8b1b\u8005\u60c5\u5831\u3092\u7de8\u96c6 accessibility.image.upload=\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u7528\u306e\u5199\u771f\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3059 accessibility.image.url=\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u306e URL \u3092\u5165\u529b\u3057\u307e\u3059 -accessibility.messages.unread=\u672a\u8aad\u30e1\u30c3\u30bb\u30fc\u30b8 -accessibility.prefs.confirms.off=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u627f\u8a8d\u3055\u308c\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u7121\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.confirms.on=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u627f\u8a8d\u3055\u308c\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u6709\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.gallery=\u500b\u4eba\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u5199\u771f\u3092\u8868\u793a accessibility.prefs.gravatar=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3068\u3057\u3066 gravatar \u3092\u4f7f\u7528\u3057\u307e\u3059 -accessibility.prefs.kudos=\u81ea\u5206\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306b kudos \u306e\u8a55\u4fa1\u3092\u8868\u793a -accessibility.prefs.messagenew.off=\u65b0\u898f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u81ea\u5206\u306b\u9001\u3063\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\uff0c\u7121\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.messagenew.on=\u65b0\u898f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u81ea\u5206\u306b\u9001\u3063\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\uff0c\u6709\u52b9\u5316\u306b\u3057\u307e\u3057\u305f -accessibility.prefs.messagereply.off=\u81ea\u5206\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u3044\u305a\u308c\u304b\u306b\u8fd4\u4fe1\u304c\u3042\u3063\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\uff0c\u7121\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.messagereply.on=\u81ea\u5206\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u3044\u305a\u308c\u304b\u306b\u8fd4\u4fe1\u304c\u3042\u3063\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u6709\u52b9\u5316\u3057\u307e\u3057\u305f accessibility.prefs.officialimage=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3068\u3057\u3066\u5927\u5b66\u306e\u6b63\u5f0f\u306a\u753b\u50cf\u3092\u4f7f\u7528\u3057\u307e\u3059 -accessibility.prefs.onlinestatus=\u81ea\u5206\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u72b6\u614b\u3092\u4ed6\u306e\u4eba\u306b\u8868\u793a accessibility.prefs.overview=\u30e1\u30fc\u30eb\u901a\u77e5\u8a2d\u5b9a -accessibility.prefs.requests.off=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066\u79c1\u3092\u8ffd\u52a0\u3057\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u7121\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.requests.on=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066\u79c1\u3092\u8ffd\u52a0\u3057\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u6709\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.twitterauthcode=\u3042\u306a\u305f\u306eTwitter\u306e\u8a8d\u8a3c\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.prefs.wallnew.off=\u30a6\u30a9\u30fc\u30eb\u306b\u6295\u7a3f\u304c\u3042\u3063\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u7121\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.wallnew.on=\u30a6\u30a9\u30fc\u30eb\u306b\u6295\u7a3f\u304c\u3042\u3063\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u6709\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.worksite.off=\u65b0\u3057\u3044\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306b\u79c1\u304c\u8ffd\u52a0\u3055\u308c\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u7121\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.prefs.worksite.on=\u65b0\u3057\u3044\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306b\u79c1\u304c\u8ffd\u52a0\u3055\u308c\u305f\u3068\u304d\u306e\u30e1\u30fc\u30eb\u901a\u77e5\u3092\u6709\u52b9\u5316\u3057\u307e\u3057\u305f -accessibility.privacy.academic=\u5b66\u90e8\uff0c\u5b66\u79d1\uff0c\u5c02\u653b\u306a\u3069\u306e\u30a2\u30ab\u30c7\u30df\u30c3\u30af\u60c5\u5831\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.basic=\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u3084\u751f\u5e74\u6708\u65e5\u306a\u3069\u306e\u57fa\u672c\u60c5\u5831\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.birthyear=\u751f\u307e\u308c\u305f\u5e74\u3092\u8868\u793a\u3059\u308b\u304b\u8868\u793a\u89e3\u9664\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u9078\u3073\u307e\u3059\uff0e\u30c1\u30a7\u30c3\u30af\u3057\u305f\u3082\u306e\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e -accessibility.privacy.business=\u696d\u754c\uff0c\u8077\u4f4d\uff0c\u8077\u6b74\u306a\u3069\u306e\u52e4\u52d9\u5148\u60c5\u5831\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.contact=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3084\u96fb\u8a71\u756a\u53f7\u306e\u3088\u3046\u306a\u3082\u306e\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.friends=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u4e00\u89a7\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.image=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.kudos=kudos \u306e\u8a55\u4fa1\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e(\u8a2d\u5b9a\u304c\u6709\u52b9\u306a\u5834\u5408) -accessibility.privacy.messages=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8ab0\u304c\u9001\u4fe1\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.onlinestatus=\u30aa\u30f3\u30e9\u30a4\u30f3\u72b6\u614b\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.overview=\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u3069\u306e\u90e8\u5206\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3057\u307e\u3059 -accessibility.privacy.personal=\u597d\u304d\u306a\u672c\u3084\u30c6\u30ec\u30d3\u756a\u7d44\u306a\u3069\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.pictures=\u5199\u771f\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.social=\u3060\u308c\u304cFacebook\u3001LinkedIn\u304a\u3088\u3073MySpace\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u3088\u3046\u306a\u793e\u4f1a\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u60c5\u5831\u3092\u3001\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u9078\u629e\u3057\u306a\u3055\u3044\u3002 -accessibility.privacy.staff=\u3060\u308c\u304c\u30b9\u30bf\u30c3\u30d5\u60c5\u5831\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u9078\u629e\u3057\u306a\u3055\u3044 -accessibility.privacy.status=\u30b9\u30c6\u30fc\u30bf\u30b9\u66f4\u65b0\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.privacy.student=\u3060\u308c\u304c\u5b66\u751f\u60c5\u5831\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u9078\u629e\u3057\u306a\u3055\u3044 -accessibility.privacy.wall=\u30a6\u30a9\u30fc\u30eb\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -accessibility.profile.academicprofileurl.input=\u3042\u306a\u305f\u306e\u30a2\u30ab\u30c7\u30df\u30c3\u30af\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e URL \u3092\u5165\u529b\u3057\u307e\u3059 -accessibility.profile.birthday=\u751f\u5e74\u6708\u65e5\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\uff0e\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u8a2d\u5b9a\u3067\u751f\u307e\u308c\u305f\u5e74\u3092\u8868\u793a\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u9078\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff0e -accessibility.profile.businessbio.input=\u3042\u306a\u305f\u306e\u8077\u6b74\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.companydescription.input=\u4f1a\u793e\u306e\u8aac\u660e\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.companyname.input=\u4f1a\u793e\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.companyurl.input=\u4f1a\u793e\u306eWeb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 accessibility.profile.course.input=\u3042\u306a\u305f\u306e\u30b3\u30fc\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.department.input=\u3042\u306a\u305f\u306e\u90e8\u9580\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 accessibility.profile.email.input=\u3042\u306a\u305f\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 accessibility.profile.facebookurl.input=\u3042\u306a\u305f\u306eFacebook\u306eURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.facsimile.input=\u3042\u306a\u305f\u306eFAX\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.favouritebooks.input=\u3042\u306a\u305f\u306e\u597d\u304d\u306a\u672c\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.favouritemovies.input=\u3042\u306a\u305f\u306e\u597d\u304d\u306a\u6620\u753b\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.favouritequotes.input=\u3042\u306a\u305f\u306e\u597d\u304d\u306a\u8a00\u8449\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.favouritetv.input=\u3042\u306a\u305f\u306e\u597d\u304d\u306a\u30c6\u30ec\u30d3\u756a\u7d44\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.homepage.input=\u3042\u306a\u305f\u306eWeb\u30da\u30fc\u30b8\u306eURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.homephone.input=\u3042\u306a\u305f\u306e\u81ea\u5b85\u306e\u96fb\u8a71\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 accessibility.profile.linkedinurl.input=\u3042\u306a\u305f\u306eLinkedIn\u306eURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.messagebody.input=\u3042\u306a\u305f\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.messagerecipient.input=\u53d7\u4fe1\u8005\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044 -accessibility.profile.messagesubject.input=\u3042\u306a\u305f\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u984c\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 accessibility.profile.mobilephone.input=\u3042\u306a\u305f\u306e\u643a\u5e2f\u96fb\u8a71\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.myspaceurl.input=\u3042\u306a\u305f\u306eLinkedIn\u306eURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 accessibility.profile.nickname.input=\u3042\u306a\u305f\u306e\u3092\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.position.input=\u3042\u306a\u305f\u306e\u5f79\u8077\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.publications.input=\u3042\u306a\u305f\u306e\u51fa\u7248\u7269\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.room.input=\u3042\u306a\u305f\u306e\u90e8\u5c4b\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.school.input=\u3042\u306a\u305f\u306e\u5b66\u6821\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.skypeusername.input=\u3042\u306a\u305f\u306eSkype\u30e6\u30fc\u30b6\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.staffprofile.input=\u3042\u306a\u305f\u306e\u30b9\u30bf\u30c3\u30d5\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.status.clear=\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u30af\u30ea\u30a2 -accessibility.profile.status.input=\u3042\u306a\u305f\u306e\u73fe\u5728\u306e\u72b6\u614b\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.subjects.input=\u3042\u306a\u305f\u306e\u8ab2\u984c\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 accessibility.profile.summaryinput=\u3042\u306a\u305f\u306e\u500b\u4eba\u6982\u8981\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.twitterurl.input=\u3042\u306a\u305f\u306eTwitter URL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.uniprofileurl.input=\u3042\u306a\u305f\u306e\u5927\u5b66\u3067\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.wallpost.input=\u3042\u306a\u305f\u306eWall Post\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.profile.workphone.input=\u3042\u306a\u305f\u306e\u8077\u5834\u306e\u96fb\u8a71\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -accessibility.search.connections=\u691c\u7d22\u7d50\u679c\u306b\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u542b\u3081\u308b -accessibility.search.worksite=\u9078\u629e\u3057\u305f\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306b\u691c\u7d22\u3092\u5236\u9650\u3059\u308b -accessibility.wall.comment={0}\u306e\u30a6\u30a9\u30fc\u30eb\u306e\u6295\u7a3f\u306b\u30b3\u30e1\u30f3\u30c8 -accessibility.wall.remove.mine=\u3042\u306a\u305f\u306e\u30a6\u30a9\u30fc\u30eb\u304b\u3089\u6295\u7a3f\u3092\u524a\u9664\u3057\u307e\u3059\u304b? -accessibility.wall.remove.other=\u3042\u306a\u305f\u306e\u30a6\u30a9\u30fc\u30eb\u304b\u3089 "{0}" \u306e\u6295\u7a3f\u3092\u524a\u9664\u3057\u307e\u3059\u304b? -button.business.add.profile=\u52e4\u52d9\u5148\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u8ffd\u52a0 -button.business.remove.profile=\u52e4\u52d9\u5148\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u524a\u9664 button.cancel=\u30ad\u30e3\u30f3\u30bb\u30eb button.close=\u9589\u3058\u308b button.edit=\u7de8\u96c6 -button.friend.add=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u8ffd\u52a0 -button.friend.cancel=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb -button.friend.confirm=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d -button.friend.ignore=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7121\u8996 -button.friend.remove=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664 -button.gallery.remove=\u5199\u771f\u3092\u524a\u9664 -button.gallery.remove.confirm=\u524a\u9664\u3092\u78ba\u8a8d -button.gallery.setprofile=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u3068\u3057\u3066\u30bb\u30c3\u30c8 -button.gallery.setprofile.confirm=\u65b0\u3057\u3044\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u753b\u50cf\u3092\u78ba\u8a8d\u3057\u306a\u3055\u3044 -button.gallery.upload=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 button.link=\u30ea\u30f3\u30af -button.message.reply=\u8fd4\u4fe1 -button.message.send=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1 button.save=\u4fdd\u5b58 button.save.changes=\u5909\u66f4\u3092\u4fdd\u5b58 button.save.settings=\u8a2d\u5b9a\u3092\u4fdd\u5b58 button.sayit=\u767a\u8a00 -button.search.byinterest=\u5171\u901a\u306e\u8208\u5473\u3067\u691c\u7d22 -button.search.byname=\u540d\u524d\u307e\u305f\u306f\u30e1\u30fc\u30eb\u3067\u691c\u7d22 -button.search.clear=\u691c\u7d22\u3092\u30af\u30ea\u30a2 -button.search.generic=\u691c\u7d22 -button.search.history.clear=\u5c65\u6b74\u3092\u30af\u30ea\u30a2 button.upload=\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9 button.url.add=URL \u3092\u8ffd\u52a0 -button.wall.comment=\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0 -button.wall.post=\u30a6\u30a9\u30fc\u30eb\u306b\u6295\u7a3f -button.wall.remove=\u30a6\u30a9\u30fc\u30eb\u304b\u3089\u524a\u9664 -button.worksite.cancel=\u30ad\u30e3\u30f3\u30bb\u30eb -button.worksite.create=\u4f5c\u6210 -email.EmailAddressValidator=\u4e0d\u6b63\u306a\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u3059 error.empty.file.uploaded=\u7a7a\u30d5\u30a1\u30a4\u30eb\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u3053\u3068\u3092\u8a66\u307f\u305f error.file.save.failed=\u30d5\u30a1\u30a4\u30eb\u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f -error.friend.add.failed={0} \u306b\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff0e -error.friend.already.confirmed={0} \u3068\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u304c\u3059\u3067\u306b\u3042\u308a\u307e\u3059\uff0e -error.friend.already.pending={0} \u3068\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u627f\u8a8d\u5f85\u3061\u304c\u3059\u3067\u306b\u3042\u308a\u307e\u3059\uff0e -error.friend.confirm.failed={0} \u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff0e -error.friend.ignore.failed={0} \u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7121\u8996\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff0e -error.friend.not.friend={0} \u3068\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u305b\u3093\u306e\u3067\uff0c\u524a\u9664\u3055\u308c\u308b\u3053\u3068\u306f\u3042\u308a\u307e\u305b\u3093\uff0e -error.friend.not.pending.confirm={0} \u304b\u3089\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u627f\u8a8d\u5f85\u3061\u306e\u3082\u306e\u306f\u3042\u308a\u307e\u305b\u3093\u306e\u3067\uff0c\u627f\u8a8d\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\uff0e -error.friend.not.pending.ignore={0} \u304b\u3089\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u627f\u8a8d\u5f85\u3061\u306e\u3082\u306e\u306f\u3042\u308a\u307e\u305b\u3093\u306e\u3067\uff0c\u7121\u8996\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\uff0e -error.friend.remove.failed=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u4e00\u89a7\u304b\u3089 {0} \u3092\u524a\u9664\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff0e -error.gallery.remove.failed=\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u5199\u771f\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093 -error.gallery.setprofile.failed=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u3068\u3057\u3066\u5199\u771f\u3092\u30bb\u30c3\u30c8\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093 -error.gallery.upload.warning=\u30d5\u30a1\u30a4\u30eb\u3092\u307e\u305a\u9078\u629e\u3057\u307e\u3059 error.invalid.image.type=PNG, JPG \u307e\u305f\u306f GIF \u306e\u307f\u304c\u753b\u50cf\u3068\u3057\u3066\u8a31\u3055\u308c\u3066\u3044\u307e\u3059\uff0e -error.message.required.body=\u30e1\u30c3\u30bb\u30fc\u30b8\u306f\u7a7a\u767d\u306b\u3067\u304d\u307e\u305b\u3093 -error.message.required.to=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3059\u308b\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u9078\u3076\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 -error.message.send.failed=\u30e1\u30c3\u30bb\u30fc\u30b8\u9001\u4fe1\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f error.no.file.uploaded=\u30d5\u30a1\u30a4\u30eb\u304c\u9078\u629e\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f error.password.required=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059 error.preferences.save.failed=\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f -error.privacy.save.failed=\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f -error.profile.save.academic.failed=\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f -error.profile.save.business.failed=\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f error.profile.save.contact.failed=\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f error.profile.save.info.failed=\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f -error.profile.save.interests.failed=\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f -error.twitter.details.invalid=\u3042\u306a\u305f\u306e Twitter \u8a8d\u8a3c\u60c5\u5831\u3092\u691c\u8a3c\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f error.url.save.failed=URL \u306e\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f error.username.required=\u30e6\u30fc\u30b6\u540d\u304c\u5fc5\u8981\u3067\u3059 -error.wall.comment.empty=\u7a7a\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f. -error.wall.comment.failed=\u30b3\u30e1\u30f3\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f -error.wall.post.empty=\u7a7a\u306e\u5185\u5bb9\u3092\u6295\u7a3f\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f. -error.wall.post.failed=\u6295\u7a3f\u306b\u5931\u6557 -error.worksite.create.failed=\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f. -error.worksite.no.title=\u30b5\u30a4\u30c8\u540d\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059. exception.heading.session.expired=\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u307e\u3057\u305f\uff0e exception.text.session.expired=\u6b8b\u5ff5\u3067\u3059\u304c\uff0c\u30bb\u30c3\u30b7\u30e7\u30f3\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u307e\u3057\u305f\uff0e\u30da\u30fc\u30b8\u3092\u30ea\u30d5\u30ec\u30c3\u30b7\u30e5\u3059\u308b\u304b\uff0c\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u3066\u518d\u5ea6\u30ed\u30b0\u30a4\u30f3\u3057\u30bb\u30c3\u30b7\u30e7\u30f3\u3092\u518d\u5ea6\u958b\u59cb\u3057\u3066\u304f\u3060\u3055\u3044\uff0e facebookUrl.UrlValidator=\u7121\u52b9\u306a URL facsimile.PhoneNumberValidator=\u7121\u52b9\u306a\u96fb\u8a71\u756a\u53f7 form.uploadTooLarge=\u30d5\u30a1\u30a4\u30eb\u306f ${maxSize} \u3088\u308a\u5c0f\u3055\u3044\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 -heading.academic=\u30a2\u30ab\u30c7\u30df\u30c3\u30af\u60c5\u5831 -heading.academic.edit=\u30a2\u30ab\u30c7\u30df\u30c3\u30af\u60c5\u5831 heading.basic=\u57fa\u672c\u60c5\u5831 heading.basic.edit=\u57fa\u672c\u60c5\u5831 -heading.business=\u52e4\u52d9\u5148\u60c5\u5831 -heading.business.edit=\u52e4\u52d9\u5148\u60c5\u5831 heading.contact=\u9023\u7d61\u60c5\u5831 heading.contact.edit=\u9023\u7d61\u60c5\u5831 -heading.friend.requests=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8 - -heading.friends.my=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8 - -heading.friends.view={0} \u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3 - -heading.interests=\u500b\u4eba\u60c5\u5831 -heading.interests.edit=\u500b\u4eba\u60c5\u5831 -heading.messages=\u81ea\u5206\u306e\u30e1\u30c3\u30bb\u30fc\u30b8 -heading.pictures.addpicture=\u5199\u771f\u3092\u8ffd\u52a0 -heading.pictures.my.pictures=\u30de\u30a4\u5199\u771f -heading.pictures.view.pictures={0} \u306e\u5199\u771f heading.preferences=\u8a2d\u5b9a -heading.privacy=\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u8a2d\u5b9a -heading.search=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u691c\u7d22 -heading.section.academic.staff=\u6559\u8077\u54e1\u7528\: -heading.section.academic.students=\u5b66\u751f\u7528\: heading.section.email=\u30e1\u30fc\u30eb\u901a\u77e5 heading.section.image=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u8a2d\u5b9a -heading.section.twitter=Twitter \u9023\u643a heading.section.widget=\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u8a2d\u5b9a heading.social=\u793e\u4f1a\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0 heading.social.edit=\u793e\u4f1a\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0 -heading.staff=\u30b9\u30bf\u30c3\u30d5\u60c5\u5831 -heading.staff.edit=\u30b9\u30bf\u30c3\u30d5\u60c5\u5831 -heading.student=\u5b66\u751f\u60c5\u5831 -heading.student.edit=\u5b66\u751f\u60c5\u5831 -heading.widget.my.friends=\u30de\u30a4\u30b3\u30cd\u30af\u30b7\u30e7\u30f3 -heading.widget.my.kudos=\u81ea\u5206\u306e kudos -heading.widget.my.pictures=\u30de\u30a4\u5199\u771f -heading.widget.view.friends={0}\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3 -heading.widget.view.kudos={0}\u306e kudos -heading.widget.view.pictures={0} \u306e\u5199\u771f -homepage.UrlValidator=\u4e0d\u6b63\u306a URL \u3067\u3059 -homephone.PhoneNumberValidator=\u7121\u52b9\u306a\u96fb\u8a71\u756a\u53f7 link.change.profile.picture=\u5199\u771f\u3092\u5909\u66f4 link.edit=\u7de8\u96c6 link.edit.info=\u60c5\u5831\u3092\u7de8\u96c6 -link.friend.add=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066\u8ffd\u52a0 -link.friend.add.name=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066{0}\u3092\u8ffd\u52a0 -link.friend.confirm=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u627f\u8a8d -link.friend.feed.search=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u7528\u306b\u691c\u7d22 -link.friend.feed.view=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u3059\u3079\u3066\u8868\u793a -link.friend.ignore=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u7121\u8996 -link.friend.remove=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664 -link.friend.request.act=\u3053\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3067\u5b9f\u884c -link.friend.search=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u691c\u7d22\u3057\u307e\u3059\u304b? -link.gallery.feed.addnew=\u65b0\u3057\u3044\u5199\u771f\u3092\u8ffd\u52a0 -link.gallery.feed.view=\u5199\u771f\u3092\u3059\u3079\u3066\u8868\u793a -link.gallery.image.view=\u753b\u50cf\u3092\u8868\u793a link.image.current.remove=\u524a\u9664 link.image.current.remove.confirm=\u73fe\u5728\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u30a4\u30e1\u30fc\u30b8\u3092\u524a\u9664\u3057\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3057\u307e\u3059\uff0e\u305d\u308c\u3092\u518d\u5ea6\u5909\u66f4\u3059\u308b\u306b\u306f\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f -link.messages.back=\u30e1\u30c3\u30bb\u30fc\u30b8\u4e00\u89a7\u306b\u623b\u308b -link.messages.compose=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u4f5c\u6210 -link.messages.mymessages=\u81ea\u5206\u306e\u30e1\u30c3\u30bb\u30fc\u30b8 -link.messages.viewthread=\u30b9\u30ec\u30c3\u30c9\u3092\u8868\u793a -link.my.friends=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3 -link.my.friends.search=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u691c\u7d22 -link.my.friends.tooltip=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u8868\u793a\u30fb\u7de8\u96c6 -link.my.messages=\u30e1\u30c3\u30bb\u30fc\u30b8 -link.my.messages.tooltip=\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u30fb\u53d7\u4fe1\u3057\u307e\u3059 -link.my.pictures=\u5199\u771f -link.my.pictures.tooltip=\u753b\u50cf\u3092\u8ffd\u52a0\u3057\u305f\u308a\uff0c\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u8868\u793a\u3057\u305f\u308a\u3057\u307e\u3059 link.my.preferences=\u8a2d\u5b9a link.my.preferences.tooltip=\u81ea\u5206\u306e\u8a2d\u5b9a\u3092\u7ba1\u7406\u3057\u307e\u3059 -link.my.privacy=\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc -link.my.privacy.tooltip=\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u3092\u7ba1\u7406\u3057\u307e\u3059 link.my.profile=\u500b\u4eba\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb link.my.profile.tooltip=\u81ea\u5206\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u8868\u793a\u30fb\u7de8\u96c6\u3057\u307e\u3059 link.other.profile={0}\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb -link.my.search=\u691c\u7d22 -link.my.search.tooltip=\u4eba\u3092\u691c\u7d22\u3057\u305f\u308a\uff0c\u4eba\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u8868\u793a\u3057\u305f\u308a\u3057\u307e\u3059 link.profile.locked.false=\u3053\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u30ed\u30c3\u30af\u3057\u307e\u3059\u304b? link.profile.locked.true=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u304c\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u307e\u3059\uff0e\u30ed\u30c3\u30af\u89e3\u9664\u3057\u307e\u3059\u304b? -link.status.clear=\u30af\u30ea\u30a2 -link.status.update=\u66f4\u65b0 -link.tab.profile=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb -link.tab.profile.tooltip=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u8868\u793a -link.tab.wall=\u30a6\u30a9\u30fc\u30eb -link.tab.wall.tooltip=\u30a6\u30a9\u30fc\u30eb\u3092\u8868\u793a -link.title.confirmfriend=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d -link.title.ignorefriend=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7121\u8996 -link.title.removefriend=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664 link.title.rss=\u500b\u4eba\u7528 RSS \u30d5\u30a3\u30fc\u30c9\u3092\u8868\u793a\u30fb\u30ab\u30b9\u30bf\u30de\u30a4\u30ba -link.title.unlinktwitter=Twitter \u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u306e\u30ea\u30f3\u30af\u3092\u89e3\u9664 -link.title.wall.comment={0}\u306e\u30a6\u30a9\u30fc\u30eb\u306e\u6295\u7a3f\u306b\u30b3\u30e1\u30f3\u30c8 -link.title.wall.remove=\u3042\u306a\u305f\u306e\u30a6\u30a9\u30fc\u30eb\u304b\u3089\u524a\u9664 -link.view.friends=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u8868\u793a -link.wall.item.comment=\u30b3\u30e1\u30f3\u30c8 -link.wall.item.remove=\u524a\u9664 -link.worksite.create=\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u3092\u4f5c\u6210 linkedinUrl.UrlValidator=\u7121\u52b9\u306a URL -message.message=\u30e1\u30c3\u30bb\u30fc\u30b8 -message.reply=\u8fd4\u4fe1 -message.subject=\u4ef6\u540d -message.to=\u5b9b\u5148 mobilephone.PhoneNumberValidator=\u7121\u52b9\u306a\u96fb\u8a71\u756a\u53f7 -myspaceUrl.UrlValidator=\u7121\u52b9\u306a URL page.title=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb -palette.available=\u5229\u7528\u53ef\u80fd -palette.selected=\u9078\u629e\u6e08\u307f -pictures.addpicture=\u65b0\u3057\u3044\u5199\u771f\u3092\u30ae\u30e3\u30e9\u30ea\u30fc\u306b\u8ffd\u52a0 -pictures.filetypewarning=jpeg, png \u304a\u3088\u3073 gif \u30d5\u30a1\u30a4\u30eb\u3060\u3051\u304c\u30ae\u30e3\u30e9\u30ea\u30fc\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3059\uff0e -pictures.removepicture=\u3053\u306e\u5199\u771f\u3092\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u524a\u9664 -pictures.removepicture.confirm=\u3053\u306e\u5199\u771f\u3092\u30ae\u30e3\u30e9\u30ea\u30fc\u304b\u3089\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? -pictures.setprofileimage=\u3053\u306e\u5199\u771f\u3092\u81ea\u5206\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u3068\u3057\u3066\u30bb\u30c3\u30c8 -pictures.setprofileimage.confirm=\u78ba\u5b9f\u3053\u306e\u753b\u50cf\u3068\u73fe\u5728\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u753b\u50cf\u3092\u53d6\u308a\u66ff\u3048\u305f\u3044\u3068\u601d\u3046\u3067\u3042\u308b\u304b\u3002 preference.option.off=\u30aa\u30d5 preference.option.on=\u30aa\u30f3 -preferences.email.confirms=\u81ea\u5206\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d -preferences.email.message=\u8ab0\u304b\u77e5\u3089\u306a\u3044\u5834\u5408\u306f {0} \u3078\u79c1\u5b9b\u306b\u30e1\u30fc\u30eb\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\: -preferences.email.message.new=\u65b0\u898f\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u81ea\u5206\u306b\u9001\u3063\u305f\u3068\u304d -preferences.email.message.reply=\u81ea\u5206\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u3044\u305a\u308c\u304b\u306b\u8fd4\u4fe1\u304c\u3042\u3063\u305f\u3068\u304d -preferences.email.none=(\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093) -preferences.email.requests=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066\u79c1\u3092\u8ffd\u52a0\u3057\u3066\u304f\u3060\u3055\u3044 -preferences.email.wall.new=\u81ea\u5206\u306e\u30a6\u30a9\u30fc\u30eb\u3078\u306e\u6295\u7a3f -preferences.email.worksite.new=\u81ea\u5206\u304c\u65b0\u3057\u3044\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306b\u8ffd\u52a0\u3055\u308c\u305f\u3068\u304d preferences.image.gravatar=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3068\u3057\u3066\u6b63\u5f0f\u306e\u5927\u5b66\u753b\u50cf\u3092\u4f7f\u7528\u3057\u307e\u3059 -preferences.image.message=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u306b\u95a2\u4fc2\u3059\u308b\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059 preferences.image.official=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3068\u3057\u3066\u6b63\u5f0f\u306e\u5927\u5b66\u753b\u50cf\u3092\u4f7f\u7528\u3057\u307e\u3059 -preferences.twitter.message=\u30b9\u30c6\u30fc\u30bf\u30b9\u66f4\u65b0\u306f\u3042\u306a\u305f\u306e Twitter \u30a2\u30ab\u30a6\u30f3\u30c8\u3082\u66f4\u65b0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059 -preferences.widget.gallery=\u81ea\u5206\u306e\u5199\u771f\u3092\u8868\u793a -preferences.widget.gallery.tooltip=\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3068\uff0c\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306b\u3042\u306a\u305f\u306e\u5199\u771f\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e -preferences.widget.kudos=\u81ea\u5206\u306e kudos \u306e\u8a55\u4fa1\u3092\u8868\u793a -preferences.widget.kudos.tooltip=\u3042\u306a\u305f\u306e\u5f97\u70b9\u304c\u8a08\u7b97\u3055\u308c\u308b\u3068\uff0c\u3042\u306a\u305f\u306e kudos \u306e\u8a55\u4fa1\u304c\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306b\u8868\u793a\u3055\u308c\u307e\u3059\uff0e -preferences.widget.message=\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306b\u3069\u306e\u30a6\u30a3\u30b8\u30a7\u30c3\u30c8\u3092\u8868\u793a\u3059\u308b\u304b\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3057\u307e\u3059 -preferences.widget.onlinestatus=\u81ea\u5206\u306e\u30aa\u30f3\u30e9\u30a4\u30f3\u72b6\u614b\u3092\u8868\u793a -preferences.widget.onlinestatus.tooltip=\u3042\u306a\u305f\u304c\u30aa\u30f3\u30e9\u30a4\u30f3\u304b\u3069\u3046\u304b\u3092\u8868\u793a\u3057\u307e\u3059\uff0e\u6709\u52b9\u306b\u3059\u308b\u3068\uff0c\u30d7\u30e9\u30a4\u30d0\u30b7\u8a2d\u5b9a\u3067\u8a73\u7d30\u306a\u8abf\u6574\u304c\u53ef\u80fd\u3067\u3059\uff0e\u7121\u52b9\u306b\u3059\u308b\u3068\uff0c\u3042\u306a\u305f\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u307e\u3059 -privacy.academicinfo=\u30a2\u30ab\u30c7\u30df\u30c3\u30af\u60c5\u5831 -privacy.basicinfo=\u57fa\u672c\u60c5\u5831 -privacy.birthyear=\u751f\u5e74\u6708\u65e5\u3092\u8868\u793a -privacy.businessinfo=\u52e4\u52d9\u5148\u60c5\u5831 -privacy.contactinfo=\u9023\u7d61\u60c5\u5831 -privacy.messages=\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u9001\u4fe1\u8a31\u53ef\u7bc4\u56f2 -privacy.myfriends=\u30de\u30a4\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u306e\u516c\u958b\u7bc4\u56f2 -privacy.mykudos=kudos \u306e\u8a55\u4fa1\u306e\u516c\u958b\u7bc4\u56f2? -privacy.mypictures=\u30de\u30a4\u5199\u771f\u306e\u516c\u958b\u7bc4\u56f2 -privacy.mystatus=\u30de\u30a4\u30b9\u30c6\u30fc\u30bf\u30b9\u306e\u516c\u958b\u7bc4\u56f2 -privacy.mywall=\u81ea\u5206\u306e\u30a6\u30a9\u30fc\u30eb\u3068\uff0c\u4ed6\u306e\u30a6\u30a9\u30fc\u30eb\u3078\u306e\u81ea\u5206\u306e\u6295\u7a3f\u306e\u516c\u958b\u7bc4\u56f2? -privacy.onlinestatus=\u30aa\u30f3\u30e9\u30a4\u30f3\u72b6\u614b\u306e\u516c\u958b\u7bc4\u56f2? -privacy.option.everyone=\u5168\u54e1 -privacy.option.nobody=\u8ab0\u3082\u3067\u304d\u306a\u3044 -privacy.option.onlyfriends=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u306e\u3042\u308b\u4eba\u3060\u3051 -privacy.option.onlyme=\u81ea\u5206\u3060\u3051 -privacy.personalinfo=\u500b\u4eba\u60c5\u5831 -privacy.profileimage=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f -privacy.search=\u691c\u7d22 -privacy.socialinfo=\u793e\u4f1a\u7684\u306a\u60c5\u5831 -privacy.staffinfo=\u30b9\u30bf\u30c3\u30d5\u60c5\u5831 -privacy.studentinfo=\u5b66\u751f\u60c5\u5831 -profile.academicprofileurl=\u5b66\u8005\u307e\u305f\u306f\u7814\u7a76URL -profile.birthday=\u751f\u5e74\u6708\u65e5 -profile.business.bio=\u8077\u6b74 -profile.business.company.description=\u52e4\u52d9\u5148\u8aac\u660e -profile.business.company.name=\u52e4\u52d9\u5148\u540d -profile.business.company.profile=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb -profile.business.company.profiles=\u52e4\u52d9\u5148\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb -profile.business.company.web=\u52e4\u52d9\u5148\u30a6\u30a7\u30d6\u30a2\u30c9\u30ec\u30b9 -profile.business.update=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u52e4\u52d9\u5148\u60c5\u5831\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f profile.contact.update=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u9023\u7d61\u60c5\u5831\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f -profile.course=\u5b66\u4f4d/\u30b3\u30fc\u30b9 -profile.department=\u5b66\u79d1 profile.email=\u30e1\u30fc\u30eb -profile.favourite.books=\u597d\u304d\u306a\u672c -profile.favourite.movies=\u597d\u304d\u306a\u6620\u753b -profile.favourite.quotes=\u597d\u304d\u306a\u8a00\u8449 -profile.favourite.tv=\u597d\u304d\u306a\u30c6\u30ec\u30d3\u756a\u7d44 -profile.gallery.image.alt=\u30de\u30a4\u5199\u771f -profile.gallery.image.upload=\u30ae\u30e3\u30e9\u30ea\u30fc\u306b\u5199\u771f\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u307e\u3057\u305f. -profile.homepage=\u30db\u30fc\u30e0\u30da\u30fc\u30b8 profile.image.change.upload=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u5909\u66f4\u3057\u307e\u3057\u305f profile.image.change.url=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u753b\u50cf\u3092\u5909\u66f4\u3057\u307e\u3057\u305f profile.info.update=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u57fa\u672c\u60c5\u5831\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f -profile.interests.update=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u500b\u4eba\u60c5\u5831\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f -profile.name.first=\u540d -profile.name.first.none=\u30e6\u30fc\u30b6 -profile.name.last=\u59d3 -profile.name.middle=\u30df\u30c9\u30eb\u30cd\u30fc\u30e0 profile.nickname=\u30cb\u30c3\u30af\u30cd\u30fc\u30e0 -profile.phone.facsimile=\u30d5\u30a1\u30c3\u30af\u30b9 -profile.phone.home=\u81ea\u5b85\u96fb\u8a71 profile.phone.mobile=\u643a\u5e2f\u96fb\u8a71 -profile.phone.work=\u8077\u5834\u96fb\u8a71 profile.position=\u8077\u4f4d -profile.publications=\u51fa\u7248\u7269\u304a\u3088\u3073\u4f1a\u8b70 -profile.room=\u90e8\u5c4b -profile.school=\u5b66\u90e8 profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook URL profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn URL -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Skype \u30e6\u30fc\u30b6\u540d -profile.socialnetworking.skype.link=Skype Me -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter URL profile.socialnetworking.update=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e SNS \u60c5\u5831\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f. -profile.staff.update=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u30b9\u30bf\u30c3\u30d5\u60c5\u5831\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f -profile.staffprofile=\u30b9\u30bf\u30c3\u30d5\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb -profile.student.update=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u53d7\u8b1b\u8005\u60c5\u5831\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f -profile.subjects=\u5c02\u9580 profile.summary=\u500b\u4eba\u7684\u306a\u6982\u8981 -profile.universityprofileurl=\u5927\u5b66\u30d7\u30ed\u30d5\u30a3\u30fc\u30ebURL -success.message.send.ok=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3057\u307e\u3057\u305f success.preferences.save.ok=\u6b63\u5e38\u306b\u4fdd\u5b58\u3057\u307e\u3057\u305f -success.privacy.save.ok=\u6b63\u5e38\u306b\u4fdd\u5b58\u3057\u307e\u3057\u305f text.edit.other.warning=\u8b66\u544a\: \u3042\u306a\u305f\u306f {0} \u306e\u60c5\u5831\u3092\u7de8\u96c6\u3057\u3066\u3044\u307e\u3059\uff0e -text.friend.add={0} \u304c\u3042\u306a\u305f\u306e\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff0e -text.friend.already={0} \u3068\u306f\u3059\u3067\u306b\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u3059\uff0e -text.friend.already.pending=\u3042\u306a\u305f\u3068 {0} \u306b\u306f\u627f\u8a8d\u5f85\u3061\u306b\u306a\u3063\u3066\u3044\u308b\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u3059\u3067\u306b\u3042\u308a\u307e\u3059\uff0e -text.friend.cancel=\u627f\u8a8d\u5f85\u3061\u306b\u306a\u3063\u3066\u3044\u308b {0} \u3078\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u30ea\u30af\u30a8\u30b9\u30c8\u306f\u901a\u77e5\u3055\u308c\u307e\u305b\u3093\uff0e -text.friend.confirm=\u3053\u308c\u306b\u3088\u308a {0} \u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u304c\u627f\u8a8d\u3055\u308c\u307e\u3059\uff0e -text.friend.confirmed=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u304c\u627f\u8a8d\u3055\u308c\u307e\u3057\u305f -text.friend.feed.num.many={0}\u500b\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3 -text.friend.feed.num.none=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u305b\u3093 -text.friend.feed.num.one=1\u500b\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3 -text.friend.ignore={0} \u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7121\u8996\u3057\u3066\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u7121\u8996\u3057\u305f\u3053\u3068\u306f\u901a\u77e5\u3055\u308c\u307e\u305b\u3093\uff0e -text.friend.none={0} \u3078\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u304c\u3042\u308a\u307e\u305b\u3093\uff0e -text.friend.pending=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u306f\u627f\u8a8d\u5f85\u3061\u3067\u3059 -text.friend.remove=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066 {0} \u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? \u524a\u9664\u3057\u305f\u3053\u3068\u306f\u901a\u77e5\u3055\u308c\u307e\u305b\u3093\uff0e -text.friend.requested=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u30ea\u30af\u30a8\u30b9\u30c8\u4e2d -text.friend.self=\u3053\u308c\u306f\u3042\u306a\u305f\u3067\u3059\! -text.gallery.feed.num.none=\u5199\u771f\u306a\u3057 -text.gallery.pictures.num.none=\u30ae\u30e3\u30e9\u30ea\u30fc\u306f\u6620\u50cf\u3092\u307e\u3060\u542b\u3093\u3067\u3044\u306a\u3044\u3002 -text.gallery.upload.tooltip=\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u304b\u3089\u306e\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306e\u30ae\u30e3\u30e9\u30ea\u30fc\u306e\u753b\u50cf\u3002 \u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3078\u306e\u753b\u50cf\u306e\u7d50\u5408\u3055\u308c\u305f\u30b5\u30a4\u30ba\u306f {0}MB\u3092\u8d85\u904e\u3059\u308b\u3079\u304d\u3067\u306f\u306a\u3044\u3002 text.image.refresh=\u6ce8\u610f\uff1a\u65b0\u3057\u3044\u30a4\u30e1\u30fc\u30b8\u304c\u3059\u3050\u306b\u8868\u793a\u3055\u308c\u306a\u3051\u308c\u3070\uff0c\u30d6\u30e9\u30a6\u30b6\u3092\u66f4\u65b0\u3057\u3066\u304f\u3060\u3055\u3044\uff0e text.image.url=\u3042\u306a\u305f\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u753b\u50cf\u306e URL \u3092\u5165\u529b\u3057\u307e\u3059 -text.messages.none=\u30e1\u30c3\u30bb\u30fc\u30b8\u306a\u3057 text.no.fields=\u3059\u3079\u3066\u306e\u60c5\u5831\u304c\u307e\u3060\u5165\u529b\u3055\u308c\u3066\u3044\u307e\u305b\u3093 text.no.status=\u4f55\u304b\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 text.or=\u307e\u305f\u306f -text.privacy.academicinfo.tooltip=\u5b66\u90e8\uff0c\u5b66\u79d1\uff0c\u5c02\u653b\u306a\u3069\u306e\u30a2\u30ab\u30c7\u30df\u30c3\u30af\u60c5\u5831\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.basicinfo.tooltip=\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u3084\u751f\u5e74\u6708\u65e5\u306a\u3069\u306e\u57fa\u672c\u60c5\u5831\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.birthyear.tooltip=\u751f\u307e\u308c\u305f\u5e74\u3092\u8868\u793a\u3059\u308b\u304b\u8868\u793a\u89e3\u9664\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u9078\u3073\u307e\u3059\uff0e\u30c1\u30a7\u30c3\u30af\u3057\u305f\u3082\u306e\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e -text.privacy.businessinfo.tooltip=\u696d\u754c\uff0c\u8077\u4f4d\uff0c\u8077\u6b74\u306a\u3069\u306e\u52e4\u52d9\u5148\u60c5\u5831\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.cannot.modify=\u3053\u308c\u3089\u306e\u5024\u306f\u7ba1\u7406\u8005\u306b\u3088\u308a\u30ed\u30c3\u30af\u3055\u308c\u3066\u3044\u3066\u5909\u66f4\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\uff0e -text.privacy.contactinfo.tooltip=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3084\u96fb\u8a71\u756a\u53f7\u306e\u3088\u3046\u306a\u3082\u306e\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.messages.tooltip=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8ab0\u304c\u9001\u4fe1\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.myfriends.tooltip=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u4e00\u89a7\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.mykudos.tooltip=kudos \u306e\u8a55\u4fa1\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e(\u8a2d\u5b9a\u304c\u6709\u52b9\u306a\u5834\u5408) -text.privacy.mypictures.tooltip=\u5199\u771f\u30ae\u30e3\u30e9\u30ea\u30fc\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.mystatus.tooltip=\u30b9\u30c6\u30fc\u30bf\u30b9\u66f4\u65b0\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.mywall.tooltip=\u30a6\u30a9\u30fc\u30eb\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.onlinestatus.tooltip=\u30aa\u30f3\u30e9\u30a4\u30f3\u72b6\u614b\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e\u4ed6\u4eba\u306b\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u307e\u3059\uff0e -text.privacy.personalinfo.tooltip=\u597d\u304d\u306a\u672c\u3084\u30c6\u30ec\u30d3\u756a\u7d44\u306a\u3069\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.profileimage.tooltip=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u3092\u8ab0\u304c\u95b2\u89a7\u3067\u304d\u308b\u304b\u3092\u9078\u3073\u307e\u3059\uff0e -text.privacy.socialinfo.tooltip=\u3060\u308c\u304cFacebook\u3001LinkedIn\u304a\u3088\u3073MySpace\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u306e\u3088\u3046\u306a\u793e\u4f1a\u7684\u306a\u30cd\u30c3\u30c8\u30ef\u30fc\u30ad\u30f3\u30b0\u60c5\u5831\u3092\u3001\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u9078\u629e\u3057\u306a\u3055\u3044\u3002 -text.privacy.staff.tooltip=\u3060\u308c\u304c\u30b9\u30bf\u30c3\u30d5\u60c5\u5831\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u9078\u629e\u3057\u306a\u3055\u3044 -text.privacy.student.tooltip=\u3060\u308c\u304c\u5b66\u751f\u60c5\u5831\u3092\u898b\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u304b\u9078\u629e\u3057\u306a\u3055\u3044 -text.profile.birthyear.tooltip=\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u8a2d\u5b9a\u3067\u751f\u307e\u308c\u305f\u5e74\u3092\u8868\u793a\u3059\u308b\u304b\u8868\u793a\u89e3\u9664\u3059\u308b\u304b\u3092\u9078\u3076\u3053\u3068\u304c\u3067\u304d\u307e\u3059 text.profile.facebook.tooltip=\u4f8b\: http\://www.facebook.com/user text.profile.linkedin.tooltip=\u4f8b\: http\://www.linkedin.com/pub/user text.profile.locked.false=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u30ed\u30c3\u30af\u3059\u308b\u3053\u3068\u306f\uff0c\u305d\u306e\u30e6\u30fc\u30b6\u306f\u81ea\u5206\u306e\u60c5\u5831\u3092\u7de8\u96c6\u3067\u304d\u306a\u3044\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\uff0e text.profile.locked.true=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u30a2\u30f3\u30ed\u30c3\u30af\u3059\u308b\u3053\u3068\u306b\u3088\u308a\uff0c\u81ea\u5206\u306e\u60c5\u5831\u3092\u7de8\u96c6\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e -text.profile.myspace.tooltip=\u4f8b\: http\://myspace.com/user -text.profile.presence.away={0}\u306f\u4e0d\u5728\u3067\u3059. -text.profile.presence.offline={0}\u306f\u5229\u7528\u53ef\u80fd\u3067\u306f\u3042\u308a\u307e\u305b\u3093 -text.profile.presence.online={0}\u306f\u30aa\u30f3\u30e9\u30a4\u30f3\u3067\u3059. -text.profile.twitter.tooltip=\u4f8b\: http\://twitter.com/sakaiproject -text.search.byinterest.all.results={1} \u306e\u691c\u7d22\u7d50\u679c\u3092{0}\u4ef6\u8868\u793a\u3057\u3066\u3044\u307e\u3059 -text.search.byinterest.label=\u5171\u901a\u306e\u8208\u5473 -text.search.byinterest.no.results={0} \u306b\u4e00\u81f4\u3059\u308b\u5171\u901a\u306e\u8208\u5473\u3092\u6301\u3063\u3066\u3044\u308b\u4eba\u306f\u3044\u307e\u305b\u3093\uff0e -text.search.byinterest.one.result={0} \u306e\u691c\u7d22\u7d50\u679c\u30921\u4ef6\u8868\u793a\u3057\u3066\u3044\u307e\u3059 -text.search.byinterest.paged.results=\u7d50\u679c\u3092 {0} \u4ef6\u8868\u793a\u3057\u3066\u3044\u307e\u3059 ({1} \u4ef6\u305a\u3064)\: {2} -text.search.byinterest.tooltip=\u8208\u5473(\u4f8b\u300c\u30b5\u30a4\u30af\u30ea\u30f3\u30b0\u300d)\u3092\u5165\u529b\u3057\uff0c\u4f3c\u305f\u8208\u5473\u3092\u6301\u3064\u4eba\u3092\u691c\u7d22\u3057\u307e\u3059 -text.search.byname.all.results={1} \u306e\u691c\u7d22\u7d50\u679c\u3092{0}\u4ef6\u8868\u793a\u3057\u3066\u3044\u307e\u3059 -text.search.byname.label=\u4eba\u306e\u540d\u524d\u307e\u305f\u306f\u30e1\u30fc\u30eb -text.search.byname.no.results={0} \u306b\u4e00\u81f4\u3059\u308b\u7d50\u679c\u306f\u3042\u308a\u307e\u305b\u3093\uff0e -text.search.byname.one.result={0} \u306e\u691c\u7d22\u7d50\u679c\u30921\u4ef6\u8868\u793a\u3057\u3066\u3044\u307e\u3059 -text.search.byname.paged.results=\u7d50\u679c\u3092 {0} \u4ef6\u8868\u793a\u3057\u3066\u3044\u307e\u3059 ({1} \u4ef6\u305a\u3064)\: {2} -text.search.byname.tooltip=\u540d\u524d\u307e\u305f\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u5165\u529b\u3057\uff0c\u691c\u7d22\u3057\u307e\u3059 -text.search.history=\u524d\u306e\u691c\u7d22 -text.search.include.connections=\u691c\u7d22\u7d50\u679c\u306b\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u542b\u3081\u308b -text.search.include.worksite=\u9078\u629e\u3057\u305f\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306b\u691c\u7d22\u3092\u5236\u9650\u3059\u308b -text.search.no.input=\u4f55\u3082\u5165\u529b\u3057\u307e\u305b\u3093\u3067\u3057\u305f -text.search.no.results={0} \u306e\u7d50\u679c\u306f\u3042\u308a\u307e\u305b\u3093\uff0e -text.search.no.worksite=\u3069\u306e\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306e\u30e1\u30f3\u30d0\u3067\u306f\u3042\u308a\u307e\u305b\u3093\uff0e -text.search.paged.results={3} \u306b\u4e00\u81f4\u3059\u308b{2}\u4ef6\u306e\u7d50\u679c\u306e\u3046\u3061{0}\u4ef6\u76ee\u304b\u3089{1}\u4ef6\u76ee\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059 -text.search.terms.label=\u691c\u7d22\u8a9e -text.search.terms.tooltip=\u540d\u524d\u307e\u305f\u306f\u30e1\u30fc\u30eb\u304b\uff0c\u8208\u5473\u306b\u3088\u308a\u691c\u7d22\u3055\u308c\u308b\u304b\u3069\u3046\u304b\u306b\u4f9d\u5b58\u3059\u308b\u691c\u7d22\u8a9e\u3092\u5165\u529b\u3057\u307e\u3059 -text.search.toomany.results={0} \u306b\u4e00\u81f4\u3059\u308b\u691c\u7d22\u7d50\u679c\u306f{1}\u4ef6\u4ee5\u4e0a\u3042\u308a\u307e\u3057\u305f\uff0e\u6700\u521d\u306e{1}\u4ef6\u3060\u3051\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059\uff0e text.upload.image.file=\u3042\u306a\u305f\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u4e0a\u306e\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 (\u6700\u5927 {0}MB)\: text.view.profile.nothing=\u3053\u306e\u4eba\u306f\u60c5\u5831\u8868\u793a\u3092\u5236\u9650\u3057\u3066\u3044\u308b\u304b\uff0c\u5171\u6709\u3059\u308b\u305f\u3081\u306e\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u60c5\u5831\u304c\u3042\u308a\u307e\u305b\u3093\uff0e -text.view.wall.nothing={0} \u306e\u30a6\u30a9\u30fc\u30eb\u306b\u8868\u793a\u3059\u308b\u30a2\u30a4\u30c6\u30e0\u306f\u3042\u308a\u307e\u305b\u3093\uff0e\u6700\u521d\u306b\u4f55\u304b\u6295\u7a3f\u3057\u3066\u4e0b\u3055\u3044\! -text.view.wall.restricted={0} \u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3060\u3051\u304c\u3053\u306e\u30a6\u30a9\u30fc\u30eb\u3092\u8868\u793a\u3067\u304d\u307e\u3059\uff0e\u3053\u306e\u30a6\u30a9\u30fc\u30eb\u3092\u8868\u793a\u3057\u305f\u308a\u6295\u7a3f\u3057\u305f\u308a\u3059\u308b\u306b\u306f\uff0c{0} \u3092\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066\u8ffd\u52a0\u3057\u3066\u4e0b\u3055\u3044\uff0e -text.wall.no.items=\u3042\u306a\u305f\u306e\u30a6\u30a9\u30fc\u30eb\u306b\u8868\u793a\u3059\u308b\u30a2\u30a4\u30c6\u30e0\u306f\u3042\u308a\u307e\u305b\u3093\uff0e -text.wall.remove.mine=\u3042\u306a\u305f\u306e\u30a6\u30a9\u30fc\u30eb\u304b\u3089\u6295\u7a3f\u3092\u524a\u9664\u3057\u307e\u3059\u304b? -text.wall.remove.other=\u3042\u306a\u305f\u306e\u30a6\u30a9\u30fc\u30eb\u304b\u3089 " {0} " \u306e\u6295\u7a3f\u3092\u524a\u9664\u3057\u307e\u3059\u304b? -text.worksite.create=\u5229\u7528\u53ef\u80fd\u306a\u30e6\u30fc\u30b6\u4e00\u89a7\u304b\u3089\u9078\u629e\u3057\u3066\uff0c\u65b0\u3057\u3044\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u3092\u4f5c\u6210\u3057\u3066\u4e0b\u3055\u3044\uff0e -text.worksite.refresh=\u4f5c\u6210\u5f8c\uff0c\u65b0\u3057\u3044\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u30d6\u30e9\u30a6\u30b6\u3092\u66f4\u65b0\u3057\u3066\u4e0b\u3055\u3044 title.change.profile.picture=\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u5199\u771f\u3092\u5909\u66f4 -title.friend.add=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3068\u3057\u3066{0}\u3092\u8ffd\u52a0 -title.friend.cancel=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u30ad\u30e3\u30f3\u30bb\u30eb\u3057\u307e\u3059\u304b? -title.friend.confirm={0}\u306e\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u627f\u8a8d\u3057\u307e\u3059\u304b? -title.friend.ignore=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u7121\u8996\u3057\u307e\u3059\u304b? -title.friend.remove=\u30b3\u30cd\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3057\u307e\u3059\u304b? -title.message.compose=\u65b0\u3057\u3044\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u4f5c\u6210 -title.wall.comment={0} \u306e\u30a6\u30a9\u30fc\u30eb\u306e\u6295\u7a3f\u306b\u30b3\u30e1\u30f3\u30c8 -title.wall.remove=\u30a6\u30a9\u30fc\u30eb\u304b\u3089\u524a\u9664\u3057\u307e\u3059\u304b? -twitter.auth.do=Twitter \u30a2\u30ab\u30a6\u30f3\u30c8\u3068\u30ea\u30f3\u30af -twitter.auth.linked=\u30ea\u30f3\u30af\u3055\u308c\u305f Twitter \u30a2\u30ab\u30a6\u30f3\u30c8 -twitter.enabled=Twitter \u9023\u643a\u3092\u6709\u52b9\u5316 -twitterUrl.UrlValidator=\u7121\u52b9\u306a URL urlField.Required=URL \u3092\u5165\u529b\u3057\u307e\u305b\u3093\u3067\u3057\u305f. -workphone.PhoneNumberValidator=\u7121\u52b9\u306a\u96fb\u8a71\u756a\u53f7 -worksite.name=\u30ef\u30fc\u30af\u30b5\u30a4\u30c8\u540d diff --git a/profile2/api/src/resources/ProfileApplication_mn.properties b/profile2/api/src/resources/ProfileApplication_mn.properties index f06c60c76fcf..5d38434a7735 100644 --- a/profile2/api/src/resources/ProfileApplication_mn.properties +++ b/profile2/api/src/resources/ProfileApplication_mn.properties @@ -7,464 +7,105 @@ RequiredValidator = '${label}' \u0448\u0430\u0430\u0440\u0434\u043B\u0430\u0433\u0430\u0442\u0430\u0439 -accessibility.connection.add = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u043E\u043E\u0440 {0}-\u044B\u0433 \u043D\u044D\u043C\u044D\u0445 \u04AF\u04AF? -accessibility.connection.confirm = {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0437\u04E9\u0432\u0448\u04E9\u04E9\u0440\u04E9\u0445 \u04AF\u04AF? -accessibility.connection.ignore = {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0437\u04E9\u0432\u0448\u04E9\u04E9\u0440\u04E9\u0445\u0433\u04AF\u0439 \u0431\u0430\u0439\u0445 \u0443\u0443? -accessibility.connection.remove = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u043E\u043E\u0441\u043E\u043E {0}-\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 \u0443\u0443? accessibility.edit.basic = \u0425\u0443\u0432\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0437\u0430\u0441\u0430\u0445 -accessibility.edit.business = \u0410\u043B\u0431\u0430\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0437\u0430\u0441\u0430\u0445 accessibility.edit.contact = \u04AE\u043D\u0434\u0441\u044D\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0437\u0430\u0441\u0430\u0445 -accessibility.edit.personal = \u0425\u043E\u043B\u0431\u043E\u043E \u0431\u0430\u0440\u0438\u0445 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0437\u0430\u0441\u0430\u0445 accessibility.edit.social = \u041D\u04E9\u0445\u04E9\u0440\u043B\u04E9\u043B\u0438\u0439\u043D \u0441\u04AF\u043B\u0436\u044D\u044D\u043D\u0438\u0439 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0437\u0430\u0441\u0430\u0445 -accessibility.edit.staff = \u0410\u0436\u0438\u043B\u0447\u0434\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0437\u0430\u0441\u0430\u0445 -accessibility.edit.student = \u041E\u044E\u0443\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u043D \u0437\u0430\u0441\u0430\u0445 -accessibility.prefs.confirms.off = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0441\u0430\u043D\u0430\u043B\u044B\u0433 \u0431\u0430\u0442\u0430\u043B\u0441\u0430\u043D \u0442\u043E\u0445\u0438\u043E\u043B\u0434\u043E\u043B\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 -accessibility.prefs.confirms.on = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0441\u0430\u043D\u0430\u043B\u044B\u0433 \u0431\u0430\u0442\u0430\u043B\u0441\u0430\u043D \u0442\u043E\u0445\u0438\u043E\u043B\u0434\u043E\u043B\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0442\u044D\u0439 -accessibility.prefs.gallery = \u041C\u0438\u043D\u0438\u0439 \u0437\u0443\u0440\u0433\u0443\u0443\u0434\u044B\u0433 \u043F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u044D\u044D\u0440 \u043C\u0438\u043D\u044C \u0445\u0430\u0440\u0443\u0443\u043B accessibility.prefs.gravatar = \u041C\u0438\u043D\u0438\u0439 gravatar-\u044B\u0433 \u043C\u0438\u043D\u0438\u0439 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0430\u0448\u0438\u0433\u043B\u0430 -accessibility.prefs.kudos = \u041C\u0438\u043D\u0438\u0439 \u043F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u044D\u044D\u0440\u0445 kudos-\u044B\u0433 \u0437\u044D\u0440\u044D\u0433\u043B\u044D\u043D \u0445\u0430\u0440\u0443\u0443\u043B -accessibility.prefs.messagenew.off = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043D\u0430\u0434\u0440\u0443\u0443 \u0448\u0438\u043D\u044D \u043C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D\u0445\u044D\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 -accessibility.prefs.messagenew.on = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043D\u0430\u0434\u0440\u0443\u0443 \u0448\u0438\u043D\u044D \u043C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D\u0445\u044D\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0442\u044D\u0439 -accessibility.prefs.messagereply.off = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u043C\u0435\u0441\u0441\u0435\u0436\u0438\u043D\u0434 \u0445\u0430\u0440\u0438\u0443 \u0431\u0438\u0447\u0438\u0445\u044D\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 -accessibility.prefs.messagereply.on = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u043C\u0435\u0441\u0441\u0435\u0436\u0438\u043D\u0434 \u0445\u0430\u0440\u0438\u0443 \u0431\u0438\u0447\u0438\u0445\u044D\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0442\u044D\u0439 accessibility.prefs.officialimage = \u0410\u043B\u0431\u0430\u043D \u0451\u0441\u043D\u044B \u043D\u044D\u0433 \u0438\u0436\u0438\u043B \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u043C\u0438\u043D\u0438\u0439 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0442\u0430\u0432\u044C -accessibility.prefs.onlinestatus = \u041C\u0438\u043D\u0438\u0439 \u043E\u043D\u043B\u0430\u0439\u043D \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u0433 \u0431\u0443\u0441\u0430\u0434 \u0445\u04AF\u043C\u04AF\u04AF\u0441\u0442 \u0445\u0430\u0440\u0443\u0443\u043B -accessibility.prefs.requests.off = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043D\u0430\u043C\u0430\u0439\u0433 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u043E\u043D\u0434\u043E\u043E \u043D\u044D\u043C\u0431\u044D\u043B \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 -accessibility.prefs.requests.on = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043D\u0430\u043C\u0430\u0439\u0433 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u043E\u043D\u0434\u043E\u043E \u043D\u044D\u043C\u0431\u044D\u043B \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0442\u044D\u0439 -accessibility.prefs.wallnew.off = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043C\u0438\u043D\u0438\u0439 wall-\u0434 post \u0445\u0438\u0439\u0432\u044D\u043B \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 -accessibility.prefs.wallnew.on = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D \u043C\u0438\u043D\u0438\u0439 wall-\u0434 post \u0445\u0438\u0439\u0432\u044D\u043B \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0442\u044D\u0439 -accessibility.prefs.worksite.off = \u0425\u043E\u043B\u0431\u043E\u043B\u0442 \u043D\u0430\u043C\u0430\u0439\u0433 \u0448\u0438\u043D\u044D \u0430\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433\u0442 \u043D\u044D\u043C\u044D\u0445\u044D\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 -accessibility.prefs.worksite.on = \u0425\u043E\u043B\u0431\u043E\u043B\u0442 \u043D\u0430\u043C\u0430\u0439\u0433 \u0448\u0438\u043D\u044D \u0430\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433\u0442 \u043D\u044D\u043C\u044D\u0445\u044D\u0434 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D, \u0438\u0434\u044D\u0432\u0445\u0438\u0442\u044D\u0439 -accessibility.privacy.academic = \u0421\u0443\u0440\u0433\u0443\u0443\u043B\u044C, \u0442\u044D\u043D\u0445\u0438\u043C, \u0441\u0443\u0440\u0433\u0430\u043B\u0442 \u0437\u044D\u0440\u044D\u0433 \u0441\u0443\u0440\u0433\u0443\u0443\u043B\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.basic = \u041D\u044D\u0440, \u0442\u04E9\u0440\u0441\u04E9\u043D \u04E9\u0434\u04E9\u0440 \u0437\u044D\u0440\u044D\u0433 \u04AF\u043D\u0434\u0441\u044D\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u04AF\u04AF\u0434\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.birthyear = \u0422\u04E9\u0440\u0441\u04E9\u043D \u0436\u0438\u043B\u044D\u044D \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445 \u044E\u043C\u0443\u0443 \u043D\u0443\u0443\u0445 \u044D\u0441\u044D\u0445\u044D\u044D \u0441\u043E\u043D\u0433\u043E\u0445. \u0417\u04E9\u0432\u04E9\u043B\u0441\u04E9\u043D \u043D\u044C \u0445\u0430\u0440\u0430\u0433\u0434\u0430\u043D\u0430. -accessibility.privacy.business = \u04AE\u0439\u043B\u0434\u0432\u044D\u0440, \u0430\u043B\u0431\u0430\u043D \u0442\u0443\u0448\u0430\u0430\u043B, \u0430\u0436\u043B\u044B\u043D \u043D\u0430\u043C\u0442\u0430\u0440 \u0437\u044D\u0440\u044D\u0433 \u0430\u043B\u0431\u0430\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u04AF\u04AF\u0434\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.contact = \u0418-\u041C\u044D\u0439\u043B \u0445\u0430\u044F\u0433, \u0443\u0442\u0430\u0441\u043D\u044B \u0434\u0443\u0433\u0430\u0430\u0440 \u0437\u044D\u0440\u044D\u0433 \u0437\u04AF\u0439\u043B\u0441\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.friends = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0447\u0438\u043D\u044C \u0436\u0430\u0433\u0441\u0430\u0430\u043B\u0442\u044B\u0433 \u0445\u044D\u043D \u04AF\u0437\u044D\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.image = \u0425\u044D\u043D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0447\u0438\u043D\u044C \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u04AF\u0437\u044D\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.kudos = kudos \u0437\u044D\u0440\u044D\u0433\u043B\u044D\u043B\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445 (Preferences-\u0434 \u0438\u0434\u044D\u0432\u0445\u0438\u0436\u04AF\u04AF\u043B\u0431\u044D\u043B). -accessibility.privacy.messages = \u0425\u044D\u043D \u0442\u0430\u043D\u0434 \u043C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.onlinestatus = \u041E\u043D\u043B\u0430\u0439\u043D \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.personal = \u0425\u044D\u043D \u0434\u0443\u0442\u0430\u0439 \u043D\u043E\u043C, \u0442\u0435\u043B\u0435\u0432\u0438\u0437\u0438\u0439\u043D \u0448\u043E\u0443 \u0437\u044D\u0440\u0433\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.pictures = \u0425\u044D\u043D \u0437\u0443\u0440\u0433\u0438\u0439\u043D \u0433\u0430\u043B\u0435\u0440\u0435\u0439\u0433 \u0447\u0438\u043D\u044C \u04AF\u0437\u044D\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.social = Facebook, LinkedIn, MySpace \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u0443\u0443\u0434 \u0437\u044D\u0440\u044D\u0433 \u041D\u04E9\u0445\u04E9\u0440\u043B\u04E9\u043B\u0438\u0439\u043D \u0441\u04AF\u043B\u0436\u044D\u044D\u043D\u0438\u0439 \u0447\u0438\u043D\u044C \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.staff = \u0410\u0436\u0438\u043B\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445 -accessibility.privacy.status = \u0425\u044D\u043D \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u043D \u04E9\u04E9\u0440\u0447\u043B\u04E9\u043B\u0442\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -accessibility.privacy.student = \u041E\u044E\u0443\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445 -accessibility.privacy.wall = \u0425\u044D\u043D \u0445\u044D\u043D \u0442\u0430\u043D\u044B \u0445\u0430\u043D\u044B\u0433 \u0445\u0430\u0440\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439\u0433 \u0441\u043E\u043D\u0433\u043E\u043D\u043E \u0443\u0443. -accessibility.profile.birthday = \u0422\u04E9\u0440\u0441\u04E9\u043D \u04E9\u0434\u0440\u04E9\u04E9 \u0441\u043E\u043D\u0433\u043E\u043D\u043E \u0443\u0443. Preferences-\u0434\u0430\u0430 \u0442\u0430 \u0442\u04E9\u0440\u0441\u04E9\u043D \u0436\u0438\u043B\u044D\u044D \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445 \u044D\u0441\u044D\u0445\u044D\u044D \u0445\u044F\u043D\u0430\u0436 \u0431\u043E\u043B\u043D\u043E. -accessibility.profile.status.clear = \u0421\u0442\u0430\u0442\u0443\u0441\u0430\u0430 \u0430\u0440\u0438\u043B\u0433\u0430\u0445 -accessibility.search.connections = \u0425\u0430\u0439\u043B\u0442\u044B\u043D \u04AF\u0440 \u0434\u04AF\u043D\u0434 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u0433 \u0431\u0430\u0433\u0442\u0430\u0430 -accessibility.search.worksite = \u0421\u043E\u043D\u0433\u043E\u0441\u043E\u043D \u0430\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433\u0442 \u0445\u0430\u0439\u043B\u0442\u044B\u0433 \u0445\u044F\u0437\u0433\u0430\u0430\u0440\u043B\u0430 -accessibility.wall.comment = {0}-\u044B\u043D wall post \u0434\u044D\u044D\u0440 \u043A\u043E\u043C\u043C\u0435\u043D\u0442 \u0431\u0438\u0447\u0438\u0445 -accessibility.wall.remove.mine = Wall-\u043E\u043E\u0441\u043E\u043E post-\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 \u0443\u0443? -accessibility.wall.remove.other = Wall-\u043E\u043E\u0441\u043E\u043E {0} post-\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 \u0443\u0443? -button.business.add.profile = \u041A\u043E\u043C\u043F\u0430\u043D\u044B \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u0433 \u043D\u044D\u043C\u044D\u0445 -button.business.remove.profile = \u041A\u043E\u043C\u043F\u0430\u043D\u044B \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 button.cancel = \u0426\u0443\u0446\u043B\u0430\u0445 button.close = \u0425\u0430\u0430\u0445 button.edit = \u0417\u0430\u0441\u0430\u0445 -button.friend.add = \u0425\u043E\u043B\u0431\u043E\u043B\u0442 \u043D\u044D\u043C\u044D\u0445 -button.friend.cancel = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0446\u0443\u0446\u043B\u0430\u0445 -button.friend.confirm = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 -button.friend.ignore = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442\u044D\u044D\u0441 \u0442\u0430\u0442\u0433\u0430\u043B\u0437\u0430\u0445 -button.friend.remove = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 -button.gallery.remove = \u0417\u0443\u0440\u0430\u0433 \u0445\u0430\u0441\u0430\u0445 -button.gallery.remove.confirm = \u0425\u0430\u0441\u0430\u043B\u0442\u044B\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 -button.gallery.setprofile = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0442\u0430\u0432\u044C -button.gallery.setprofile.confirm = \u0428\u0438\u043D\u044D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 -button.gallery.upload = \u0421\u043E\u043D\u0433\u043E\u0441\u043E\u043D \u0444\u0430\u0439\u043B\u0443\u0443\u0434\u044B\u0433 \u043E\u0440\u0443\u0443\u043B\u0430\u0445 button.link = \u041B\u0438\u043D\u043A -button.message.reply = \u0425\u0430\u0440\u0438\u0443\u043B\u0430\u0445 -button.message.send = \u041C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D\u0445 button.save = \u0425\u0430\u0434\u0433\u0430\u043B\u0430\u0445 button.save.changes = \u04E8\u04E9\u0440\u0447\u043B\u04E9\u043B\u0442\u04AF\u04AF\u0434\u0438\u0439\u0433 \u0445\u0430\u0434\u0433\u0430\u043B\u0430\u0445 button.save.settings = \u0422\u043E\u0445\u0438\u0440\u0433\u043E\u043E\u043D\u0443\u0443\u0434\u044B\u0433 \u0445\u0430\u0434\u0433\u0430\u043B\u0430\u0445 button.sayit = \u04AE\u04AF\u043D\u0438\u0439\u0433 \u0445\u044D\u043B -button.search.byinterest = \u041D\u0438\u0439\u0442\u043B\u044D\u0433 \u0441\u043E\u043D\u0438\u0440\u0445\u043B\u043E\u043E\u0440 \u0445\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 -button.search.byname = \u041D\u044D\u0440 \u044E\u043C\u0443\u0443 email-\u044D\u044D\u0440 \u0445\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 -button.search.clear = \u0425\u0430\u0439\u043B\u0442\u044B\u0433 \u0430\u0440\u0438\u043B\u0433\u0430\u0445 -button.search.history.clear = \u0422\u04AF\u04AF\u0445\u0438\u0439\u0433 \u0430\u0440\u0438\u043B\u0433\u0430\u0445 button.upload = \u041E\u0440\u0443\u0443\u043B\u0430\u0445 button.url.add = URL \u043D\u044D\u043C\u044D\u0445 -button.wall.comment = \u041A\u043E\u043C\u043C\u0435\u043D\u0442 \u043D\u044D\u043C\u044D\u0445 -button.wall.post = Wall-\u0434 Post \u0445\u0438\u0439\u0445 -button.wall.remove = Wall-\u0430\u0430\u0441 \u0445\u0430\u0441\u0430\u0445 -button.worksite.cancel = \u0426\u0443\u0446\u043B\u0430\u0445 -button.worksite.create = \u04AE\u04AF\u0441\u0433\u044D\u0445 - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 email \u0445\u0430\u044F\u0433 error.empty.file.uploaded = \u0422\u0430 \u0445\u043E\u043E\u0441\u043E\u043D \u0444\u0430\u0439\u043B \u043E\u0440\u0443\u0443\u043B\u0430\u0445\u044B\u0433 \u043E\u0440\u043E\u043B\u0434\u043B\u043E\u043E. error.file.save.failed = \u0424\u0430\u0439\u043B\u044B\u0433 \u0445\u0430\u0434\u0433\u0430\u043B\u0436 \u0447\u0430\u0434\u0441\u0430\u043D\u0433\u04AF\u0439. -error.friend.add.failed = {0}-\u0440\u0443\u0443 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442 \u0438\u043B\u0433\u044D\u044D\u0445\u044D\u0434 \u0430\u043B\u0434\u0430\u0430 \u0433\u0430\u0440\u043B\u0430\u0430. -error.friend.already.confirmed = \u0422\u0430 \u0430\u043B\u044C \u0445\u044D\u0434\u0438\u0439\u043D\u044D {0}-\u0442\u0430\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u0441\u043E\u043D \u0431\u0430\u0439\u043D\u0430. -error.friend.already.pending = {0}-\u0442\u0430\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442 \u0445\u04AF\u043B\u044D\u044D\u0433\u0434\u044D\u0436 \u0431\u0430\u0439\u043D\u0430. -error.friend.confirm.failed = {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445\u0430\u0434 \u0430\u043B\u0434\u0430\u0430 \u0433\u0430\u0440\u043B\u0430\u0430. -error.friend.ignore.failed = {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u044D\u044D\u0441 \u0442\u0430\u0442\u0433\u0430\u043B\u0437\u0430\u0445\u0430\u0434 \u0430\u043B\u0434\u0430\u0430 \u0433\u0430\u0440\u043B\u0430\u0430. -error.friend.not.friend = \u0422\u0430 {0}-\u0442\u0430\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u043E\u0433\u04AF\u0439 \u0442\u0443\u043B \u0442\u044D\u0434 \u0445\u0430\u0441\u0430\u0433\u0434\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0433\u04AF\u0439! -error.friend.not.pending.confirm = {0}-\u0430\u0430\u0441 \u044F\u043C\u0430\u0440\u0447 \u0445\u04AF\u043B\u044D\u044D\u0433\u0434\u044D\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442 \u0431\u0430\u0439\u0445\u0433\u04AF\u0439 \u0442\u0443\u043B \u0442\u0430 \u04AF\u04AF\u043D\u0438\u0439\u0433 \u0431\u0430\u0442\u0430\u043B\u0436 \u0431\u043E\u043B\u043E\u0445\u0433\u04AF\u0439! -error.friend.not.pending.ignore = {0}-\u0430\u0430\u0441 \u044F\u043C\u0430\u0440\u0447 \u0445\u04AF\u043B\u044D\u044D\u0433\u0434\u044D\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442 \u0431\u0430\u0439\u0445\u0433\u04AF\u0439 \u0442\u0443\u043B \u0442\u0430 \u04AF\u04AF\u043D\u044D\u044D\u0441 \u0442\u0430\u0442\u0433\u0430\u043B\u0437\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0433\u04AF\u0439! -error.friend.remove.failed = \u0422\u0430\u043D\u044B \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0436\u0430\u0433\u0441\u0430\u0430\u043B\u0442\u0430\u0430\u0441 {0}-\u044B\u0433 \u0445\u0430\u0441\u0430\u0445\u0430\u0434 \u0430\u043B\u0434\u0430\u0430 \u0433\u0430\u0440\u043B\u0430\u0430. -error.gallery.remove.failed = \u0413\u0430\u043B\u0435\u0440\u0435\u0439\u0433\u0430\u0430\u0441 \u0437\u0443\u0440\u0430\u0433 \u0445\u0430\u0441\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0433\u04AF\u0439. -error.gallery.setprofile.failed = \u0417\u0443\u0440\u0433\u0438\u0439\u0433 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0430\u0448\u0438\u0433\u043B\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0433\u04AF\u0439. -error.gallery.upload.warning = \u042D\u0445\u043B\u044D\u044D\u0434 \u0444\u0430\u0439\u043B(\u0443\u0443\u0434)-\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. error.invalid.image.type = \u0417\u04E9\u0432\u0445\u04E9\u043D PNG, JPG, GIF \u0442\u04E9\u0440\u043B\u0438\u0439\u043D \u0437\u0443\u0440\u0433\u0443\u0443\u0434 \u0437\u04E9\u0432\u0448\u04E9\u04E9\u0440\u04E9\u0433\u0434\u0441\u04E9\u043D. -error.message.required.body = \u041C\u0435\u0441\u0441\u0435\u0436 \u0445\u043E\u043E\u0441\u043E\u043D \u0431\u0430\u0439\u0436 \u0431\u043E\u043B\u043E\u0445\u0433\u04AF\u0439. -error.message.required.to = -\u0440\u0443\u0443 \u043C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D\u0445\u0438\u0439\u043D \u0442\u0443\u043B\u0434 \u0442\u0430 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u043E\u043E \u0441\u043E\u043D\u0433\u043E\u0445 \u0451\u0441\u0442\u043E\u0439. -error.message.send.failed = \u041C\u0435\u0441\u0441\u0435\u0436\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0438\u043B\u0433\u044D\u044D\u0445\u044D\u0434 \u0430\u043B\u0434\u0430\u0430 \u0433\u0430\u0440\u043B\u0430\u0430. error.no.file.uploaded = \u0422\u0430 \u0444\u0430\u0439\u043B \u0441\u043E\u043D\u0433\u043E\u0441\u043E\u043D\u0433\u04AF\u0439. error.password.required = \u041D\u0443\u0443\u0446 \u04AF\u0433 \u0448\u0430\u0430\u0440\u0434\u043B\u0430\u0433\u0430\u0442\u0430\u0439. error.preferences.save.failed = \u0425\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.privacy.save.failed = \u0425\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.profile.save.academic.failed = \u0425\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.profile.save.business.failed = \u0425\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. error.profile.save.contact.failed = \u0425\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. error.profile.save.info.failed = \u0425\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.profile.save.interests.failed = \u0425\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.twitter.details.invalid = Twitter-\u044B\u043D \u0447\u0438\u043D\u044C \u043D\u044D\u0440, \u043D\u0443\u0443\u0446 \u04AF\u0433 \u0431\u0430\u0442\u0430\u043B\u0433\u0430\u0430\u0436\u0441\u0430\u043D\u0433\u04AF\u0439. error.url.save.failed = Url-\u044B\u0433 \u0445\u0430\u0434\u0433\u0430\u043B\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. error.username.required = \u0425\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447\u0438\u0439\u043D \u043D\u044D\u0440 \u0448\u0430\u0430\u0440\u0434\u043B\u0430\u0433\u0430\u0442\u0430\u0439. -error.wall.comment.empty = \u0422\u0430 \u0445\u043E\u043E\u0441\u043E\u043D \u043A\u043E\u043C\u043C\u0435\u043D\u0442 \u043D\u044D\u043C\u044D\u0445\u0438\u0439\u0433 \u043E\u0440\u043E\u043B\u0434\u043B\u043E\u043E. -error.wall.comment.failed = \u041A\u043E\u043C\u043C\u0435\u043D\u0442 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.wall.post.empty = \u0422\u0430 \u0445\u043E\u043E\u0441\u043E\u043D post \u0445\u0438\u0439\u0445\u0438\u0439\u0433 \u043E\u0440\u043E\u043B\u0434\u043B\u043E\u043E. -error.wall.post.failed = Post \u0445\u0438\u0439\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.worksite.create.failed = \u0410\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433 \u04AF\u04AF\u0441\u0433\u044D\u0436 \u0431\u043E\u043B\u0441\u043E\u043D\u0433\u04AF\u0439. -error.worksite.no.title = \u0422\u0430 \u0441\u0430\u0439\u0442\u0430\u0434 \u043D\u044D\u0440 \u04E9\u0433\u04E9\u0445 \u0451\u0441\u0442\u043E\u0439. exception.heading.session.expired = \u0421\u0443\u0440\u0433\u0430\u043B\u0442\u044B\u043D \u0445\u0443\u0433\u0430\u0446\u0430\u0430 \u0434\u0443\u0443\u0441\u0441\u0430\u043D. exception.text.session.expired = \u0425\u0430\u0440\u0430\u043C\u0441\u0430\u043B\u0442\u0430\u0439 \u043D\u044C \u0441\u0443\u0440\u0433\u0430\u043B\u0442\u044B\u043D \u0447\u0438\u043D\u044C \u0445\u0443\u0433\u0430\u0446\u0430\u0430 \u0434\u0443\u0443\u0441\u0441\u0430\u043D. \u0425\u0443\u0443\u0434\u0441\u0430\u0430 \u0441\u044D\u0440\u0433\u044D\u044D\u0445 \u044E\u043C\u0443\u0443 \u0441\u0443\u0440\u0433\u0430\u043B\u0442\u0430\u0430 \u0430\u0445\u0438\u043D \u044D\u0445\u043B\u04AF\u04AF\u043B\u044D\u0445\u0438\u0439\u043D \u0442\u0443\u043B\u0434 \u0433\u0430\u0440\u0430\u0430\u0434 \u0434\u0430\u0445\u0438\u043D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0436 \u043E\u0440\u043D\u043E \u0443\u0443. facebookUrl.UrlValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 URL -facsimile.PhoneNumberValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 \u0443\u0442\u0430\u0441\u043D\u044B \u0434\u0443\u0433\u0430\u0430\u0440 - form.uploadTooLarge = \u041E\u0440\u0443\u0443\u043B\u0430\u0445 \u0437\u04AF\u0439\u043B\u0438\u0439\u043D \u0447\u0438\u043D\u044C \u0445\u044D\u043C\u0436\u044D\u044D ${maxSize}-\u0430\u0430\u0441 \u0431\u0430\u0433\u0430 \u0431\u0430\u0439\u0445 \u0451\u0441\u0442\u043E\u0439. -heading.academic = \u0421\u0443\u0440\u0433\u0443\u0443\u043B\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.academic.edit = \u0421\u0443\u0440\u0433\u0443\u0443\u043B\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B heading.basic = \u04AE\u043D\u0434\u0441\u044D\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B heading.basic.edit = \u04AE\u043D\u0434\u0441\u044D\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.business = \u0410\u0436\u043B\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.business.edit = \u0410\u0436\u043B\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B heading.contact = \u0425\u043E\u043B\u0431\u043E\u043E \u0431\u0430\u0440\u0438\u0445 \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B heading.contact.edit = \u0425\u043E\u043B\u0431\u043E\u043E \u0431\u0430\u0440\u0438\u0445 \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.friend.requests = \u0425\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442 - -heading.friends.my = \u041C\u0438\u043D\u0438\u0439 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434 - -heading.friends.view = {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434 - -heading.interests = \u0425\u0443\u0432\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.interests.edit = \u0425\u0443\u0432\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.messages = \u041C\u0438\u043D\u0438\u0439 \u043C\u0435\u0441\u0441\u0435\u0436\u04AF\u04AF\u0434 -heading.pictures.addpicture = \u0417\u0443\u0440\u0430\u0433 \u043D\u044D\u043C\u044D\u0445 -heading.pictures.my.pictures = \u041C\u0438\u043D\u0438\u0439 \u0437\u0443\u0440\u0433\u0443\u0443\u0434 -heading.pictures.view.pictures = {0}-\u044B\u043D \u0437\u0443\u0440\u0433\u0443\u0443\u0434 heading.preferences = \u0421\u043E\u043D\u0433\u043E\u043B\u0442\u0443\u0443\u0434 -heading.privacy = \u0425\u0443\u0432\u0438\u0439\u043D \u0442\u043E\u0445\u0438\u0440\u0433\u043E\u043E\u043D\u0443\u0443\u0434 -heading.search = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u0443\u0443\u0434\u044B\u0433 \u0445\u0430\u0439\u0445 -heading.section.academic.staff = \u0410\u0436\u0438\u043B\u0447\u0434\u0430\u0434: -heading.section.academic.students = \u041E\u044E\u0443\u0442\u043D\u0443\u0443\u0434\u0430\u0434: heading.section.email = \u041C\u044D\u0439\u043B\u044D\u044D\u0440 \u044F\u0432\u0443\u0443\u043B\u0430\u0445 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u04AF\u04AF\u0434 heading.section.image = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0438\u0439\u043D \u0442\u043E\u0445\u0438\u0440\u0433\u043E\u043E -heading.section.twitter = Twitter-\u044B\u043D \u043D\u044D\u0433\u0434\u044D\u043B heading.section.widget = \u0412\u0438\u0434\u0436\u0435\u0442\u044B\u043D \u0442\u043E\u0445\u0438\u0440\u0433\u043E\u043E\u043D\u0443\u0443\u0434 heading.social = \u041D\u04E9\u0445\u04E9\u0440\u043B\u04E9\u043B\u0438\u0439\u043D \u0441\u04AF\u043B\u0436\u044D\u044D heading.social.edit = \u041D\u04E9\u0445\u04E9\u0440\u043B\u04E9\u043B\u0438\u0439\u043D \u0441\u04AF\u043B\u0436\u044D\u044D -heading.staff = \u0410\u0436\u0438\u043B\u0447\u0434\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.staff.edit = \u0410\u0436\u0438\u043B\u0447\u0434\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.student = \u041E\u044E\u0443\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.student.edit = \u041E\u044E\u0443\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -heading.widget.my.friends = \u041C\u0438\u043D\u0438\u0439 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434 -heading.widget.my.kudos = \u041C\u0438\u043D\u0438\u0439 kudos -heading.widget.my.pictures = \u041C\u0438\u043D\u0438\u0439 \u0437\u0443\u0440\u0433\u0443\u0443\u0434 -heading.widget.view.friends = {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434 -heading.widget.view.kudos = {0}-\u044B\u043D kudos -heading.widget.view.pictures = {0}-\u044B\u043D \u0437\u0443\u0440\u0433\u0443\u0443\u0434 - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 URL - -homephone.PhoneNumberValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 \u0443\u0442\u0430\u0441\u043D\u044B \u0434\u0443\u0433\u0430\u0430\u0440 link.change.profile.picture = \u0417\u0443\u0440\u0430\u0433 \u04E9\u04E9\u0440\u0447\u043B\u04E9\u0445 link.edit = \u0417\u0430\u0441\u0430\u0445 link.edit.info = \u041C\u044D\u0434\u044D\u044D\u043B\u044D\u043B \u0437\u0430\u0441\u0430\u0445 -link.friend.add = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u044D\u043B\u0431\u044D\u0440\u044D\u044D\u0440 \u043D\u044D\u043C\u044D\u0445 -link.friend.add.name = {0}-\u044B\u0433 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u044D\u043B\u0431\u044D\u0440\u044D\u044D\u0440 \u043D\u044D\u043C\u044D\u0445 -link.friend.confirm = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 -link.friend.feed.search = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u0430\u0434 \u0445\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 -link.friend.feed.view = \u0411\u04AF\u0445 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u044B\u0433 \u04AF\u0437\u044D\u0445 -link.friend.ignore = \u0425\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445\u043E\u043E\u0441 \u0442\u0430\u0442\u0433\u0430\u043B\u0437\u0430\u0445 -link.friend.remove = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 -link.friend.request.act = \u042D\u043D\u044D \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0434\u0430\u0433\u0430\u0445 -link.friend.search = \u0417\u0430\u0440\u0438\u043C \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u0430\u0434 \u0445\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 \u04AF\u04AF? -link.gallery.feed.addnew = \u0428\u0438\u043D\u044D \u0437\u0443\u0440\u0430\u0433 \u043D\u044D\u043C\u044D\u0445 -link.gallery.feed.view = \u0411\u04AF\u0445 \u0437\u0443\u0440\u0433\u0443\u0443\u0434\u044B\u0433 \u04AF\u0437\u044D\u0445 -link.gallery.image.view = \u0414\u04AF\u0440\u0441\u0438\u0439\u0433 \u04AF\u0437\u044D\u0445 -link.messages.back = \u041C\u0435\u0441\u0441\u0435\u0436\u0438\u0439\u043D \u0436\u0430\u0433\u0441\u0430\u0430\u043B\u0442\u0440\u0443\u0443 \u0431\u0443\u0446\u0430\u0445 -link.messages.compose = \u041C\u0435\u0441\u0441\u0435\u0436 \u0431\u0438\u0447\u0438\u0445 -link.messages.mymessages = \u041C\u0438\u043D\u0438\u0439 \u043C\u0435\u0441\u0441\u0435\u0436\u04AF\u04AF\u0434 -link.messages.viewthread = \u0425\u043E\u043B\u0431\u043E\u043E\u0433 \u04AF\u0437\u044D\u0445 -link.my.friends = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434 -link.my.friends.search = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u0430\u0434 \u0445\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 -link.my.friends.tooltip = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u0430\u0430 \u04AF\u0437\u044D\u0436 \u0443\u0434\u0438\u0440\u0434\u0430\u0445 -link.my.messages = \u041C\u0435\u0441\u0441\u0435\u0436\u04AF\u04AF\u0434 -link.my.messages.tooltip = \u0425\u0443\u0432\u0438\u0439\u043D \u043C\u0435\u0441\u0441\u0435\u0436\u04AF\u04AF\u0434\u0438\u0439\u0433 \u0438\u043B\u0433\u044D\u044D\u0445 \u0431\u043E\u043B\u043E\u043D \u0443\u043D\u0448\u0438\u0445 -link.my.pictures = \u0417\u0443\u0440\u0433\u0443\u0443\u0434 -link.my.pictures.tooltip = \u0417\u0443\u0440\u0430\u0433 \u043D\u044D\u043C\u044D\u044D\u0434 \u0433\u0430\u043B\u0435\u0440\u0435\u0439\u0433\u0430\u0430 \u04AF\u0437\u044D\u0445 link.my.preferences = \u0421\u043E\u043D\u0433\u043E\u043B\u0442\u0443\u0443\u0434 link.my.preferences.tooltip = \u0421\u043E\u043D\u0433\u043E\u043B\u0442\u0443\u0443\u0434\u0430\u0430 \u0443\u0434\u0438\u0440\u0434\u0430\u0445 -link.my.privacy = \u0425\u0443\u0432\u0438\u0439\u043D \u0445\u044D\u0440\u044D\u0433 -link.my.privacy.tooltip = \u0425\u0443\u0432\u0438\u0439\u043D \u0445\u044D\u0440\u0433\u044D\u044D \u0443\u0434\u0438\u0440\u0434\u0430\u0445 link.my.profile = \u041C\u0438\u043D\u0438\u0439 \u043F\u0440\u043E\u0444\u0430\u0439\u043B link.my.profile.tooltip = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u0430\u0430 \u04AF\u0437\u044D\u0436 \u0437\u0430\u0441\u0430\u0445 -link.my.search = \u0425\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 -link.my.search.tooltip = \u0425\u04AF\u043C\u04AF\u04AF\u0441\u0438\u0439\u0433 \u0445\u0430\u0439\u0436 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u0443\u0443\u0434\u044B\u0433 \u043D\u044C \u04AF\u0437\u044D\u0445 link.profile.locked.false = \u042D\u043D\u044D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u0433 \u0442\u04AF\u0433\u0436\u0438\u0445 \u04AF\u04AF? link.profile.locked.true = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0442\u04AF\u0433\u0436\u0438\u0433\u0434\u0441\u044D\u043D. \u0422\u04AF\u0433\u0436\u044D\u044D\u0433 \u0442\u0430\u0439\u043B\u0430\u0445 \u0443\u0443? -link.status.clear = \u0410\u0440\u0438\u043B\u0433\u0430\u0445 -link.status.update = \u0428\u0438\u043D\u044D\u0447\u043B\u044D\u0445 -link.tab.profile = \u041F\u0440\u043E\u0444\u0430\u0439\u043B -link.tab.profile.tooltip = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u0433 \u04AF\u0437\u044D\u0445 -link.tab.wall = Wall -link.tab.wall.tooltip = Wall-\u044B\u0433 \u04AF\u0437\u044D\u0445 link.title.confirmfriend = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 link.title.ignorefriend = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442\u044D\u044D\u0441 \u0442\u0430\u0442\u0433\u0430\u043B\u0437\u0430\u0445 link.title.removefriend = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 link.title.rss = \u04E8\u04E9\u0440\u0438\u0439\u043D \u0431\u043E\u043B\u0433\u043E\u0441\u043E\u043D RSS-\u044B\u043D \u0442\u044D\u0436\u044D\u044D\u043B\u0438\u0439\u0433 \u04AF\u0437\u044D\u0436 \u04E9\u04E9\u0440\u0442\u04E9\u04E9 \u0442\u043E\u0445\u0438\u0440\u0443\u0443\u043B\u0430\u043D \u04E9\u04E9\u0440\u0447\u043B\u04E9\u0445 -link.title.unlinktwitter = Twitter-\u044B\u043D \u0431\u04AF\u0440\u0442\u0433\u044D\u043B\u0438\u0439\u0433 \u0441\u0430\u043B\u0433\u0430\u0445 -link.title.wall.comment = {0}-\u044B\u043D wall post-\u0434 \u043A\u043E\u043C\u043C\u0435\u043D\u0442 \u0431\u0438\u0447\u0438\u0445 -link.title.wall.remove = Wall-\u0430\u0430\u0441\u0430\u0430 \u0445\u0430\u0441\u0430\u0445 -link.view.friends = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u044B\u0433 \u04AF\u0437\u044D\u0445 -link.wall.item.comment = \u041A\u043E\u043C\u043C\u0435\u043D\u0442 -link.wall.item.remove = \u0425\u0430\u0441\u0430\u0445 -link.worksite.create = \u0410\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433 \u04AF\u04AF\u0441\u0433\u044D\u0445 linkedinUrl.UrlValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 URL -message.message = \u041C\u0435\u0441\u0441\u0435\u0436 -message.reply = \u0425\u0430\u0440\u0438\u0443\u043B\u0430\u0445 -message.subject = \u0421\u044D\u0434\u044D\u0432 -message.to = \u0440\u0443\u0443 - mobilephone.PhoneNumberValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 \u0443\u0442\u0430\u0441\u043D\u044B \u0434\u0443\u0433\u0430\u0430\u0440 -myspaceUrl.UrlValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 URL - page.title = \u041F\u0440\u043E\u0444\u0430\u0439\u043B -palette.available = \u0411\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439 -palette.selected = \u0421\u043E\u043D\u0433\u043E\u0433\u0434\u0441\u043E\u043D - -pictures.addpicture = \u0413\u0430\u043B\u0435\u0440\u0435\u0439\u0434 \u0448\u0438\u043D\u044D \u0437\u0443\u0440\u0433\u0438\u0439\u043D \u0444\u0430\u0439\u043B\u0443\u0443\u0434 \u043D\u044D\u043C\u044D\u0445 -pictures.removepicture = \u042D\u043D\u044D \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u0433\u0430\u043B\u0435\u0440\u0435\u0439\u0433\u0430\u0430\u0441 \u0445\u0430\u0441\u0430\u0445 -pictures.removepicture.confirm = \u042D\u043D\u044D \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u0433\u0430\u043B\u0435\u0440\u0435\u0439\u0433\u0430\u0430\u0441 \u0445\u0430\u0441\u0430\u0445\u044B\u0433 \u0445\u04AF\u0441\u0447 \u0431\u0430\u0439\u0433\u0430\u0430\u0434\u0430\u0430 \u0438\u0442\u0433\u044D\u043B\u0442\u044D\u0439 \u0431\u0430\u0439\u043D\u0430 \u0443\u0443? -pictures.setprofileimage = \u042D\u043D\u044D \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u043C\u0438\u043D\u0438\u0439 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0442\u0430\u0432\u044C -pictures.setprofileimage.confirm = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u043E\u0434\u043E\u043E\u0433\u0438\u0439\u043D \u0437\u0443\u0440\u0433\u0430\u0430 \u044D\u043D\u044D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u043E\u0440\u043B\u0443\u0443\u043B\u0430\u0445\u044B\u0433 \u0445\u04AF\u0441\u0447 \u0431\u0430\u0439\u0433\u0430\u0430\u0434\u0430\u0430 \u0438\u0442\u0433\u044D\u043B\u0442\u044D\u0439 \u0431\u0430\u0439\u043D\u0430 \u0443\u0443? - preference.option.off = \u0423\u043D\u0442\u0440\u0430\u0430\u0445 preference.option.on = \u0410\u0441\u0430\u0430\u0445 -preferences.email.confirms = \u041C\u0438\u043D\u0438\u0439 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 -preferences.email.message = \u0425\u044D\u043D \u043D\u044D\u0433\u044D\u043D ...-\u0445\u0430\u0434 {0} \u0433\u044D\u0441\u044D\u043D \u0445\u0430\u044F\u0433\u0430\u0430\u0440 \u043D\u0430\u0434\u0440\u0443\u0443 \u043C\u044D\u0439\u043B \u0438\u043B\u0433\u044D\u044D: -preferences.email.message.new = \u041D\u0430\u0434\u0440\u0443\u0443 \u0448\u0438\u043D\u044D \u043C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D -preferences.email.message.reply = \u041C\u0438\u043D\u0438\u0439 \u043C\u0435\u0441\u0441\u0435\u0436\u0438\u043D\u0434 \u0445\u0430\u0440\u0438\u0443\u043B\u0430\u0445 -preferences.email.none = (\u042F\u041C\u0410\u0420\u0427 EMAIL \u0425\u0410\u042F\u0413\u0418\u0419\u0413 \u0422\u041E\u0425\u0418\u0420\u0423\u0423\u041B\u0410\u0410\u0413\u04AE\u0419 \u0411\u0410\u0419\u041D\u0410) -preferences.email.requests = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u044D\u043B\u0431\u044D\u0440\u044D\u044D\u0440 \u043D\u0430\u043C\u0430\u0439\u0433 \u043D\u044D\u043C\u044D\u0445 -preferences.email.wall.new = \u041C\u0438\u043D\u0438\u0439 wall-\u0434 post \u0445\u0438\u0439\u0445 -preferences.email.worksite.new = \u041D\u0430\u043C\u0430\u0439\u0433 \u0448\u0438\u043D\u044D \u0430\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433\u0442 \u043D\u044D\u043C\u044D\u0445 preferences.image.gravatar = \u041C\u0438\u043D\u0438\u0439 gravatar-\u044B\u0433 \u043C\u0438\u043D\u0438\u0439 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0430\u0448\u0438\u0433\u043B\u0430 preferences.image.message = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D\u0445\u0430\u0430 \u0437\u0443\u0440\u0430\u0433\u0442 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u043B\u0442\u043E\u0439 \u0442\u043E\u0445\u0438\u0440\u0433\u043E\u043E\u043D\u0443\u0443\u0434\u044B\u0433 \u0431\u04AF\u0440\u0434\u04AF\u04AF\u043B\u044D\u0445 preferences.image.official = \u0410\u043B\u0431\u0430\u043D \u0451\u0441\u043D\u044B \u043D\u044D\u0433 \u0438\u0436\u0438\u043B \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u043C\u0438\u043D\u0438\u0439 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0442\u0430\u0432\u044C -preferences.twitter.message = \u0421\u0442\u0430\u0442\u0443\u0441\u044B\u043D \u0447\u0438\u043D\u044C \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u043B \u043D\u044C Twitter-\u044B\u043D \u0431\u04AF\u0440\u0442\u0433\u044D\u043B\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u043C\u04E9\u043D \u0430\u0434\u0438\u043B \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439 -preferences.widget.gallery = \u041C\u0438\u043D\u0438\u0439 \u0437\u0443\u0440\u0433\u0443\u0443\u0434\u044B\u0433 \u04AF\u0437\u04AF\u04AF\u043B\u044D\u0445 -preferences.widget.gallery.tooltip = \u0425\u044D\u0440\u044D\u0432 \u0437\u04E9\u0432\u04E9\u043B\u0441\u04E9\u043D \u0431\u043E\u043B \u0437\u0443\u0440\u0433\u0443\u0443\u0434 \u0447\u0438\u043D\u044C \u043F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u044D\u044D\u0440 \u0447\u0438\u043D\u044C \u0433\u0430\u0440\u0447 \u0438\u0440\u043D\u044D. -preferences.widget.kudos = \u041C\u0438\u043D\u0438\u0439 kudos-\u044B\u043D \u0437\u044D\u0440\u044D\u0433\u043B\u044D\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445 -preferences.widget.kudos.tooltip = Kudos-\u044B\u043D \u0437\u044D\u0440\u044D\u0433\u043B\u044D\u043B \u0447\u0438\u043D\u044C \u0442\u0430\u043D\u044B \u043E\u043D\u043E\u043E \u0442\u043E\u043E\u0446\u043E\u043E\u043B\u043E\u0433\u0434\u0441\u043E\u043D\u044B \u0434\u0430\u0440\u0430\u0430 \u043F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u044D\u044D\u0440 \u0447\u0438\u043D\u044C \u0433\u0430\u0440\u0447 \u0438\u0440\u043D\u044D. -preferences.widget.message = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u044D\u044D\u0440 \u0447\u0438\u043D\u044C \u044F\u043C\u0430\u0440 \u0432\u0438\u0434\u0436\u0435\u0442 \u0433\u0430\u0440\u0447 \u0438\u0440\u044D\u0445\u0438\u0439\u0433 \u0445\u044F\u043D\u0430\u0445 -preferences.widget.onlinestatus = \u041C\u0438\u043D\u0438\u0439 \u043E\u043D\u043B\u0430\u0439\u043D \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445 -preferences.widget.onlinestatus.tooltip = \u041E\u043D\u043B\u0430\u0439\u043D \u0431\u0430\u0439\u0433\u0430\u0430 \u044D\u0441\u044D\u0445\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445. \u0425\u044D\u0440\u044D\u0432 \u0438\u0434\u044D\u0432\u0445\u0438\u0436\u04AF\u04AF\u043B\u0431\u044D\u043B \u0446\u0430\u0430\u0448\u0438\u0434 \u0442\u0430 \u04AF\u04AF\u043D\u0438\u0439\u0433 \u0445\u0443\u0432\u0438\u0439\u043D \u0442\u043E\u0445\u0438\u0440\u0433\u043E\u043E\u043D\u0443\u0443\u0434 \u0434\u044D\u044D\u0440\u044D\u044D \u0445\u044F\u043D\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439. \u0425\u044D\u0440\u044D\u0432 \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 \u0431\u043E\u043B\u0433\u043E\u0432\u043E\u043B \u0442\u0430 offline \u0431\u043E\u043B\u043D\u043E. - -privacy.academicinfo = \u0421\u0443\u0440\u0433\u0443\u0443\u043B\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -privacy.basicinfo = \u04AE\u043D\u0434\u0441\u044D\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -privacy.birthyear = \u0422\u04E9\u0440\u0441\u04E9\u043D \u0436\u0438\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445 -privacy.businessinfo = \u0410\u0436\u043B\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -privacy.contactinfo = \u0425\u043E\u043B\u0431\u043E\u043E \u0431\u0430\u0440\u0438\u0445 \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -privacy.messages = \u0425\u044D\u043D \u043D\u0430\u0434\u0430\u0434 \u043C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D\u0436 \u0431\u043E\u043B\u043E\u0445 \u0432\u044D -privacy.myfriends = \u0425\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u044B\u0433 \u04AF\u0437\u044D\u0436 \u0431\u043E\u043B\u043E\u0445 \u0432\u044D -privacy.mykudos = \u0425\u044D\u043D \u043C\u0438\u043D\u0438\u0439 kudos-\u044B\u043D \u0437\u044D\u0440\u044D\u0433\u043B\u044D\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445 \u0432\u044D -privacy.mypictures = \u0425\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u0437\u0443\u0440\u0433\u0443\u0443\u0434\u044B\u0433 \u04AF\u0437\u044D\u0436 \u0431\u043E\u043B\u043E\u0445 \u0432\u044D -privacy.mystatus = \u0425\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445 \u0432\u044D -privacy.mywall = \u0425\u044D\u043D \u043C\u0438\u043D\u0438\u0439 wall \u0431\u043E\u043B\u043E\u043D \u0431\u0443\u0441\u0434\u044B\u043D walls-\u0434 \u0445\u0438\u0439\u0441\u044D\u043D posts-\u044B\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445 \u0432\u044D -privacy.onlinestatus = \u0425\u044D\u043D \u043C\u0438\u043D\u0438\u0439 \u043E\u043D\u043B\u0430\u0439\u043D \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445 \u0432\u044D. -privacy.option.everyone = \u0411\u04AF\u0445 \u0445\u04AF\u043C\u04AF\u04AF\u0441 -privacy.option.nobody = \u0425\u044D\u043D \u0447 \u0431\u043E\u043B\u043E\u0445\u0433\u04AF\u0439 -privacy.option.onlyfriends = \u0417\u04E9\u0432\u0445\u04E9\u043D \u043C\u0438\u043D\u0438\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u0441\u043E\u043D \u0445\u04AF\u043C\u04AF\u04AF\u0441 -privacy.option.onlyme = \u0417\u04E9\u0432\u0445\u04E9\u043D \u0431\u0438 -privacy.personalinfo = \u0425\u0443\u0432\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -privacy.profileimage = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0430\u0433 -privacy.search = \u0425\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 -privacy.socialinfo = \u041D\u0438\u0439\u0442\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -privacy.staffinfo = \u0410\u0436\u0438\u043B\u0447\u0434\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -privacy.studentinfo = \u041E\u044E\u0443\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B -profile.academicprofileurl = \u0421\u0443\u0440\u0433\u0443\u0443\u043B\u0438\u0439\u043D/\u043D\u04E9\u04E9\u0446\u0438\u0439\u043D URL -profile.birthday = \u0422\u04E9\u0440\u0441\u04E9\u043D \u04E9\u0434\u04E9\u0440 -profile.business.bio = \u0410\u0436\u043B\u044B\u043D \u043D\u0430\u043C\u0442\u0430\u0440 -profile.business.company.description = \u041A\u043E\u043C\u043F\u0430\u043D\u0438\u0439\u043D \u0442\u0430\u0439\u043B\u0431\u0430\u0440 -profile.business.company.name = \u041A\u043E\u043C\u043F\u0430\u043D\u0438\u0439\u043D \u043D\u044D\u0440 -profile.business.company.profile = \u041F\u0440\u043E\u0444\u0430\u0439\u043B -profile.business.company.profiles = \u041A\u043E\u043C\u043F\u0430\u043D\u0438\u0439\u043D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u0443\u0443\u0434 -profile.business.company.web = \u041A\u043E\u043C\u043F\u0430\u043D\u0438\u0439\u043D \u0432\u044D\u0431 \u0445\u0430\u044F\u0433\u0443\u0443\u0434 -profile.business.update = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u0430\u0445\u044C \u0430\u0436\u043B\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u0445 profile.contact.update = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u0430\u0445\u044C \u0445\u043E\u043B\u0431\u043E\u043E \u0431\u0430\u0440\u0438\u0445 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u0445 -profile.course = \u042D\u0440\u0434\u043C\u0438\u0439\u043D \u0437\u044D\u0440\u044D\u0433/\u0441\u0443\u0440\u0433\u0430\u043B\u0442 -profile.department = \u0422\u044D\u043D\u0445\u0438\u043C -profile.email = \u0418-\u041C\u0430\u0439\u043B -profile.favourite.books = \u0414\u0443\u0440\u0442\u0430\u0439 \u043D\u043E\u043C\u043D\u0443\u0443\u0434 -profile.favourite.movies = \u0414\u0443\u0440\u0442\u0430\u0439 \u043A\u0438\u043D\u043E\u043D\u0443\u0443\u0434 -profile.favourite.quotes = \u0414\u0443\u0440\u0442\u0430\u0439 \u0438\u0448\u043B\u044D\u043B -profile.favourite.tv = \u0414\u0443\u0440\u0442\u0430\u0439 \u0442\u0435\u043B\u0435\u0432\u0438\u0437\u0438\u0439\u043D \u0445\u04E9\u0442\u04E9\u043B\u0431\u04E9\u0440\u04AF\u04AF\u0434 -profile.gallery.image.upload = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0438\u0439\u043D \u0433\u0430\u043B\u0435\u0440\u0435\u0439\u0434 \u043E\u0440\u0443\u0443\u043B\u0441\u0430\u043D -profile.homepage = \u041D\u04AF\u04AF\u0440 \u0445\u0443\u0443\u0434\u0430\u0441 +gprofile.email = \u0418-\u041C\u0430\u0439\u043B profile.image.change.upload = \u04E8\u04E9\u0440\u0447\u043B\u04E9\u0433\u0434\u0441\u04E9\u043D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0430\u0433 profile.image.change.url = \u04E8\u04E9\u0440\u0447\u043B\u04E9\u0433\u0434\u0441\u04E9\u043D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0430\u0433 profile.info.update = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u0430\u0445\u044C \u04AF\u043D\u0434\u0441\u044D\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0448\u0438\u043D\u044D\u0447\u0438\u043B\u0441\u044D\u043D -profile.interests.update = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u0430\u0445\u044C \u0445\u0443\u0432\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0448\u0438\u043D\u044D\u0447\u0438\u043B\u0441\u044D\u043D -profile.name.first = \u041D\u044D\u0440 -profile.name.first.none = \u0425\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447 -profile.name.last = \u041E\u0432\u043E\u0433 -profile.name.middle = \u0414\u0443\u0443\u0434\u0434\u0430\u0433 \u043D\u044D\u0440 profile.nickname = \u0411\u043E\u0433\u0438\u043D\u043E \u043D\u044D\u0440 -profile.phone.facsimile = \u041D\u0430\u0440\u0438\u0439\u043D \u0445\u0443\u0443\u043B\u0431\u0430\u0440 -profile.phone.home = \u0413\u044D\u0440\u0438\u0439\u043D \u0443\u0442\u0430\u0441 profile.phone.mobile = \u0413\u0430\u0440 \u0443\u0442\u0430\u0441 -profile.phone.work = \u0410\u0436\u043B\u044B\u043D \u0443\u0442\u0430\u0441 -profile.position = \u0410\u043B\u0431\u0430\u043D \u0442\u0443\u0448\u0430\u0430\u043B -profile.publications = \u041D\u0438\u0439\u0442\u044D\u043B\u0441\u044D\u043D \u0437\u04AF\u0439\u043B\u0441 \u0431\u043E\u043B\u043E\u043D \u0445\u043E\u043B\u0431\u043E\u043E \u0445\u0430\u0440\u0438\u043B\u0446\u0430\u0430 -profile.room = \u0410\u043D\u0433\u0438 -profile.school = \u0421\u0443\u0440\u0433\u0443\u0443\u043B\u044C profile.socialnetworking.facebook = Facebook profile.socialnetworking.facebook.edit = Facebook URL profile.socialnetworking.linkedin = LinkedIn profile.socialnetworking.linkedin.edit = LinkedIn URL -profile.socialnetworking.myspace = MySpace -profile.socialnetworking.myspace.edit = MySpace URL -profile.socialnetworking.skype = Skype -profile.socialnetworking.skype.edit = Skype-\u044B\u043D \u0445\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447\u0438\u0439\u043D \u043D\u044D\u0440 -profile.socialnetworking.skype.link = Skype Me -profile.socialnetworking.twitter = Twitter -profile.socialnetworking.twitter.edit = Twitter URL profile.socialnetworking.update = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u0430\u0445\u044C \u043D\u04E9\u0445\u04E9\u0440\u043B\u04E9\u043B\u0438\u0439\u043D \u0441\u04AF\u043B\u0436\u044D\u044D\u043D\u0438\u0439 \u0434\u044D\u043B\u0433\u044D\u0440\u044D\u043D\u0433\u04AF\u0439 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u0445 -profile.staff.update = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u0430\u0445\u044C \u0430\u0436\u0438\u043B\u0447\u0434\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u0445 -profile.staffprofile = \u0410\u0436\u0438\u043B\u0447\u0434\u044B\u043D \u043F\u0440\u043E\u0444\u0430\u0439\u043B -profile.student.update = \u041F\u0440\u043E\u0444\u0430\u0439\u043B \u0434\u0430\u0445\u044C \u043E\u044E\u0443\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u0445 -profile.subjects = \u0421\u044D\u0434\u0432\u04AF\u04AF\u0434 -profile.summary = \u0425\u0443\u0432\u0438\u0439\u043D \u0434\u04AF\u0433\u043D\u044D\u043B\u0442 -profile.universityprofileurl = \u0418\u0445 \u0441\u0443\u0440\u0433\u0443\u0443\u043B\u0438\u0439\u043D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D URL -success.message.send.ok = \u041C\u0435\u0441\u0441\u0435\u0436\u0438\u0439\u0433 \u0438\u043B\u0433\u044D\u044D\u043B\u044D\u044D success.preferences.save.ok = \u0410\u043C\u0436\u0438\u043B\u0442\u0442\u0430\u0439 \u0445\u0430\u0434\u0433\u0430\u043B\u0430\u0433\u0434\u043B\u0430\u0430 -success.privacy.save.ok = \u0410\u043C\u0436\u0438\u043B\u0442\u0442\u0430\u0439 \u0445\u0430\u0434\u0433\u0430\u043B\u0430\u0433\u0434\u043B\u0430\u0430 text.edit.other.warning = \u0410\u043D\u0445\u0430\u0430\u0440: \u0422\u0430 {0}-\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0437\u0430\u0441\u0430\u0436 \u0431\u0430\u0439\u043D\u0430. -text.friend.add = {0} \u0442\u0430\u043D\u044B \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 \u0445\u044D\u0440\u044D\u0433\u0442\u044D\u0439 \u0431\u043E\u043B\u043D\u043E. -text.friend.already = \u0422\u0430 {0}-\u0442\u0430\u0439 \u0430\u043B\u044C \u0445\u044D\u0434\u0438\u0439\u043D\u044D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u0441\u043E\u043D \u0431\u0430\u0439\u043D\u0430. -text.friend.already.pending = {0}, \u0442\u0430 \u0445\u043E\u0451\u0440\u044B\u043D \u0434\u0443\u043D\u0434 \u0430\u043B\u044C \u0445\u044D\u0434\u0438\u0439\u043D\u044D \u0445\u04AF\u043B\u044D\u044D\u0433\u0434\u044D\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442 \u0431\u0430\u0439\u043D\u0430. -text.friend.cancel = {0}-\u0434 \u044F\u0432\u0443\u0443\u043B\u0441\u0430\u043D \u0445\u04AF\u043B\u044D\u044D\u0433\u0434\u044D\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u044D\u044D \u0446\u0443\u0446\u043B\u0430\u0445\u044B\u0433 \u0445\u04AF\u0441\u0447 \u0431\u0430\u0439\u0433\u0430\u0430\u0434\u0430\u0430 \u0438\u0442\u0433\u044D\u043B\u0442\u044D\u0439 \u0431\u0430\u0439\u043D\u0430 \u0443\u0443? \u0422\u044D\u0434\u044D\u043D\u0434 \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B \u043E\u0447\u0438\u0445\u0433\u04AF\u0439. -text.friend.confirm = \u042D\u043D\u044D \u043D\u044C {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u043D \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 \u0431\u043E\u043B\u043D\u043E. -text.friend.confirmed = \u0422\u0430 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043B\u043E\u043E -text.friend.feed.num.many = {0} \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434 -text.friend.feed.num.none = 0 \u0445\u043E\u043B\u0431\u043E\u043B\u0442 -text.friend.feed.num.one = 1 \u0445\u043E\u043B\u0431\u043E\u043B\u0442 -text.friend.ignore = \u0422\u0430 {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u044D\u044D\u0441 \u0442\u0430\u0442\u0433\u0430\u043B\u0437\u0430\u0445\u044B\u0433 \u0445\u04AF\u0441\u0447 \u0431\u0430\u0439\u0433\u0430\u0430\u0434\u0430\u0430 \u0438\u0442\u0433\u044D\u043B\u0442\u044D\u0439 \u0431\u0430\u0439\u043D\u0430 \u0443\u0443? \u0422\u044D\u0434\u044D\u043D\u0434 \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B \u043E\u0447\u0438\u0445\u0433\u04AF\u0439. -text.friend.none = \u0422\u0430 {0}-\u0442\u0430\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u043E\u0433\u04AF\u0439 \u0431\u0430\u0439\u043D\u0430. -text.friend.pending = \u0425\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442 \u0445\u04AF\u043B\u044D\u044D\u0433\u0434\u044D\u0436 \u0431\u0430\u0439\u043D\u0430 -text.friend.remove = \u0422\u0430 {0}-\u044B\u0433 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u043E\u043E\u0441\u043E\u043E \u0445\u0430\u0441\u0430\u0445\u044B\u0433 \u0445\u04AF\u0441\u0447 \u0431\u0430\u0439\u0433\u0430\u0430\u0434\u0430\u0430 \u0438\u0442\u0433\u044D\u043B\u0442\u044D\u0439 \u0431\u0430\u0439\u043D\u0430 \u0443\u0443? \u0422\u044D\u0434\u044D\u043D\u0434 \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B \u043E\u0447\u0438\u0445\u0433\u04AF\u0439. -text.friend.requested = \u0425\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442 \u0433\u0430\u0440\u0433\u0430\u0441\u0430\u043D -text.friend.self = \u042D\u043D\u044D \u0431\u043E\u043B \u0442\u0430! -text.gallery.feed.num.none = 0 \u0437\u0443\u0440\u0430\u0433 -text.gallery.pictures.num.none = \u0422\u0430\u043D\u044B \u0433\u0430\u043B\u0435\u0440\u0435\u0439 \u0447\u0438\u043D\u044C \u043E\u0434\u043E\u043E\u0445\u043E\u043D\u0434\u043E\u043E \u044F\u043C\u0430\u0440\u0447 \u0437\u0443\u0440\u0430\u0433\u0433\u04AF\u0439 \u0431\u0430\u0439\u043D\u0430. -text.gallery.upload.tooltip = \u041A\u043E\u043C\u043F\u044E\u0442\u0435\u0440\u0430\u0430\u0441\u0430\u0430 \u0433\u0430\u043B\u0435\u0440\u0435\u0439\u0434 \u0437\u0443\u0440\u0430\u0433 \u043E\u0440\u0443\u0443\u043B\u0430\u0445. \u041E\u0440\u0443\u0443\u043B\u0430\u0445 \u0437\u0443\u0440\u0433\u0443\u0443\u0434\u044B\u043D \u043D\u0438\u0439\u0442 \u0445\u044D\u043C\u0436\u044D\u044D {0}MB-\u0430\u0430\u0441 \u0445\u044D\u0442\u0440\u044D\u0445\u0433\u04AF\u0439 \u0431\u0430\u0439\u0445 \u0451\u0441\u0442\u043E\u0439. text.image.url = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D\u0445\u0430\u0430 \u0437\u0443\u0440\u0433\u0430\u0430\u0440 \u0430\u0448\u0438\u0433\u043B\u0430\u0445 \u0437\u0443\u0440\u0433\u0438\u0439\u043D\u0445\u0430\u0430 URL-\u044B\u0433 \u043E\u0440\u0443\u0443\u043B -text.messages.none = \u042F\u043C\u0430\u0440\u0447 \u043C\u0435\u0441\u0441\u0435\u0436 \u0430\u043B\u0433\u0430 text.no.fields = \u0422\u0430 \u043E\u0434\u043E\u043E\u0445\u043E\u043D\u0434\u043E\u043E \u044F\u043C\u0430\u0440\u0447 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u043D \u0445\u044D\u0441\u0433\u0438\u0439\u0433 \u0431\u04E9\u0433\u043B\u04E9\u04E9\u0433\u04AF\u0439 \u0431\u0430\u0439\u043D\u0430 text.no.status = \u042F\u043C\u0430\u0440 \u043D\u044D\u0433 \u044E\u043C \u0445\u044D\u043B\u044D\u0445 -text.privacy.academicinfo.tooltip = \u0421\u0443\u0440\u0433\u0443\u0443\u043B\u044C, \u0442\u044D\u043D\u0445\u0438\u043C, \u0441\u0443\u0440\u0433\u0430\u043B\u0442 \u0437\u044D\u0440\u044D\u0433 \u0441\u0443\u0440\u0433\u0443\u0443\u043B\u0438\u0439\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -text.privacy.basicinfo.tooltip = \u041D\u044D\u0440, \u0442\u04E9\u0440\u0441\u04E9\u043D \u04E9\u0434\u04E9\u0440 \u0437\u044D\u0440\u044D\u0433 \u04AF\u043D\u0434\u0441\u044D\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u04AF\u04AF\u0434\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -text.privacy.birthyear.tooltip = \u0422\u04E9\u0440\u0441\u04E9\u043D \u0436\u0438\u043B\u044D\u044D \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445 \u044E\u043C\u0443\u0443 \u043D\u0443\u0443\u0445 \u044D\u0441\u044D\u0445\u044D\u044D \u0441\u043E\u043D\u0433\u043E\u0445. \u0417\u04E9\u0432\u04E9\u043B\u0431\u04E9\u043B \u0445\u0430\u0440\u0430\u0433\u0434\u0430\u043D\u0430. -text.privacy.businessinfo.tooltip = \u04AE\u0439\u043B\u0434\u0432\u044D\u0440, \u0430\u043B\u0431\u0430\u043D \u0442\u0443\u0448\u0430\u0430\u043B, \u0430\u0436\u043B\u044B\u043D \u043D\u0430\u043C\u0442\u0430\u0440 \u0437\u044D\u0440\u044D\u0433 \u0430\u043B\u0431\u0430\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u04AF\u04AF\u0434\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -text.privacy.cannot.modify = \u0423\u0434\u0438\u0440\u0434\u043B\u0430\u0433\u0430\u0430\u0441 \u044D\u043D\u044D \u04AF\u043D\u044D\u043B\u0433\u044D\u044D\u0433 \u0442\u04AF\u0433\u0436\u0441\u044D\u043D \u0431\u0430\u0439\u0433\u0430\u0430 \u0431\u04E9\u0433\u04E9\u04E9\u0434 \u04E9\u04E9\u0440\u0447\u0438\u043B\u0436 \u0431\u043E\u043B\u043E\u0445\u0433\u04AF\u0439. -text.privacy.contactinfo.tooltip = \u0418-\u041C\u0430\u0439\u043B \u0445\u0430\u044F\u0433, \u0443\u0442\u0430\u0441\u043D\u044B \u0434\u0443\u0433\u0430\u0430\u0440 \u0437\u044D\u0440\u044D\u0433 \u0437\u04AF\u0439\u043B\u0441\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u044D\u043D \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -text.privacy.messages.tooltip = \u0425\u044D\u043D \u0442\u0430\u043D\u0440\u0443\u0443 \u043C\u0435\u0441\u0441\u0435\u0436 \u0438\u043B\u0433\u044D\u044D\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -text.privacy.myfriends.tooltip = \u0425\u044D\u043D \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0443\u0443\u0434\u044B\u043D \u0447\u0438\u043D\u044C \u0436\u0430\u0433\u0441\u0430\u0430\u043B\u0442\u044B\u0433 \u04AF\u0437\u044D\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. -text.privacy.mykudos.tooltip = \u0425\u044D\u043D kudos-\u044B\u043D \u0437\u044D\u0440\u044D\u0433\u043B\u044D\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E (\u0425\u044D\u0440\u044D\u0432 Preferences-\u0434 \u0438\u0434\u044D\u0432\u0445\u0438\u0436\u04AF\u04AF\u043B\u0431\u044D\u043B). -text.privacy.mypictures.tooltip = \u0425\u044D\u043D \u0437\u0443\u0440\u0433\u0438\u0439\u043D \u0433\u0430\u043B\u0435\u0440\u0435\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. -text.privacy.mystatus.tooltip = \u0425\u044D\u043D \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u043D \u0447\u0438\u043D\u044C \u0448\u0438\u043D\u044D\u0447\u043B\u044D\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. -text.privacy.mywall.tooltip = \u0425\u044D\u043D wall-\u044B\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. -text.privacy.onlinestatus.tooltip = \u0425\u044D\u043D \u043E\u043D\u043B\u0430\u0439\u043D \u0441\u0442\u0430\u0442\u0443\u0441\u044B\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. \u0411\u0443\u0441\u0430\u0434 \u0431\u04AF\u0445 \u0445\u04AF\u043C\u04AF\u04AF\u0441\u0442 \u0442\u0430 \u0438\u0434\u044D\u0432\u0445\u0438\u0433\u04AF\u0439 \u0445\u0430\u0440\u0430\u0433\u0434\u0430\u043D\u0430. -text.privacy.personalinfo.tooltip = \u0425\u044D\u043D \u0442\u0430\u043D\u044B \u0434\u0443\u0440\u0442\u0430\u0439 \u043D\u043E\u043C, \u0442\u0435\u043B\u0435\u0432\u0438\u0437\u0438\u0439\u043D \u0445\u04E9\u0442\u04E9\u043B\u0431\u04E9\u0440 \u0437\u044D\u0440\u0433\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. -text.privacy.profileimage.tooltip = \u0425\u044D\u043D \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0447\u0438\u043D\u044C \u0437\u0443\u0440\u0433\u0438\u0439\u0433 \u04AF\u0437\u044D\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E. -text.privacy.socialinfo.tooltip = Facebook, LinkedIn, MySpace \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u0443\u0443\u0434 \u0437\u044D\u0440\u044D\u0433 \u041D\u04E9\u0445\u04E9\u0440\u043B\u04E9\u043B\u0438\u0439\u043D \u0441\u04AF\u043B\u0436\u044D\u044D\u043D\u0438\u0439 \u0447\u0438\u043D\u044C \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E\u0445. -text.privacy.staff.tooltip = \u0425\u044D\u043D \u0430\u0436\u0438\u043B\u0447\u0434\u044B\u043D \u0447\u0438\u043D\u044C \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E -text.privacy.student.tooltip = \u0425\u044D\u043D \u043E\u044E\u0443\u0442\u043D\u044B \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u0447\u0438\u043D\u044C \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043E\u0445\u044B\u0433 \u0441\u043E\u043D\u0433\u043E -text.profile.birthyear.tooltip = \u0422\u0430 \u0445\u0443\u0432\u0438\u0439\u043D \u0442\u043E\u0445\u0438\u0440\u0433\u043E\u043E\u043D\u044B \u0445\u044D\u0441\u044D\u0433\u0442\u044D\u044D \u0442\u04E9\u0440\u0441\u04E9\u043D \u0436\u0438\u043B\u044D\u044D \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445/\u043D\u0443\u0443\u0445\u0430\u0430 \u0441\u043E\u043D\u0433\u043E\u0436 \u0431\u043E\u043B\u043D\u043E. text.profile.facebook.tooltip = \u0416\u0438\u0448\u044D\u044D \u043D\u044C: http://www.facebook.com/user text.profile.linkedin.tooltip = \u0416\u0438\u0448\u044D\u044D \u043D\u044C: http://www.linkedin.com/pub/user text.profile.locked.false = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u0433 \u0442\u04AF\u0433\u0436\u0438\u043D\u044D \u0433\u044D\u0434\u044D\u0433 \u043D\u044C \u0445\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u044D\u044D \u0437\u0430\u0441\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0433\u04AF\u0439 \u0431\u043E\u043B\u043D\u043E \u0433\u044D\u0441\u044D\u043D \u04AF\u0433 \u044E\u043C. text.profile.locked.true = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0442\u04AF\u0433\u0436\u044D\u044D\u0433 \u0442\u0430\u0439\u043B\u0441\u043D\u0430\u0430\u0440 \u0445\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447 \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u044D\u044D \u0437\u0430\u0441\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439 \u0431\u043E\u043B\u043D\u043E. -text.profile.myspace.tooltip = \u0416\u0438\u0448\u044D\u044D \u043D\u044C: http://myspace.com/user -text.profile.presence.away = {0} \u044D\u0437\u0433\u04AF\u0439 \u0431\u0430\u0439\u043D\u0430 -text.profile.presence.offline = {0} \u0431\u043E\u043B\u043E\u043C\u0436\u0433\u04AF\u0439 \u0431\u0430\u0439\u043D\u0430 -text.profile.presence.online = {0} \u043E\u043D\u043B\u0430\u0439\u043D \u0431\u0430\u0439\u043D\u0430 -text.profile.twitter.tooltip = \u0416\u0438\u0448\u044D\u044D \u043D\u044C: http://twitter.com/sakaiproject -text.search.byinterest.all.results = {1}-\u044B\u043D {0} \u04AF\u0440 \u0434\u04AF\u043D\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0436 \u0431\u0430\u0439\u043D\u0430: -text.search.byinterest.no.results = {0}-\u0442\u0430\u0439 \u0442\u043E\u0445\u0438\u0440\u043E\u0445 \u043D\u0438\u0439\u0442\u043B\u044D\u0433 \u0441\u043E\u043D\u0438\u0440\u0445\u043E\u043B\u0442\u043E\u0439 \u0445\u04AF\u043C\u04AF\u04AF\u0441 \u0431\u0430\u0439\u0445\u0433\u04AF\u0439 \u0431\u0430\u0439\u043D\u0430. -text.search.byinterest.one.result = {0}-\u044B\u043D 1 \u04AF\u0440 \u0434\u04AF\u043D\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0436 \u0431\u0430\u0439\u043D\u0430: -text.search.byinterest.paged.results = {2}-\u044B\u043D {0} \u04AF\u0440 \u0434\u04AF\u043D\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0436 \u0431\u0430\u0439\u043D\u0430 (\u043D\u044D\u0433 \u0445\u0443\u0443\u0434\u0441\u0430\u043D\u0434 {1} \u0445\u04AF\u0440\u0442\u043B\u044D\u0445 \u04AF\u0440 \u0434\u04AF\u043D): -text.search.byinterest.tooltip = \u041E\u0439\u043B\u043E\u043B\u0446\u043E\u043E \u0441\u043E\u043D\u0438\u0440\u0445\u043E\u043B\u0442\u043E\u0439 \u0445\u04AF\u043C\u04AF\u04AF\u0441\u0438\u0439\u0433 \u043E\u043B\u043E\u0445\u044B\u043D \u0442\u0443\u043B\u0434 '\u0434\u0443\u0433\u0443\u0439 \u0443\u043D\u0430\u0445' \u0433\u044D\u0445 \u043C\u044D\u0442 \u0441\u043E\u043D\u0438\u0440\u0445\u043E\u043B\u043E\u043E \u043E\u0440\u0443\u0443\u043B. -text.search.byname.all.results = {1}-\u044B\u043D {0} \u04AF\u0440 \u0434\u04AF\u043D\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0436 \u0431\u0430\u0439\u043D\u0430: -text.search.byname.no.results = {0}\u0442\u0430\u0439 \u0442\u043E\u0445\u0438\u0440\u043E\u0445 \u044F\u043C\u0430\u0440\u0447 \u04AF\u0440 \u0434\u04AF\u043D \u0430\u043B\u0433\u0430. -text.search.byname.one.result = {0}-\u044B\u043D 1 \u04AF\u0440 \u0434\u04AF\u043D\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0436 \u0431\u0430\u0439\u043D\u0430: -text.search.byname.paged.results = {2}-\u044B\u043D {0} \u04AF\u0440 \u0434\u04AF\u043D\u0433 \u0445\u0430\u0440\u0443\u0443\u043B\u0436 \u0431\u0430\u0439\u043D\u0430 (\u043D\u044D\u0433 \u0445\u0443\u0443\u0434\u0441\u0430\u043D\u0434 {1} \u0445\u04AF\u0440\u0442\u043B\u044D\u0445 \u04AF\u0440 \u0434\u04AF\u043D): -text.search.byname.tooltip = \u0425\u04AF\u043C\u04AF\u04AF\u0441\u0438\u0439\u0433 \u043E\u043B\u043E\u0445\u044B\u043D \u0442\u0443\u043B\u0434 \u043D\u044D\u0440 \u044E\u043C\u0443\u0443 e-mail \u0445\u0430\u044F\u0433\u044B\u0433 \u043D\u044C \u043E\u0440\u0443\u0443\u043B -text.search.history = \u04E8\u043C\u043D\u04E9\u0445 \u0445\u0430\u0439\u043B\u0442\u0443\u0443\u0434 -text.search.include.connections = \u0425\u0430\u0439\u043B\u0442\u044B\u043D \u04AF\u0440 \u0434\u04AF\u043D\u0434 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u044B\u0433 \u0431\u0430\u0433\u0442\u0430\u0430 -text.search.include.worksite = \u0410\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u0433\u0438\u0439\u0433 \u0441\u043E\u043D\u0433\u043E\u0445\u044B\u043D \u0442\u0443\u043B\u0434 \u0445\u0430\u0439\u043B\u0442\u044B\u0433 \u0445\u044F\u0437\u0433\u0430\u0430\u0440\u043B\u0430 -text.search.no.input = \u0422\u0430 \u044E\u0443 \u0447 \u043E\u0440\u0443\u0443\u043B\u0441\u0430\u043D\u0433\u04AF\u0439 -text.search.no.results = {0}-\u044B\u043D \u044F\u043C\u0430\u0440\u0447 \u04AF\u0440 \u0434\u04AF\u043D \u0430\u043B\u0433\u0430. -text.search.no.worksite = \u0422\u0430 \u043E\u0434\u043E\u043E\u0445\u043E\u043D\u0434\u043E\u043E \u044F\u043C\u0430\u0440\u0447 \u0430\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u0433\u0438\u0439\u043D \u0433\u0438\u0448\u04AF\u04AF\u043D \u0431\u0438\u0448 \u0431\u0430\u0439\u043D\u0430. -text.search.paged.results = {3}-\u044B\u043D {2} \u04AF\u0440 \u0434\u04AF\u043D\u0433\u0438\u0439\u043D {0} - {1}-\u044B\u0433 \u043D\u044C \u0445\u0430\u0440\u0443\u0443\u043B\u0436 \u0431\u0430\u0439\u043D\u0430: -text.search.terms.tooltip = \u041D\u044D\u0440/email \u044E\u043C\u0443\u0443 \u0441\u043E\u043D\u0438\u0440\u0445\u043E\u043B\u043E\u043E\u0440 \u0445\u0430\u0439\u043B\u0442 \u0445\u0438\u0439\u0445 \u044D\u0441\u044D\u0445\u044D\u044D\u0441 \u0445\u0430\u043C\u0430\u0430\u0440\u0430\u043D \u0445\u0430\u0439\u043B\u0442\u044B\u043D \u043D\u04E9\u0445\u0446\u043B\u0438\u0439\u0433 \u043E\u0440\u0443\u0443\u043B\u0430\u0445 -text.search.toomany.results = {0}-\u0434 \u0445\u0438\u0439\u0441\u044D\u043D \u0445\u0430\u0439\u043B\u0442 \u0447\u0438\u043D\u044C {1} \u044E\u043C\u0443\u0443 \u04E9\u04E9\u0440 \u0438\u043B\u04AF\u04AF \u04AF\u0440 \u0434\u04AF\u043D\u0433\u04AF\u04AF\u0434\u0438\u0439\u0433 \u0433\u0430\u0440\u0433\u0430\u0441\u0430\u043D. \u0417\u04E9\u0432\u0445\u04E9\u043D \u044D\u0445\u043D\u0438\u0439 {1} \u043D\u044C \u04E9\u0433\u04E9\u0433\u0434\u0441\u04E9\u043D. text.upload.image.file = \u041A\u043E\u043C\u043F\u044E\u0442\u0435\u0440 \u0434\u044D\u044D\u0440\u044D\u044D \u0437\u0443\u0440\u0433\u0438\u0439\u043D \u0444\u0430\u0439\u043B\u044B\u0433 \u0441\u043E\u043D\u0433\u043E (\u0445\u0430\u043C\u0433\u0438\u0439\u043D \u0438\u0445\u0434\u044D\u044D {0}MB): text.view.profile.nothing = \u042D\u043D\u044D \u0445\u04AF\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u043B\u0438\u0439\u0433 \u043D\u044C \u04AF\u0437\u044D\u0445 \u0431\u0430\u0439\u0434\u043B\u044B\u0433 \u0447\u0430\u043D\u0433\u0430\u0442\u0441\u0430\u043D \u044E\u043C\u0443\u0443 \u0445\u0443\u0432\u0430\u0430\u043B\u0446\u0430\u0445 \u044F\u043C\u0430\u0440\u0447 \u043F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u043C\u044D\u0434\u044D\u044D\u043B\u044D\u043B\u0433\u04AF\u0439 \u0431\u0430\u0439\u043D\u0430. -text.view.wall.nothing = {0}-\u044B\u043D wall-\u0434 \u043E\u0434\u043E\u043E\u0433\u043E\u043E\u0440 \u044F\u043C\u0430\u0440\u0447 \u0437\u0443\u0440\u0430\u0433 \u0430\u043B\u0433\u0430. \u042F\u043C\u0430\u0440 \u043D\u044D\u0433 \u044E\u043C post \u0445\u0438\u0439\u0436 \u0431\u0430\u0439\u0433\u0430\u0430 \u044D\u0445\u043D\u0438\u0439 \u0445\u04AF\u043D \u043D\u044C \u0431\u043E\u043B\u043E\u043E\u0440\u043E\u0439! -text.view.wall.restricted = \u0417\u04E9\u0432\u0445\u04E9\u043D {0}-\u0442\u043E\u0439 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u0441\u043E\u043D \u0445\u04AF\u043C\u04AF\u04AF\u0441 \u043B \u044D\u043D\u044D wall-\u044B\u0433 \u0445\u0430\u0440\u0436 \u0431\u043E\u043B\u043D\u043E. \u042D\u043D\u044D wall-\u044B\u0433 \u04AF\u0437\u044D\u0436 post \u0445\u0438\u0439\u0445\u0438\u0439\u043D \u0442\u0443\u043B\u0434 {0}-\u044B\u0433 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0434\u043E\u043E \u043D\u044D\u043C\u043D\u044D \u04AF\u04AF. -text.wall.no.items = \u0422\u0430\u043D\u044B wall-\u0434 \u043E\u0434\u043E\u043E\u0433\u043E\u043E\u0440 \u0445\u0430\u0440\u0443\u0443\u043B\u0430\u0445 \u0437\u04AF\u0439\u043B \u0430\u043B\u0433\u0430 \u0431\u0430\u0439\u043D\u0430. -text.wall.remove.mine = Wall-\u043E\u043E\u0441\u043E\u043E post-\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 \u0443\u0443? -text.worksite.create = \u0411\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439 \u0445\u04AF\u043C\u04AF\u04AF\u0441\u0438\u0439\u0433 \u0441\u043E\u043D\u0433\u043E\u0436 \u0448\u0438\u043D\u044D \u0430\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433 \u04AF\u04AF\u0441\u0433\u044D. -text.worksite.refresh = \u0428\u0438\u043D\u044D \u0430\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u044D\u0433 \u04AF\u04AF\u0441\u0433\u044D\u0441\u043D\u0438\u0439\u0445\u044D\u044D \u0434\u0430\u0440\u0430\u0430 \u043D\u044D\u0432\u0442\u0440\u044D\u0445\u0434\u044D\u044D \u0431\u0440\u043E\u0443\u0437\u0435\u0440\u044B\u0433 \u0441\u044D\u0440\u0433\u044D\u044D\u043D\u044D \u04AF\u04AF title.change.profile.picture = \u041F\u0440\u043E\u0444\u0430\u0439\u043B\u044B\u043D \u0437\u0443\u0440\u0433\u0430\u0430 \u04E9\u04E9\u0440\u0447\u043B\u04E9\u0445 -title.friend.add = {0}-\u044B\u0433 \u0445\u043E\u043B\u0431\u043E\u043B\u0442\u0434\u043E\u043E \u043D\u044D\u043C\u044D\u0445 \u04AF\u04AF? -title.friend.cancel = \u0425\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0446\u0443\u0446\u043B\u0430\u0445 \u0443\u0443? -title.friend.confirm = {0}-\u044B\u043D \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u0438\u0439\u0433 \u0431\u0430\u0442\u043B\u0430\u0445 \u0443\u0443? -title.friend.ignore = \u0425\u043E\u043B\u0431\u043E\u0433\u0434\u043E\u0445 \u0445\u04AF\u0441\u044D\u043B\u0442\u044D\u044D\u0441 \u0442\u0430\u0442\u0433\u0430\u043B\u0437\u0430\u0445 \u0443\u0443? -title.friend.remove = \u0425\u043E\u043B\u0431\u043E\u043B\u0442\u043E\u043E\u0441 \u0445\u0430\u0441\u0430\u0445 \u0443\u0443? -title.message.compose = \u0428\u0438\u043D\u044D \u043C\u0435\u0441\u0441\u0435\u0436 \u0431\u0438\u0447\u0438\u0445 -title.wall.comment = {0}-\u044B\u043D wall post-\u0434 \u043A\u043E\u043C\u043C\u0435\u043D\u0442 \u0431\u0438\u0447\u0438\u0445 -title.wall.remove = \u0411\u04AF\u0445 wall-\u044B\u0433 \u0445\u0430\u0441\u0430\u0445 \u0443\u0443? - -twitter.auth.do = Twitter \u0431\u04AF\u0440\u0442\u0433\u044D\u043B\u0438\u0439\u043D \u043B\u0438\u043D\u043A -twitter.auth.linked = Twitter \u0431\u04AF\u0440\u0442\u0433\u044D\u043B\u0434 \u0445\u043E\u043B\u0431\u043E\u0433\u0434\u0441\u043E\u043D -twitter.enabled = Twitter-\u044B\u043D \u043D\u044D\u0433\u0434\u043B\u0438\u0439\u0433 \u0438\u0434\u044D\u0432\u0445\u0438\u0436\u04AF\u04AF\u043B\u044D\u0445 - -twitterUrl.UrlValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 URL urlField.Required = \u0422\u0430 URL-\u0430\u0430 \u043E\u0440\u0443\u0443\u043B\u0441\u0430\u043D\u0433\u04AF\u0439 - -workphone.PhoneNumberValidator = \u0425\u04AF\u0447\u0438\u043D\u0433\u04AF\u0439 \u0443\u0442\u0430\u0441\u043D\u044B \u0434\u0443\u0433\u0430\u0430\u0440 - -worksite.name = \u0410\u0436\u043B\u044B\u043D \u0445\u044D\u0441\u0433\u0438\u0439\u043D \u043D\u044D\u0440 diff --git a/profile2/api/src/resources/ProfileApplication_pt_BR.properties b/profile2/api/src/resources/ProfileApplication_pt_BR.properties index 482480539c0d..74d1f41c3617 100644 --- a/profile2/api/src/resources/ProfileApplication_pt_BR.properties +++ b/profile2/api/src/resources/ProfileApplication_pt_BR.properties @@ -1,532 +1,138 @@ -#------------------------------------------------------------------------------- -# Translated by: e-Labora: e-Learning Laboratory - State University of Campinas -# Translated by: LARC - Laboratory of Architecture and Computer Networks -# TIDIA-Ae Project Fapesp, Sao Paulo, Brazil -#------------------------------------------------------------------------------- - - -# Do not add properties to any top level nodes that have children, as this breaks the jquery i18n plugin. -# Instead arrange your properties as per the example below. -# -# BAD: -# name = steve -# name.other = steveborg -# -# GOOD: -# name.real = steve -# name.other = steveborg -# -# See https://jira.sakaiproject.org/browse/PRFL-851 -# -RequiredValidator = '${label}' \u00e9 obrigat\u00f3rio - -accessibility.connection.add = Adicionar {0} como contato? -accessibility.connection.confirm = Confirma a solicita\u00e7\u00e3o de contato de {0}? -accessibility.connection.ignore = Ignorar a solicita\u00e7\u00e3o de contato de {0}? -accessibility.connection.remove = Excluir {0} de seus contatos? -accessibility.edit.basic = Alterar Informa\u00e7\u00f5es Pessoais -accessibility.edit.business = Alterar Informa\u00e7\u00e3o da Empresa -accessibility.edit.contact = Alterar Informa\u00e7\u00f5es B\u00e1sicas -accessibility.edit.personal = Alterar Informa\u00e7\u00f5es de Contato -accessibility.edit.social = Alterar Informa\u00e7\u00f5es de redes sociais -accessibility.edit.staff = Alterar Informa\u00e7\u00f5es da Equipe -accessibility.edit.student = Alterar Informa\u00e7\u00f5es do Aluno -accessibility.image.upload = Fazer upload de uma foto para seu perfil -accessibility.image.url = Digite a url para a sua imagem de perfil -accessibility.messages.unread = Mensagem n\u00e3o lida -accessibility.prefs.confirms.off = Enviar e-mail quando algu\u00e9m confirmar a minha solicita\u00e7\u00e3o de contato, desativado -accessibility.prefs.confirms.on = Enviar e-mail quando algu\u00e9m confirmar a minha solicita\u00e7\u00e3o de contato, ativado -accessibility.prefs.gallery = Exibir minhas fotos no meu perfil -accessibility.prefs.gravatar = Usar meu avatar como minha imagem de perfil -accessibility.prefs.kudos = Exibir a minha pontua\u00e7\u00e3o de reconhecimento no meu perfil -accessibility.prefs.messagenew.off = Enviar email quando algu\u00e9m me enviar uma nova mensagem, desativado -accessibility.prefs.messagenew.on = Enviar email quando algu\u00e9m me enviar uma nova mensagem, ativado -accessibility.prefs.messagereply.off = Enviar email quando algu\u00e9m responder a uma das minhas mensagens, desativado -accessibility.prefs.messagereply.on = Enviar email quando algu\u00e9m responder a uma das minhas mensagens, ativado -accessibility.prefs.officialimage = Use a imagem oficial da institui\u00e7\u00e3o como minha imagem de perfil -accessibility.prefs.onlinestatus = Mostrar meu estado online -accessibility.prefs.overview = Prefer\u00eancias de notifica\u00e7\u00e3o de e-mail -accessibility.prefs.requests.off = Enviar email quando algu\u00e9m me acrescentar como um contato, desativado -accessibility.prefs.requests.on = Enviar email quando algu\u00e9m me acrescentar como um contato, ativado -accessibility.prefs.twitterauthcode = Digite seu c\u00f3digo de autoriza\u00e7\u00e3o do Twitter -accessibility.prefs.wallnew.off = Enviar email quando algu\u00e9m postar em meu mural, desativado -accessibility.prefs.wallnew.on = Enviar email quando algu\u00e9m postar em meu mural, ativado -accessibility.prefs.worksite.off = Enviar email quando um contato me adicionar em um novo site, desativado -accessibility.prefs.worksite.on = Enviar email quando um contato me adicionar em um novo site, ativado -accessibility.privacy.academic = Escolha quem pode ver suas informa\u00e7\u00f5es acad\u00eamicas como faculdade, departamento ou curso. -accessibility.privacy.basic = Escolha quem pode ver suas informa\u00e7\u00f5es b\u00e1sicas, como apelido e anivers\u00e1rio. -accessibility.privacy.birthyear = Escolha se quer ou n\u00e3o exibir ou ocultar seu ano de nascimento. Marcado significa vis\u00edvel. -accessibility.privacy.business = Escolha quem pode ver suas informa\u00e7\u00f5es de neg\u00f3cios, como a ind\u00fastria, a posi\u00e7\u00e3o e biografia de neg\u00f3cios. -accessibility.privacy.contact = Escolha quem pode ver as informa\u00e7\u00f5es como seus endere\u00e7os de email e n\u00fameros de telefone. -accessibility.privacy.friends = Escolha quem pode ver sua lista de contatos. -accessibility.privacy.image = Escolha quem pode ver sua foto do perfil. -accessibility.privacy.kudos = Escolha quem pode ver sua pontua\u00e7\u00e3o de reconhecimento (Se ativado em Prefer\u00eancias). -accessibility.privacy.messages = Escolha quem pode enviar mensagens para voc\u00ea. -accessibility.privacy.onlinestatus = Escolha quem pode ver seu estado online. -accessibility.privacy.overview = Controle quem pode ver as informa\u00e7\u00f5es do seu perfil -accessibility.privacy.personal = Escolha quem pode ver seus livros favoritos e programas de TV. -accessibility.privacy.pictures = Escolha quem pode ver sua galeria de fotos. -accessibility.privacy.social = Escolha quem pode ver suas informa\u00e7\u00f5es de redes sociais, como seus perfis de Facebook, LinkedIn e MySpace. -accessibility.privacy.staff = Escolha quem pode ver sua informa\u00e7\u00e3o institucional. -accessibility.privacy.status = Escolha quem pode ver suas atualiza\u00e7\u00f5es de estado. -accessibility.privacy.student = Escolha quem pode ver suas informa\u00e7\u00f5es de aluno -accessibility.privacy.wall = Escolha quem pode ver seu mural. -accessibility.profile.academicprofileurl.input = Digite a URL para o seu perfil acad\u00eamico -accessibility.profile.birthday = Selecione sua data de nascimento. Voc\u00ea pode controlar a exibi\u00e7\u00e3o de seu ano de nascimento em suas prefer\u00eancias. -accessibility.profile.businessbio.input = Digite sua biografia de neg\u00f3cios. -accessibility.profile.companydescription.input = Digite a descri\u00e7\u00e3o desta empresa -accessibility.profile.companyname.input = Digite o nome desta empresa -accessibility.profile.companyurl.input = Digite o endere\u00e7o web da empresa -accessibility.profile.course.input = Digite seu curso -accessibility.profile.department.input = Digite seu departamento -accessibility.profile.email.input = Digite seu email -accessibility.profile.facebookurl.input = Digite a URL do seu Facebook -accessibility.profile.facsimile.input = Digite seu n\u00famero de fax -accessibility.profile.favouritebooks.input = Digite seus livros favoritos -accessibility.profile.favouritemovies.input = Digite seus filmes favoritos -accessibility.profile.favouritequotes.input = Insira suas cita\u00e7\u00f5es favoritas -accessibility.profile.favouritetv.input = Digite seus programas de TV favoritos -accessibility.profile.homepage.input = Digite a URL da sua p\u00e1gina Web -accessibility.profile.homephone.input = Digite o n\u00famero de telefone de sua casa -accessibility.profile.linkedinurl.input = Digite a URL de seu LinkedIn -accessibility.profile.messagebody.input = Digite sua mensagem -accessibility.profile.messagerecipient.input = Escolha um destinat\u00e1rio -accessibility.profile.messagesubject.input = Digite o assunto da mensagem -accessibility.profile.mobilephone.input = Digite seu n\u00famero de celular -accessibility.profile.myspaceurl.input = Digite a URL de seu LinkedIn -accessibility.profile.nickname.input = Digite seu apelido -accessibility.profile.position.input = Digite a sua posi\u00e7\u00e3o -accessibility.profile.publications.input = Digite suas publica\u00e7\u00f5es -accessibility.profile.room.input = Digita sua sala -accessibility.profile.school.input = Digite sua faculdade -accessibility.profile.skypeusername.input = Digite seu usu\u00e1rio Skype -accessibility.profile.staffprofile.input = Digite seu perfil de equipe -accessibility.profile.status.clear = Limpar seu estado -accessibility.profile.status.input = Digite seu estado atual -accessibility.profile.subjects.input = Digite seus assuntos -accessibility.profile.summaryinput = Digite seu resumo pessoal -accessibility.profile.twitterurl.input = Digite a URL de seu Twitter -accessibility.profile.uniprofileurl.input = Digite a URL para o seu perfil universit\u00e1rio -accessibility.profile.wallpost.input = Digite o texto da sua mensagem no mural -accessibility.profile.workphone.input = Digite o n\u00famero de telefone de seu trabalho -accessibility.search.connections = Incluir contatos nos resultados de pesquisa -accessibility.search.worksite = Limitar a pesquisa no site selecionado -accessibility.wall.comment = Comente a postagem no mural de {0} -accessibility.wall.remove.mine = Remover postagem do seu mural? -accessibility.wall.remove.other = Remover postagem de {0} do seu mural? - -button.business.add.profile = Adicionar perfil da empresa -button.business.remove.profile = Remover perfil da empresa -button.cancel = Cancelar -button.close = Fechar -button.edit = Alterar -button.friend.add = Adicionar contato -button.friend.cancel = Cancelar pedido de contato -button.friend.confirm = Confirmar o pedido de contato -button.friend.ignore = Ignorar pedido de contato -button.friend.remove = Remover contato -button.gallery.remove = Remore foto -button.gallery.remove.confirm = Confirme a remo\u00e7\u00e3o -button.gallery.setprofile = Configurar imagem perfil -button.gallery.setprofile.confirm = Confirmar nova imagem perfil -button.gallery.upload = Fazer upload de arquivos escolhidos -button.link = Link -button.message.reply = Responder -button.message.send = Enviar Mensagem -button.save = Salvar -button.save.changes = Salvar altera\u00e7\u00f5es -button.save.settings = Salvar configura\u00e7\u00f5es -button.sayit = Publicar -button.search.byinterest = Buscar por interesse comum -button.search.byname = Buscar por nome ou email -button.search.clear = Limpar busca -button.search.generic = Buscar -button.search.history.clear = Limpar hist\u00f3rico -button.upload = Fazer Upload -button.url.add = Adicionar URL -button.wall.comment = Adicionar coment\u00e1rios -button.wall.post = Postar no mural -button.wall.remove = Remover do mural -button.worksite.cancel = Cancelar -button.worksite.create = Criar - -#EmailAddressValidator = '${input}' n\u00e3o \u00e9 um endere\u00e7o de e-mail v\u00e1lido. ##default -email.EmailAddressValidator = Endere\u00e7o de e-mail inv\u00e1lido - -error.empty.file.uploaded = Voc\u00ea tentou fazer upload de um arquivo v\u00e1zio -error.file.save.failed = Falha ao Salvar arquivo -error.friend.add.failed = Ocorreu um erro ao enviar um pedido de contato para {0}. -error.friend.already.confirmed = Voc\u00ea j\u00e1 tem como contato {0}. -error.friend.already.pending = J\u00e1 existe um pedido de contato pendente com {0}. -error.friend.confirm.failed = Ocorreu um erro ao confirmar o pedido de contato de {0}. -error.friend.ignore.failed = Ocorreu um erro ao ignorar o pedido de contato de {0}. -error.friend.not.friend = Voc\u00ea n\u00e3o tem como contato {0}, portanto n\u00e3o pode ser removido! -error.friend.not.pending.confirm = N\u00e3o h\u00e1 pedido de contato pendente com {0}, portanto voc\u00ea n\u00e3o pode confirmar! -error.friend.not.pending.ignore = N\u00e3o h\u00e1 pedido de contato pendente com {0}, portanto voc\u00ea n\u00e3o pode ignorar! -error.friend.remove.failed = Ocorreu um erro ao remover {0} de sua lista de contatos. -error.gallery.remove.failed = Imposs\u00edvel remover foto da galeria -error.gallery.setprofile.failed = Imposs\u00edvel definir imagem como imagem de perfil -error.gallery.upload.warning = Escolher os arquivos primeiro -error.invalid.image.type = Apenas as imagens de tipos de PNG, JPG e GIF s\u00e3o permitidas. -error.message.required.body = A mensagem n\u00e3o pode ficar em branco -error.message.required.to = Voc\u00ea deve escolher um contato para enviar a mensagem -error.message.send.failed = Ocorreu um erro ao enviar a sua mensagem -error.no.file.uploaded = Voc\u00ea n\u00e3o escolheu um arquivo -error.password.required = A senha \u00e9 obrigat\u00f3ria -error.preferences.save.failed = Falha ao Salvar -error.privacy.save.failed = Falha ao Salvar -error.profile.save.academic.failed = Falha ao Salvar -error.profile.save.business.failed = Falha ao Salvar -error.profile.save.contact.failed = Falha ao Salvar -error.profile.save.info.failed = Falha ao Salvar -error.profile.save.interests.failed = Falha ao Salvar -error.twitter.details.invalid = Suas credenciais do Twitter n\u00e3o puderam ser verificadas -error.url.save.failed = Falha ao Salvar URL -error.username.required = Nome de usu\u00e1rio \u00e9 obrigat\u00f3rio -error.wall.comment.empty = Voc\u00ea tentou adicionar um coment\u00e1rio vazio -error.wall.comment.failed = Falha ao inserir Coment\u00e1rio -error.wall.post.empty = Voc\u00ea tentou fazer uma postagem vazia -error.wall.post.failed = Falha ao inserir Postagem -error.worksite.create.failed = Falha ao criar site -error.worksite.no.title = Voc\u00ea deve dar um nome ao site - -exception.heading.session.expired = Sess\u00e3o expirou -exception.text.session.expired = Infelizmente, a sua sess\u00e3o expirou. Tente atualizar a p\u00e1gina ou sair e, em seguida, fa\u00e7a novamente o login para reiniciar a sess\u00e3o. - -facebookUrl.UrlValidator = URL inv\u00e1lida - -facsimile.PhoneNumberValidator = N\u00famero de telefone inv\u00e1lido - -form.uploadTooLarge = O upload deve ser menor que ${maxSize} - -heading.academic = Informa\u00e7\u00f5es Acad\u00eamicas -heading.academic.edit = Informa\u00e7\u00f5es Acad\u00eamicas -heading.basic = Informa\u00e7\u00f5es B\u00e1sicas -heading.basic.edit = Informa\u00e7\u00f5es B\u00e1sicas -heading.business = Informa\u00e7\u00e3o da Empresa -heading.business.edit = Informa\u00e7\u00e3o da Empresa -heading.contact = Informa\u00e7\u00f5es de Contato -heading.contact.edit = Informa\u00e7\u00f5es de Contato -heading.friend.requests = Pedidos de contato - -heading.friends.my = Meus contatos - -heading.friends.view = Contatos de {0} - -heading.interests = Informa\u00e7\u00f5es Pessoais -heading.interests.edit = Informa\u00e7\u00f5es Pessoais -heading.messages = Minhas mensagens -heading.pictures.addpicture = Adicionar foto -heading.pictures.my.pictures = Minha foto -heading.pictures.view.pictures = Fotos de {0} -heading.preferences = Prefer\u00eancias -heading.privacy = Configura\u00e7\u00f5es de privacidade -heading.search = Perfis de busca -heading.section.academic.staff = Por institui\u00e7\u00e3o: -heading.section.academic.students = Por alunos: -heading.section.email = Notifica\u00e7\u00f5es de E-mail -heading.section.image = Configura\u00e7\u00f5es da imagem de perfil -heading.section.twitter = Integra\u00e7\u00e3o com Twitter -heading.section.widget = Configura\u00e7\u00f5es do Widget -heading.social = Redes Sociais -heading.social.edit = Redes Sociais -heading.staff = Informa\u00e7\u00f5es Institucionais -heading.staff.edit = Informa\u00e7\u00f5es Institucionais -heading.student = Informa\u00e7\u00f5es do Aluno -heading.student.edit = Informa\u00e7\u00f5es do Aluno -heading.widget.my.friends = Meus contatos -heading.widget.my.kudos = Minhas recomenda\u00e7\u00f5es -heading.widget.my.pictures = Minhas fotos -heading.widget.view.friends = Contatos de {0} -heading.widget.view.kudos = Recomenda\u00e7\u00f5es de {0} -heading.widget.view.pictures = Fotos de {0} - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator = URL inv\u00e1lida - -homephone.PhoneNumberValidator = N\u00famero de telefone inv\u00e1lido - -link.change.profile.picture = Alterar foto -link.edit = Alterar -link.edit.info = Alterar informa\u00e7\u00f5es -link.friend.add = Adicionar como contato -link.friend.add.name = Adicionar {0} como contato -link.friend.confirm = Confirmar contato -link.friend.feed.search = Buscar por contato -link.friend.feed.view = Exibir todos os contatos -link.friend.ignore = Ignorar contato -link.friend.remove = Remover contato -link.friend.request.act = A\u00e7\u00e3o sobre este pedido -link.friend.search = Buscar por mais contatos? -link.gallery.feed.addnew = Adicionar nova foto -link.gallery.feed.view = Exibir todas as fotos -link.gallery.image.view = Vizualizar imagem -link.messages.back = Voltar para lista de mensagens -link.messages.compose = Compor mensagem -link.messages.mymessages = Minhas mensagens -link.messages.viewthread = Vizualizar thread -link.my.friends = Contatos -link.my.friends.search = Buscar contatos -link.my.friends.tooltip = Visualizar e gerenciar seus contatos -link.my.messages = Mensagens -link.my.messages.tooltip = Enviar e ler mensagens privadas -link.my.pictures = Fotos -link.my.pictures.tooltip = Adicionar fotos e visualizar sua galeria -link.my.preferences = Prefer\u00eancias -link.my.preferences.tooltip = Gerenciar suas prefer\u00eancias -link.my.privacy = Privacidade -link.my.privacy.tooltip = Gerenciar sua privacidade -link.my.profile = Meu perfil -link.my.profile.tooltip = Visualizar e editar seu perfil -link.my.search = Buscar -link.my.search.tooltip = Buscar pessoas e visualizar seus perfis -link.profile.locked.false = Bloquear este perfil? -link.profile.locked.true = Perfil bloqueado. Desbloquear? -link.status.clear = Limpar -link.status.update = Atualizar -link.tab.profile = Perfil -link.tab.profile.tooltip = Visualizar perfil -link.tab.wall = Mural -link.tab.wall.tooltip = Visualizar todos -link.title.confirmfriend = Confirmar pedido de contato -link.title.ignorefriend = Ignorar pedido de contato -link.title.removefriend = Remover contato -link.title.rss = Visualizar ou personalizar sua alimenta\u00e7\u00e3o RSS -link.title.unlinktwitter = Desvincular conta do Twitter -link.title.wall.comment = Comentar sobre postagem no mural de {0} -link.title.wall.remove = Remover do seu mural -link.view.friends = Visualizar contatos -link.wall.item.comment = Comentar -link.wall.item.remove = Remover -link.worksite.create = Criar site - -linkedinUrl.UrlValidator = URL inv\u00e1lida - -message.message = Mensagem -message.reply = Responder -message.subject = Assunto -message.to = Para - -mobilephone.PhoneNumberValidator = N\u00famero de telefone inv\u00e1lido - -myspaceUrl.UrlValidator = URL inv\u00e1lida - -page.title = Perfil - -palette.available = Dispon\u00edvel -palette.selected = Selecionado - -pictures.addpicture = Adicionar novos arquivos de fotos \u00e0 galeria -pictures.filetypewarning = Apenas jpeg, png e gif pode ser adicionado \u00e0 galeria -pictures.removepicture = Remover esta imagem da galeria -pictures.removepicture.confirm = Tem certeza de que deseja remover esta foto de sua galeria? -pictures.setprofileimage = Defina esta imagem como minha imagem de perfil -pictures.setprofileimage.confirm = Tem certeza de que deseja substituir sua imagem de perfil atual por esta imagem? - -preference.option.off = Desativado -preference.option.on = Ativado - -preferences.email.confirms = Confirma o meu pedido de contato -preferences.email.message = Notificar por e-mail em {0} quando algu\u00e9m: -preferences.email.message.new = Me envia uma nova mensagem -preferences.email.message.reply = Resposta para uma das minhas mensagens -preferences.email.none = (NENHUM ENDERE\u00c7O DE EMAIL ESPECIFICADO) -preferences.email.requests = Me adiciona como um contato -preferences.email.wall.new = Postar em meu mural -preferences.email.worksite.new = Me adiciona em um novo site -preferences.image.gravatar = Usar meu avatar como minha imagem de perfil -preferences.image.message = Configurar as defini\u00e7\u00f5es relacionadas com a sua imagem de perfil -preferences.image.official = Use a imagem institucional oficial como minha imagem de perfil -preferences.twitter.message = Suas atualiza\u00e7\u00f5es de estado tamb\u00e9m podem atualizar sua conta do Twitter -preferences.widget.gallery = Exibir minhas fotos -preferences.widget.gallery.tooltip = Suas fotos aparecer\u00e3o no seu perfil se marcador essa op\u00e7\u00e3o. -preferences.widget.kudos = Exibir minha pontua\u00e7\u00e3o de reconhecimento -preferences.widget.kudos.tooltip = Sua pontua\u00e7\u00e3o de reconhecimento aparecer\u00e1 em seu Perfil uma vez for calculada -preferences.widget.message = Controle quais widgets aparecem em seu perfil -preferences.widget.onlinestatus = Mostrar meu estado online -preferences.widget.onlinestatus.tooltip = Mostrar se voc\u00ea est\u00e1 ou n\u00e3o online. Se ativado, voc\u00ea pode controlar em suas configura\u00e7\u00f5es de privacidade. Se desativado aparecer\u00e1 como offline - -privacy.academicinfo = Informa\u00e7\u00f5es Acad\u00eamicas -privacy.basicinfo = Informa\u00e7\u00f5es Basicas -privacy.birthyear = Exibir Ano de Nascimento -privacy.businessinfo = Informa\u00e7\u00f5es de Neg\u00f3cios -privacy.contactinfo = Informa\u00e7\u00f5es de Contato -privacy.messages = Quem pode me enviar mensagens? -privacy.myfriends = Quem pode ver meus contatos? -privacy.mykudos = Quem pode ver minha pontua\u00e7\u00e3o de reconhecimento? -privacy.mypictures = Quem pode visualizar minhas fotos? -privacy.mystatus = Quem pode ver minha altera\u00e7\u00e3o de estado? -privacy.mywall = Quem pode ver meu mural e postagens em outros murais? -privacy.onlinestatus = Quem pode ver meu estado online? -privacy.option.everyone = Todos -privacy.option.nobody = Ningu\u00e9m -privacy.option.onlyfriends = Somente meus contatos -privacy.option.onlyme = Somente eu -privacy.personalinfo = Informa\u00e7\u00f5es Pessoais -privacy.profileimage = Imagem de Perfil -privacy.search = Buscar -privacy.socialinfo = Informa\u00e7\u00f5es Sociais -privacy.staffinfo = Informa\u00e7\u00f5es Institucional -privacy.studentinfo = Informa\u00e7\u00f5es de Estudante - -profile.academicprofileurl = URL acad\u00eamica/pesquisa -profile.birthday = Anivers\u00e1rio -profile.business.bio = Biografia de Neg\u00f3cios -profile.business.company.description = Descri\u00e7\u00e3o da empresa -profile.business.company.name = Nome da Empresa -profile.business.company.profile = Perfil -profile.business.company.profiles = Perfis da empresa -profile.business.company.web = Endere\u00e7o web da empresa -profile.business.update = Informa\u00e7\u00f5es de neg\u00f3cios atualizadas no perfil -profile.contact.update = Informa\u00e7\u00f5es de contato atualizadas no perfil -profile.course = Grau/Curso -profile.department = Departamento -profile.email = Email -profile.favourite.books = Livros favoritos -profile.favourite.movies = Filmes favoritos -profile.favourite.quotes = Cita\u00e7\u00f5es favoritas -profile.favourite.tv = Programas de TV favoritos -profile.gallery.image.upload = Fazer upload para galeria de fotos do perfil -profile.homepage = P\u00e1gina inicial -profile.image.change.upload = Imagem do perfil alterada -profile.image.change.url = imagem de perfil alterada -profile.info.update = Alterada informa\u00e7\u00f5es b\u00e1sicas no perfil -profile.interests.update = Alterada informa\u00e7\u00f5es pessoais no perfil -profile.name.first = Nome -profile.name.first.none = Usu\u00e1rio -profile.name.last = Sobrenome -profile.name.middle = Nome do Meio -profile.nickname = Apelido -profile.phone.facsimile = Fax -profile.phone.home = Telefone de casa -profile.phone.mobile = Celular -profile.phone.work = Telefone do trabalho -profile.position = Posi\u00e7\u00e3o -profile.publications = Publica\u00e7\u00f5es e confer\u00eancias -profile.room = Sala -profile.school = Faculdade -profile.socialnetworking.facebook = Facebook -profile.socialnetworking.facebook.edit = URL do Facebook -profile.socialnetworking.linkedin = LinkedIn -profile.socialnetworking.linkedin.edit = URL do LinkedIn -profile.socialnetworking.myspace = MySpace -profile.socialnetworking.myspace.edit = URL do MySpace -profile.socialnetworking.skype = Skype -profile.socialnetworking.skype.edit = Nome de usu\u00e1rio do Skype -profile.socialnetworking.skype.link = Meu Skype -profile.socialnetworking.twitter = Twitter -profile.socialnetworking.twitter.edit = URL do Twitter -profile.socialnetworking.update = Atualizado os detalhes das rede sociais no perfil -profile.staff.update = Atualizada as informa\u00e7\u00f5es institucionais no perfil -profile.staffprofile = Perfil Institucional -profile.student.update = Atualizada as informa\u00e7\u00f5es do aluno no perfil -profile.subjects = Assuntos -profile.summary = Resumo pessoal -profile.universityprofileurl = URL do perfil da Universidade - -success.message.send.ok = Enviar mensagem -success.preferences.save.ok = Salvo com sucesso -success.privacy.save.ok = Salvo com sucesso - -text.edit.other.warning = Cuidado: voc\u00ea esta alterando as informa\u00e7\u00f5es de {0}. -text.friend.add = {0} precisar\u00e1 confirmar o seu pedido. -text.friend.already = Voc\u00ea j\u00e1 tem {0} como contato. -text.friend.already.pending = J\u00e1 existe um pedido de contato pendente entre voc\u00ea e {0}. -text.friend.cancel = Tem certeza que deseja cancelar seu pedido de contato com {0}? N\u00e3o ser\u00e3o notificados. -text.friend.confirm = Isto confirmar\u00e1 a solicita\u00e7\u00e3o de contato com {0}. -text.friend.confirmed = Voc\u00eas est\u00e1 conectado -text.friend.feed.num.many = {0} contatos -text.friend.feed.num.none = 0 contatos -text.friend.feed.num.one = 1 contato -text.friend.ignore = Tem certeza de que deseja ignorar o pedido de contato de {0}? Eles n\u00e3o ser\u00e3o notificados. -text.friend.none = Voc\u00ea n\u00e3o tem {0} como contato. -text.friend.pending = Pedido de contato pendente -text.friend.remove = Tem certeza que deseja remover {0} como contato? N\u00e3o ser\u00e3o notificados. -text.friend.requested = contato pendente -text.friend.self = Esse \u00e9 voc\u00ea! -text.gallery.feed.num.none = 0 fotos -text.gallery.pictures.num.none = Sua galeria n\u00e3o cont\u00e9m nenhuma imagem. -text.gallery.upload.tooltip = Fazer upload para a galeria de imagens do seu computador. O tamanho das imagens n\u00e3o deve exceder {0}MB. -text.image.url = Digite a URL de uma imagem para usar como sua imagem de perfil -text.messages.none = Nenhuma mensagem -text.no.fields = Voc\u00ea n\u00e3o preencheu todas as informa\u00e7\u00f5es ainda -text.no.status = Diga algo -text.privacy.academicinfo.tooltip = Escolha quem pode ver suas informa\u00e7\u00f5es acad\u00eamicas como a faculdade, departamento ou curso. -text.privacy.basicinfo.tooltip = Escolha quem pode ver suas informa\u00e7\u00f5es b\u00e1sicas, como apelido e anivers\u00e1rio. -text.privacy.birthyear.tooltip = Escolha se quer ou n\u00e3o exibir ou ocultar o ano de nascimento. Se selecionado ser\u00e1 vis\u00edvel. -text.privacy.businessinfo.tooltip = Escolha quem pode ver as informa\u00e7\u00f5es de neg\u00f3cios. -text.privacy.cannot.modify = Estes valores s\u00e3o alterados pelo administrador e est\u00e3o bloqueados. -text.privacy.contactinfo.tooltip = Escolha quem pode ver seus endere\u00e7os de email e n\u00fameros de telefone. -text.privacy.messages.tooltip = Escolha quem pode enviar mensagens. -text.privacy.myfriends.tooltip = Escolha quem pode ver sua lista de contatos. -text.privacy.mykudos.tooltip = Escolha quem pode ver sua pontua\u00e7\u00e3o de reconhecimento (se ativado em Prefer\u00eancias). -text.privacy.mypictures.tooltip = Escolha quem pode ver sua galeria de fotos. -text.privacy.mystatus.tooltip = Escolha quem pode ver suas atualiza\u00e7\u00f5es de estado. -text.privacy.mywall.tooltip = Escolha quem pode ver seu mural. -text.privacy.onlinestatus.tooltip = Escolha quem pode ver seu estado online. Voc\u00ea aparecer\u00e1 offline para todos os outros. -text.privacy.personalinfo.tooltip = Escolha quem pode ver seus livros e programas de TV favoritos. -text.privacy.profileimage.tooltip = Escolha quem pode ver sua imagem de perfil.. -text.privacy.socialinfo.tooltip = Escolha quem pode ver suas informa\u00e7\u00f5es de redes sociais, como seus perfis de Facebook, LinkedIn e MySpace. -text.privacy.staff.tooltip = Escolher quem pode ver suas informa\u00e7\u00f5es institucionais -text.privacy.student.tooltip = Escolher quem pode ver suas informa\u00e7\u00f5es de aluno -text.profile.birthyear.tooltip = Voc\u00ea pode optar por exibir / ocultar o seu ano de nascimento em suas configura\u00e7\u00f5es de Privacidade -text.profile.facebook.tooltip = Por exemplo http://www.facebook.com/user -text.profile.linkedin.tooltip = Por exemplo http://www.linkedin.com/pub/user -text.profile.locked.false = Bloquear um perfil significa que o usu\u00e1rio n\u00e3o poder\u00e1 editar suas informa\u00e7\u00f5es. -text.profile.locked.true = Desbloquear um perfil permite que um usu\u00e1rio edite suas informa\u00e7\u00f5es. -text.profile.myspace.tooltip = Por exemplo http://myspace.com/user -text.profile.presence.away = {0} est\u00e1 ausente -text.profile.presence.offline = {0} N\u00e3o est\u00e1 dispon\u00edvel -text.profile.presence.online = {0} est\u00e1 online -text.profile.twitter.tooltip = Por exemplo http://twitter.com/sakaiproject -text.search.byinterest.all.results = Exibindo {0} resultados para: {1} -text.search.byinterest.label = Interesses comuns -text.search.byinterest.no.results = N\u00e3o h\u00e1 contatos com interesses comuns correspondentes a {0}. -text.search.byinterest.one.result = Exibindo 1 resultado para {0} -text.search.byinterest.paged.results = Exibindo {0} resultados (at\u00e9 {1} resultados por p\u00e1gina) para: {2} -text.search.byinterest.tooltip = Digite um interesse, por exemplo 'ciclismo' para encontrar pessoas com interesses semelhantes -text.search.byname.all.results = Exibindo {0} resultados por: {1} -text.search.byname.label = O nome da pessoa ou e-mail -text.search.byname.no.results = N\u00e3o h\u00e1 resultados para {0}. -text.search.byname.one.result = Exibindo 1 resultado para: {0} -text.search.byname.paged.results = Exibindo {0} resultados (at\u00e9 {1} resultados por p\u00e1gina) para: {2} -text.search.byname.tooltip = Digite um nome ou endere\u00e7o de e-mail para encontrar contatos -text.search.history = Busca anteriores -text.search.include.connections = Incluir contatos nos resultados da pesquisa -text.search.include.worksite = Limitar a pesquisa no site selecionado -text.search.no.input = Voc\u00ea n\u00e3o digitou nada -text.search.no.results = N\u00e3o h\u00e1 resultados para {0}. -text.search.no.worksite = Voc\u00ea n\u00e3o \u00e9 membro de nenhum site -text.search.paged.results = Exibindo {0} - {1} de {2} resultados para: {3} -text.search.terms.label = Termos de busca -text.search.terms.tooltip = Digite os termos da busca, dependendo se a busca por nome/e-mail ou por interesse -text.search.toomany.results = Sua busca para {0} retornou {1} ou mais resultados. Somente o primeiro {1} ser\u00e1 exibido. -text.upload.image.file = Selecione uma imagem do seu computador (m\u00e1ximo {0}MB): -text.view.profile.nothing = Esta pessoa restringiu a visualiza\u00e7\u00e3o de suas informa\u00e7\u00f5es ou n\u00e3o tem nenhuma informa\u00e7\u00e3o de perfil para compartilhar. -text.view.wall.nothing = No momento n\u00e3o existem itens no mural de {0} . Seja o primeiro a postar algo! -text.view.wall.restricted = Somente os contatos de {0} podem ser visto neste mural. Adicionar {0} como um contato para visualizar e postar neste mural. -text.wall.no.items = No momento n\u00e3o existem itens para exibir em seu mural. -text.wall.remove.mine = Remover postagem do seu mural? -text.wall.remove.other = Remover postagem de {0} do seu mural? -text.worksite.create = Selecione as pessoas dispon\u00edveis e crie um novo site. -text.worksite.refresh = Atualize o navegador para acessar o novo site depois de criado - -title.change.profile.picture = Alterar sua imagem de perfil -title.friend.add = Adicionar {0} como um contato? -title.friend.cancel = Cancelar pedido de contato? -title.friend.confirm = Confirmar pedido de contato de {0} ? -title.friend.ignore = Ignorar pedido de contato? -title.friend.remove = Remover contato? -title.message.compose = Compor nova mensagem -title.wall.comment = Comente sobre a postagem no mural de {0} -title.wall.remove = Remover do mural? - -twitter.auth.do = Vincular conta do Twitter -twitter.auth.linked = Conta do Twitter vinculada -twitter.enabled = Ativar integra\u00e7\u00e3o com o Twitter - -twitterUrl.UrlValidator = URL inv\u00e1lida - -urlField.Required = Voc\u00ea n\u00e3o digitou uma URL - -workphone.PhoneNumberValidator = N\u00famero de telefone inv\u00e1lido - -worksite.name = Nome do site -text.image.refresh = Nota: Se a nova imagem n\u00e3o aparecer imediatamente, tente atualizar o seu navegador. +#------------------------------------------------------------------------------- +# Translated by: e-Labora: e-Learning Laboratory - State University of Campinas +# Translated by: LARC - Laboratory of Architecture and Computer Networks +# TIDIA-Ae Project Fapesp, Sao Paulo, Brazil +#------------------------------------------------------------------------------- + + +# Do not add properties to any top level nodes that have children, as this breaks the jquery i18n plugin. +# Instead arrange your properties as per the example below. +# +# BAD: +# name = steve +# name.other = steveborg +# +# GOOD: +# name.real = steve +# name.other = steveborg +# +# See https://jira.sakaiproject.org/browse/PRFL-851 +# +RequiredValidator = '${label}' \u00e9 obrigat\u00f3rio + +accessibility.edit.basic = Alterar Informa\u00e7\u00f5es Pessoais +accessibility.edit.contact = Alterar Informa\u00e7\u00f5es B\u00e1sicas +accessibility.image.upload = Fazer upload de uma foto para seu perfil +accessibility.image.url = Digite a url para a sua imagem de perfil +accessibility.messages.unread = Mensagem n\u00e3o lida +accessibility.prefs.gravatar = Usar meu avatar como minha imagem de perfil +accessibility.prefs.officialimage = Use a imagem oficial da institui\u00e7\u00e3o como minha imagem de perfil +accessibility.prefs.overview = Prefer\u00eancias de notifica\u00e7\u00e3o de e-mail +accessibility.prefs.requests.off = Enviar email quando algu\u00e9m me acrescentar como um contato, desativado +accessibility.prefs.requests.on = Enviar email quando algu\u00e9m me acrescentar como um contato, ativado +accessibility.profile.email.input = Digite seu email +accessibility.profile.facebookurl.input = Digite a URL do seu Facebook +accessibility.profile.linkedinurl.input = Digite a URL de seu LinkedIn +accessibility.profile.mobilephone.input = Digite seu n\u00famero de celular +accessibility.profile.nickname.input = Digite seu apelido +accessibility.profile.summaryinput = Digite seu resumo pessoal + +button.cancel = Cancelar +button.close = Fechar +button.edit = Alterar +button.link = Link +button.save = Salvar +button.save.changes = Salvar altera\u00e7\u00f5es +button.save.settings = Salvar configura\u00e7\u00f5es +button.sayit = Publicar +button.upload = Fazer Upload +button.url.add = Adicionar URL + +error.empty.file.uploaded = Voc\u00ea tentou fazer upload de um arquivo v\u00e1zio +error.file.save.failed = Falha ao Salvar arquivo +error.invalid.image.type = Apenas as imagens de tipos de PNG, JPG e GIF s\u00e3o permitidas. +error.no.file.uploaded = Voc\u00ea n\u00e3o escolheu um arquivo +error.password.required = A senha \u00e9 obrigat\u00f3ria +error.preferences.save.failed = Falha ao Salvar +error.profile.save.contact.failed = Falha ao Salvar +error.profile.save.info.failed = Falha ao Salvar +error.url.save.failed = Falha ao Salvar URL +error.username.required = Nome de usu\u00e1rio \u00e9 obrigat\u00f3rio + +exception.heading.session.expired = Sess\u00e3o expirou +exception.text.session.expired = Infelizmente, a sua sess\u00e3o expirou. Tente atualizar a p\u00e1gina ou sair e, em seguida, fa\u00e7a novamente o login para reiniciar a sess\u00e3o. + +facebookUrl.UrlValidator = URL inv\u00e1lida + +facsimile.PhoneNumberValidator = N\u00famero de telefone inv\u00e1lido + +form.uploadTooLarge = O upload deve ser menor que ${maxSize} + +heading.basic = Informa\u00e7\u00f5es B\u00e1sicas +heading.basic.edit = Informa\u00e7\u00f5es B\u00e1sicas +heading.contact = Informa\u00e7\u00f5es de Contato +heading.contact.edit = Informa\u00e7\u00f5es de Contato +heading.preferences = Prefer\u00eancias +heading.section.email = Notifica\u00e7\u00f5es de E-mail +heading.section.image = Configura\u00e7\u00f5es da imagem de perfil +heading.section.widget = Configura\u00e7\u00f5es do Widget +heading.social = Redes Sociais +heading.social.edit = Redes Sociais + +link.change.profile.picture = Alterar foto +link.edit = Alterar +link.edit.info = Alterar informa\u00e7\u00f5es +link.my.preferences = Prefer\u00eancias +link.my.preferences.tooltip = Gerenciar suas prefer\u00eancias +link.my.profile = Meu perfil +link.my.profile.tooltip = Visualizar e editar seu perfil +link.profile.locked.false = Bloquear este perfil? +link.profile.locked.true = Perfil bloqueado. Desbloquear? +link.title.rss = Visualizar ou personalizar sua alimenta\u00e7\u00e3o RSS + +linkedinUrl.UrlValidator = URL inv\u00e1lida + +mobilephone.PhoneNumberValidator = N\u00famero de telefone inv\u00e1lido + +page.title = Perfil + +preference.option.off = Desativado +preference.option.on = Ativado + +preferences.image.gravatar = Usar meu avatar como minha imagem de perfil +preferences.image.message = Configurar as defini\u00e7\u00f5es relacionadas com a sua imagem de perfil +preferences.image.official = Use a imagem institucional oficial como minha imagem de perfil +preferences.twitter.message = Suas atualiza\u00e7\u00f5es de estado tamb\u00e9m podem atualizar sua conta do Twitter + +profile.contact.update = Informa\u00e7\u00f5es de contato atualizadas no perfil +profile.email = Email +profile.image.change.upload = Imagem do perfil alterada +profile.image.change.url = imagem de perfil alterada +profile.info.update = Alterada informa\u00e7\u00f5es b\u00e1sicas no perfil +profile.nickname = Apelido +profile.phone.mobile = Celular +profile.socialnetworking.facebook = Facebook +profile.socialnetworking.facebook.edit = URL do Facebook +profile.socialnetworking.linkedin = LinkedIn +profile.socialnetworking.linkedin.edit = URL do LinkedIn +profile.socialnetworking.update = Atualizado os detalhes das rede sociais no perfil +profile.summary = Resumo pessoal + +success.preferences.save.ok = Salvo com sucesso + +text.edit.other.warning = Cuidado: voc\u00ea esta alterando as informa\u00e7\u00f5es de {0}. +text.image.url = Digite a URL de uma imagem para usar como sua imagem de perfil +text.no.fields = Voc\u00ea n\u00e3o preencheu todas as informa\u00e7\u00f5es ainda +text.no.status = Diga algo +text.profile.facebook.tooltip = Por exemplo http://www.facebook.com/user +text.profile.linkedin.tooltip = Por exemplo http://www.linkedin.com/pub/user +text.profile.locked.false = Bloquear um perfil significa que o usu\u00e1rio n\u00e3o poder\u00e1 editar suas informa\u00e7\u00f5es. +text.profile.locked.true = Desbloquear um perfil permite que um usu\u00e1rio edite suas informa\u00e7\u00f5es. +text.upload.image.file = Selecione uma imagem do seu computador (m\u00e1ximo {0}MB): +text.view.profile.nothing = Esta pessoa restringiu a visualiza\u00e7\u00e3o de suas informa\u00e7\u00f5es ou n\u00e3o tem nenhuma informa\u00e7\u00e3o de perfil para compartilhar. + +title.change.profile.picture = Alterar sua imagem de perfil + +urlField.Required = Voc\u00ea n\u00e3o digitou uma URL + +text.image.refresh = Nota: Se a nova imagem n\u00e3o aparecer imediatamente, tente atualizar o seu navegador. diff --git a/profile2/api/src/resources/ProfileApplication_ro_RO.properties b/profile2/api/src/resources/ProfileApplication_ro_RO.properties index a2834356e592..2dd331ddcc30 100644 --- a/profile2/api/src/resources/ProfileApplication_ro_RO.properties +++ b/profile2/api/src/resources/ProfileApplication_ro_RO.properties @@ -14,399 +14,106 @@ # RequiredValidator='${label}' este obligatoriu -accessibility.connection.add=Adauga {0} ca si conexiune? -accessibility.connection.confirm=Confirmati solicitarea de conexiune a lui {0}? -accessibility.connection.ignore=Ignorati solicitarea de conexiune a lui {0}? -accessibility.connection.remove=Eliminati {0} din conexiunile dvs.? accessibility.edit.basic=Editati informatiile de baza -accessibility.edit.business=Editati informatiile de afaceri accessibility.edit.contact=Editati informatiile de contact -accessibility.edit.personal=Editati informatiile personale accessibility.edit.pronunciation=Editati pronuntia numelui accessibility.edit.social=Editati informatiile de social networking -accessibility.edit.staff=Editati informatiile despre personal -accessibility.edit.student=Editati informatiile despre student accessibility.image.upload=Incarcati o poza la profilul dvs. accessibility.image.url=Introduceti url-ul pentru poza dvs. de profil -accessibility.messages.unread=Mesaj necitit -accessibility.prefs.confirms.off=Trimiteti-mi un e-mail cand cineva imi confirma solicitarea de conectare, dezactivata -accessibility.prefs.confirms.on=Trimiteti-mi un e-mail cand cineva imi confirma solicitarea de conectare, activata -accessibility.prefs.gallery=Afisati pozele mele pe profil accessibility.prefs.gravatar=Utilizati gravatarul ca si imaginea mea de profil -accessibility.prefs.kudos=Afisati scorul meu kudos pe profilul meu -accessibility.prefs.messagenew.off=Trimiteti-mi un e-mail cand cineva imi trimite un mesaj nou, dezactivata -accessibility.prefs.messagenew.on=Trimiteti-mi un e-mail cand cineva imi trimite un mesaj nou, activata -accessibility.prefs.messagereply.off=Trimiteti-mi un e-mail cand cineva imi raspunde la unul din mesajele mele, dezactivata -accessibility.prefs.messagereply.on=Trimiteti-mi un e-mail cand cineva imi raspunde la unul din mesajele mele, activata accessibility.prefs.officialimage=Utilizati imaginea oficiala institutionala ca si imagine de profil -accessibility.prefs.onlinestatus=Afiseaza celorlalti statusul meu online accessibility.prefs.overview=Preferinte de notificare pe e-mail -accessibility.prefs.requests.off=Trimiteti-mi un e-mail cand cineva ma adauga ca si conexiune, dezactivata -accessibility.prefs.requests.on=Trimiteti-mi un e-mail cand cineva ma adauga ca si conexiune, activata -accessibility.prefs.twitterauthcode=Introduceti codul de autorizare Twitter -accessibility.prefs.wallnew.off=Trimiteti-mi un e-mail cand cineva posteaza pe peretele meu, dezactivata -accessibility.prefs.wallnew.on=Trimiteti-mi un e-mail cand cineva posteaza pe peretele meu,activata -accessibility.prefs.worksite.off=Trimiteti-mi un e-mail cand cineva ma adauga la un nou site de lucru, dezactivata -accessibility.prefs.worksite.on=Trimiteti-mi un e-mail cand cineva ma adauga la un nou site de lucru, activata -accessibility.privacy.academic=Selectati cine poate vedea informatiile dvs. academice precum scoala, departamentul sau cursul. -accessibility.privacy.basic=Selectati cine poate vedea informatiile dvs. de baza precum porecla si data nasterii. -accessibility.privacy.birthyear=Selectati daca ascundeti sau afisati anul nasterii dvs. Daca este bifat inseamna ca este vizibil. -accessibility.privacy.business=Selectati cine poate vedea informatiile dvs. de afaceri, precum industria, functia si blogul de afaceri. -accessibility.privacy.contact=Selectati cine poate vedea informatii precum adresa dvs. de e-mail si numerele de telefon. -accessibility.privacy.friends=Selectati cine poate vizualiza lista dvs. de conexiuni. -accessibility.privacy.image=Selectati cine poate vedea poza dvs. de profil. -accessibility.privacy.kudos=Selectati cine poate vedea scorul dvs. kudos (daca este activat din Preferinte). -accessibility.privacy.messages=Selectati cine va poate trimite mesaje. -accessibility.privacy.onlinestatus=Selectati cine va poate vedea statusul dvs. online. -accessibility.privacy.overview=Controlati cine poate vedea care parti din profilul dvs. -accessibility.privacy.personal=Selectati cine va poate vedea cartile si emisiunile tv dvs. preferate -accessibility.privacy.pictures=Selectati cine poate vedea galeria dvs. de poze. -accessibility.privacy.social=Selectati cine poate vedea informatiile dvs. de social networking, precum profilurile de Facebook, Linkedin si MySpace. -accessibility.privacy.staff=Selectati cine poate vedea informatiile despre personal -accessibility.privacy.status=Selectati cine poate vedea actualizarile statusului dvs. -accessibility.privacy.student=Selectati cine poate vedea informatiile dvs. de student -accessibility.privacy.wall=Selectati cineva va poate vedea peretele. -accessibility.profile.academicprofileurl.input=Introduceti url-ul pentru profilul dvs. academic -accessibility.profile.birthday=Selectati data nasterii dvs. Puteti controla afisajul anului dvs. de nastere din Preferinte. -accessibility.profile.businessbio.input=Introduceti biografia afacerii dvs. -accessibility.profile.companydescription.input=Introduceti descrierea acestei companii -accessibility.profile.companyname.input=Introduceti numele acestei companii -accessibility.profile.companyurl.input=Introduceti adresa web a acestei companii -accessibility.profile.course.input=Introduceti cursul dvs. -accessibility.profile.department.input=Introduceti departamentul dvs. accessibility.profile.email.input=Introduceti e-mailul dvs. accessibility.profile.facebookurl.input=Introduceti url-ul profilului dvs. de Facebook -accessibility.profile.facsimile.input=Introduceti nr. dvs. de fax -accessibility.profile.favouritebooks.input=Introduceti cartile dvs. preferate -accessibility.profile.favouritemovies.input=Introduceti filmele dvs. favorite -accessibility.profile.favouritequotes.input=Introduceti citatele dvs. preferate -accessibility.profile.favouritetv.input=Introduceti emisiunile dvs. preferate -accessibility.profile.homepage.input=Introduceti url-ul paginii dvs. -accessibility.profile.homephone.input=Introduceti nr. dvs. de telefonie fixa accessibility.profile.linkedinurl.input=Introduceti url-ul de Linkedin -accessibility.profile.messagebody.input=Introduceti mesajul dvs. -accessibility.profile.messagerecipient.input=Selectati un destinatar -accessibility.profile.messagesubject.input=Introduceti un subiect pentru mesaj accessibility.profile.mobilephone.input=Introduceti nr. dvs. de mobil -accessibility.profile.myspaceurl.input=Introduceti url-ul de Linkedin -accessibility.profile.name.recording=Inregistrati pronuntia numelui dvs. accessibility.profile.nickname.input=Introduceti porecla dvs. accessibility.profile.phonetic.input=Introduceti pronuntia fonetica -accessibility.profile.position.input=Introduceti functia dvs. -accessibility.profile.publications.input=Introduceti publciatiile dvs. -accessibility.profile.room.input=Introduceti sala dvs. -accessibility.profile.school.input=Introduceti scoala dvs. -accessibility.profile.skypeusername.input=Introduceti numele de utilizator pe Skype -accessibility.profile.staffprofile.input=Introduceti profilul personalului dvs. -accessibility.profile.status.clear=Stergeti statutul dvs. -accessibility.profile.status.input=Introduceti statusul dvs. curent -accessibility.profile.subjects.input=Introduceti subiectele dvs. accessibility.profile.summaryinput=Introduceti sumarul personal -accessibility.profile.twitterurl.input=Introduceti url-ul Twitter -accessibility.profile.uniprofileurl.input=Introduceti url-ul profilului dvs. de la universitate -accessibility.profile.wallpost.input=Introduceti textul pentru postarea pe perete -accessibility.profile.workphone.input=Introduceti nr. dvs. de telefon de munca accessibility.profile.pronouns.select=Selectati un set de pronume dintr-o lista accessibility.profile.pronouns.input=Introduceti pronumele proprii -accessibility.search.connections=Introduceti conexiunile in rezultatele cautarii -accessibility.search.worksite=Limiteaza cautarea la site-urile de lucru selectate accessibility.tooltip=Afisati informatii despre aceaasta optiune -accessibility.wall.comment=Comentati la postarea de pe perete a lui {0} -accessibility.wall.remove.mine=Eliminati postarea de pe peretele dvs.? -accessibility.wall.remove.other=Eliminati postarea lui {0} de pe peretele dvs.? -button.business.add.profile=Adaugati profil companie -button.business.remove.profile=Eliminati profil companie button.cancel=Anuleaza button.close=Inchide button.edit=Editeaz\u0103 -button.friend.add=Adaugati conexiune -button.friend.cancel=Anulati solicitarea de conexiune -button.friend.confirm=Confirmati solicitarea de conexiune -button.friend.ignore=Ignorati solicitarea de conexiune -button.friend.remove=Elimina conexiunea -button.gallery.remove=Elimina poza -button.gallery.remove.confirm=Confirmati eliminarea -button.gallery.setprofile=Seteaza ca si imagine de profil -button.gallery.setprofile.confirm=Confirmati noua imagine de profil -button.gallery.upload=Incarcati fisierele selectate button.link=Link -button.message.reply=Raspunde -button.message.send=Trimite mesaj button.record=Inregistreaza button.release.microphone=Eliberati microfonul button.save=Salveaz\u0103 button.save.changes=Salvati modificarile button.save.settings=Salvati setarile button.sayit=Spuneti -button.search.byinterest=Cautare dupa interese comune -button.search.byname=Cautare dupa nume sau e-mail -button.search.clear=Sterge cautarea -button.search.generic=Cautare -button.search.history.clear=Stergeti istoricul button.stop=Stop button.upload=Incarcati button.url.add=Adauga URL -button.wall.comment=Adauga comentariu -button.wall.post=Posteaza pe perete -button.wall.remove=Elimina de pe perete -button.worksite.cancel=Anuleaza -button.worksite.create=Creati #EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=Adresa de e-mail nevalida error.empty.file.uploaded=Ati incercat sa incarcati un fisier gol error.file.save.failed=Eroare la salvarea fisierului -error.friend.add.failed=A aparut o eroare la trimiterea unei cereri de conectare catre {0}. -error.friend.already.confirmed=Sunteti deja conectat cu {0}. -error.friend.already.pending=Exista deja o cerere de conexiune in asteptare pentru {0}. -error.friend.confirm.failed=A aparut o eroare la confirmarea solicitarii de conextare a lui {0}. -error.friend.ignore.failed=A aparut o eroare la ignorarea solicitarii de conectare a lui {0}. -error.friend.not.friend=Sunteti conectat cu {0} astfel ca nu poate fi eliminat\! -error.friend.not.pending.confirm=Nu exista solicitare de conectare in asteptare de la {0} astfel ca nu o puteti confirma\! -error.friend.not.pending.ignore=Nu exista o solicitare de conectare in asteptare de la {0} astfel ca nu o puteti ignora\! -error.friend.remove.failed=A aparut o eroare la eliminarea lui {0} din lista dvs. de conexiuni. -error.friend.view.disallowed=Nu puteti vizualiza conexiunile lui {0}. -error.gallery.remove.failed=Nu se poate elimina fotografia din galerie -error.gallery.setprofile.failed=Nu se poate seta fotografia ca imagine de profil -error.gallery.upload.warning=Selectati fisierul(ele) mai intai error.invalid.image.type=Sunt permise doar imaginile de tipul PNG, JPG, si GIF. -error.message.required.body=Mesajul nu poate fi gol -error.message.required.to=Trebuie sa selectati o conexiune catre care sa trimiteti mesajul -error.message.send.failed=A aparut o eroare la trimiterea mesajului dvs. error.no.file.uploaded=Nu ati selectat un fisier error.password.required=Este necesara parola error.preferences.save.failed=Salvare esuata -error.privacy.save.failed=Salvare esuata -error.profile.save.academic.failed=Salvare esuata -error.profile.save.business.failed=Salvare esuata error.profile.save.contact.failed=Salvare esuata error.profile.save.info.failed=Salvare esuata -error.profile.save.interests.failed=Salvare esuata -error.twitter.details.invalid=Acreditarile dvs. de Twitter nu au putut fi verificate error.url.save.failed=Eroare la salvarea url-ului error.username.required=Numele de utilizator este necesar -error.wall.comment.empty=Ati incercat sa adaugati un comentariu gol -error.wall.comment.failed=Comentariu esuat -error.wall.post.empty=Ati incercat sa efectuati o postare goala -error.wall.post.failed=Eroare la postare -error.worksite.create.failed=Eroare la crearea site-ului de lucru -error.worksite.no.title=Trebuie sa dati un numele site-ului -error.worksite.title.maxLength=Lungimea titlului nu poate depasi {0} caractere. Va rugam sa furnizati un titlu mai scurt -error.worksite.title.htmlStrippedToEmpty=Titlul site-ului nu poate contine HTML. Va rugam sa furnizati un titlu de site valid. exception.heading.session.expired=Sesiune expirata exception.text.session.expired=Din pacate sesiuena dvs. a expirat. Incercati sa reimprospatati pagina sau sa va deconectati, apoi sa va conectati din nou pentru a restarta sesiunea. facebookUrl.UrlValidator=URL nevalid -facsimile.PhoneNumberValidator=Numar de telefon nevalid - form.uploadTooLarge=Incarcarea trebuie sa fie mai mica de ${dimensiune maxima} -heading.academic=Informatii academice -heading.academic.edit=Informatii academice heading.basic=Informatii de baza heading.basic.edit=Informatii de baza -heading.business=Informatii de business -heading.business.edit=Informatii de business heading.contact=Informatii de contact heading.contact.edit=Informatii de contact -heading.friend.requests=Solicitare de conexiune - -heading.friends.my=Conexiunile mele - -heading.friends.view=conexiunile lui {0} - -heading.interests=Informatii personale -heading.interests.edit=Informatii personale -heading.messages=Mesajele mele heading.name.pronunciation=Pronun\u021barea numelui \u0219i pronumele heading.name.pronunciation.edit=Pronun\u021barea numelui \u0219i pronumele -heading.pictures.addpicture=Adaugati poza -heading.pictures.my.pictures=Pozele mele -heading.pictures.view.pictures=pozele lui {0} heading.preferences=Preferinte -heading.privacy=Setari Confidentialitate -heading.search=Cauta profiluri -heading.section.academic.staff=Pentru personal\: -heading.section.academic.students=Pentru studenti\: heading.section.email=Notificari prin e-mail heading.section.image=Setari imagine de profil -heading.section.twitter=Integrare Twitter heading.section.widget=Setari Widget heading.social=Retele sociale heading.social.edit=Social Networking -heading.staff=Informatii personal -heading.staff.edit=Informatii personal -heading.status=Status -heading.student=informatii student -heading.student.edit=informatii student -heading.widget.my.friends=Conexiunile mele -heading.widget.my.kudos=Kudos-urile mele -heading.widget.my.pictures=Pozele mele -heading.widget.view.friends=conexiunile lui {0} -heading.widget.view.kudos=kudos-urile lui {0} -heading.widget.view.pictures=pozele lui {0} #UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=URL nevalid - -homephone.PhoneNumberValidator=Numar de telefon nevalid link.change.profile.picture=Modifica poza link.edit=Editeaz\u0103 link.edit.info=Editati informatiile -link.friend.add=Adauga ca si conexiune -link.friend.add.name=Adaugati pe {0} ca si conexiune -link.friend.confirm=Confirmati conexiunea -link.friend.feed.search=Cautati conexiuni -link.friend.feed.view=Vizualizati conexiunile -link.friend.ignore=Ignorati conexiunea -link.friend.remove=Elimina conexiunea -link.friend.request.act=Actionati asurpa acestei cereri -link.friend.search=Cautati conexiuni? -link.gallery.feed.addnew=Adaugati poza noua -link.gallery.feed.view=Vizualizati toate pozele -link.gallery.image.view=Vizualizati imaginea link.image.current.remove=\u00cenl\u0103tur\u0103 link.image.current.remove.confirm=Aceasta va elimina imaginea de profil curenta si o va restabili la valoarea implicita. Va trebui sa incarcati una noua pentru a o schimba din nou. Sunteti sigur? -link.messages.back=Inapoi la lista de mesaje -link.messages.compose=Compuneti mesaj -link.messages.mymessages=Mesajele mele -link.messages.viewthread=Vizualizati sir -link.my.friends=Conexiuni -link.my.friends.search=Cautati conexiuni -link.my.friends.tooltip=Vizualizati si gestionati conexiunile dvs. -link.my.messages=Mesaje -link.my.messages.tooltip=Trimiteti si cititi mesajele private -link.my.pictures=Poze -link.my.pictures.tooltip=Adaugati poze si vizualizati galeria dvs. link.my.preferences=Preferinte link.my.preferences.tooltip=Gestionati preferintele dvs. -link.my.privacy=Confidentialitate -link.my.privacy.tooltip=Gestionati confidentialitatea link.my.profile=Profilul meu link.my.profile.tooltip=Vizualizati si editati profilul dvs. link.other.profile=Profilul lui {0} -link.my.search=Cautare -link.my.search.tooltip=Cautati persoane si vizualizati profilurile acestora link.profile.locked.false=Blocati acest profil? link.profile.locked.true=Profil blocat. Deblocati? -link.status.clear=Stergeti -link.status.update=Actualizeaz\u0103 -link.tab.profile=Profil -link.tab.profile.tooltip=Vizualizati profil -link.tab.wall=Perete -link.tab.wall.tooltip=Vizualizati perete -link.title.confirmfriend=Confirmati solicitarea de conexiune -link.title.ignorefriend=Ignorati solicitarea de conexiune -link.title.removefriend=Elimina conexiunea link.title.rss=Vizualizati sau personalizati fluxul dvs. RSS personalizat -link.title.unlinktwitter=Anulati link-ul profilului Twitter -link.title.wall.comment=Comentati la postarea de pe perete a lui {0} -link.title.wall.remove=Eliminati de pe peretele dvs. -link.view.friends=Vizualizati conexiunile -link.wall.item.comment=Comentati -link.wall.item.remove=\u00cenl\u0103tur\u0103 -link.worksite.create=Creati site de lucru linkedinUrl.UrlValidator=URL nevalid -message.message=Mesaj -message.reply=Raspunde -message.subject=Subiect -message.to=Catre - mobilephone.PhoneNumberValidator=Numar de telefon nevalid -myspaceUrl.UrlValidator=URL nevalid - page.title=Profil -palette.available=Disponibil -palette.selected=Selectat - -pictures.addpicture=Adaugati fisiere de poze noi la galerie -pictures.filetypewarning=Doar fisierele jpeg, png si gif pot fi adaugate in galerie -pictures.removepicture=Eliminati aceasta poza din galerie -pictures.removepicture.confirm=Sunteti sigur ca doriti sa eliminati aceasta poza din galeria dvs.? -pictures.setprofileimage=Setati aceasta poza ca si poza mea de profil -pictures.setprofileimage.confirm=Sunteti sigur ca doriti sa inlocuiti imaginea dvs. curenta de profil cu aceaasta imagine? - preference.option.off=Oprit preference.option.on=la -preferences.email.confirms=Imi confirma solicitarea mea de conexiune -preferences.email.message=Trimiteti-mi un e-mail la {0} atunci cand o persoana\: -preferences.email.message.new=Imi trimite un mesaj nou -preferences.email.message.reply=Raspunde la unul din mesajele mele -preferences.email.none=(NU ESTE SETATA NICIO ADRESA DE E-MAIL) -preferences.email.requests=Ma adauga ca si conexiune -preferences.email.wall.new=Posteaza pe peretele meu -preferences.email.worksite.new=Ma adauga pe un site nou de lucru preferences.image.gravatar=Utilizati gravatarul ca si imaginea mea de profil -preferences.image.message=Configureaza setari legate de imaginea dvs. de profil preferences.image.official=Utilizati imaginea oficiala institutionala ca si imagine de profil -preferences.twitter.message=Actualizarile dvs. de status pot actualiza de asemenea si contul dvs. de Twitter -preferences.widget.gallery=Afiseaza pozele mele -preferences.widget.gallery.tooltip=Pozele dvs. vor aparea pe profilul dvs. daca se bifeaza. -preferences.widget.kudos=Afiseaza scorul meu de kudos -preferences.widget.kudos.tooltip=Scorul dvs. de kudos va aparea pe Profilul dvs. odata ce scorul dvs. a fost calculat -preferences.widget.message=Controlati care widget-uri apar pe profilul dvs. -preferences.widget.onlinestatus=Afiseaza statusul meu oniine -preferences.widget.onlinestatus.tooltip=Arata daca sunteti sau nu online. Daca este activat, puteti controla in continuare acest lucru in setarile de confidentialitate. Daca este dezactivat, veti aparea ca fiind offline - -privacy.academicinfo=Informatii academice -privacy.basicinfo=Informatii de baza -privacy.birthyear=Afiseaza anul nasterii -privacy.businessinfo=Informatii de business -privacy.contactinfo=Informatii de contact -privacy.messages=Cine imi poate trimite mesaje? -privacy.myfriends=Cine imi poate vedea conexiunile? -privacy.mykudos=Cine imi poate vedea scorul de kudos? -privacy.mypictures=Cine imi poate vedea pozele? -privacy.mystatus=Cine imi poate vedea actualizarile de status? -privacy.mywall=Cine imi poate vedea peretele si postarile pe alti pereti? -privacy.onlinestatus=Cine imi poate vedea statusul online? -privacy.option.everyone=Toata lumea -privacy.option.nobody=Nimeni -privacy.option.onlyfriends=Doar conexiunile mele -privacy.option.onlyme=Doar eu -privacy.personalinfo=Informatii personale -privacy.profileimage=Imagine de profil -privacy.search=Cautare -privacy.socialinfo=Informatii sociale -privacy.staffinfo=Informatii despre personal -privacy.studentinfo=Informatii student -profile.academicprofileurl=URL academic/de cercetare -profile.birthday=Data nasterii -profile.business.bio=Biografia profesionala -profile.business.company.description=Descrierea societatii -profile.business.company.name=Denumirea societatii -profile.business.company.profile=Profil -profile.business.company.profiles=Profiluri companie -profile.business.company.web=Adresa web a companiei -profile.business.update=S-au actualizat informatiile profesionale in profil profile.contact.update=S-au actualizat informatiile de contact in profil -profile.course=Diploma/Curs -profile.department=Departament profile.email=Email -profile.favourite.books=Carti favorite -profile.favourite.movies=Filme favorite -profile.favourite.quotes=Citate favorite -profile.favourite.tv=Spectacole TV favorite -profile.gallery.image.alt=Pozele mele -profile.gallery.image.upload=Incarcat in galeria mea de proze de profil -profile.homepage=Pagina acasa profile.image.change.upload=Imagine de profil schimbata profile.image.change.url=Imagine de profil schimbata profile.info.update=S-au actualizat informatiile de baza in profil -profile.interests.update=S-au actualizat informatiile personale in profil -profile.name.first=Prenume -profile.name.first.none=Utilizator -profile.name.last=Numele de familie -profile.name.middle=Al doilea prenume -profile.name.recording=Inregistrarea numelui profile.nickname=Porecla profile.pronouns=Pronume profile.pronouns.options=El/A, ai, ale lui, Ea/A, ai, ale ei, Ei/Ai,a,ale lor, Xe/Xem/Xyr(s),Ze/Hir/Hir(s),Ze/Zir/Zirs @@ -423,169 +130,33 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=Fax -profile.phone.home=Telefon de acasa profile.phone.mobile=Telefon mobil -profile.phone.work=Telefon de lucru -profile.position=Pozitie -profile.publications=Publicatii si conferinte -profile.room=Sala -profile.school=Scoala profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook URL profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn URL -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace URL profile.socialnetworking.instagram=Instagram profile.socialnetworking.instagram.edit=Instagram URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Nume utilizator Skype -profile.socialnetworking.skype.link=Apeleaza-ma pe Skype -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter URL profile.socialnetworking.update=Au fost actualizate detaliile retelelor sociale in profil -profile.staff.update=Au fost actualizate informatiile despre personal in profil -profile.staffprofile=Profilul personalului -profile.student.update=Au fost actualizate informatiile studentului in profil -profile.subjects=Subiecte profile.summary=Sumar personal -profile.universityprofileurl=URL profil universitate -success.message.send.ok=Mesaj trimis success.preferences.save.ok=Salvat cu succes -success.privacy.save.ok=Salvat cu succes text.edit.other.warning=Atentie\: Editati informatiile lui {0}. -text.friend.add={0} va trebui sa va confirme cererea. -text.friend.already=Sunteti deja conectat cu {0}. -text.friend.already.pending=Exista deja o cerere de conectare in asteptare intre dvs. si {0}. -text.friend.cancel=Sunteti sigur ca doriti sa anulati cererea dvs. de conectare in asteptare catre {0}? Persoana nu va fi notificata. -text.friend.confirm=Aceasta va vonfirma cererea de conectare a lui {0}. -text.friend.confirmed=Sunteti conectat -text.friend.feed.num.many={0} conexiuni -text.friend.feed.num.none=0 conexiuni -text.friend.feed.num.one=1 conexiune -text.friend.ignore=Sunteti sigur ca doriti sa ignorati cererea de conectare a lui {0}? Persoana nu va fi notificata. -text.friend.none=Nu sunteti conectat cu {0}. -text.friend.pending=Solicitare de conectare in asteptare -text.friend.remove=Sunteti sigur ca doriti sa eliminati {0} din conexiuni? Persoana nu va fi notificata. -text.friend.requested=Conexiune solicitata -text.friend.self=Acesta sunteti dvs.\! -text.gallery.feed.num.none=0 poze -text.gallery.pictures.num.none=Galeria dvs. nu contine inca nicio poza. -text.gallery.upload.tooltip=Incarcati imagini in galerie de pe computer. Dimensiunea combinata a imaginilor de incarcat nu trebuie sa depaseasca {0}MB. text.image.refresh=Nota\: daca noua imagine nu apare imediat, incercati sa va reimprospatati browserul. text.image.url=Introduceti adresa URL a unei imagini pe care sa o utilizati ca imagine de profil -text.messages.none=Nu exista mesaje text.name.pronunciation.description=Va permite sa furnizati pronuntie fonetica scrisa si/sau inregistrari audio ale numelui dvs.
Aceasta pronuntie va fi vizibila pentru instructorii / studentii inscrisi pe site-urile cursurilor dvs. text.no.fields=Inca nu ati completat nicio informatie text.no.status=Spuneti ceva text.or=sau -text.privacy.academicinfo.tooltip=Selectati cine poate vedea informatiile dvs. academice precum scoala, departamentul sau cursul. -text.privacy.basicinfo.tooltip=Selectati cine poate vedea informatiile dvs. de baza precum porecla si data nasterii. -text.privacy.birthyear.tooltip=Selectati daca ascundeti sau afisati anul nasterii dvs. Daca este bifat inseamna ca este vizibil. -text.privacy.businessinfo.tooltip=Selectati cine poate vedea informatiile dvs. de afaceri, precum industria, functia si blogul de afaceri. -text.privacy.cannot.modify=Aceste valori sunt blocate de administratorul dvs. si nu pot fi modificate. -text.privacy.contactinfo.tooltip=Selectati cine poate vedea informatii precum adresa dvs. de e-mail si numerele de telefon. -text.privacy.messages.tooltip=Selectati cine va poate trimite mesaje. -text.privacy.myfriends.tooltip=Selectati cine poate vizualiza lista dvs. de conexiuni. -text.privacy.mykudos.tooltip=Selectati cine poate vedea scorul dvs. kudos (daca este activat din Preferinte). -text.privacy.mypictures.tooltip=Selectati cine poate vedea galeria dvs. de poze. -text.privacy.mystatus.tooltip=Selectati cine poate vedea actualizarile statusului dvs. -text.privacy.mywall.tooltip=Selectati cineva va poate vedea peretele. -text.privacy.onlinestatus.tooltip=Alegeti cine poate vedea statusul dvs. online. Veti aparea offline pentru ceilalti. -text.privacy.personalinfo.tooltip=Selectati cine va poate vedea cartile si emisiunile tv dvs. preferate -text.privacy.profileimage.tooltip=Selectati cine poate vedea poza dvs. de profil. -text.privacy.socialinfo.tooltip=Selectati cine poate vedea informatiile dvs. de social networking, precum profilurile de Facebook, Linkedin si MySpace. -text.privacy.staff.tooltip=Selectati cine poate vedea informatiile despre personal -text.privacy.student.tooltip=Selectati cine poate vedea informatiile dvs. de student -text.profile.birthyear.tooltip=Puteti alege sa afisati/ascundeti anul nasterii dvs. din setarile de confidentialitate text.profile.facebook.tooltip=ex. http\://www.facebook.com/user text.profile.linkedin.tooltip=ex. http\://www.linkedin.com/pub/user text.profile.locked.false=Blocarea unui profil inseamna ca utilizatorul nu isi poate edita informatiile. text.profile.locked.true=Deblocarea unui profil inseamna ca utilizatorul isi poate edita informatiile. -text.profile.myspace.tooltip=ex. http\://myspace.com/user text.profile.instagram.tooltip=ex. https\://www.instagram.com/user/ -text.profile.presence.away={0} este plecat -text.profile.presence.offline={0} nu este disponibil -text.profile.presence.online={0} este online -text.profile.twitter.tooltip=ex. http\://twitter.com/sakaiproject -text.search.byinterest.all.results=Se afiseaza rezultatele {0} pentru\: {1} -text.search.byinterest.label=Interese comune -text.search.byinterest.no.results=Nu exista persoane cu interese comune care se potrivesc cu {0}. -text.search.byinterest.one.result=Se afiseaza 1 rezultat pentru\: {0} -text.search.byinterest.paged.results=Se afiseaza {0} rezultate (pana la {1} rezultat per pagina) pentru\: {2} -text.search.byinterest.tooltip=Introduceti un interes, ex. 'ciclism' pentru a gasi persoane cu interese similare -text.search.byname.all.results=Se afiseaza rezultatele {0} pentru\: {1} -text.search.byname.label=Numele sau e-mailul persoanei -text.search.byname.no.results=Nu exista rezultate care se potrivesc cu {0}. -text.search.byname.one.result=Se afiseaza 1 rezultat pentru\: {0} -text.search.byname.paged.results=Se afiseaza {0} rezultate (pana la {1} rezultat per pagina) pentru\: {2} -text.search.byname.tooltip=Introduceti un nume sau o adresa de e-mail pentru a gasi persoane -text.search.history=Cautari anterioare -text.search.include.connections=Introduceti conexiunile in rezultatele cautarii -text.search.include.worksite=Limiteaza cautarea la site-urile de lucru selectate -text.search.no.input=Nu ati introdus nimic -text.search.no.results=Nu exista rezultate pentru {0}. -text.search.no.worksite=Inca nu sunteti membru al niciunui site de lucru -text.search.paged.results=Se afiseaza {0} - {1} din {2} rezultate pentru\: {3} -text.search.terms.label=Cauta termeni -text.search.terms.tooltip=Introduceti termenii de cautare in functie de cautarea dupa nume/e-mail sau dupa interes -text.search.toomany.results=Cautarea dvs. {0} a regasit {1} sau mai multe rezultate. Doar primele {1} au fost furnizate. text.upload.image.file=Selectati un fisier de imagine din computerul dvs. (max {0}MB)\: text.view.profile.nothing=Aceasta persoana a restrictionat vizualizarea informatiilor sale sau nu are de partajat informatii de profil. -text.view.wall.nothing=Momentan nu exista itemi pe peretele lui {0}. Fii primul care posteaza\! -text.view.wall.restricted=Doar conexiunile lui{0} pot vedea acest perete. Adaugati {0} ca si conexiune pentru a vizualiza si posta pe acest perete. -text.wall.no.items=Momentan nu exista itemi de afisat pe peretele dvs. -text.wall.remove.mine=Eliminati postarea de pe peretele dvs.? -text.wall.remove.other=Eliminati postarea lui {0} de pe peretele dvs.? -text.worksite.create=Selectati din persoanele disponibile si creati un nou site de lucru. -text.worksite.refresh=Reimprospatati browserul pentru a accesa noul site de lucru dupa creare title.change.profile.picture=Schimbati poza dvs. de profil -title.friend.add=Adauga {0} ca si conexiune? -title.friend.cancel=Anulati solicitarea de conexiune? -title.friend.confirm=Confirmati solicitarea de conexiune a lui {0}? -title.friend.ignore=Ignorati solicitarea de conexiune? -title.friend.remove=Elimina conexiunea? -title.message.compose=Compuneti mesaj nou -title.wall.comment=Comentati la postarea de pe peretele lui {0} -title.wall.remove=Eliminati de pe perete? - -twitter.auth.do=Conectati contul Twitter -twitter.auth.linked=Contul Twitter conectat -twitter.enabled=Activati integrarea Twitter - -twitterUrl.UrlValidator=URL nevalid urlField.Required=Nu ati introdus o adresa URL - -workphone.PhoneNumberValidator=Numar de telefon nevalid - -worksite.name=Denumire site de lucru - -email.connectionrequest.subject=v-a adaugat ca si conexiune pe -email.connectionrequest.added=va adaugat ca si conexiune pe -email.connectionrequest.toconfirm1=Pentru a confirma cererea de conectare de la -email.connectionrequest.toconfirm2=urmati url-ul de mai jos\: - -email.connectionconfirm.subject=v-a confirmat solicitarea dvs. de conactare pe -email.connectionconfirm.confirmed=v-a confirmat solicitarea dvs. de conactare pe -email.connectionconfirm.toview1=Pentru a vizualiza profilul lui -email.connectionconfirm.toview2=,urmati url-ul de mai jos\: - -email.messagenew.subject=v-a trimis un mesaj pe -email.messagenew.sent=v-a trimis un mesaj pe -email.messagenew.toview1=Pentru a vizualiza acest mesaj, urmati link-ul de mai jos\: - -email.messagereply.subject=a raspuns la mesajul dvs. de pe - -email.profilechange.subject=si-a modificat profilul de pe - -email.wallnew.subject=tocmai a postat pe peretele profilului lor de pe -email.wall.viewtheir=Pentru a le vizualiza profilul, urmariti link-ul de mai jos\: -email.wall.viewmy=Pentru a vizualiza profilul dvs., urmariti link-ul de mai jos\: - -email.mywallnew.subject=tocmai a postat pe peretele profilului dvs. de pe -email.wall.theirstatus.subject=statusul nou al lui 's a fost postat pe peretele profilului lor de pe diff --git a/profile2/api/src/resources/ProfileApplication_sr.properties b/profile2/api/src/resources/ProfileApplication_sr.properties index 7400a5b8826b..6a964b055bf4 100644 --- a/profile2/api/src/resources/ProfileApplication_sr.properties +++ b/profile2/api/src/resources/ProfileApplication_sr.properties @@ -14,399 +14,109 @@ # RequiredValidator=\u201e${label}\u201c je obavezno -accessibility.connection.add=Dodaj {0} kao vezu? -accessibility.connection.confirm=Potvrdi zahtev {0}-a za vezu? -accessibility.connection.ignore=Ignori\u0161i zahtev {0}-a za vezu? -accessibility.connection.remove=Ukloni {0} iz svojih veza? accessibility.edit.basic=Uredi osnovne informacije -accessibility.edit.business=Uredi poslovne informacije accessibility.edit.contact=Uredi kontakt infromacije -accessibility.edit.personal=Uredi li\u010dne informacije accessibility.edit.pronunciation=Uredi izgovor imena accessibility.edit.social=Uredi informacije o dru\u0161tvenim mre\u017eama -accessibility.edit.staff=Uredi informacije o zaposlenima -accessibility.edit.student=Uredi informacije o studentima accessibility.image.upload=Otpremi sliku za svoj profil accessibility.image.url=Unesi url za svoju profilnu sliku accessibility.messages.unread=Nepro\u010ditana poruka -accessibility.prefs.confirms.off=Po\u0161alji mi imejl kada neko potvrdi moj zahtev za vezu, onemogu\u0107eno -accessibility.prefs.confirms.on=Po\u0161alji mi imejl kada neko potvrdi moj zahtev za vezu, omogu\u0107eno -accessibility.prefs.gallery=Prika\u017ei moje slike na mom profilu accessibility.prefs.gravatar=Koristi moj gravatar kao moju profilnu sliku -accessibility.prefs.kudos=Prika\u017ei moj pozitivan rejting na mom profilu -accessibility.prefs.messagenew.off=Po\u0161alji mi imejl kada mi neko po\u0161alje poruku, onemogu\u0107eno -accessibility.prefs.messagenew.on=Po\u0161alji mi imejl kada mi neko po\u0161alje poruku, omogu\u0107eno -accessibility.prefs.messagereply.off=Po\u0161alji mi imejl kada neko odgovori na jednu od mojih poruka, onemogu\u0107eno -accessibility.prefs.messagereply.on=Po\u0161alji mi imejl kada neko odgovori na jednu od mojih poruka, omogu\u0107eno accessibility.prefs.officialimage=Koristi zvani\u010dnu institucionalnu sliku kao moju profilnu sliku -accessibility.prefs.onlinestatus=Prika\u017ei moj onlajn status drugima accessibility.prefs.overview=Preferencije obave\u0161tenja o imejlu -accessibility.prefs.requests.off=Po\u0161alji mi imejl kada me neko doda za vezu, onemogu\u0107eno -accessibility.prefs.requests.on=Po\u0161alji mi imejl kada me neko doda za vezu, omogu\u0107eno -accessibility.prefs.twitterauthcode=Unesi svoju Tviter lozinku -accessibility.prefs.wallnew.off=Po\u0161alji mi imejl kada neko po\u0161alje poruku na mom zidu, onemogu\u0107eno -accessibility.prefs.wallnew.on=Po\u0161alji mi imejl kada neko po\u0161alje poruku na mom zidu, omogu\u0107eno -accessibility.prefs.worksite.off=Po\u0161alji mi imejl kada me veza doda na novu radnu lokaciju, onemogu\u0107eno -accessibility.prefs.worksite.on=Po\u0161alji mi imejl kada me veza doda na novu radnu lokaciju, omogu\u0107eno -accessibility.privacy.academic=Izaberi ko mo\u017ee da vidi tvoje akademske informacije poput fakulteta, odseka ili kursa. -accessibility.privacy.basic=Izaberi ko mo\u017ee da vidi tvoje osnovne informacije poput nadimka i ro\u0111endana. -accessibility.privacy.birthyear=Izaberi da li \u017eeli\u0161 da prika\u017ee\u0161 ili da sakrije\u0161 svoju godinu ro\u0111enja. \u0160tiklirano zna\u010di da je vidljivo. -accessibility.privacy.business=Izaberi ko mo\u017ee da vidi tvoje poslovne informacije poput industrije, pozicije i radne biografije. -accessibility.privacy.contact=Izaberi ko mo\u017ee da vidi podatke poput tvojih imejl adresa i brojeva telefona. -accessibility.privacy.friends=Izaberi ko mo\u017ee da vidi tvoju listu veza. -accessibility.privacy.image=Izaberi ko mo\u017ee da vidi tvoju profilnu sliku. -accessibility.privacy.kudos=Izaberi ko mo\u017ee da vidi tvoj pozitivan rejting (ako je omogu\u0107eno u Preferencijama). -accessibility.privacy.messages=Izaberi ko mo\u017ee da ti po\u0161alje poruku. -accessibility.privacy.onlinestatus=Izaberi ko mo\u017ee da vidi tvoj onlajn status. -accessibility.privacy.overview=Kontroli\u0161i ko mo\u017ee da vidi koje delove tvog profila -accessibility.privacy.personal=Izaberi ko mo\u017ee da vidi tvoje omiljene knjige, TV emisije itd. -accessibility.privacy.pictures=Izaberi ko mo\u017ee da vidi tvoju galeriju slika. -accessibility.privacy.social=Izaberi ko mo\u017ee da vidi tvoje informacije sa dru\u0161tvenih mre\u017ea, poput tvojih Fejsbuk, LinkedIn i MySpace profila. -accessibility.privacy.staff=Izaberi ko mo\u017ee da vidi tvoje informacije o zaposlenima -accessibility.privacy.status=Izaberi ko mo\u017ee da vidi tvoja a\u017euriranja statusa. -accessibility.privacy.student=Izaberi ko mo\u017ee da vidi tvoje informacije o studentima -accessibility.privacy.wall=Izaberi ko mo\u017ee da vidi tvoj zid. -accessibility.profile.academicprofileurl.input=Unesi url za svoj akademski profil -accessibility.profile.birthday=Izaberi svoj datum ro\u0111enja. Mo\u017ee\u0161 da kontroli\u0161e\u0161 prikazivanje svoje godine ro\u0111enaj u Preferencijama. -accessibility.profile.businessbio.input=Unesi svoju radnu biografiju. -accessibility.profile.companydescription.input=Unesi opis ove kompanije -accessibility.profile.companyname.input=Unesi naziv ove kompanije -accessibility.profile.companyurl.input=Unesi veb-adresu ove kompanije -accessibility.profile.course.input=Unesi svoj kurs -accessibility.profile.department.input=Unesi svoj odsek accessibility.profile.email.input=Unesi svoj imejl. accessibility.profile.facebookurl.input=Unesi url svog Fejsbuk naloga -accessibility.profile.facsimile.input=Unesi svoj broj faksa -accessibility.profile.favouritebooks.input=Unesi svoje omiljene knjige -accessibility.profile.favouritemovies.input=Unesi svoje omiljene filmove -accessibility.profile.favouritequotes.input=Unesi svoje omiljene citate -accessibility.profile.favouritetv.input=Unesi svoje omiljene TV emisije -accessibility.profile.homepage.input=Unesi url svoje veb-stranice -accessibility.profile.homephone.input=Unesi svoj ku\u0107ni broj telefona accessibility.profile.linkedinurl.input=Unesi url svog LinkedIn profila -accessibility.profile.messagebody.input=Unesi svoju poruku -accessibility.profile.messagerecipient.input=Izaberi primaoca\: -accessibility.profile.messagesubject.input=Unesi predmet poruke accessibility.profile.mobilephone.input=Unesi broj svog mobilnog telefona -accessibility.profile.myspaceurl.input=Unesi url svog LinkedIn profila -accessibility.profile.name.recording=Zabele\u017ei izgovor svog imena accessibility.profile.nickname.input=Unesi svoj nadimak. accessibility.profile.phonetic.input=Unesi svoj fonetski izgovor -accessibility.profile.position.input=Unesi svoju poziciju -accessibility.profile.publications.input=Unesi svoje publikacije -accessibility.profile.room.input=Unesi svoju sobu -accessibility.profile.school.input=Unesi svoj fakultet -accessibility.profile.skypeusername.input=Unesi svoje Skype korisni\u010dko ime -accessibility.profile.staffprofile.input=Unesi profil svojih zaposlenih -accessibility.profile.status.clear=Obri\u0161i svoj status -accessibility.profile.status.input=Unesi svoj trenutni status -accessibility.profile.subjects.input=Unesi svoje predmete accessibility.profile.summaryinput=Unesi svoj li\u010dni rezime -accessibility.profile.twitterurl.input=Unesi url svog Tviter profila -accessibility.profile.uniprofileurl.input=Unesi url za svoj univerzitetski profil -accessibility.profile.wallpost.input=Unesi tekst za status na svom zidu -accessibility.profile.workphone.input=Unesi svoj broj telefona na poslu accessibility.profile.pronouns.select=Izaberi skup zamenica sa liste accessibility.profile.pronouns.input=Unesi svoje zamenice -accessibility.search.connections=Uklju\u010di veze u rezultate pretrage -accessibility.search.worksite=Ograni\u010di pretragu na izabranu radnu lokaciju accessibility.tooltip=Prika\u017ei informacije o ovoj opciji -accessibility.wall.comment=Komentar na {0}-ov status na zidu -accessibility.wall.remove.mine=Ukloni status sa svog zida? -accessibility.wall.remove.other=Ukloni status od {0} sa svog zida? -button.business.add.profile=Dodaj profil kompanije -button.business.remove.profile=Ukloni profil kompanije button.cancel=Otka\u017ei button.close=Zatvori button.edit=Uredi -button.friend.add=Dodaj vezu -button.friend.cancel=Otka\u017ei zahtev za vezu -button.friend.confirm=Potvrdi zahtev za vezu -button.friend.ignore=Ignori\u0161i zahtev za vezu -button.friend.remove=Ukloni vezu -button.gallery.remove=Ukloni sliku -button.gallery.remove.confirm=Potvrdi uklanjanje -button.gallery.setprofile=Podesi kao profilnu sliku -button.gallery.setprofile.confirm=Potvrdi novu profilnu sliku -button.gallery.upload=Otpremi izabrane datoteke button.link=Link -button.message.reply=Odgovori -button.message.send=Po\u0161alji poruku button.record=Snimi button.release.microphone=Objavi mikrofon button.save=Sa\u010duvaj button.save.changes=Sa\u010duvaj izmene button.save.settings=Sa\u010duvaj pode\u0161avanja button.sayit=Izgovori -button.search.byinterest=Pretra\u017euj po zajedni\u010dkim interesovanjima -button.search.byname=Pretra\u017euj po imenu ili imejlu -button.search.clear=Obri\u0161i pretragu -button.search.generic=Pretra\u017ei -button.search.history.clear=Obri\u0161i istorijat button.stop=stop button.upload=Otpremi button.url.add=Dodaj URL -button.wall.comment=Dodaj komentar -button.wall.post=Po\u0161alji na zid -button.wall.remove=Ukloni sa zida -button.worksite.cancel=Otka\u017ei -button.worksite.create=Kreiraj #EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=Neva\u017ee\u0107a imejl adresa error.empty.file.uploaded=Poku\u0161ao si da otpremi\u0161 praznu datoteku error.file.save.failed=\u010cuvanje datoteke nije uspelo -error.friend.add.failed=Do\u0161lo je do gre\u0161ke prilikom slanja zahteva za vezu {0}. -error.friend.already.confirmed=Ve\u0107 si povezan sa {0}. -error.friend.already.pending=Ve\u0107 postoji zahtev za vezu na \u010dekanju sa {0}. -error.friend.confirm.failed=Do\u0161lo je do gre\u0161ke prilikom potvr\u0111ivanja {0}-ovog zahteva za vezu. -error.friend.ignore.failed=Do\u0161lo je do gre\u0161ke prilikom ignorisanja {0}-ovog zahteva za vezu. -error.friend.not.friend=Nisi povezan sa {0} tako da ne mo\u017ee da se ukloni\! -error.friend.not.pending.confirm=Nema zahteva za vezu na \u010dekanju od {0} tako da ne mo\u017ee\u0161 da ga potvrdi\u0161\! -error.friend.not.pending.ignore=Nema zahteva za vezu na \u010dekanju od {0} tako da ne mo\u017ee\u0161 da ga ignori\u0161e\u0161\! -error.friend.remove.failed=Do\u0161lo je do gre\u0161ke prilikom uklanjanja {0} iz tvoje liste veza. -error.friend.view.disallowed=Ne mo\u017ee\u0161 da pregleda\u0161 {0}-ove veze. -error.gallery.remove.failed=Nemogu\u0107nost uklanjanja slike iz galerije -error.gallery.setprofile.failed=Nemogu\u0107nost pode\u0161avanja slike kao profilne slike -error.gallery.upload.warning=Prvo izaberi datoteku(e) error.invalid.image.type=Dozvoljene su samo slike tipa PNG, JPG i GIF. -error.message.required.body=Poruka ne mo\u017ee biti prazna -error.message.required.to=Mora\u0161 da izabere\u0161 vezu kojoj \u0107e\u0161 poslati poruku -error.message.send.failed=Do\u0161lo je do gre\u0161ke prilikom slanja tvoje poruke error.no.file.uploaded=Nisi izabrao datoteku error.password.required=Potrebna je lozinka error.preferences.save.failed=\u010cuvanje nije uspelo -error.privacy.save.failed=\u010cuvanje nije uspelo -error.profile.save.academic.failed=\u010cuvanje nije uspelo -error.profile.save.business.failed=\u010cuvanje nije uspelo error.profile.save.contact.failed=\u010cuvanje nije uspelo error.profile.save.info.failed=\u010cuvanje nije uspelo -error.profile.save.interests.failed=\u010cuvanje nije uspelo -error.twitter.details.invalid=Tvoji Tviter akreditivi nisu mogli da budu verifikovani error.url.save.failed=\u010cuvanje url-a nije uspelo error.username.required=Potrebno je korisni\u010dko ime -error.wall.comment.empty=Poku\u0161ao si da doda\u0161 prazan komentar -error.wall.comment.failed=Komentar nije uspeo -error.wall.post.empty=Poku\u0161ao si da ostavi\u0161 prazan komentar -error.wall.post.failed=Komentar nije uspeo -error.worksite.create.failed=Kreiranje radne lokacije nije uspelo -error.worksite.no.title=Mora\u0161 da da\u0161 lokaciji naziv -error.worksite.title.maxLength=Du\u017eina naslova ne mo\u017ee da prelazi {0} karaktera. Molimo stavi kra\u0107i naslov. -error.worksite.title.htmlStrippedToEmpty=Naslov stranice ne mo\u017ee da sadr\u017ei HTML. Molimo navedi va\u017ee\u0107i naslov stranice. exception.heading.session.expired=Sesija je istekla exception.text.session.expired=Na\u017ealost, tvoja sesija je istekla. Poku\u0161aj da osve\u017ei\u0161 stranicu ili da se odjavi\u0161, a zatim se ponovo prijavi kako bi restartovao svoju sesiju. facebookUrl.UrlValidator=Neispravan URL -facsimile.PhoneNumberValidator=Neva\u017ee\u0107i broj telefona - form.uploadTooLarge=Otpremanje mora biti manje od ${maks. veli\u010dina} -heading.academic=Akademske informacije -heading.academic.edit=Akademske informacije heading.basic=Osnovne informacije heading.basic.edit=Osnovne informacije -heading.business=Poslovne informacije -heading.business.edit=Poslovne informacije heading.contact=Kontakt informacije heading.contact.edit=Kontakt informacije -heading.friend.requests=Zahtevi za vezu - -heading.friends.my=Moje veze - -heading.friends.view={0}-ove veze - -heading.interests=Li\u010dne informacije -heading.interests.edit=Li\u010dne informacije -heading.messages=Moje poruke heading.name.pronunciation=Izgovor imena i zamenice heading.name.pronunciation.edit=Izgovor imena i zamenice -heading.pictures.addpicture=Dodaj sliku -heading.pictures.my.pictures=Moje slike -heading.pictures.view.pictures={0}'s slike heading.preferences=Reference -heading.privacy=Postavke privatnosti -heading.search=Pretra\u017ei profile -heading.section.academic.staff=Za zaposlene\: -heading.section.academic.students=Za studente\: heading.section.email=Obave\u0161tenja o imejlu heading.section.image=Pode\u0161avanja profilne slike -heading.section.twitter=Integracija Tvitera heading.section.widget=Pode\u0161avanja vid\u017eeta heading.social=Dru\u0161tveno umre\u017eavanje heading.social.edit=Dru\u0161tveno umre\u017eavanje -heading.staff=Informacije o zaposlenima -heading.staff.edit=Informacije o zaposlenima -heading.status=Status -heading.student=Informacije o studentu -heading.student.edit=Informacije o studentu -heading.widget.my.friends=Moje veze -heading.widget.my.kudos=Moj pozitivan rejting -heading.widget.my.pictures=Moje slike -heading.widget.view.friends={0}-ove veze -heading.widget.view.kudos={0}-ov pozitivan rejting -heading.widget.view.pictures={0}'s slike - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=Neispravan URL - -homephone.PhoneNumberValidator=Neva\u017ee\u0107i broj telefona link.change.profile.picture=Izmeni sliku link.edit=Uredi link.edit.info=Uredi infromacije -link.friend.add=Dodaj kao vezu -link.friend.add.name=Dodaj {0} kao vezu -link.friend.confirm=Potvrdi vezu -link.friend.feed.search=Pretra\u017ei veze -link.friend.feed.view=Vidi sve veze -link.friend.ignore=Ignori\u0161i vezu -link.friend.remove=Ukloni vezu -link.friend.request.act=Postupi po ovom zahtevu -link.friend.search=Pretraga za nekim vezama? -link.gallery.feed.addnew=Dodaj novu sliku -link.gallery.feed.view=Vidi sve slike -link.gallery.image.view=Pregledaj sliku link.image.current.remove=Ukloni link.image.current.remove.confirm=Ovim \u0107e se ukloniti trenutna profilna slika i vrati\u0107e se na podrazumevano. Mora\u0107e\u0161 da otpremi\u0161 novu kako bi je ponovo promenio. Da li si siguran? -link.messages.back=Povratak na listu poruka -link.messages.compose=Sastavi poruku -link.messages.mymessages=Moje poruke -link.messages.viewthread=Vidi niz -link.my.friends=Veze -link.my.friends.search=Pretra\u017ei veze -link.my.friends.tooltip=Pregledaj i upravljaj svojim vezama -link.my.messages=Poruke -link.my.messages.tooltip=Po\u0161alji i pro\u010ditaj privatne poruke -link.my.pictures=Slike -link.my.pictures.tooltip=Dodaj slike i pregledaj svoju galeriju link.my.preferences=Reference link.my.preferences.tooltip=Upravljaj svojim preferencijama -link.my.privacy=Privatnost -link.my.privacy.tooltip=Upravljaj svojom privatno\u0161\u0107u link.my.profile=Moj profil link.my.profile.tooltip=Pregledaj i uredi svoj profil link.other.profile={0}-ov profil -link.my.search=Pretra\u017ei -link.my.search.tooltip=Pretra\u017ei ljude i pregledaj njihove profile link.profile.locked.false=Zaklju\u010daj ovaj profil link.profile.locked.true=Profil zaklju\u010dan. Otklju\u010daj? -link.status.clear=Obri\u0161i -link.status.update=A\u017euriranje -link.tab.profile=Profil -link.tab.profile.tooltip=Pogledaj profil -link.tab.wall=Zid -link.tab.wall.tooltip=Pregledaj zid -link.title.confirmfriend=Potvrdi zahtev za vezu -link.title.ignorefriend=Ignori\u0161i zahtev za vezu -link.title.removefriend=Ukloni vezu link.title.rss=Pregledaj ili prilagodi svoj personalizovani RSS feed link.title.unlinktwitter=Ukloni link za Tviter nalog -link.title.wall.comment=Komentar na {0}-ov status na zidu -link.title.wall.remove=Ukloni sa svog zida -link.view.friends=Vidi veze -link.wall.item.comment=Komentar -link.wall.item.remove=Ukloni -link.worksite.create=Kreiraj radnu lokaciju linkedinUrl.UrlValidator=Neispravan URL -message.message=Poruka -message.reply=Odgovori -message.subject=Predmet -message.to=Za - mobilephone.PhoneNumberValidator=Neva\u017ee\u0107i broj telefona myspaceUrl.UrlValidator=Neispravan URL page.title=Profil -palette.available=Dostupno -palette.selected=Ozna\u010deno - -pictures.addpicture=Dodaj novu sliku u galeriju -pictures.filetypewarning=Samo jpeg, png i gif datoteke se mogu dodati u galeriju -pictures.removepicture=Ukloni ovu sliku iz galerije -pictures.removepicture.confirm=Da li si siguran da \u017eeli\u0161 da ukloni\u0161 ovu sliku iz svoje galerije? -pictures.setprofileimage=Podesi ovu sliku kao moju profilnu sliku -pictures.setprofileimage.confirm=Da li si siguran da \u017eeli\u0161 da zameni\u0161 svoju trenutnu profilnu sliku ovom slikom? - preference.option.off=Isklju\u010deno preference.option.on=Na -preferences.email.confirms=Potvr\u0111uje moj zahtev za vezu -preferences.email.message=Po\u0161alji mi imejl na {0} kada neko\: -preferences.email.message.new=\u0160alje mi novu poruku -preferences.email.message.reply=Odgovara na jednu od mojih poruka -preferences.email.none=(NEMA PODE\u0160ENE IMEJL ADRESE) -preferences.email.requests=Dodaje me kao vezu -preferences.email.wall.new=\u0160alje na moj zid -preferences.email.worksite.new=Dodaje me na novu radnu lokaciju preferences.image.gravatar=Koristi moj gravatar kao moju profilnu sliku -preferences.image.message=Konfiguri\u0161i pode\u0161avanja u vezi sa svojom profilnom slikom preferences.image.official=Koristi zvani\u010dnu institucionalnu sliku kao moju profilnu sliku -preferences.twitter.message=A\u017euriranja tvog statusa mogu tako\u0111e da a\u017euriraju i tvoj Tviter nalog -preferences.widget.gallery=Prika\u017ei moje slike -preferences.widget.gallery.tooltip=Tvoje slike \u0107e se pojaviti na tvom profilu ako \u0161tiklira\u0161. -preferences.widget.kudos=Prika\u017ei moj pozitivan rejting -preferences.widget.kudos.tooltip=Tvoj pozitivan rejting \u0107e se pojaviti na tvom profilu kada se izra\u010duna tvoj rezultat -preferences.widget.message=Kontroli\u0161i koji vid\u017eeti se pojavljuju na tvom profilu -preferences.widget.onlinestatus=Prika\u017ei moj onlajn status -preferences.widget.onlinestatus.tooltip=Prikazuje da li si onlajn ili nisi. Ako je to omogu\u0107eno, mo\u017ee\u0161 dodatno da kontroli\u0161e\u0161 ovo u svojim pode\u0161avanjima privatnosti. Ako je onemogu\u0107eno, bi\u0107e prikazano da si onlajn. - -privacy.academicinfo=Akademske informacije -privacy.basicinfo=Osnovne informacije -privacy.birthyear=Prika\u017ei godinu ro\u0111enja -privacy.businessinfo=Poslovne informacije -privacy.contactinfo=Kontakt informacije -privacy.messages=Ko mo\u017ee da mi \u0161alje poruke? -privacy.myfriends=Ko mo\u017ee da pregleda moje veze? -privacy.mykudos=Ko mo\u017ee da vidi moj pozitivan rejting? -privacy.mypictures=Ko mo\u017ee da pregleda moje slike? -privacy.mystatus=Ko mo\u017ee da vidi moja a\u017euriranja statusa? -privacy.mywall=Ko mo\u017ee da vidi moj zid i moje komentare na drugim zidovima? -privacy.onlinestatus=Ko mo\u017ee da vidi moj onlajn status? -privacy.option.everyone=Svako -privacy.option.nobody=Niko -privacy.option.onlyfriends=Samo moje veze -privacy.option.onlyme=Samo ja -privacy.personalinfo=LI\u010dne informacije -privacy.profileimage=Profilna slika -privacy.search=Pretra\u017ei -privacy.socialinfo=Dru\u0161tvene informacije -privacy.staffinfo=Informacije o zaposlenima -privacy.studentinfo=Informacije o studentima -profile.academicprofileurl=Akademski/istra\u017eiva\u010dki URL -profile.birthday=Ro\u0111endan -profile.business.bio=Poslovna biografija -profile.business.company.description=Opis kompanije -profile.business.company.name=Ime kompanije -profile.business.company.profile=Profil -profile.business.company.profiles=Profili kompanije -profile.business.company.web=Veb-adresa kompanije -profile.business.update=A\u017eurirane poslovne informacije na profilu profile.contact.update=A\u017eurirane kontakt informacije na profilu -profile.course=Stepen/kurs -profile.department=Odeljenje +gprofile.department=Odeljenje profile.email=Imejl -profile.favourite.books=Omiljene knjige -profile.favourite.movies=Omiljeni filmovi -profile.favourite.quotes=Omiljeni citati -profile.favourite.tv=Omiljene TV emisije -profile.gallery.image.alt=Moje slike -profile.gallery.image.upload=A\u017eurirano u galeriju slika na profilu -profile.homepage=Po\u010detna stranica profile.image.change.upload=Izmenjena profilna slika profile.image.change.url=Izmenjena profilna slika profile.info.update=A\u017eurirane osnovne informacije na profilu -profile.interests.update=A\u017eurirane li\u010dne informacije na profilu -profile.name.first=Ime -profile.name.first.none=Korisnik -profile.name.last=Prezime -profile.name.middle=Srednje ime -profile.name.recording=Bele\u017eenje imena profile.nickname=Nadimak profile.pronouns=Zamenice profile.pronouns.options=On/njemu/njegov, ona/njoj/njen, oni/njima/njihov, Xe/Xem/Xyr(s), Ze/Hir/Hir(s), Ze/Zir/Zirs @@ -423,169 +133,35 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=Faksimil -profile.phone.home=Ku\u0107ni telefon profile.phone.mobile=Mobilni telefon -profile.phone.work=Poslovni telefon -profile.position=Pozicija -profile.publications=Publikacije i konferencije -profile.room=Prostorija -profile.school=\u0160kola profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook URL profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn URL -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace URL profile.socialnetworking.instagram=Instagram profile.socialnetworking.instagram.edit=Instagram URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Skype korisni\u010dko ime -profile.socialnetworking.skype.link=Skype Me -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter URL profile.socialnetworking.update=A\u017eurirani podaci sa dru\u0161tvenih mre\u017ea na profilu -profile.staff.update=A\u017eurirane informacije o zaposlenima na profilu -profile.staffprofile=Profil zaposlenih -profile.student.update=A\u017eurirane informacije o studentima na profilu -profile.subjects=Predmeti profile.summary=Li\u010dni rezime -profile.universityprofileurl=URL profila univerziteta -success.message.send.ok=Poruka poslata success.preferences.save.ok=Uspe\u0161no sa\u010duvano -success.privacy.save.ok=Uspe\u0161no sa\u010duvano text.edit.other.warning=Oprez\: Ure\u0111uje\u0161 {0}-ove informacije. -text.friend.add={0} \u0107e morati da potvrdi tvoj zahtev. -text.friend.already=Ve\u0107 si povezan sa {0}. -text.friend.already.pending=Ve\u0107 postoji zahtev za vezu na \u010dekanju izme\u0111u tebe i {0}. -text.friend.cancel=Da li si siguran da \u017eeli\u0161 da otka\u017ee\u0161 svoj zahtev za vezu na \u010dekanju sa {0}? Oni ne\u0107e biti obave\u0161teni. -text.friend.confirm=Ovo \u0107e potvrditi {0}-ov zahtev za vezu. -text.friend.confirmed=Povezan si -text.friend.feed.num.many={0} veze -text.friend.feed.num.none=0 veze -text.friend.feed.num.one=1 veza -text.friend.ignore=Da li si siguran da \u017eeli\u0161 da ignori\u0161e\u0161 {0}-ov zahtev za vezu? Oni ne\u0107e biti obave\u0161teni. -text.friend.none=Nisi povezan sa {0}. -text.friend.pending=Zahtev za vezu na \u010dekanju -text.friend.remove=Da li si siguran da \u017eeli\u0161 da gleda\u0161 {0} kao vezu? Oni ne\u0107e biti obave\u0161teni. -text.friend.requested=Veza je zahtevana -text.friend.self=Ovo si ti\! -text.gallery.feed.num.none=0 slika -text.gallery.pictures.num.none=Tvoja galerija jo\u0161 uvek ne sadr\u017ei nikakve slike. -text.gallery.upload.tooltip=Otpremi slike galerije sa svog kompjutera. Kombinovana veli\u010dina slika za otpremanje ne treba da prema\u0161uje {0}MB. text.image.refresh=Napomena\: ako se nova slika ne pojavi odmah, poku\u0161aj da osve\u017ei\u0161 svoj pretra\u017eiva\u010d. text.image.url=Unesi URL slike koju koristi\u0161 kao svoju profilnu sliku -text.messages.none=Nema poruka text.name.pronunciation.description=Omogu\u0107ava ti da obezbedi\u0161 fonetski pismeni izgovor i/ili audio snimke svog imena.
Ovaj izgovor bi\u0107e vidljiv instruktorima / studentima upisanim na tvoje lokacije kursa. text.no.fields=Jo\u0161 uvek nisi naveo nikakve informacije text.no.status=Reci ne\u0161to text.or=ili -text.privacy.academicinfo.tooltip=Izaberi ko mo\u017ee da vidi tvoje akademske informacije poput fakulteta, odseka ili kursa. -text.privacy.basicinfo.tooltip=Izaberi ko mo\u017ee da vidi tvoje osnovne informacije poput nadimka i ro\u0111endana. -text.privacy.birthyear.tooltip=Izaberi da li \u017eeli\u0161 da prika\u017ee\u0161 ili da sakrije\u0161 svoju godinu ro\u0111enja. \u0160tiklirano zna\u010di da je vidljivo. -text.privacy.businessinfo.tooltip=Izaberi ko mo\u017ee da vidi tvoje poslovne informacije poput industrije, pozicije i radne biografije. -text.privacy.cannot.modify=Ove vrednosti blokira tvoj administrator i ne mogu se menjati. -text.privacy.contactinfo.tooltip=Izaberi ko mo\u017ee da vidi podatke poput tvojih imejl adresa i brojeva telefona. -text.privacy.messages.tooltip=Izaberi ko mo\u017ee da ti po\u0161alje poruku. -text.privacy.myfriends.tooltip=Izaberi ko mo\u017ee da vidi tvoju listu veza. -text.privacy.mykudos.tooltip=Izaberi ko mo\u017ee da vidi tvoj pozitivan rejting (ako je omogu\u0107eno u Preferencijama). -text.privacy.mypictures.tooltip=Izaberi ko mo\u017ee da vidi tvoju galeriju slika. -text.privacy.mystatus.tooltip=Izaberi ko mo\u017ee da vidi tvoja a\u017euriranja statusa. -text.privacy.mywall.tooltip=Izaberi ko mo\u017ee da vidi tvoj zid. -text.privacy.onlinestatus.tooltip=Izaberi ko mo\u017ee da vidi tvoj onlajn status. Za druge \u0107e\u0161 biti onlajn. -text.privacy.personalinfo.tooltip=Izaberi ko mo\u017ee da vidi tvoje omiljene knjige, TV emisije itd. -text.privacy.profileimage.tooltip=Izaberi ko mo\u017ee da vidi tvoju profilnu sliku. -text.privacy.socialinfo.tooltip=Izaberi ko mo\u017ee da vidi tvoje informacije sa dru\u0161tvenih mre\u017ea, poput tvojih Fejsbuk, LinkedIn i MySpace profila. -text.privacy.staff.tooltip=Izaberi ko mo\u017ee da vidi tvoje informacije o zaposlenima -text.privacy.student.tooltip=Izaberi ko mo\u017ee da vidi tvoje informacije o studentima -text.profile.birthyear.tooltip=Mo\u017ee\u0161 izabrati da prika\u017ee\u0161/sakrije\u0161 svoju godinu ro\u0111enja u svojim pode\u0161avanjima privatnosti text.profile.facebook.tooltip=e.g. http\://www.facebook.com/user text.profile.linkedin.tooltip=e.g. http\://www.linkedin.com/pub/user text.profile.locked.false=Blokiranje profila zna\u010di da korisnik ne mo\u017ee da ure\u0111uje svoje informacije. text.profile.locked.true=Deblokada profila \u0107e omogu\u0107iti korisniku da uredi svoje informacije. text.profile.myspace.tooltip=e.g. http\://myspace.com/user text.profile.instagram.tooltip=e.g. https\://www.instagram.com/user/ -text.profile.presence.away={0} je odsutan -text.profile.presence.offline={0} nije dostupan -text.profile.presence.online={0} je onlajn text.profile.twitter.tooltip=e.g. http\://twitter.com/sakaiproject -text.search.byinterest.all.results=Prikaz {0} rezultata za\: {1} -text.search.byinterest.label=Zajedni\u010dka interesovanja -text.search.byinterest.no.results=Nema ljudi sa zajedni\u010dkim interesovanjima koji odgovaraju {0}. -text.search.byinterest.one.result=Prikaz 1 rezultata za\: {0} -text.search.byinterest.paged.results=Prikaz {0} rezultata (do {1} rezultata po stranici) za\: {2} -text.search.byinterest.tooltip=Unesi interesovanje, npr. \u201ebiciklizam\u201c kako bi prona\u0161ao ljude sa sli\u010dnim interesovanjima -text.search.byname.all.results=Prikaz {0} rezultata za\: {1} -text.search.byname.label=Ime ili imejl osobe -text.search.byname.no.results=Nema rezultata koji odgovaraju {0}. -text.search.byname.one.result=Prikaz 1 rezultata za\: {0} -text.search.byname.paged.results=Prikaz {0} rezultata (do {1} rezultata po stranici) za\: {2} -text.search.byname.tooltip=Unesi ime ili imejl adresu da prona\u0111e\u0161 ljude -text.search.history=Prethodne pretrage -text.search.include.connections=Uklju\u010di veze u rezultate pretrage -text.search.include.worksite=Ograni\u010di pretragu na izabranu radnu lokaciju -text.search.no.input=Ni\u0161ta nisi uneo -text.search.no.results=Nema rezultata za {0}. -text.search.no.worksite=Jo\u0161 uvek nisi \u010dlan nijedne lokacije -text.search.paged.results=Prikaz {0} - {1} od {2} rezultata za\: {3} -text.search.terms.label=Pretra\u017ei pojmove -text.search.terms.tooltip=Unesi pojmove za pretragu u zavisnosti od toga da li pretra\u017euje\u0161 po imenu/imejlu ili po interesovanju -text.search.toomany.results=Tvoja pretraga {0} je vratila {1} ili vi\u0161e rezultata. Samo je prvi {1} naveden. text.upload.image.file=Izaberi slikovnu datoteku na svom kompjuteru (maks. {0}MB)\: text.view.profile.nothing=Ova osoba je ograni\u010dila pregled svojih informacija ili nema informacije o profilu za deljenje. -text.view.wall.nothing=Trenutno ne postoje stavke na {0}-ovom zidu. Budi prvi koji \u0107e ne\u0161to poslati\! -text.view.wall.restricted=Samo {0}-ove veze mogu da vide ovaj zid. Dodaj {0} kao vezu za pregled i slanje na ovom zidu. -text.wall.no.items=Trenutno nema stavki za prikaz na tvom zidu. -text.wall.remove.mine=Ukloni status sa svog zida? -text.wall.remove.other=Ukloni komentar sa {0} svog zida? -text.worksite.create=Izaberi od dostupnih ljudi i kreiraj novu radnu lokaciju. -text.worksite.refresh=Osve\u017ei pretra\u017eiva\u010d radi pristupa novoj radnoj lokaciji nakon kreiranja title.change.profile.picture=Promeni svoju profilnu sliku -title.friend.add=Dodaj {0} kao vezu? -title.friend.cancel=Otka\u017ei zahteva za vezu? -title.friend.confirm=Potvrdi zahtev {0}-a za vezu? -title.friend.ignore=Ignori\u0161i zahtev za vezu? -title.friend.remove=Ukloni vezu? -title.message.compose=Sastavi novu poruku -title.wall.comment=Komentari\u0161i na {0}-ovom zidu -title.wall.remove=Ukloni sa zida - -twitter.auth.do=Link za Tviter nalog -twitter.auth.linked=Tviter nalog sa linkom -twitter.enabled=Omogu\u0107i integraciju Tvitera - -twitterUrl.UrlValidator=Neispravan URL urlField.Required=Nisi uneo URL - -workphone.PhoneNumberValidator=Neva\u017ee\u0107i broj telefona - -worksite.name=Ime radne lokacije - -email.connectionrequest.subject=dodao te je kao vezu na -email.connectionrequest.added=dodao te je kao vezu na -email.connectionrequest.toconfirm1=Za potvrdu zahteva za vezu iz -email.connectionrequest.toconfirm2=prati url u nastavku\: - -email.connectionconfirm.subject=potvrdio tvoj zahtev za vezu na -email.connectionconfirm.confirmed=potvrdio tvoj zahtev za vezu na -email.connectionconfirm.toview1=Za pregled profila -email.connectionconfirm.toview2=prati url u nastavku\: - -email.messagenew.subject=poslao ti je poruku na -email.messagenew.sent=poslao ti je poruku na -email.messagenew.toview1=Za pregled ove poruke prati link u nastavku\: - -email.messagereply.subject=odgovorio je na tvoju poruku na - -email.profilechange.subject=promenio je svoj profil na - -email.wallnew.subject=upravo je stavio na zid svog profila na -email.wall.viewtheir=Za pregled njihovog zida prati link u nastavku\: -email.wall.viewmy=Za pregled svog zida prati link u nastavku\: - -email.mywallnew.subject=upravo je stavio na zid tvog profila na -email.wall.theirstatus.subject=novi status je stavljen na zid njihovog profila na diff --git a/profile2/api/src/resources/ProfileApplication_sv.properties b/profile2/api/src/resources/ProfileApplication_sv.properties index d260c528dcd3..90214272b681 100644 --- a/profile2/api/src/resources/ProfileApplication_sv.properties +++ b/profile2/api/src/resources/ProfileApplication_sv.properties @@ -1,104 +1,31 @@ RequiredValidator = '${label}' kr\u00E4vs -accessibility.connection.add = L\u00E4gg till {0} som kontakt? -accessibility.connection.confirm = Bekr\u00E4fta kontaktf\u00F6rfr\u00E5gan fr\u00E5n {0}? -accessibility.connection.ignore = Ignorera kontaktf\u00F6rfr\u00E5gan fr\u00E5n {0}? -accessibility.connection.remove = Ta bort {0} fr\u00E5n dina kontakter? accessibility.edit.basic = Redigera personlig information -accessibility.edit.business = Redigera jobbinformation accessibility.edit.contact = Redigera allm\u00E4n information -accessibility.edit.personal = Redigera kontaktinformation accessibility.edit.social = Redigera information om dina sociala n\u00E4tverk -accessibility.edit.staff = Redigera personalinformation -accessibility.edit.student = Redigera studentinformation -accessibility.prefs.confirms.off = Skicka e-post n\u00E4r n\u00E5gon bekr\u00E4ftar min kontaktf\u00F6rfr\u00E5gan, inaktiverad -accessibility.prefs.confirms.on = Skicka e-post n\u00E4r n\u00E5gon bekr\u00E4ftar min kontaktf\u00F6rfr\u00E5gan, aktiverad -accessibility.prefs.gallery = Visa mina bilder p\u00E5 min profil -accessibility.prefs.kudos = Visa mina h\u00F6gskolepo\u00E4ng p\u00E5 min profil -accessibility.prefs.messagenew.off = Skicka e-post n\u00E4r n\u00E5gon skickar ett nytt meddelande, inaktiverad -accessibility.prefs.messagenew.on = Skicka e-post n\u00E4r n\u00E5gon skickar ett nytt meddelande, aktiverad -accessibility.prefs.messagereply.off = Skicka e-post n\u00E4r n\u00E5gon svarar p\u00E5 n\u00E5got av mina meddelanden, inaktiverad -accessibility.prefs.messagereply.on = Skicka e-post n\u00E4r n\u00E5gon svarar p\u00E5 n\u00E5got av mina meddelanden, aktiverad accessibility.prefs.officialimage = Anv\u00E4nd institutionens officiella bild som profilbild -accessibility.prefs.requests.off = Skicka e-post n\u00E4r n\u00E5gon l\u00E4gger till mig som kontakt, inaktiverad -accessibility.prefs.requests.on = Skicka e-post n\u00E4r n\u00E5gon l\u00E4gger till mig som kontakt, aktiverad -accessibility.privacy.academic = V\u00E4lj vem som kan se din utbildningsinformation s\u00E5som l\u00E4ros\u00E4te, institution eller kurs. -accessibility.privacy.basic = V\u00E4lj vem som kan se din allm\u00E4nna information s\u00E5som smeknamn och f\u00F6delsedag. -accessibility.privacy.birthyear = V\u00E4lj om du ska visa ditt f\u00F6delse\u00E5r eller inte. Ikryssad ruta betyder att det \u00E4r synligt. -accessibility.privacy.business = V\u00E4lj vem som kan se din jobbinformation s\u00E5som branch, befattning och f\u00F6retagsinformation. -accessibility.privacy.contact = V\u00E4lj vem som kan se kontaktuppgifter s\u00E5som dina e-postadresser och telefonnummer. -accessibility.privacy.friends = V\u00E4lj vem som kan se din lista p\u00E5 kontakter -accessibility.privacy.image = V\u00E4lj vem som kan se din profilbild. -accessibility.privacy.kudos = V\u00E4lj vem som kan se dina h\u00F6gskolepo\u00E4ng (om detta \u00E4r aktiverat i Inst\u00E4llningar). -accessibility.privacy.messages = V\u00E4lj vem som kan skicka meddelanden till dig. -accessibility.privacy.personal = V\u00E4lj vem som kan se dina favoritb\u00F6cker och tv-program etc. -accessibility.privacy.pictures = V\u00E4lj vem som kan se ditt bildgalleri. -accessibility.privacy.social = V\u00E4l vem som kan se dina profiler p\u00E5 sociala n\u00E4tverk s\u00E5som Facebook, LinkedIn och Myspace. -accessibility.privacy.staff = V\u00E4lj vem som kan se din personalinformation -accessibility.privacy.status = V\u00E4lj vem som kan se dina statusuppdateringar. -accessibility.privacy.student = V\u00E4lj vem som kan se din studentinformation -accessibility.profile.birthday = Ange ditt f\u00F6delsedatum. Du kan v\u00E4lja att g\u00F6ra ditt f\u00F6delse\u00E5r synligt eller inte i Inst\u00E4llningar. -accessibility.profile.status.clear = Rensa din statusuppdatering -button.business.add.profile = L\u00E4gg till f\u00F6retagsprofil -button.business.remove.profile = Ta bort f\u00F6retagsprofil button.cancel = Avbryt button.close = St\u00E4ng button.edit = Redigera -button.friend.add = L\u00E4gg till kontakt -button.friend.cancel = Avbryt kontaktf\u00F6rfr\u00E5gan -button.friend.confirm = Bekr\u00E4fta kontaktf\u00F6rfr\u00E5gan -button.friend.ignore = Ignorera kontaktf\u00F6rfr\u00E5gan -button.friend.remove = Ta bort kontakt -button.gallery.remove = Ta bort bild -button.gallery.remove.confirm = Bekr\u00E4fta radering -button.gallery.setprofile = Anv\u00E4nd som profilbild -button.gallery.setprofile.confirm = Bekr\u00E4fta ny profilbild -button.gallery.upload = Ladda upp valda filer button.link = L\u00E4nk -button.message.reply = Svara -button.message.send = Skicka meddelande button.save = Spara button.save.changes = Spara \u00E4ndringar button.save.settings = Spara inst\u00E4llningar button.sayit = Skicka -button.search.byinterest = S\u00F6k p\u00E5 gemensamma intressen -button.search.byname = S\u00F6k p\u00E5 namn eller e-postadress -button.search.clear = Rensa resultat button.upload = Ladda upp button.url.add = L\u00E4gg till webbadress -email.EmailAddressValidator = Ogiltig e-postadress error.empty.file.uploaded = Du f\u00F6rs\u00F6kte ladda upp en tom fil error.file.save.failed = Kunde inte spara filen -error.friend.add.failed = Ett fel uppstod n\u00E4r kontaktf\u00F6rfr\u00E5gan skulle skickas till {0}. -error.friend.already.confirmed = {0} finns redan bland dina kontakter. -error.friend.already.pending = Det finns redan en kontaktf\u00F6rfr\u00E5gan f\u00F6r {0}. -error.friend.confirm.failed = Ett fel uppstod n\u00E4r kontaktf\u00F6rfr\u00E5gan fr\u00E5n {0} skulle bekr\u00E4ftas. -error.friend.ignore.failed = Ett fel uppstod n\u00E4r kontaktf\u00F6rfr\u00E5gan fr\u00E5n {0} skulle ignoreras. -error.friend.not.friend = {0} finns inte bland dina kontakter s\u00E5 de kan inte tas bort! -error.friend.not.pending.confirm = Det finns ingen p\u00E5g\u00E5ende kontaktf\u00F6rfr\u00E5gan fr\u00E5n {0} s\u00E5 du kan inte bekr\u00E4fta den! -error.friend.not.pending.ignore = Det finns ingen p\u00E5g\u00E5ende kontaktf\u00F6rfr\u00E5gan fr\u00E5n {0} s\u00E5 du kan inte ignorera den! -error.friend.remove.failed = Ett fel uppstod n\u00E4r {0} skulle tas bort fr\u00E5n dina kontakter. -error.gallery.remove.failed = Kunde inte ta bort bild fr\u00E5n galleri. -error.gallery.setprofile.failed = Kunde inte l\u00E4gga till bild som profilbild -error.gallery.upload.warning = V\u00E4lj filer f\u00F6rst error.invalid.image.type = Endast bilder i formaten .png, .jpg och .gif \u00E4r till\u00E5tna. Only images of types PNG, JPG, and GIF are allowed. -error.message.required.body = Meddelandet kan inte l\u00E4mnas tomt -error.message.required.to = Du m\u00E5ste v\u00E4lja en kontakt att skicka meddelandet till -error.message.send.failed = Ett fel uppstod n\u00E4r meddelandet skulle skickas error.no.file.uploaded = Du valde ingen fil error.password.required = L\u00F6senord kr\u00E4vs error.preferences.save.failed = Det gick inte att spara -error.privacy.save.failed = Det gick inte att spara -error.profile.save.academic.failed = Det gick inte att spara -error.profile.save.business.failed = Det gick inte att spara error.profile.save.contact.failed = Det gick inte att spara error.profile.save.info.failed = Det gick inte att spara -error.profile.save.interests.failed = Det gick inte att spara -error.twitter.details.invalid = Dina inloggningsuppgifter f\u00F6r Twitter kunde inte verifieras error.url.save.failed = Det gick inte att spara webbadressen error.username.required = Anv\u00E4ndarnamn kr\u00E4vs @@ -107,290 +34,64 @@ exception.text.session.expired = Tyv\u00E4rr har sessionen l\u00F6pt ut. Uppd facebookUrl.UrlValidator = Ogiltig webbadress -facsimile.PhoneNumberValidator = Ogiltigt telefonnummer - form.uploadTooLarge = Uppladdningen m\u00E5ste vara mindre \u00E4n ${maxSize} -heading.academic = Utbildningsinformation -heading.academic.edit = Utbildningsinformation heading.basic = Allm\u00E4n information heading.basic.edit = Allm\u00E4n information -heading.business = Jobbinformation -heading.business.edit = Jobbinformation heading.contact = Kontaktinformation heading.contact.edit = Kontaktinformation -heading.friend.requests = Kontaktf\u00F6rfr\u00E5gningar - -heading.friends.my = Mina f\u00F6rfr\u00E5gningar - -heading.friends.view = {0}s f\u00F6rfr\u00E5gningar - -heading.interests = Personlig information -heading.interests.edit = Personlig information -heading.messages = Mina personliga meddelanden -heading.pictures.addpicture = L\u00E4gg till bild -heading.pictures.my.pictures = Mina bilder -heading.pictures.view.pictures = {0}s bilder heading.preferences = Inst\u00E4llningar -heading.privacy = Sekretessinst\u00E4llningar -heading.section.academic.staff = F\u00F6r personal: -heading.section.academic.students = F\u00F6r studenter: heading.section.email = E-postaviseringar heading.section.image = Inst\u00E4llningar f\u00F6r profilbild -heading.section.twitter = Twitterintegrering heading.section.widget = Inst\u00E4llningar f\u00F6r gr\u00E4nssnittskomponenter heading.social = Sociala n\u00E4tverk heading.social.edit = Sociala n\u00E4tverk -heading.staff = Personalinformation -heading.staff.edit = Personalinformation -heading.student = Studentinformation -heading.student.edit = Studentinformation -heading.widget.my.friends = Mina kontakter -heading.widget.my.kudos = Mina h\u00F6gskolepo\u00E4ng -heading.widget.my.pictures = Mina bilder -heading.widget.view.friends = {0}s kontakter -heading.widget.view.kudos = {0}''s h\u00F6gskolepo\u00E4ng -heading.widget.view.pictures = {0}s bilder - -homepage.UrlValidator = Ogiltig webbadress -homephone.PhoneNumberValidator = Ogiltigt telefonnummer link.change.profile.picture = Byt bild link.edit = Redigera link.edit.info = Redigera information -link.friend.add = L\u00E4gg till som kontakt -link.friend.add.name = L\u00E4gg till {0} som kontakt -link.friend.feed.search = S\u00F6k kontakter -link.friend.feed.view = Visa alla kontakter -link.friend.remove = Ta bort kontakt -link.friend.request.act = Hantera denna f\u00F6rfr\u00E5gan -link.friend.search = S\u00F6k kontakter? -link.gallery.feed.addnew = L\u00E4gg till ny bild -link.gallery.feed.view = Visa alla bilder -link.gallery.image.view = Visa bild -link.messages.back = Tillbaka till personliga meddelanden -link.messages.compose = Skriv meddelande -link.messages.mymessages = Mina personliga meddelanden -link.messages.viewthread = Visa tr\u00E5d -link.my.friends = Kontakter -link.my.friends.search = S\u00F6k kontakter -link.my.friends.tooltip = Visa och hantera dina kontakter -link.my.messages = Personliga meddelanden -link.my.messages.tooltip = Skicka och l\u00E4s personliga meddelanden -link.my.pictures = Bilder -link.my.pictures.tooltip = L\u00E4gg till bilder och visa galleri link.my.preferences = Inst\u00E4llningar link.my.preferences.tooltip = Hantera inst\u00E4llningar -link.my.privacy = Sekretess -link.my.privacy.tooltip = Hantera sekretess link.my.profile = Min profil link.my.profile.tooltip = Visa och redigera din profil -link.my.search = S\u00F6k -link.my.search.tooltip = S\u00F6k personer och visa deras profiler link.profile.locked.false = L\u00E5s denna profil? link.profile.locked.true = Profilen \u00E4r l\u00E5st. L\u00E5s upp? -link.status.clear = Rensa -link.status.update = Uppdatera -link.title.confirmfriend = Bekr\u00E4fta kontaktf\u00F6rfr\u00E5gan -link.title.ignorefriend = Ignorera kontaktf\u00F6rfr\u00E5gan -link.title.removefriend = Ta bort kontakt link.title.rss = Visa eller skr\u00E4ddarsy ditt RSS-fl\u00F6de -link.title.unlinktwitter = Ta bort l\u00E4nk till Twitterkonto -link.view.friends = Visa kontakter linkedinUrl.UrlValidator = Ogiltig webbadress -message.message = Meddelande -message.reply = Svara -message.subject = \u00C4mne -message.to = Till - mobilephone.PhoneNumberValidator = Ogiltigt telefonnummer -myspaceUrl.UrlValidator = Ogiltig webbadress - page.title = Profil -pictures.addpicture = L\u00E4gg till nya bilder till galleriet -pictures.removepicture = Ta bort den h\u00E4r bilden fr\u00E5n galleriet -pictures.removepicture.confirm = \u00C4r du s\u00E4ker p\u00E5 att du vill ta bort den h\u00E4r bilden fr\u00E5n galleriet? -pictures.setprofileimage = Anv\u00E4nd den h\u00E4r bilden som profilbild -pictures.setprofileimage.confirm = \u00C4r du s\u00E4ker p\u00E5 att du vill byta din nuvarande profilbild till denna? - preference.option.off = Av preference.option.on = P\u00E5 -preferences.email.confirms = Bekr\u00E4ftar min kontaktf\u00F6rfr\u00E5gan -preferences.email.message = Skicka e-post till {0} n\u00E4r n\u00E5gon: -preferences.email.message.new = Skickar ett nytt meddelande -preferences.email.message.reply = Svarar p\u00E5 n\u00E5got av mina meddelanden -preferences.email.none = (INGEN E-POSTADRESS HAR ANGETTS) -preferences.email.requests = L\u00E4gger till mig som kontakt -preferences.image.message = Konfigurera inst\u00E4llningar f\u00F6r din profilbild preferences.image.official = Anv\u00E4nd institutionens officiella bild som profilbild -preferences.twitter.message = Dina statusuppdateringar kan ocks\u00E5 uppdatera ditt Twitterkonto -preferences.widget.gallery = Visa mina bilder -preferences.widget.gallery.tooltip = Dina bilder kommer att visas i din profil om du markerar dem. -preferences.widget.kudos = Visa mina h\u00F6gskolepo\u00E4ng -preferences.widget.kudos.tooltip = Dina h\u00F6gskolepo\u00E4ng kommer att visas p\u00E5 din profil s\u00E5 snart po\u00E4ngen har r\u00E4knats ut -preferences.widget.message = Kontrollera vilka gr\u00E4nssnittskomponenter som ska visas p\u00E5 din profil - -privacy.academicinfo = Utbildningsinformation -privacy.basicinfo = Allm\u00E4n info -privacy.birthyear = Visa f\u00F6delse\u00E5r -privacy.businessinfo = Jobbinfo -privacy.contactinfo = Kontaktinfo -privacy.messages = Vem kan skicka meddelanden till mig -privacy.myfriends = Vem kan se mina kontakter -privacy.mykudos = Vem kan se mina h\u00F6gskolepo\u00E4ng -privacy.mypictures = Vem kan se mina bilder -privacy.mystatus = Vem kan se mina statusuppdateringar -privacy.option.everyone = Alla -privacy.option.nobody = Ingen -privacy.option.onlyfriends = Bara mina kontakter -privacy.option.onlyme = Bara jag -privacy.personalinfo = Personlig info -privacy.profileimage = Profilbild -privacy.search = S\u00F6k -privacy.socialinfo = Sociala n\u00E4tverk-info -privacy.staffinfo = Personalinfo -privacy.studentinfo = Studentinfo -profile.academicprofileurl = Webbadress till akademiska studier/forskning -profile.birthday = F\u00F6delsedag -profile.business.bio = F\u00F6retagsfakta -profile.business.company.description = F\u00F6retagsbeskrivning -profile.business.company.name = F\u00F6retagsnamn -profile.business.company.profile = Profil -profile.business.company.profiles = F\u00F6retagsprofiler -profile.business.company.web = F\u00F6retagets webbadress -profile.course = Examen/Kurs -profile.department = Institution profile.email = E-post -profile.favourite.books = Favoritb\u00F6cker -profile.favourite.movies = Favoritfilmer -profile.favourite.quotes = Favoritcitat -profile.favourite.tv = Favoritprogram p\u00E5 tv -profile.homepage = Hemsida -profile.name.first = F\u00F6rnamn -profile.name.last = Efternamn -profile.name.middle = Andranamn profile.nickname = Smeknamn -profile.phone.facsimile = Fax -profile.phone.home = Telefonnummer hem profile.phone.mobile = Telefonnummer mobil -profile.phone.work = Telefonnummer arbete -profile.position = Befattning -profile.publications = Publikationer och konferenser -profile.room = Rum -profile.school = L\u00E4ros\u00E4te profile.socialnetworking.facebook = Facebook profile.socialnetworking.facebook.edit = Webbadress Facebook profile.socialnetworking.linkedin = LinkedIn profile.socialnetworking.linkedin.edit = Webbadress LinkedIn -profile.socialnetworking.myspace = MySpace -profile.socialnetworking.myspace.edit = Webbadress MySpace -profile.socialnetworking.skype = Skype -profile.socialnetworking.skype.edit = Anv\u00E4ndarnamn p\u00E5 Skype -profile.socialnetworking.skype.link = Kontakta mig p\u00E5 Skype -profile.socialnetworking.twitter = Twitter -profile.socialnetworking.twitter.edit = Webbadress Twitter -profile.staffprofile = Personalprofil -profile.subjects = \u00C4mnen -profile.summary = Sammanfattning -profile.universityprofileurl = Webbadress till universitetets profil -success.message.send.ok = Meddelandet har skickats success.preferences.save.ok = Inst\u00E4llningarna har sparats -success.privacy.save.ok = Sekretessinst\u00E4llningarna har sparats text.edit.other.warning = Varning: Du h\u00E5ller p\u00E5 att redigera {0}s information. -text.friend.add = {0} m\u00E5ste bekr\u00E4fta din f\u00F6rfr\u00E5gan. -text.friend.already = {0} finns redan bland dina kontakter. -text.friend.already.pending = Det finns redan en kontaktf\u00F6rfr\u00E5gan mellan dig och {0}. -text.friend.cancel = \u00C4r du s\u00E4ker p\u00E5 att du vill avbryta din kontaktf\u00F6rfr\u00E5gan till {0}? Han eller hon kommer inte att underr\u00E4ttas om detta. -text.friend.confirm = Detta bekr\u00E4ftar {0}s kontaktf\u00F6rfr\u00E5gan. -text.friend.confirmed = Tillagd i kontakter -text.friend.feed.num.many = {0} kontakter -text.friend.feed.num.none = 0 kontakter -text.friend.feed.num.one = 1 kontakt -text.friend.ignore = \u00C4r du s\u00E4ker p\u00E5 att du vill ignorera {0}s kontaktf\u00F6rfr\u00E5gan? Han eller hon kommer inte att underr\u00E4ttas om detta. -text.friend.none = {0} finns inte bland dina kontakter. -text.friend.pending = P\u00E5g\u00E5ende kontakf\u00F6rfr\u00E5gan -text.friend.remove = \u00C4r du s\u00E4ker p\u00E5 att du vill ta bort {0} som kontakt? Han eller hon kommer inte att underr\u00E4ttas om detta. -text.friend.requested = Kontaktf\u00F6rfr\u00E5gan har skickats -text.friend.self = Detta \u00E4r du! -text.gallery.feed.num.none = 0 bilder -text.gallery.pictures.num.none = Ditt galleri inneh\u00E5ller inga bilder \u00E4nnu. -text.gallery.upload.tooltip = Ladda upp bilder till ditt galleri fr\u00E5n din dator. Den sammantagna storleken p\u00E5 bilderna f\u00E5r inte \u00F6verstiga {0}MB. text.image.url = Ange webbadressen till en bild f\u00F6r att anv\u00E4nda den som din profilbild -text.messages.none = Inga meddelanden text.no.fields = Du har inte fyllt i n\u00E5gon information \u00E4nnu text.no.status = S\u00E4g n\u00E5got -text.privacy.academicinfo.tooltip = V\u00E4lj vem som kan se din utbildningsinformation s\u00E5som l\u00E4ros\u00E4te, institution eller kurs. -text.privacy.basicinfo.tooltip = V\u00E4lj vem som kan se din allm\u00E4nna information s\u00E5som smeknamn och f\u00F6delsedag. -text.privacy.birthyear.tooltip = V\u00E4lj om du ska visa ditt f\u00F6delse\u00E5r eller inte. Ikryssad ruta betyder att det \u00E4r synligt. -text.privacy.businessinfo.tooltip = V\u00E4lj vem som kan se din jobbinformation s\u00E5som branch, befattning och f\u00F6retagsinformation. -text.privacy.cannot.modify = Dessa v\u00E4rden har l\u00E5sts av din administrat\u00F6r och kan inte \u00E4ndras. -text.privacy.contactinfo.tooltip = V\u00E4lj vem som kan se kontaktuppgifter s\u00E5som dina e-postadresser och telefonnummer. -text.privacy.messages.tooltip = V\u00E4lj vem som kan skicka meddelanden till dig. -text.privacy.myfriends.tooltip = V\u00E4lj vem som kan se din lista p\u00E5 kontakter -text.privacy.mykudos.tooltip = V\u00E4lj vem som kan se dina h\u00F6gskolepo\u00E4ng (om detta har aktiverats i Inst\u00E4llningar). -text.privacy.mypictures.tooltip = V\u00E4lj vem som kan se ditt bildgalleri. -text.privacy.mystatus.tooltip = V\u00E4lj vem som kan se dina statusuppdateringar. -text.privacy.personalinfo.tooltip = V\u00E4lj vem som kan se dina favoritb\u00F6cker och tv-program etc. -text.privacy.profileimage.tooltip = V\u00E4lj vem som kan se din profilbild. -text.privacy.socialinfo.tooltip = V\u00E4lj vem som kan se dina profiler p\u00E5 sociala n\u00E4tverk s\u00E5som Facebook, LinkedIn och Myspace. -text.privacy.staff.tooltip = V\u00E4lj vem som kan se din personalinformation -text.privacy.student.tooltip = V\u00E4lj vem som kan se din studentinformation -text.profile.birthyear.tooltip = I dina sekretessinst\u00E4llningar kan du v\u00E4lja att antingen visa eller d\u00F6lja ditt f\u00F6delse\u00E5r. text.profile.facebook.tooltip = ex. http://www.facebook.com/user text.profile.linkedin.tooltip = ex. http://www.linkedin.com/pub/user text.profile.locked.false = N\u00E4r man l\u00E5ser en profil kan anv\u00E4ndaren inte redigera sin information. text.profile.locked.true = N\u00E4r man l\u00E5ser upp en profil kan anv\u00E4ndaren redigera sin information. text.profile.myspace.tooltip = ex. http://myspace.com/user -text.profile.twitter.tooltip = ex. http://twitter.com/sakaiproject -text.search.byinterest.all.results = Visar {0} resultat f\u00F6r: {1} -text.search.byinterest.no.results = Hittar inga personer med gemensamma intressen som matchar {0}. -text.search.byinterest.one.result = Visar 1 resultat f\u00F6r: {0} -text.search.byinterest.paged.results = Visar {0} resultat (upp till {1} resultat per sida) f\u00F6r: {2} -text.search.byinterest.tooltip = Skriv in ett intresse, t.ex. \u201Dcykling\u201D, f\u00F6r att hitta personer med liknande intressen -text.search.byname.all.results = Visar {0} resultat f\u00F6r: {1} -text.search.byname.no.results = Det finns inga resultat som matchar {0}. -text.search.byname.one.result = Visar 1 resultat f\u00F6r: {0} -text.search.byname.paged.results = Visar {0} resultat (upp till {1} resultat per sida) f\u00F6r: {2} -text.search.byname.tooltip = Skriv in ett namn eller en e-postadress f\u00F6r att hitta personer -text.search.no.input = Du skrev inte in n\u00E5got -text.search.no.results = Det finns inga resultat f\u00F6r {0}. -text.search.paged.results = Visar {0} - {1} av {2} resultat f\u00F6r: {3} -text.search.toomany.results = Din s\u00F6kning p\u00E5 {0} gav {1} eller fler resultat. Endast de f\u00F6rsta {1} resultaten visas. text.upload.image.file = V\u00E4lj en bildfil fr\u00E5n din dator (max{0}MB): text.view.profile.nothing = Den h\u00E4r personen delar bara viss information eller har ingen profilinformation att dela. title.change.profile.picture = Byt profilbild -title.friend.add = L\u00E4gg till {0} som kontakt? -title.friend.cancel = Avbryt kontaktf\u00F6rfr\u00E5gan? -title.friend.confirm = Bekr\u00E4fta {0}s kontaktf\u00F6rfr\u00E5gan? -title.friend.ignore = Ignorera kontaktf\u00F6rfr\u00E5gan? -title.friend.remove = Ta bort kontakt? -title.message.compose = Skriv nytt meddelande - -twitter.auth.do = L\u00E4nka till Twitterkonto -twitter.auth.linked = L\u00E4nkat till Twitterkonto -twitter.enabled = Aktivera Twitterintegrering - -twitterUrl.UrlValidator = Ogiltig webbadress urlField.Required = Du skrev inte in n\u00E5gon webbadress - -workphone.PhoneNumberValidator = Ogiltigt telefonnummer - -email.connection.added=ha solicitado ser su contacto en -email.connection.toconfirm1=Para confirmar la petición de contacto de -email.connection.toconfirm2=, puede hacer clic en el siguiente enlace: -email.notification1=Este mensaje de notificación automática ha sido enviado por -email.notification2=Si desea modificar las opciones de notificación, acceda a Mi Sitio > Preferencias - -email.connection.added=har lagt till dig som kontakt i -email.connection.toconfirm1=För att godkänna förfrågan från -email.connection.toconfirm2=, följ länken nedan: -email.notification1=Detta är ett automatiskt meddelande som skickades från -email.notification2=Ändra dina inställningar för dessa meddelanden på Min arbetsyta > Inställningar diff --git a/profile2/api/src/resources/ProfileApplication_tr_TR.properties b/profile2/api/src/resources/ProfileApplication_tr_TR.properties index 1aa100a1349b..ad29b864af80 100644 --- a/profile2/api/src/resources/ProfileApplication_tr_TR.properties +++ b/profile2/api/src/resources/ProfileApplication_tr_TR.properties @@ -1,370 +1,86 @@ RequiredValidator=''${label}'' gereklidir -accessibility.connection.add={0} arkada\u015f olarak eklensin mi? -accessibility.connection.confirm={0}'\u0131n ba\u011flant\u0131 iste\u011fini onayla ? -accessibility.connection.ignore={0}'\u0131n ba\u011flant\u0131 iste\u011fi yok say\u0131ls\u0131n m\u0131? -accessibility.connection.remove={0} ile arkada\u015fl\u0131\u011f\u0131n kald\u0131r\u0131ls\u0131n m\u0131? accessibility.edit.basic=Temel Bilgileri D\u00fczenle -accessibility.edit.business=\u0130\u015f Bilgilerini D\u00fczenle accessibility.edit.contact=\u0130leti\u015fim Bilgilerini D\u00fczenle -accessibility.edit.personal=Ki\u015fisel Bilgileri D\u00fczenle accessibility.edit.pronunciation=\u0130sim Telaffuzunu D\u00fczenle accessibility.edit.social=Sosyal Payla\u015f\u0131m Bilgilerini D\u00fczenle -accessibility.edit.staff=Personel Bilgileri D\u00fczenle -accessibility.edit.student=\u00d6\u011frenci Bilgilerini D\u00fczenle accessibility.image.upload=Profiliniz i\u00e7in bir resim y\u00fckleyin accessibility.image.url=Profil resminiz i\u00e7in bir url adresi girin -accessibility.messages.unread=Okunmayan mesaj -accessibility.prefs.confirms.off=Arkada\u015fl\u0131k talebim onayland\u0131\u011f\u0131nda e-posta g\u00f6nder, kapal\u0131 -accessibility.prefs.confirms.on=Arkada\u015fl\u0131k talebim onayland\u0131\u011f\u0131nda e-posta g\u00f6nder, a\u00e7\u0131k -accessibility.prefs.gallery=Resimlerimi profilde g\u00f6ster accessibility.prefs.gravatar=Avatar\u0131m\u0131 profil resmi olarak kullan -accessibility.prefs.kudos=Profilimde konum bilgilerimi g\u00f6ster -accessibility.prefs.messagenew.off=Yeni bir mesaj geldi\u011finde e-posta g\u00f6nder, kapal\u0131 -accessibility.prefs.messagenew.on=Yeni bir mesaj geldi\u011finde eposta g\u00f6nder, a\u00e7\u0131k -accessibility.prefs.messagereply.off=Mesajlar\u0131m\u0131 birisi cevaplad\u0131\u011f\u0131nda e-posta g\u00f6nder, kapal\u0131 -accessibility.prefs.messagereply.on=Mesajlar\u0131m\u0131 birisi cevaplad\u0131\u011f\u0131nda e-posta g\u00f6nder, a\u00e7\u0131k accessibility.prefs.officialimage=Profil resmi olarak kurumsal resmimi kullan -accessibility.prefs.onlinestatus=\u00c7evrimi\u00e7i durumumu di\u011ferlerine g\u00f6ster accessibility.prefs.overview=E-posta bildirim ayarlar\u0131 -accessibility.prefs.requests.off=Birisi beni arkada\u015f olarak ekledi\u011finde e-posta g\u00f6nder, kapal\u0131 -accessibility.prefs.requests.on=Birisi beni arkada\u015f olarak ekledi\u011finde e-posta g\u00f6nder, a\u00e7\u0131k -accessibility.prefs.twitterauthcode=Twitter onay kodunuzu girin -accessibility.prefs.wallnew.off=Duvar\u0131ma biri g\u00f6nderi yapt\u0131\u011f\u0131nda bana e-posta g\u00f6nder, kapal\u0131 -accessibility.prefs.wallnew.on=Duvar\u0131ma biri g\u00f6nderi yapt\u0131\u011f\u0131nda bana e-posta g\u00f6nder, a\u00e7\u0131k -accessibility.prefs.worksite.off=Bir ba\u011flant\u0131m beni yeni bir siteye ekledi\u011finde bana e-posta g\u00f6nder, pasif -accessibility.prefs.worksite.on=Bir ba\u011flant\u0131m beni yeni bir siteye ekledi\u011finde bana e-posta g\u00f6nder, aktif -accessibility.privacy.academic=Okul, b\u00f6l\u00fcm ya da kurs gibi akademik bilgilerini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.basic=Takma ad ve do\u011fum g\u00fcn\u00fc gibi temel bilgilerini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.birthyear=Do\u011fum y\u0131l\u0131n\u0131 g\u00f6stermek i\u00e7in se\u00e7iniz. -accessibility.privacy.business=Kurum, sekt\u00f6r ve konum gibi i\u015f bilgilerini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.contact=E-posta adresi, telefon numaras\u0131 gibi ileti\u015fim bilgilerini kimlerin g\u00f6rebilece\u011fini se\u00e7. -accessibility.privacy.friends=Arkada\u015f listeni kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.image=Profil resmini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.kudos=Konumunu kimlerin g\u00f6rebilece\u011fini se\u00e7 (e\u011fer Ayarlar'da etkin ise) -accessibility.privacy.messages=Sana kimlerin mesaj g\u00f6nderbilece\u011fini se\u00e7 -accessibility.privacy.onlinestatus=\u00c7evrimi\u00e7i durumunu kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.overview=Profilinizin hangi b\u00f6l\u00fcmlerin kimler taraf\u0131ndan g\u00f6r\u00fcnt\u00fclenebilece\u011fini kontrol et -accessibility.privacy.personal=Kimlerin senin sevdi\u011fin kitap ve \u015fovlar\u0131 g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.pictures=Kimlerin senin resim galerini g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.social=Facebook, LinkedIn ve MySpace profilleri gibi sosyal a\u011f bilgilerini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.staff=\u00c7al\u0131\u015fma bilgilerini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.status=Durum g\u00fcncellemelerini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.student=\u00d6\u011frencilik bilgilerini kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.privacy.wall=Duvar\u0131n\u0131 kimlerin g\u00f6rebilece\u011fini se\u00e7 -accessibility.profile.academicprofileurl.input=Akademik profilin i\u00e7in url adresi gir -accessibility.profile.birthday=Do\u011fum tarihini se\u00e7. Ayarlar'dan do\u011fum y\u0131l\u0131n\u0131n g\u00f6r\u00fcnt\u00fclenmesini kontrol edebilirsin. -accessibility.profile.businessbio.input=Kurumsal \u00f6zge\u00e7mi\u015fini gir -accessibility.profile.companydescription.input=Bu i\u015fletmenin a\u00e7\u0131klamas\u0131n\u0131 girin -accessibility.profile.companyname.input=Bu i\u015fletmenin ad\u0131n\u0131 girin -accessibility.profile.companyurl.input=Bu i\u015fletmenin web adresini girin -accessibility.profile.course.input=Dersinizi girin -accessibility.profile.department.input=B\u00f6l\u00fcm\u00fcn\u00fcz\u00fc girin accessibility.profile.email.input=E-postan\u0131z\u0131 girin accessibility.profile.facebookurl.input=Facebook url adresinizi girin -accessibility.profile.facsimile.input=Faks numaran\u0131z\u0131 girin -accessibility.profile.favouritebooks.input=Ho\u015fland\u0131\u011f\u0131n\u0131z kitaplar\u0131 girin -accessibility.profile.favouritemovies.input=Ho\u015fland\u0131\u011f\u0131n\u0131z filmleri girin -accessibility.profile.favouritequotes.input=Ho\u015fland\u0131\u011f\u0131n\u0131z s\u00f6zleri girin -accessibility.profile.favouritetv.input=Ho\u015fland\u0131\u011f\u0131n\u0131z tv \u015fovlar\u0131n\u0131z\u0131 girin -accessibility.profile.homepage.input=Web sayfan\u0131z\u0131n adresini girin -accessibility.profile.homephone.input=Ev telefonu numaran\u0131z\u0131 girin accessibility.profile.linkedinurl.input=LinkedIn adresinizi girin -accessibility.profile.messagebody.input=Mesaj\u0131n\u0131z\u0131 girin -accessibility.profile.messagerecipient.input=Bir al\u0131c\u0131 se\u00e7in -accessibility.profile.messagesubject.input=Bir mesaj konusu girin accessibility.profile.mobilephone.input=Cep telefonu numaran\u0131z\u0131 girin -accessibility.profile.myspaceurl.input=MySpace adresinizi girin -accessibility.profile.name.recording=\u0130sim telaffuzunuzu kaydedin accessibility.profile.nickname.input=Takma ad\u0131n\u0131z\u0131 girin accessibility.profile.phonetic.input=Fonetik telaffuzu girin -accessibility.profile.position.input=G\u00f6revinizi girin -accessibility.profile.publications.input=Yay\u0131nlar\u0131n\u0131z\u0131 girin -accessibility.profile.room.input=Odan\u0131z\u0131 girin -accessibility.profile.school.input=Okulunuzu girin -accessibility.profile.skypeusername.input=Skype kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 girin -accessibility.profile.staffprofile.input=\u00c7al\u0131\u015fan profilinizi girin -accessibility.profile.status.clear=Durumunu temizle -accessibility.profile.status.input=Mevcut durumunuzu girin -accessibility.profile.subjects.input=Alanlar\u0131n\u0131z\u0131 girin accessibility.profile.summaryinput=\u00d6zet olarak ki\u015fisel bilgilerinizi girin -accessibility.profile.twitterurl.input=Twitter adresinizi girin -accessibility.profile.uniprofileurl.input=\u00dcniversite profilinizin adresini girin -accessibility.profile.wallpost.input=Duvar\u0131n\u0131z i\u00e7in ileti metni girin -accessibility.profile.workphone.input=\u0130\u015f telefonu numaran\u0131z\u0131 girin -accessibility.search.connections=Arama sonu\u00e7lar\u0131ndaki ba\u011flant\u0131lar\u0131da dahil et -accessibility.search.worksite=Araman\u0131n s\u0131n\u0131rland\u0131r\u0131laca\u011f\u0131 site accessibility.tooltip=Ayarlar hakk\u0131nda daha fazla bilgi -accessibility.wall.comment={0} '\u0131n duvar yaz\u0131s\u0131na ait yorum -accessibility.wall.remove.mine=\u0130letiler duvar\u0131n\u0131zdan kald\u0131r\u0131ls\u0131n m\u0131? -accessibility.wall.remove.other=Duvar\u0131n\u0131zdan {0} taraf\u0131ndan iletilenler kald\u0131r\u0131ls\u0131n m\u0131? -button.business.add.profile=\u015eirket profili ekle -button.business.remove.profile=\u015eirket profilini kald\u0131r button.cancel=\u0130ptal button.close=Kapat button.edit=D\u00fczenle -button.friend.add=Arkada\u015f ekle -button.friend.cancel=Arkada\u015fl\u0131k iste\u011fini iptal et -button.friend.confirm=Arkada\u015fl\u0131k iste\u011fini onayla -button.friend.ignore=Arkada\u015fl\u0131k iste\u011fini yoksay -button.friend.remove=Arkada\u015fl\u0131\u011f\u0131 kald\u0131r -button.gallery.remove=Resmi kald\u0131r -button.gallery.remove.confirm=Kald\u0131rmay\u0131 onayla -button.gallery.setprofile=Profil resmi olarak ayarla -button.gallery.setprofile.confirm=Yeni profil resmini onayla -button.gallery.upload=Y\u00fckle button.link=Ba\u011fla -button.message.reply=Cevapla -button.message.send=Mesaj G\u00f6nder button.record=Kaydet button.release.microphone=Mikrofonu a\u00e7 button.save=Kaydet button.save.changes=Kaydet button.save.settings=Kaydet button.sayit=Ne d\u00fc\u015f\u00fcn\u00fcyorsun? -button.search.byinterest=Ortak ilgi alan\u0131 ile arama -button.search.byname=\u0130sim ya da e-posta ile arama -button.search.clear=Sonu\u00e7lar\u0131 temizle -button.search.generic=Ara -button.search.history.clear=Ge\u00e7mi\u015fi temizle button.stop=Durdur button.upload=Y\u00fckle button.url.add=URL ekle -button.wall.comment=Yorum ekle -button.wall.post=Duvara ilet -button.wall.remove=Duvardan kald\u0131r -button.worksite.cancel=\u0130ptal -button.worksite.create=Olu\u015ftur -email.EmailAddressValidator=Ge\u00e7ersiz e-posta adresi error.empty.file.uploaded=Bo\u015f bir dosya eklemeye \u00e7al\u0131\u015ft\u0131n\u0131z error.file.save.failed=Dosya kayd\u0131 ba\u015far\u0131s\u0131z -error.friend.add.failed={0} i\u00e7in arkada\u015fl\u0131k iste\u011fi olu\u015fturulurken bir hata olu\u015ftu. -error.friend.already.confirmed=Zaten {0} ile arkada\u015fs\u0131n\u0131z. -error.friend.already.pending=Zaten {0} ile onay bekleyen bir arkada\u015fl\u0131k iste\u011finiz var. -error.friend.confirm.failed={0}'\u0131n ba\u011flant\u0131 iste\u011fini onaylarken hata olu\u015ftu. -error.friend.ignore.failed={0}'\u0131n ba\u011flant\u0131 iste\u011fini g\u00f6rmezden gelme hatas\u0131 olu\u015ftu. -error.friend.not.friend={0} ile arkada\u015f de\u011filsiniz bu sebeple kald\u0131r\u0131lamaz\! -error.friend.not.pending.confirm={0} taraf\u0131ndan beklemede arkada\u015fl\u0131k iste\u011fi yok bu sebeple onaylayamazs\u0131n\u0131z\! -error.friend.not.pending.ignore={0} taraf\u0131ndan beklemede arkada\u015fl\u0131k iste\u011fi yok bu sebeple yoksayamazs\u0131n\u0131z\! -error.friend.remove.failed={0} arkada\u015fl\u0131k listenizden kald\u0131r\u0131l\u0131rken bir hata olu\u015ftu. -error.friend.view.disallowed={0} hedefinin ba\u011flant\u0131lar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyemezsiniz. -error.gallery.remove.failed=Resim galeriden kald\u0131r\u0131lamad\u0131 -error.gallery.setprofile.failed=Resim pprofil resmi olarak ayarlanamad\u0131 -error.gallery.upload.warning=\u00d6ncelikkle dosya(lar\u0131) se\u00e7in error.invalid.image.type=Sadece PNG, JPG ve GIF resim t\u00fcrlerine izin verilir. -error.message.required.body=Mesaj bo\u015f olamaz -error.message.required.to=Mesaj\u0131 g\u00f6ndermek i\u00e7in bir arkada\u015f se\u00e7melisiniz -error.message.send.failed=Mesaj\u0131n\u0131z g\u00f6nderilirken bir hata olu\u015ftu error.no.file.uploaded=Bir dosya se\u00e7mediniz error.password.required=\u015eifre gerekli error.preferences.save.failed=Kaydetme ba\u015far\u0131s\u0131z -error.privacy.save.failed=Kaydetme ba\u015far\u0131s\u0131z -error.profile.save.academic.failed=Kaydetme ba\u015far\u0131s\u0131z -error.profile.save.business.failed=Kaydetme ba\u015far\u0131s\u0131z error.profile.save.contact.failed=Kaydetme ba\u015far\u0131s\u0131z error.profile.save.info.failed=Kaydetme ba\u015far\u0131s\u0131z -error.profile.save.interests.failed=Kaydetme ba\u015far\u0131s\u0131z -error.twitter.details.invalid=Twitter hesap bilgileriniz do\u011frulanamad\u0131 error.url.save.failed=Url kayd\u0131 ba\u015far\u0131s\u0131z error.username.required=Kullan\u0131c\u0131 ad\u0131 gerekli -error.wall.comment.empty=Bo\u015f bir yorum eklemeye \u00e7al\u0131\u015f\u0131yorsunuz -error.wall.comment.failed=Yorum g\u00f6nderilemedi -error.wall.post.empty=Bo\u015f bir ileti olu\u015fturmaya \u00e7al\u0131\u015f\u0131yorsunuz -error.wall.post.failed=\u0130leti g\u00f6nderilemedi -error.worksite.create.failed=Site olu\u015fturma hatal\u0131 -error.worksite.no.title=Siteye bir isim vermelisiniz -error.worksite.title.maxLength=Title length cannot exceed {0} characters. Please provide a shorter title. -error.worksite.title.htmlStrippedToEmpty=Site title cannot contain HTML. Please provide a valid site title. exception.heading.session.expired=Oturum s\u00fcresi doldu exception.text.session.expired=\u00dczg\u00fcn\u00fcz, oturum s\u00fcreniz doldu. Sayfay\u0131 yenilemeyi ya da oturumunuzu yeniden ba\u015flatmak i\u00e7in \u00e7\u0131k\u0131p yeniden girmeyi deneyin. facebookUrl.UrlValidator=Ge\u00e7ersiz URL facsimile.PhoneNumberValidator=Ge\u00e7ersi telefon numaras\u0131 form.uploadTooLarge=Dosya ${maxSize} boyutundan az olmal\u0131 -heading.academic=Akademik Bilgiler -heading.academic.edit=Akademik Bilgiler heading.basic=Temel Bilgiler heading.basic.edit=Temel Bilgiler -heading.business=\u0130\u015f Bilgileri -heading.business.edit=\u0130\u015f Bilgileri heading.contact=\u0130leti\u015fim Bilgileri heading.contact.edit=\u0130leti\u015fim Bilgileri -heading.friend.requests=Arkada\u015fl\u0131k istekleri - -heading.friends.my=Arkada\u015flar\u0131m - -heading.friends.view={0}''\u0131n ba\u011flant\u0131lar\u0131 - -heading.interests=Ki\u015fisel Bilgiler -heading.interests.edit=Ki\u015fisel Bilgiler -heading.messages=Mesajlar\u0131m heading.name.pronunciation=\u0130sim telaffuzu heading.name.pronunciation.edit=\u0130sim telaffuzu -heading.pictures.addpicture=Resim ekle -heading.pictures.my.pictures=Resimlerim -heading.pictures.view.pictures={0}'\u0131n resimleri heading.preferences=Ayarlar -heading.privacy=Gizlilik Ayarlar\u0131\: -heading.search=Arama -heading.section.academic.staff=Personel i\u00e7in\: -heading.section.academic.students=\u00d6\u011frenciler i\u00e7in\: heading.section.email=E-posta bildirimleri heading.section.image=Profil Resmi Ayarlar\u0131 -heading.section.twitter=Twitter entegrasyonu heading.section.widget=Ara\u00e7 ayarlar\u0131 heading.social=Sosyal A\u011flar heading.social.edit=Sosyal A\u011flar -heading.staff=Personel Bilgileri -heading.staff.edit=Personel Bilgileri -heading.student=\u00d6\u011frenci Bilgileri -heading.student.edit=\u00d6\u011frenci Bilgileri -heading.widget.my.friends=Arkada\u015flar\u0131m -heading.widget.my.kudos=Konumum -heading.widget.my.pictures=Resimlerim -heading.widget.view.friends={0}'\u0131n ba\u011flant\u0131lar\u0131 -heading.widget.view.kudos={0}'nin \u00f6d\u00fcl\u00fc -heading.widget.view.pictures={0}'\u0131n resimleri -homepage.UrlValidator=Ge\u00e7ersiz URL -homephone.PhoneNumberValidator=Ge\u00e7ersi telefon numaras\u0131 link.change.profile.picture=Remi de\u011fi\u015ftir link.edit=D\u00fczenle link.edit.info=Bilgi D\u00fczenleme -link.friend.add=Ekle -link.friend.add.name={0} arkada\u015f olarak eklensin -link.friend.confirm=Arkada\u015fl\u0131\u011f\u0131 onayla -link.friend.feed.search=Arkada\u015f ara -link.friend.feed.view=T\u00fcm arkada\u015flar\u0131 g\u00f6r\u00fcnt\u00fcle -link.friend.ignore=Arkada\u015fl\u0131\u011f\u0131 yoksay -link.friend.remove=Arkada\u015fl\u0131\u011f\u0131 kald\u0131r -link.friend.request.act=Bu iste\u011fe g\u00f6re davran -link.friend.search=Biraz daha arkada\u015f ara? -link.gallery.feed.addnew=Yeni resim ekle -link.gallery.feed.view=T\u00fcn resimleri g\u00f6r\u00fcnt\u00fcle -link.gallery.image.view=Resmi g\u00f6r\u00fcnt\u00fcle link.image.current.remove=Kald\u0131r link.image.current.remove.confirm=Bu ge\u00e7erli profil resmi ve k\u00fcmesini varsay\u0131lan de\u011fere geri d\u00f6nd\u00fcr\u00fcr. Tekrar de\u011fi\u015ftirmek i\u00e7in yeni bir y\u00fckleme yapman\u0131z gerekir. Emin misiniz? -link.messages.back=Mesaj listesine geri d\u00f6n -link.messages.compose=Mesaj Yaz -link.messages.mymessages=Mesajlar\u0131m -link.messages.viewthread=Konular\u0131 g\u00f6r\u00fcnt\u00fcle -link.my.friends=Arkada\u015flar -link.my.friends.search=Arkada\u015f ara -link.my.friends.tooltip=Arkada\u015flar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcle ve y\u00f6net -link.my.messages=Mesajlar -link.my.messages.tooltip=G\u00f6nder ve \u00f6zel mesajlar\u0131 oku -link.my.pictures=Resimler -link.my.pictures.tooltip=Resimleri ekle ve galeriyi g\u00f6r\u00fcnt\u00fcle link.my.preferences=Ayarlar link.my.preferences.tooltip=Ayarlar'\u0131 y\u00f6net -link.my.privacy=Gizlilik -link.my.privacy.tooltip=Gizlili\u011fini y\u00f6net link.my.profile=Profilim link.my.profile.tooltip=Profilini g\u00f6r\u00fcnt\u00fcle ve d\u00fczenle link.other.profile={0}''n\u0131n profili -link.my.search=Ara -link.my.search.tooltip=Arkada\u015f ara ve onlar\u0131n profillerini g\u00f6r\u00fcnt\u00fcle link.profile.locked.false=Bu profili kilitle? link.profile.locked.true=Profil kilitli. A\u00e7\u0131ls\u0131n m\u0131? -link.status.clear=Temizle -link.status.update=G\u00fcncelle -link.tab.profile=Profil -link.tab.profile.tooltip=Profili g\u00f6r\u00fcnt\u00fcle -link.tab.wall=Duvar -link.tab.wall.tooltip=Duvar\u0131 g\u00f6r\u00fcnt\u00fcle -link.title.confirmfriend=Arkada\u015fl\u0131k iste\u011fini onayla -link.title.ignorefriend=Arkada\u015fl\u0131k iste\u011fini yoksay -link.title.removefriend=Arkada\u015fl\u0131\u011f\u0131 kald\u0131r link.title.rss=Ki\u015fiselle\u015ftirilmi\u015f RSS kayna\u011f\u0131n\u0131 g\u00f6r\u00fcnt\u00fcle ya da \u00f6zelle\u015ftir -link.title.unlinktwitter=Twitter hesab\u0131n\u0131 kald\u0131r -link.title.wall.comment={0} '\u0131n duvar yaz\u0131s\u0131na ait yorum -link.title.wall.remove=Duvar\u0131ndan kald\u0131r -link.view.friends=Arkada\u015flar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcle -link.wall.item.comment=Yorum -link.wall.item.remove=Kald\u0131r -link.worksite.create=Site Olu\u015ftur linkedinUrl.UrlValidator=Ge\u00e7ersiz URL -message.message=Mesaj -message.reply=Cevapla -message.subject=Konu -message.to=Kime mobilephone.PhoneNumberValidator=Ge\u00e7ersiz telefon numaras\u0131 -myspaceUrl.UrlValidator=Ge\u00e7ersi URL page.title=Profilim -palette.available=Mevcut -palette.selected=Se\u00e7ili -pictures.addpicture=Galeriye yeni resim dosyas\u0131 ekle -pictures.filetypewarning=Yaln\u0131zca jpeg, png ve gif dosyalar\u0131 galeriye eklenebilir -pictures.removepicture=Bu resmi galeriden kald\u0131r -pictures.removepicture.confirm=Bu resmi galeriden kald\u0131rmak istedi\u011fine emin misin? -pictures.setprofileimage=Bu resmi profil resmim olarak ayarla -pictures.setprofileimage.confirm=Mevcut profil resminizi bu resimle de\u011fi\u015ftirmek istedi\u011finizden emin misiniz? preference.option.off=Kapal\u0131 preference.option.on=A\u00e7\u0131k -preferences.email.confirms=Arkada\u015fl\u0131k iste\u011fim onayland\u0131\u011f\u0131nda -preferences.email.message=E-posta g\u00f6nder\:{0} -preferences.email.message.new=Bana yeni mesaj g\u00f6nderildi\u011finde -preferences.email.message.reply=Mesajlar\u0131ma cevap verildi\u011finde -preferences.email.none=(EPOSTA ADRES\u0130 ATANMAMI\u015e) -preferences.email.requests=Beni arkada\u015f olarak ekledi\u011finde -preferences.email.wall.new=Duvar\u0131ma ileti g\u00f6nderebilir -preferences.email.worksite.new=Yeni bir siteye ekledi\u011fimde preferences.image.gravatar=Avatar\u0131m\u0131 profil resmi olarak kullan -preferences.image.message=Profil resminle ilgili ayarlar\u0131 d\u00fczenle preferences.image.official=Profil resmi olarak kurumsal resmimi kullan -preferences.twitter.message=Durum g\u00fcncellemeleriniz ayn\u0131 zamanda Twitter hesab\u0131n\u0131zda da g\u00f6r\u00fcnt\u00fclenir -preferences.widget.gallery=Resimlerimi g\u00f6ster -preferences.widget.gallery.tooltip=E\u011fer t\u0131klarsan\u0131z resimleriniz profilinizde de g\u00f6r\u00fcnt\u00fclenir. -preferences.widget.kudos=Konumumu g\u00f6ster -preferences.widget.kudos.tooltip=Konumunuz profilinizde hesapland\u0131ktan sonra g\u00f6r\u00fcnecek -preferences.widget.message=Profilinizde hangi ara\u00e7lar\u0131n g\u00f6r\u00fcnece\u011fini belirleyin -preferences.widget.onlinestatus=\u00c7evrimi\u00e7i durumumu g\u00f6ster -preferences.widget.onlinestatus.tooltip=\u00c7evrimi\u00e7i olup olmad\u0131\u011f\u0131n\u0131z\u0131 g\u00f6sterir. Etkinle\u015ftirilmi\u015f ise daha sonra Gizlilik ayarlar\u0131n\u0131zdan kontrol edebilirsiniz. Etkin de\u011filse \u00e7evr\u00fcmd\u0131\u015f\u0131 olarak g\u00f6z\u00fck\u00fcrs\u00fcn\u00fcz. -privacy.academicinfo=Akademik Bilgiler -privacy.basicinfo=Temel Bilgiler -privacy.birthyear=Do\u011fum Y\u0131l\u0131m\u0131 G\u00f6ster -privacy.businessinfo=\u0130\u015f Bilgileri -privacy.contactinfo=\u0130leti\u015fim Bilgileri -privacy.messages=Bana kimler mesaj g\u00f6nderebilir -privacy.myfriends=Benim arkada\u015flar\u0131m\u0131 kimler g\u00f6rebilir -privacy.mykudos=Konumumu kimler g\u00f6rebilir -privacy.mypictures=Resimlerimi kimler g\u00f6rebilir -privacy.mystatus=Durumumu kimler g\u00f6rebilir -privacy.mywall=Duvar\u0131m\u0131 ve di\u011fer dubvarlara iletilerimi kimler g\u00f6rebilir? -privacy.onlinestatus=\u00c7evrimi\u00e7i durumumu kimler g\u00f6rebilir? -privacy.option.everyone=Herkes -privacy.option.nobody=Hi\u00e7kimse -privacy.option.onlyfriends=Sadece arkada\u015flar\u0131m -privacy.option.onlyme=Sadece ben -privacy.personalinfo=Ki\u015fisel Bilgiler -privacy.profileimage=Profil Resmi -privacy.search=Ara -privacy.socialinfo=Sosyal A\u011flar -privacy.staffinfo=Personel Bilgileri -privacy.studentinfo=\u00d6\u011frenci Bilgileri -profile.academicprofileurl=Akdemik/ara\u015ft\u0131rma Adresi(URL) -profile.birthday=Do\u011fum G\u00fcn\u00fc -profile.business.bio=\u0130\u015f biyografisi -profile.business.company.description=Firma a\u00e7\u0131klamas\u0131 -profile.business.company.name=Firma ismi -profile.business.company.profile=Profil -profile.business.company.profiles=Firma profili -profile.business.company.web=Firma web adresi -profile.business.update=Profildeki g\u00fcncellenmi\u015f i\u015f bilgileri profile.contact.update=Profildeki g\u00fcncellenmi\u015f ileti\u015fim bilgileri -profile.course=Program/Kurs -profile.department=B\u00f6l\u00fcm profile.email=Eposta -profile.favourite.books=Sevdi\u011fin kitaplar -profile.favourite.movies=Sevdi\u011fin filmler -profile.favourite.quotes=Sevdi\u011fin al\u0131nt\u0131lar -profile.favourite.tv=Sevdi\u011fin TV \u015fovlar\u0131 -profile.gallery.image.alt=Resimlerim -profile.gallery.image.upload=Profil resim galerisine aktar\u0131ld\u0131 -profile.homepage=Ana sayfa profile.image.change.upload=De\u011fi\u015ftirilmi\u015f profil resmi profile.image.change.url=De\u011fi\u015ftirilmi\u015f profil resmi profile.info.update=Profildeki g\u00fcncellenmi\u015f temel bilgiler -profile.interests.update=Profildeki g\u00fcncellenmi\u015f ki\u015fisel bilgiler -profile.name.first=Ad -profile.name.first.none=Kullan\u0131c\u0131 -profile.name.last=Soyad -profile.name.middle=\u0130kinci ad -profile.name.recording=\u0130sim kayd\u0131 profile.nickname=Takma ad profile.phonetic=Fonetik telaffuz profile.phonetic.clear.recording.label=Var olan kayd\u0131 temizle @@ -375,133 +91,25 @@ profile.phonetic.example.1.pronun=kris-TEEN BEAR-it profile.phonetic.example.1.pronun.name=(Christine Berret) profile.phonetic.example.2.pronun=uh-JEET CHOW-lah profile.phonetic.example.2.pronun.name=(Ajeet Chawla) -profile.phone.facsimile=Belgege\u00e7er -profile.phone.home=Ev telefonu profile.phone.mobile=Cep telefonu -profile.phone.work=\u0130\u015f telefonu -profile.position=G\u00f6revi -profile.publications=Yaynlar ve Konferanslar -profile.room=Oda -profile.school=Okul profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook URL profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn URL -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Skype kullan\u0131c\u0131 ad\u0131 -profile.socialnetworking.skype.link=Skype Adresi -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter URL profile.socialnetworking.update=Profildeki g\u00fcncellenmi\u015f sosyal a\u011f bilgileri -profile.staff.update=Profildeki g\u00fcncellenmi\u015f personel bilgileri -profile.staffprofile=Personel profili -profile.student.update=Profildeki g\u00fcncellenmi\u015f \u00f6\u011frenci bilgileri -profile.subjects=Konular -profile.summary=Ki\u015fisel K\u0131sa Bilgi -profile.universityprofileurl=\u00dcniversite Profil Adresi(URL) -success.message.send.ok=Mesaj g\u00f6nder success.preferences.save.ok=Ba\u015far\u0131yla kaydedildi -success.privacy.save.ok=Ba\u015far\u0131yla kaydedildi text.edit.other.warning=Uyar\u0131\: {0}'\u0131n bilgilerine ekleme yap\u0131yorsunuz. -text.friend.add={0} iste\u011finizi onaylamas\u0131 gerekecek. -text.friend.already=Zaten {0} ile arkada\u015fs\u0131n\u0131z. -text.friend.already.pending=Sizin ve {0} aras\u0131nda zaten bekleyen bir arkada\u015fl\u0131k iste\u011fi var. -text.friend.cancel={0} ile bekleyen arkada\u015fl\u0131k iste\u011finizi iptal etmek istedi\u011finizden emin misiniz? -text.friend.confirm=Bu {0}'\u0131n ba\u011flant\u0131 iste\u011fini onaylar. -text.friend.confirmed=Arkada\u015fs\u0131n\u0131z -text.friend.feed.num.many={0} arkada\u015fl\u0131k -text.friend.feed.num.none=0 arkada\u015f -text.friend.feed.num.one=1 arkada\u015f -text.friend.ignore={0}'\u0131n ba\u011flant\u0131 iste\u011fini yoksayaca\u011f\u0131na emin misin? Bilgilendirilmeyecekler. -text.friend.none={0} ile arkada\u015f de\u011filsiniz. -text.friend.pending=Arkada\u015fl\u0131k iste\u011finiz beklemede -text.friend.remove={0} ile arkada\u015fl\u0131\u011f\u0131n\u0131z\u0131 kald\u0131rmak istedi\u011finizden emin misiniz? Onlar haberdar olmayacak. -text.friend.requested=Arkada\u015fl\u0131k talep edildi -text.friend.self=Bu sensin\! -text.gallery.feed.num.none=0 resim -text.gallery.pictures.num.none=Galeride hen\u00fcz bir resim yok. -text.gallery.upload.tooltip=Galeriye bilsayar\u0131n\u0131zdan resim y\u00fckleyin.T\u00fcm y\u00fcklenecek resimlerin boyutu {0}MB a\u015fmamal\u0131. text.image.refresh=Not\: E\u011fer yeni resim hemen g\u00f6r\u00fcnmezse, taray\u0131c\u0131n\u0131z\u0131 yenilemeyi deneyin. text.image.url=Profil resmin olarak kullanmak i\u00e7in bir resmin URLsini gir -text.messages.none=Mesaj Yok text.name.pronunciation.description=\u0130sminizin yaz\u0131l\u0131 fonetik telaffuzunu ve / veya ses kay\u0131tlar\u0131n\u0131 vermenizi sa\u011flar.
Bu telaffuz, ders sitelerinize kay\u0131tl\u0131 olan e\u011fitmenler / \u00f6\u011frenciler taraf\u0131ndan g\u00f6r\u00fclebilir. text.no.fields=yok -text.no.status=Bir \u015fey s\u00f6yle text.or=ya da -text.privacy.academicinfo.tooltip=Akademik bilgilerinin okul, b\u00f6l\u00fcm ya da kurs gibi kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.basicinfo.tooltip=Temel bilgilerinin takma ve do\u011fum g\u00fcn\u00fc gibi kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.birthyear.tooltip=Do\u011fum y\u0131l\u0131n\u0131 g\u00f6stermek i\u00e7in se\u00e7iniz. -text.privacy.businessinfo.tooltip=Kurum, i\u015f yeri ve konumunuz gibi i\u015f bilgilerini kimlerin g\u00f6r\u00fcnt\u00fcleyebilece\u011fini se\u00e7 -text.privacy.cannot.modify=Bu de\u011ferler y\u00f6neticiniz taraf\u0131ndan kilitlidir ve de\u011fi\u015ftirilemez. -text.privacy.contactinfo.tooltip=\u0130leti\u015fim bilgilerinin eposta adreslerin ve telefon bilgilerin gibi kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.messages.tooltip=Kimlerin mesaj g\u00f6nderebilece\u011fini se\u00e7 -text.privacy.myfriends.tooltip=Arkada\u015fl\u0131k listenin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.mykudos.tooltip=Konumunun kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.mypictures.tooltip=Resim galerinin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.mystatus.tooltip=Durum g\u00fcncellemelerinin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.mywall.tooltip=Duvar\u0131n\u0131n kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.onlinestatus.tooltip=\u00c7evrimi\u00e7i durumunun kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. Di\u011ferlerine \u00e7evrimd\u0131\u015f\u0131 g\u00f6r\u00fcneceksiniz. -text.privacy.personalinfo.tooltip=Sevdi\u011fin kitaplar ve tv \u015fovlar\u0131 gibi bilgilerin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.profileimage.tooltip=Profil resminin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.socialinfo.tooltip=Facebook, LinkedIn ve MySpace profili gibisosyal a\u011f bilgilerinin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.staff.tooltip=Personel bilgilerinin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.privacy.student.tooltip=\u00d6\u011frenci bilgilerinin kimler taraf\u0131ndan g\u00f6r\u00fclebilece\u011fini se\u00e7. -text.profile.birthyear.tooltip=Gizlilik ayarlar\u0131n\u0131zda do\u011fum y\u0131l\u0131n\u0131z\u0131 g\u00f6stermeyi/gizlemeyi se\u00e7ebilirsiniz text.profile.facebook.tooltip=http\://www.facebook.com/kullan\u0131c\u0131ad\u0131 gibi text.profile.linkedin.tooltip=http\://www.linkedin.com/pub/kullan\u0131c\u0131ad\u0131 gibi text.profile.locked.false=Bir profili kitlemeniz kullan\u0131c\u0131n\u0131n bilgilerini d\u00fczenleyememesi anlam\u0131na gelir. text.profile.locked.true=Bir profildeki kilidi kald\u0131rman\u0131z o kullan\u0131c\u0131n\u0131n bilgilerini d\u00fczenlemesine izin verir. -text.profile.myspace.tooltip=http\://myspace.com/user kullan\u0131c\u0131ad\u0131 gibi -text.profile.presence.away={0} d\u0131\u015farda -text.profile.presence.offline={0} uygun de\u011fil -text.profile.presence.online={0} \u00e7evrimi\u00e7i -text.profile.twitter.tooltip=http\://twitter.com/sakaiproject gibi -text.search.byinterest.all.results=\ {0} sonu\u00e7 {1} i\u00e7in g\u00f6r\u00fcnt\u00fcleniyor -text.search.byinterest.label=Ortak ilgi alanlar\u0131 -text.search.byinterest.no.results={0} ortak ilgi alan\u0131yla e\u015fle\u015fen herhangi bir ki\u015fi yok. -text.search.byinterest.one.result=1 sonu\u00e7 {0} i\u00e7in g\u00f6r\u00fcnt\u00fcleniyor -text.search.byinterest.paged.results={0} sonu\u00e7tan ( sayfa ba\u015f\u0131na en fazla {1} ) \: {2} -text.search.byinterest.tooltip=Benzer ilgi alanlar\u0131nda ki\u015filer bulmak i\u00e7in ''bisiklet'' gibi bir ilgi alan\u0131 girin -text.search.byname.all.results={0} sonu\u00e7 {1} i\u00e7in g\u00f6r\u00fcnt\u00fcleniyor -text.search.byname.label=Ki\u015finin ismi ya da epostas\u0131 -text.search.byname.no.results={0} ile e\u015fle\u015fen herhengi bir sonu\u00e7 yok. -text.search.byname.one.result=1 sonu\u00e7 {0} i\u00e7in g\u00f6r\u00fcnt\u00fcleniyor -text.search.byname.paged.results={0} sonu\u00e7tan ( sayfa ba\u015f\u0131na en fazla {1} ) \: {2} -text.search.byname.tooltip=Ki\u015fileri bulmak i\u00e7in bir isim ya da e-posta adresi girin -text.search.history=\u00d6nceki aramalar -text.search.include.connections=Arama sonu\u00e7lar\u0131na arkada\u015flar\u0131 dahil et -text.search.include.worksite=Aramay\u0131 se\u00e7ili sitelerle s\u0131n\u0131rla -text.search.no.input=Herhangibir \u015fey girmediniz -text.search.no.results={0} i\u00e7in herhangibir sonu\u00e7 bulunamad\u0131. -text.search.no.worksite=Herhangi bir siteye \u00fcye de\u011filsiniz. -text.search.paged.results={3} i\u00e7in {2} sonu\u00e7tan {0} - {1} g\u00f6r\u00fcnt\u00fcleniyor -text.search.terms.label=Arama terimleri -text.search.terms.tooltip=\u00f6rn\: isim, e-posta, ilgi alan\u0131 -text.search.toomany.results={0} araman\u0131z i\u00e7in {1} ya da daha fazla sonu\u00e7 d\u00f6nd\u00fc. Sadece ilk {1} g\u00f6r\u00fcnt\u00fclendi. text.upload.image.file=Bigisayar\u0131n\u0131zdan bir resim dosyas\u0131 se\u00e7in (en fazla {0}MB)\: text.view.profile.nothing=Bu ki\u015fi bilgilerinin g\u00f6r\u00fcnt\u00fclenmesini k\u0131s\u0131tlad\u0131 ya da payla\u015facak profil bilgisi yok. -text.view.wall.nothing={0}'\u0131n duvar\u0131nda \u015fuanda hi\u00e7bir \u00f6ge bulunmamaktad\u0131r. Yazan ilk ki\u015fi olun. -text.view.wall.restricted=Sadece {0}'\u0131n ba\u011flant\u0131lar\u0131 bu duvar\u0131 g\u00f6rebilirler. Ba\u011flant\u0131lar\u0131 g\u00f6rmek ve bu duvarda yay\u0131nlamak \ni\u00e7in {0} ekle. -text.wall.no.items=\u015eu an i\u00e7in duvar\u0131n\u0131zda g\u00f6sterilecek bir\u015feyiniz yok. -text.wall.remove.mine=Duvar\u0131n\u0131zdan ileti kald\u0131r\u0131ls\u0131n m\u0131? -text.wall.remove.other=Duvar\u0131n\u0131zdaki {0} taraf\u0131ndan iletiler kald\u0131r\u0131ls\u0131n m\u0131? -text.worksite.create=Var olan ki\u015filerden se\u00e7 ve yeni bir site olu\u015ftur. -text.worksite.refresh=Olu\u015fturduktan sonra yeni siteye ula\u015fmak i\u00e7in sayfay\u0131 yenileyin title.change.profile.picture=Profil resmini de\u011fi\u015ftir -title.friend.add={0} arkada\u015f olarak eklensin mi? -title.friend.cancel=Arkada\u015fl\u0131k iste\u011fi iptal edilsin mi? -title.friend.confirm={0}'\u0131n ba\u011flant\u0131 iste\u011fini onayla ? -title.friend.ignore=Arkada\u015fl\u0131k iste\u011fi yoksay\u0131ls\u0131n m\u0131? -title.friend.remove=Arkada\u015fl\u0131k kald\u0131r\u0131ls\u0131n m\u0131? -title.message.compose=Yeni mesaj yaz -title.wall.comment={0}'\u0131n duvar yaz\u0131s\u0131na ait yorum -title.wall.remove=Duvardan kald\u0131r\u0131ls\u0131n m\u0131? -twitter.auth.do=Twitter hesab\u0131n\u0131 ba\u011fla -twitter.auth.linked=Twitter hesab\u0131 ba\u011fland\u0131 -twitter.enabled=Twitter entegrasyonu etkinle\u015ftirilsin -twitterUrl.UrlValidator=Ge\u00e7ersiz URL urlField.Required=Bir URL girmediniz -workphone.PhoneNumberValidator=Ge\u00e7ersiz telefon numaras\u0131 -worksite.name=Site Ad\u0131 + diff --git a/profile2/api/src/resources/ProfileApplication_zh_CN.properties b/profile2/api/src/resources/ProfileApplication_zh_CN.properties index 1cf46ab60c35..376e81d0b582 100644 --- a/profile2/api/src/resources/ProfileApplication_zh_CN.properties +++ b/profile2/api/src/resources/ProfileApplication_zh_CN.properties @@ -14,516 +14,115 @@ # RequiredValidator='${label}' \u662F\u5FC5\u586B\u9879 -accessibility.connection.add=\u5C06 {0} \u52A0\u4E3A\u597D\u53CB\u5417\uFF1F -accessibility.connection.confirm=\u901A\u8FC7 {0} \u7684\u597D\u53CB\u8BF7\u6C42\u5417\uFF1F -accessibility.connection.ignore=\u5FFD\u7565 {0} \u7684\u597D\u53CB\u8BF7\u6C42\u5417\uFF1F -accessibility.connection.remove=\u4ECE\u597D\u53CB\u4E2D\u79FB\u9664 {0} \u5417\uFF1F accessibility.edit.basic=\u7F16\u8F91\u4E2A\u4EBA\u4FE1\u606F -accessibility.edit.business=\u7F16\u8F91\u5DE5\u4F5C\u4FE1\u606F accessibility.edit.contact=\u7F16\u8F91\u57FA\u672C\u4FE1\u606F -accessibility.edit.personal=\u7F16\u8F91\u8054\u7CFB\u65B9\u5F0F accessibility.edit.social=\u7F16\u8F91\u793E\u4EA4\u7F51\u7EDC\u4FE1\u606F -accessibility.edit.staff=\u7F16\u8F91\u6559\u5DE5\u4FE1\u606F -accessibility.edit.student=\u7F16\u8F91\u5B66\u751F\u4FE1\u606F accessibility.image.upload=\u4E3A\u60A8\u7684\u4E2A\u4EBA\u8D44\u6599\u4E0A\u4F20\u7167\u7247 accessibility.image.url=\u8F93\u5165\u4E2A\u4EBA\u8D44\u6599\u7684\u5934\u50CF\u94FE\u63A5 -accessibility.messages.unread=\u672A\u8BFB\u6D88\u606F -accessibility.prefs.confirms.off=\u5F53\u6709\u4EBA\u901A\u8FC7\u6211\u7684\u597D\u53CB\u8BF7\u6C42\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5173\u95ED -accessibility.prefs.confirms.on=\u5F53\u6709\u4EBA\u901A\u8FC7\u6211\u7684\u597D\u53CB\u8BF7\u6C42\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5F00\u542F -accessibility.prefs.gallery=\u5728\u4E2A\u4EBA\u8D44\u6599\u4E2D\u663E\u793A\u7167\u7247 accessibility.prefs.gravatar=\u4F7F\u7528gravatar\u4F5C\u4E3A\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u7167\u7247 -accessibility.prefs.kudos=\u5728\u4E2A\u4EBA\u8D44\u6599\u4E2D\u663E\u793A\u8363\u8A89\u503C -accessibility.prefs.messagenew.off=\u5F53\u6709\u4EBA\u53D1\u9001\u65B0\u6D88\u606F\u7ED9\u6211\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5173\u95ED -accessibility.prefs.messagenew.on=\u5F53\u6709\u4EBA\u53D1\u9001\u65B0\u6D88\u606F\u7ED9\u6211\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5F00\u542F -accessibility.prefs.messagereply.off=\u5F53\u6709\u4EBA\u56DE\u590D\u6211\u7684\u6D88\u606F\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5173\u95ED -accessibility.prefs.messagereply.on=\u5F53\u6709\u4EBA\u56DE\u590D\u6211\u7684\u6D88\u606F\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5F00\u542F accessibility.prefs.officialimage=\u5728\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF\u4E2D\uFF0C\u4F7F\u7528\u5B98\u65B9\u7167\u7247 -accessibility.prefs.onlinestatus=\u5411\u5176\u4ED6\u4EBA\u663E\u793A\u6211\u7684\u5728\u7EBF\u72B6\u6001 accessibility.prefs.overview=email\u901A\u77E5\u8BBE\u5B9A -accessibility.prefs.requests.off=\u5F53\u6709\u4EBA\u5C06\u6211\u52A0\u4E3A\u597D\u53CB\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5173\u95ED accessibility.prefs.requests.on=\u5F53\u6709\u4EBA\u5C06\u6211\u52A0\u4E3A\u597D\u53CB\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5F00\u542F -accessibility.prefs.twitterauthcode=\u8F93\u5165\u60A8\u7684Twitter\u6388\u6743\u7801 -accessibility.prefs.wallnew.off=\u5F53\u6709\u4EBA\u5728\u6211\u7684\u5899\u4E0A\u53D1\u5E16\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5173\u95ED -accessibility.prefs.wallnew.on=\u5F53\u6709\u4EBA\u5728\u6211\u7684\u5899\u4E0A\u53D1\u5E16\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5F00\u542F -accessibility.prefs.worksite.off=\u5F53\u6709\u597D\u53CB\u5C06\u6211\u6DFB\u52A0\u5230\u65B0\u7AD9\u70B9\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5173\u95ED -accessibility.prefs.worksite.on=\u5F53\u6709\u597D\u53CB\u5C06\u6211\u6DFB\u52A0\u5230\u65B0\u7AD9\u70B9\u65F6\uFF0C\u901A\u8FC7email\u901A\u77E5\u6211\uFF0C\u5F00\u542F -accessibility.privacy.academic=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5B66\u9662\u4FE1\u606F\uFF08\u5982\u9662\u7CFB\u3001\u4E13\u4E1A\u7B49\uFF09\u3002 -accessibility.privacy.basic=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u57FA\u672C\u4FE1\u606F\uFF08\u5982\u6635\u79F0\uFF0C\u751F\u65E5\u7B49\uFF09\u3002 -accessibility.privacy.birthyear=\u9009\u62E9\u662F\u5426\u663E\u793A\u60A8\u7684\u51FA\u751F\u5E74\u4EFD\u3002\u9009\u4E2D\u8868\u793A\u663E\u793A\u3002 -accessibility.privacy.business=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5DE5\u4F5C\u4FE1\u606F\uFF08\u5982\u884C\u4E1A\uFF0C\u804C\u4F4D\uFF0C\u7B80\u5386\u7B49\uFF09\u3002 -accessibility.privacy.contact=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684email\u5730\u5740\u548C\u7535\u8BDD\u53F7\u7801\u3002 -accessibility.privacy.friends=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u597D\u53CB\u5217\u8868\u3002 -accessibility.privacy.image=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u4E2A\u4EBA\u8D44\u6599\u7167\u7247 -accessibility.privacy.kudos=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u8363\u8A89\u503C\uFF08\u9700\u8981\u5728\u8BBE\u7F6E\u4E2D\u5F00\u542F\u76F8\u5173\u529F\u80FD\uFF09\u3002 -accessibility.privacy.messages=\u9009\u62E9\u8C01\u53EF\u4EE5\u7ED9\u60A8\u53D1\u9001\u6D88\u606F\u3002 -accessibility.privacy.onlinestatus=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5728\u7EBF\u72B6\u6001 -accessibility.privacy.overview=\u8BBE\u7F6E\u8C01\u53EF\u4EE5\u770B\u89C1\u54EA\u90E8\u5206\u4E2A\u4EBA\u8D44\u6599 -accessibility.privacy.personal=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u6240\u559C\u6B22\u7684\u4E66\uFF0C\u7535\u89C6\u5267\u96C6\u7B49\u4FE1\u606F -accessibility.privacy.pictures=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u7167\u7247\u5E93 -accessibility.privacy.social=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u793E\u4EA4\u7F51\u7EDC\u4FE1\u606F -accessibility.privacy.staff=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u6559\u5DE5\u4FE1\u606F -accessibility.privacy.status=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u72B6\u6001\u66F4\u65B0 -accessibility.privacy.student=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5B66\u751F\u4FE1\u606F -accessibility.privacy.wall=\u9009\u62E9\u8C01\u53EF\u4EE5\u770B\u5230\u60A8\u7684\u5899 -accessibility.profile.academicprofileurl.input=\u8BF7\u8F93\u5165\u60A8\u7684\u9662\u7CFB\u4FE1\u606Furl -accessibility.profile.birthday=\u9009\u62E9\u60A8\u7684\u51FA\u751F\u65E5\u671F\u3002\u60A8\u53EF\u4EE5\u5728\u8BBE\u7F6E\u4E2D\u8BBE\u5B9A\u662F\u5426\u663E\u793A\u51FA\u751F\u5E74\u4EFD\u3002 -accessibility.profile.businessbio.input=\u8BF7\u8F93\u5165\u60A8\u7684\u5DE5\u4F5C\u7B80\u5386 -accessibility.profile.companydescription.input=\u8BF7\u8F93\u5165\u516C\u53F8\u7684\u63CF\u8FF0 -accessibility.profile.companyname.input=\u8BF7\u8F93\u5165\u516C\u53F8\u7684\u540D\u79F0 -accessibility.profile.companyurl.input=\u8BF7\u8F93\u5165\u516C\u53F8\u7684\u7F51\u5740 -accessibility.profile.course.input=\u8BF7\u8F93\u5165\u60A8\u7684\u5B66\u5386/\u5B66\u4F4D -accessibility.profile.department.input=\u8BF7\u8F93\u5165\u60A8\u7684\u9662\u7CFB accessibility.profile.email.input=\u8BF7\u8F93\u5165\u60A8\u7684email accessibility.profile.facebookurl.input=\u8BF7\u8F93\u5165\u60A8\u7684Facebook url -accessibility.profile.facsimile.input=\u8BF7\u8F93\u5165\u60A8\u7684\u4F20\u771F\u53F7 -accessibility.profile.favouritebooks.input=\u8BF7\u8F93\u5165\u60A8\u559C\u6B22\u7684\u4E66 -accessibility.profile.favouritemovies.input=\u8BF7\u8F93\u5165\u60A8\u559C\u6B22\u7684\u7535\u5F71 -accessibility.profile.favouritequotes.input=\u8BF7\u8F93\u5165\u60A8\u559C\u6B22\u7684\u683C\u8A00 -accessibility.profile.favouritetv.input=\u8BF7\u8F93\u5165\u60A8\u559C\u6B22\u7684\u8FDE\u7EED\u5267 -accessibility.profile.homepage.input=\u8BF7\u8F93\u5165\u60A8\u7684\u7F51\u9875url -accessibility.profile.homephone.input=\u8BF7\u8F93\u5165\u60A8\u7684\u7535\u8BDD\u53F7\u7801 accessibility.profile.linkedinurl.input=\u8BF7\u8F93\u5165\u60A8\u7684LinkedIn url -accessibility.profile.messagebody.input=\u8BF7\u8F93\u5165\u60A8\u7684\u6D88\u606F -accessibility.profile.messagerecipient.input=\u9009\u62E9\u6536\u4EF6\u4EBA -accessibility.profile.messagesubject.input=\u8BF7\u8F93\u5165\u6D88\u606F\u7684\u4E3B\u9898 accessibility.profile.mobilephone.input=\u8BF7\u8F93\u5165\u60A8\u7684\u624B\u673A\u53F7 -accessibility.profile.myspaceurl.input=\u8BF7\u8F93\u5165\u60A8\u7684LinkedIn url accessibility.profile.nickname.input=\u8BF7\u8F93\u5165\u60A8\u7684\u6635\u79F0 -accessibility.profile.position.input=\u8BF7\u8F93\u5165\u60A8\u7684\u5730\u70B9 -accessibility.profile.publications.input=\u8BF7\u8F93\u5165\u60A8\u7684\u51FA\u7248\u7269 -accessibility.profile.room.input=\u8BF7\u8F93\u5165\u60A8\u7684\u623F\u95F4 -accessibility.profile.school.input=\u8BF7\u8F93\u5165\u60A8\u6240\u5728\u7684\u5B66\u9662 -accessibility.profile.skypeusername.input=\u8BF7\u8F93\u5165\u60A8\u7684Skype\u7528\u6237\u540D -accessibility.profile.staffprofile.input=\u8BF7\u8F93\u5165\u60A8\u7684\u6559\u5DE5\u4FE1\u606F -accessibility.profile.status.clear=\u6E05\u9664\u4F60\u7684\u72B6\u6001 -accessibility.profile.status.input=\u8BF7\u8F93\u5165\u60A8\u7684\u5F53\u524D\u72B6\u6001 -accessibility.profile.subjects.input=\u8BF7\u8F93\u5165\u60A8\u7684\u4E3B\u9898 accessibility.profile.summaryinput=\u8BF7\u8F93\u5165\u60A8\u7684\u4E2A\u4EBA\u7B80\u4ECB -accessibility.profile.twitterurl.input=\u8BF7\u8F93\u5165\u60A8\u7684Twitter url -accessibility.profile.uniprofileurl.input=\u8BF7\u8F93\u5165\u60A8\u7684\u5B66\u6821\u8D44\u6599\u7684url -accessibility.profile.wallpost.input=\u8BF7\u8F93\u5165\u60A8\u5899\u4E0A\u7684\u6587\u5B57 -accessibility.profile.workphone.input=\u8BF7\u8F93\u5165\u60A8\u7684\u5DE5\u4F5C\u7535\u8BDD -accessibility.search.connections=\u641C\u7D22\u7ED3\u679C\u4E2D\u5305\u542B\u597D\u53CB -accessibility.search.worksite=\u4EC5\u5728\u9009\u5B9A\u7684\u7AD9\u70B9\u4E2D\u641C\u7D22 -accessibility.wall.comment=\u8BC4\u8BBA{0}\u5899\u4E0A\u7684\u5E16\u5B50 -accessibility.wall.remove.mine=\u4ECE\u5899\u4E0A\u5220\u9664\u5E16\u5B50\u5417\uFF1F -accessibility.wall.remove.other=\u4ECE\u60A8\u7684\u5899\u4E0A\u79FB\u9664 {0} \u7684\u6D88\u606F\u5417\uFF1F -button.business.add.profile=\u6DFB\u52A0\u516C\u53F8\u4FE1\u606F -button.business.remove.profile=\u79FB\u9664\u516C\u53F8\u4FE1\u606F button.cancel=\u53D6\u6D88 button.close=\u5173\u95ED button.edit=\u7F16\u8F91 -button.friend.add=\u6DFB\u52A0\u597D\u53CB -button.friend.cancel=\u62D2\u7EDD\u597D\u53CB\u7533\u8BF7 -button.friend.confirm=\u786E\u8BA4\u597D\u53CB\u7533\u8BF7 -button.friend.ignore=\u5FFD\u7565\u597D\u53CB\u7533\u8BF7 -button.friend.remove=\u79FB\u9664\u597D\u53CB -button.gallery.remove=\u79FB\u9664\u7167\u7247 -button.gallery.remove.confirm=\u786E\u8BA4\u79FB\u9664 -button.gallery.setprofile=\u8BBE\u7F6E\u4E3A\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF -button.gallery.setprofile.confirm=\u786E\u8BA4\u65B0\u7684\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF -button.gallery.upload=\u4E0A\u4F20\u6240\u9009\u7684\u6587\u4EF6 button.link=\u94FE\u63A5 -button.message.reply=\u56DE\u590D -button.message.send=\u53D1\u9001\u6D88\u606F button.save=\u4FDD\u5B58 button.save.changes=\u4FDD\u5B58\u4FEE\u6539 button.save.settings=\u4FDD\u5B58\u8BBE\u5B9A button.sayit=\u4FEE\u6539\u72B6\u6001 -button.search.byinterest=\u901A\u8FC7\u7231\u597D\u641C\u7D22 -button.search.byname=\u901A\u8FC7\u59D3\u540D\u6216email\u641C\u7D22 -button.search.clear=\u6E05\u9664\u641C\u7D22\u7ED3\u679C -button.search.generic=\u641C\u7D22 -button.search.history.clear=\u6E05\u9664\u5386\u53F2\u8BB0\u5F55 button.upload=\u4E0A\u4F20 button.url.add=\u6DFB\u52A0URL -button.wall.comment=\u6DFB\u52A0\u8BC4\u8BBA -button.wall.post=\u53D1\u5E16\u5230\u5899 -button.wall.remove=\u4ECE\u5899\u4E0A\u5220\u9664 -button.worksite.cancel=\u53D6\u6D88 -button.worksite.create=\u521B\u5EFA - -#EmailAddressValidator = '${input}' is not a valid email address. ##default -email.EmailAddressValidator=\u65E0\u6548\u7684email\u5730\u5740 error.empty.file.uploaded=\u4F60\u8BD5\u56FE\u4E0A\u4F20\u4E00\u4E2A\u7A7A\u6587\u4EF6 error.file.save.failed=\u4FDD\u5B58\u6587\u4EF6\u5931\u8D25 -error.friend.add.failed=\u5728\u53D1\u9001\u597D\u53CB\u8BF7\u6C42\u81F3{0}\u65F6\u53D1\u751F\u9519\u8BEF\u3002 -error.friend.already.confirmed=\u4F60\u5DF2\u7ECF\u662F{0}\u7684\u597D\u53CB\u3002 -error.friend.already.pending=\u6DFB\u52A0{0}\u4E3A\u597D\u53CB\u7684\u8BF7\u6C42\u5DF2\u7ECF\u5B58\u5728 -error.friend.confirm.failed=\u786E\u8BA4{0}\u4E3A\u597D\u53CB\u65F6\u53D1\u751F\u9519\u8BEF\u3002 -error.friend.ignore.failed=\u5FFD\u7565{0}\u7684\u597D\u53CB\u8BF7\u6C42\u65F6\u53D1\u751F\u9519\u8BEF\u3002 -error.friend.not.friend={0}\u4E0D\u662F\u4F60\u7684\u597D\u53CB\uFF0C\u6240\u4EE5\u4E0D\u80FD\u88AB\u79FB\u9664\uFF01 -error.friend.not.pending.confirm=\u6CA1\u6709\u6765\u81EA{0}\u7684\u5F85\u5904\u7406\u597D\u53CB\u8BF7\u6C42\uFF0C\u6240\u4EE5\u4F60\u4E0D\u80FD\u8FDB\u884C\u786E\u8BA4\uFF01 -error.friend.not.pending.ignore=\u6CA1\u6709\u6765\u81EA{0}\u7684\u5F85\u5904\u7406\u597D\u53CB\u8BF7\u6C42\uFF0C\u6240\u4EE5\u4F60\u4E0D\u80FD\u8FDB\u884C\u5FFD\u7565\uFF01 -error.friend.remove.failed=\u5C06{0}\u79FB\u9664\u4F60\u7684\u597D\u53CB\u5217\u8868\u65F6\u53D1\u751F\u9519\u8BEF\u3002 -error.gallery.remove.failed=\u4E0D\u80FD\u4ECE\u7167\u7247\u5E93\u4E2D\u5220\u9664\u7167\u7247 -error.gallery.setprofile.failed=\u4E0D\u80FD\u5C06\u7167\u7247\u8BBE\u7F6E\u4E3A\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF -error.gallery.upload.warning=\u8BF7\u5148\u9009\u62E9\u6587\u4EF6 error.invalid.image.type=\u53EA\u5141\u8BB8PNG\uFF0CJPG\uFF0C\u548CGIF\u7C7B\u578B\u7684\u56FE\u7247\u3002 -error.message.required.body=\u6D88\u606F\u4E0D\u80FD\u4E3A\u7A7A -error.message.required.to=\u60A8\u5FC5\u987B\u9009\u62E9\u4E00\u4E2A\u597D\u53CB\u6765\u53D1\u9001\u6D88\u606F -error.message.send.failed=\u5728\u53D1\u9001\u60A8\u7684\u6D88\u606F\u662F\u53D1\u751F\u4E86\u9519\u8BEF error.no.file.uploaded=\u4F60\u6CA1\u6709\u9009\u62E9\u8981\u4E0A\u4F20\u7684\u6587\u4EF6 error.password.required=\u9700\u8981\u5BC6\u7801 error.preferences.save.failed=\u4FDD\u5B58\u5931\u8D25 -error.privacy.save.failed=\u4FDD\u5B58\u5931\u8D25 -error.profile.save.academic.failed=\u4FDD\u5B58\u5931\u8D25 -error.profile.save.business.failed=\u4FDD\u5B58\u5931\u8D25 error.profile.save.contact.failed=\u4FDD\u5B58\u5931\u8D25 error.profile.save.info.failed=\u4FDD\u5B58\u5931\u8D25 -error.profile.save.interests.failed=\u4FDD\u5B58\u5931\u8D25 -error.twitter.details.invalid=\u4F60\u7684Twitter\u5E10\u53F7\u8BA4\u8BC1\u51FA\u9519 error.url.save.failed=\u4FDD\u5B58URL\u65F6\u9519\u8BEF error.username.required=\u9700\u8981\u7528\u6237\u540D -error.wall.comment.empty=\u60A8\u8BD5\u56FE\u6DFB\u52A0\u4E00\u4E2A\u7A7A\u8BC4\u8BBA -error.wall.comment.failed=\u8BC4\u8BBA\u5931\u8D25 -error.wall.post.empty=\u60A8\u8BD5\u56FE\u6DFB\u52A0\u4E00\u4E2A\u7A7A\u5E16\u3002 -error.wall.post.failed=\u53D1\u5E16\u5931\u8D25 -error.worksite.create.failed=\u7AD9\u70B9\u521B\u5EFA\u5931\u8D25 -error.worksite.no.title=\u60A8\u5FC5\u987B\u4E3A\u7AD9\u70B9\u6307\u5B9A\u4E00\u4E2A\u540D\u79F0 exception.heading.session.expired=\u4F1A\u8BDD\u8FC7\u671F exception.text.session.expired=\u4F60\u7684\u4F1A\u8BDD\u65F6\u95F4\u5DF2\u8FC7\u671F\u3002\u8BF7\u91CD\u65B0\u5237\u65B0\u9875\u9762\u6216\u8005\u91CD\u65B0\u767B\u5F55\u3002 facebookUrl.UrlValidator=\u65E0\u6548URL -facsimile.PhoneNumberValidator=\u65E0\u6548\u7684\u7535\u8BDD\u53F7\u7801 - form.uploadTooLarge=\u6587\u4EF6\u7684\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7${maxSize} -heading.academic=\u9662\u7CFB\u4FE1\u606F -heading.academic.edit=\u9662\u7CFB\u4FE1\u606F heading.basic=\u57FA\u672C\u4FE1\u606F heading.basic.edit=\u57FA\u672C\u4FE1\u606F -heading.business=\u5546\u4E1A\u4FE1\u606F -heading.business.edit=\u5546\u4E1A\u4FE1\u606F heading.contact=\u8054\u7CFB\u65B9\u5F0F heading.contact.edit=\u8054\u7CFB\u65B9\u5F0F -heading.friend.requests=\u597D\u53CB\u8BF7\u6C42 - -heading.friends.my=\u6211\u7684\u597D\u53CB - -heading.friends.view={0} \u7684\u597D\u53CB - -heading.interests=\u4E2A\u4EBA\u4FE1\u606F -heading.interests.edit=\u4E2A\u4EBA\u4FE1\u606F -heading.messages=\u6211\u7684\u6D88\u606F -heading.pictures.addpicture=\u6DFB\u52A0\u56FE\u7247 -heading.pictures.my.pictures=\u6211\u7684\u7167\u7247 -heading.pictures.view.pictures={0} \u7684\u7167\u7247 heading.preferences=\u504F\u597D\u8BBE\u7F6E -heading.privacy=\u9690\u79C1\u8BBE\u7F6E -heading.search=\u641C\u7D22\u4E2A\u4EBA\u4FE1\u606F -heading.section.academic.staff=\u6559\u804C\u5DE5\: -heading.section.academic.students=\u5B66\u751F\: heading.section.email=Email\u901A\u77E5 heading.section.image=\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF\u8BBE\u7F6E -heading.section.twitter=Twitter\u96C6\u6210 heading.section.widget=\u7EC4\u4EF6\u8BBE\u5B9A heading.social=\u793E\u4EA4\u7F51\u7EDC heading.social.edit=\u793E\u4EA4\u7F51\u7EDC -heading.staff=\u6559\u5DE5\u4FE1\u606F -heading.staff.edit=\u6559\u5DE5\u4FE1\u606F -heading.student=\u5B66\u751F\u4FE1\u606F -heading.student.edit=\u5B66\u751F\u4FE1\u606F -heading.widget.my.friends=\u6211\u7684\u597D\u53CB -heading.widget.my.kudos=\u6211\u7684\u8363\u8A89\u503C -heading.widget.my.pictures=\u6211\u7684\u7167\u7247 -heading.widget.view.friends={0} \u7684\u597D\u53CB -heading.widget.view.kudos={0} \u7684\u8363\u8A89\u503C -heading.widget.view.pictures={0} \u7684\u7167\u7247 - -#UrlValidator=${input}' is not a valid URL. ##default -homepage.UrlValidator=\u65E0\u6548\u7684URL - -homephone.PhoneNumberValidator=\u65E0\u6548\u7684\u7535\u8BDD\u53F7\u7801 link.change.profile.picture=\u53D8\u66F4\u7167\u7247 link.edit=\u7F16\u8F91 link.edit.info=\u7F16\u8F91\u4FE1\u606F -link.friend.add=\u6DFB\u52A0\u4E3A\u597D\u53CB -link.friend.add.name=\u5C06 {0} \u6DFB\u52A0\u4E3A\u597D\u53CB -link.friend.confirm=\u786E\u8BA4\u597D\u53CB -link.friend.feed.search=\u641C\u7D22\u597D\u53CB -link.friend.feed.view=\u67E5\u770B\u6240\u6709\u597D\u53CB -link.friend.ignore=\u5FFD\u7565\u597D\u53CB\u8BF7\u6C42 -link.friend.remove=\u79FB\u9664\u597D\u53CB -link.friend.request.act=\u5BF9\u4E8E\u6B64\u8BF7\u6C42\u7684\u64CD\u4F5C -link.friend.search=\u641C\u7D22\u4E00\u4E9B\u597D\u53CB\uFF1F link.image.current.remove=\u79FB\u9664 link.image.current.remove.confirm=\u6B64\u64CD\u4F5C\u5C06\u79FB\u9664\u60A8\u5F53\u524D\u7684\u5934\u50CF\uFF0C\u5E76\u8BBE\u7F6E\u56DE\u9ED8\u8BA4\u503C\u3002\u60A8\u9700\u8981\u91CD\u65B0\u4E0A\u4F20\u624D\u80FD\u8FDB\u884C\u66F4\u6539\u3002\u60A8\u786E\u8BA4\u8981\u7EE7\u7EED\u64CD\u4F5C\u5417\uFF1F -link.gallery.feed.addnew=\u6DFB\u52A0\u65B0\u7167\u7247 -link.gallery.feed.view=\u67E5\u770B\u6240\u6709\u7167\u7247 -link.gallery.image.view=\u67E5\u770B\u7167\u7247 -link.messages.back=\u8FD4\u56DE\u6D88\u606F\u5217\u8868 -link.messages.compose=\u7F16\u5199\u6D88\u606F -link.messages.mymessages=\u6211\u7684\u6D88\u606F -link.messages.viewthread=\u67E5\u770B\u6D88\u606F\u4E32 -link.my.friends=\u597D\u53CB -link.my.friends.search=\u641C\u7D22\u597D\u53CB -link.my.friends.tooltip=\u67E5\u770B\u3001\u7BA1\u7406\u597D\u53CB -link.my.messages=\u6D88\u606F -link.my.messages.tooltip=\u53D1\u9001\u548C\u9605\u8BFB\u79C1\u4EBA\u6D88\u606F -link.my.pictures=\u7167\u7247 -link.my.pictures.tooltip=\u5411\u7167\u7247\u5E93\u4E2D\u6DFB\u52A0\u7167\u7247 link.my.preferences=\u504F\u597D\u8BBE\u7F6E link.my.preferences.tooltip=\u7BA1\u7406\u4F60\u7684\u504F\u597D\u8BBE\u7F6E -link.my.privacy=\u9690\u79C1\u8BBE\u7F6E -link.my.privacy.tooltip=\u7BA1\u7406\u4F60\u7684\u9690\u79C1\u8BBE\u7F6E link.my.profile=\u6211\u7684\u4FE1\u606F link.my.profile.tooltip=\u67E5\u770B\u3001\u4FEE\u6539\u6211\u7684\u4FE1\u606F -link.my.search=\u641C\u7D22 -link.my.search.tooltip=\u641C\u7D22\u5176\u4ED6\u4EBA\u7684\u4FE1\u606F link.profile.locked.false=\u9501\u5B9A\u8FD9\u4E2A\u4E2A\u4EBA\u4FE1\u606F\u5417\uFF1F link.profile.locked.true=\u4E2A\u4EBA\u4FE1\u606F\u88AB\u9501\u5B9A\uFF0C\u8981\u89E3\u9664\u9501\u5B9A\u5417\uFF1F -link.status.clear=\u6E05\u9664 -link.status.update=\u66F4\u65B0 -link.tab.profile=\u4E2A\u4EBA\u4FE1\u606F -link.tab.profile.tooltip=\u67E5\u770B\u4E2A\u4EBA\u4FE1\u606F -link.tab.wall=\u5899 -link.tab.wall.tooltip=\u67E5\u770B\u5899 -link.title.confirmfriend=\u786E\u8BA4\u597D\u53CB\u8BF7\u6C42 -link.title.ignorefriend=\u5FFD\u7565\u597D\u53CB\u8BF7\u6C42 -link.title.removefriend=\u79FB\u9664\u597D\u53CB link.title.rss=\u67E5\u770B\u6216\u5B9A\u5236\u4F60\u7684\u4E2A\u4EBARSS -link.title.unlinktwitter=\u53D6\u6D88Twitter\u5E10\u53F7\u94FE\u63A5 -link.title.wall.comment=\u8BC4\u8BBA{0}\u5899\u4E0A\u7684\u5E16\u5B50 -link.title.wall.remove=\u4ECE\u60A8\u7684\u5899\u4E0A\u5220\u9664 -link.view.friends=\u67E5\u770B\u597D\u53CB -link.wall.item.comment=\u8BC4\u8BBA -link.wall.item.remove=\u5220\u9664 -link.worksite.create=\u521B\u5EFA\u7AD9\u70B9 linkedinUrl.UrlValidator=\u65E0\u6548URL -message.message=\u6D88\u606F -message.reply=\u56DE\u590D -message.subject=\u4E3B\u9898 -message.to=\u6536\u4EF6\u4EBA - mobilephone.PhoneNumberValidator=\u65E0\u6548\u7684\u7535\u8BDD\u53F7\u7801 -myspaceUrl.UrlValidator=\u65E0\u6548URL - page.title=\u4E2A\u4EBA\u8D44\u6599 -palette.available=\u53EF\u7528 -palette.selected=\u5DF2\u9009 - -pictures.addpicture=\u5411\u7167\u7247\u5E93\u4E2D\u6DFB\u52A0\u65B0\u7167\u7247 -pictures.filetypewarning=\u56FE\u5E93\u4E2D\u53EA\u80FD\u6DFB\u52A0jpg\uFF0Cpng\u548Cgif\u6587\u4EF6 -pictures.removepicture=\u4ECE\u7167\u7247\u5E93\u4E2D\u5220\u9664\u6B64\u7167\u7247 -pictures.removepicture.confirm=\u60A8\u786E\u8BA4\u8981\u4ECE\u7167\u7247\u5E93\u4E2D\u5220\u9664\u6B64\u7167\u7247\u5417\uFF1F -pictures.setprofileimage=\u5C06\u8FD9\u5F20\u7167\u7247\u8BBE\u7F6E\u4E3A\u6211\u7684\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF -pictures.setprofileimage.confirm=\u60A8\u786E\u8BA4\u8981\u7528\u8FD9\u5F20\u7167\u7247\u66FF\u6362\u60A8\u5F53\u524D\u7684\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF\u5417\uFF1F - preference.option.off=\u5173 preference.option.on=\u5F00 -preferences.email.confirms=\u63A5\u53D7\u4E86\u6211\u7684\u597D\u53CB\u8BF7\u6C42 -preferences.email.message=\u901A\u8FC7{0}\u901A\u77E5\u6211\uFF0C\u5982\u679C\u6709\u4EBA\: -preferences.email.message.new=\u7ED9\u6211\u53D1\u6D88\u606F -preferences.email.message.reply=\u56DE\u590D\u6211\u7684\u6D88\u606F -preferences.email.none=\uFF08\u672A\u8BBE\u5B9Aemail\uFF0C\u5C06\u4E0D\u80FD\u4F7F\u7528\u672C\u529F\u80FD\uFF09 -preferences.email.requests=\u5C06\u6211\u52A0\u4E3A\u597D\u53CB -preferences.email.wall.new=\u5728\u6211\u7684\u5899\u4E0A\u53D1\u5E16 -preferences.email.worksite.new=\u5C06\u6211\u6DFB\u52A0\u5230\u65B0\u7AD9\u70B9 preferences.image.gravatar=\u4F7F\u7528\u6211\u7684gravatar\u4F5C\u4E3A\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF -preferences.image.message=\u8BBE\u5B9A\u4E0E\u60A8\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF\u76F8\u5173\u7684\u8BBE\u7F6E preferences.image.official=\u4F7F\u7528\u5B98\u65B9\u7167\u7247\u4F5C\u4E3A\u6211\u7684\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF -preferences.twitter.message=\u5F53\u4F60\u7684\u72B6\u6001\u66F4\u65B0\u65F6\uFF0C\u4E5F\u540C\u65F6\u66F4\u65B0\u4F60\u7684Twitter\u5E10\u53F7 -preferences.widget.gallery=\u663E\u793A\u6211\u7684\u7167\u7247 -preferences.widget.gallery.tooltip=\u5982\u679C\u9009\u4E2D\uFF0C\u60A8\u7684\u7167\u7247\u5C06\u663E\u793A\u5728\u4E2A\u4EBA\u8D44\u6599\u4E2D\u3002 -preferences.widget.kudos=\u663E\u793A\u6211\u7684\u8363\u8A89\u503C -preferences.widget.kudos.tooltip=\u5F53\u60A8\u7684\u8363\u8A89\u503C\u88AB\u8BA1\u7B97\u540E\uFF0C\u5C06\u4F1A\u663E\u793A\u5728\u60A8\u7684\u4E2A\u4EBA\u8D44\u6599\u4E2D\u3002 -preferences.widget.message=\u5728\u60A8\u7684\u4E2A\u4EBA\u8D44\u6599\u4E2D\u663E\u793A\u54EA\u4E9B\u7EC4\u4EF6 -preferences.widget.onlinestatus=\u663E\u793A\u5728\u7EBF\u72B6\u6001 -preferences.widget.onlinestatus.tooltip=\u663E\u793A\u60A8\u662F\u5426\u5728\u7EBF\u3002\u5982\u679C\u542F\u7528\uFF0C\u60A8\u53EF\u4EE5\u5728\u9690\u79C1\u8BBE\u7F6E\u4E2D\u8FDB\u884C\u8FDB\u4E00\u6B65\u8BBE\u5B9A\u3002\u5982\u679C\u5173\u95ED\uFF0C\u60A8\u5C06\u663E\u793A\u4E3A\u79BB\u7EBF\u72B6\u6001\u3002 - -privacy.academicinfo=\u9662\u7CFB\u4FE1\u606F -privacy.basicinfo=\u57FA\u672C\u4FE1\u606F -privacy.birthyear=\u663E\u793A\u51FA\u751F\u5E74\u4EFD -privacy.businessinfo=\u5DE5\u4F5C\u4FE1\u606F -privacy.contactinfo=\u8054\u7CFB\u65B9\u5F0F -privacy.messages=\u8C01\u53EF\u4EE5\u7ED9\u6211\u53D1\u6D88\u606F -privacy.myfriends=\u8C01\u53EF\u4EE5\u67E5\u770B\u6211\u7684\u597D\u53CB -privacy.mykudos=\u8C01\u53EF\u4EE5\u67E5\u770B\u6211\u7684\u8363\u8A89\u503C -privacy.mypictures=\u8C01\u53EF\u4EE5\u67E5\u770B\u6211\u7684\u7167\u7247 -privacy.mystatus=\u8C01\u53EF\u4EE5\u67E5\u770B\u6211\u7684\u72B6\u6001 -privacy.mywall=\u8C01\u53EF\u4EE5\u67E5\u770B\u6211\u7684\u5899\u4EE5\u53CA\u6211\u5728\u522B\u4EBA\u5899\u4E0A\u7684\u53D1\u5E16 -privacy.onlinestatus=\u8C01\u53EF\u4EE5\u67E5\u770B\u6211\u7684\u5728\u7EBF\u72B6\u6001 -privacy.option.everyone=\u6240\u6709\u4EBA -privacy.option.nobody=\u6CA1\u6709\u4EBA -privacy.option.onlyfriends=\u4EC5\u9650\u6211\u7684\u597D\u53CB -privacy.option.onlyme=\u53EA\u6709\u6211 -privacy.personalinfo=\u4E2A\u4EBA\u4FE1\u606F -privacy.profileimage=\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF -privacy.search=\u641C\u7D22 -privacy.socialinfo=\u793E\u4EA4\u4FE1\u606F -privacy.staffinfo=\u6559\u5DE5\u4FE1\u606F -privacy.studentinfo=\u5B66\u751F\u4FE1\u606F -profile.academicprofileurl=\u5B66\u9662/\u7814\u7A76\u6240 \u7F51\u5740 -profile.birthday=\u751F\u65E5 -profile.business.bio=\u5DE5\u4F5C\u7B80\u5386 -profile.business.company.description=\u516C\u53F8\u7B80\u4ECB -profile.business.company.name=\u516C\u53F8\u540D\u79F0 -profile.business.company.profile=\u4E2A\u4EBA\u8D44\u6599 -profile.business.company.profiles=\u516C\u53F8\u4FE1\u606F -profile.business.company.web=\u516C\u53F8\u7F51\u5740 -profile.business.update=\u66F4\u65B0\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u5DE5\u4F5C\u4FE1\u606F profile.contact.update=\u66F4\u65B0\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u8054\u7CFB\u65B9\u5F0F -profile.course=\u5B66\u5386/\u5B66\u4F4D -profile.department=\u9662\u7CFB profile.email=Email -profile.favourite.books=\u559C\u6B22\u7684\u4E66 -profile.favourite.movies=\u559C\u6B22\u7684\u7535\u5F71 -profile.favourite.quotes=\u559C\u6B22\u7684\u683C\u8A00 -profile.favourite.tv=\u559C\u6B22\u7684\u8FDE\u7EED\u5267 -profile.gallery.image.upload=\u4E0A\u4F20\u5230\u4E2A\u4EBA\u8D44\u6599\u7684\u7167\u7247\u5E93\u4E2D -profile.homepage=\u4E3B\u9875 profile.image.change.upload=\u4FEE\u6539\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF profile.image.change.url=\u4FEE\u6539\u4E2A\u4EBA\u8D44\u6599\u5934\u50CF profile.info.update=\u66F4\u65B0\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u57FA\u672C\u4FE1\u606F -profile.interests.update=\u66F4\u65B0\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u4E2A\u4EBA\u4FE1\u606F -profile.name.first=\u540D -profile.name.first.none=\u7528\u6237 -profile.name.last=\u59D3 -profile.name.middle=\u4E2D\u95F4\u540D profile.nickname=\u6635\u79F0 -profile.phone.facsimile=\u4F20\u771F -profile.phone.home=\u5BB6\u5EAD\u7535\u8BDD profile.phone.mobile=\u79FB\u52A8\u7535\u8BDD -profile.phone.work=\u5DE5\u4F5C\u7535\u8BDD -profile.position=\u5730\u70B9 -profile.publications=\u51FA\u7248\u4E0E\u4F1A\u8BAE -profile.room=\u623F\u95F4 -profile.school=\u5B66\u9662 profile.socialnetworking.facebook=Facebook profile.socialnetworking.facebook.edit=Facebook URL profile.socialnetworking.linkedin=LinkedIn profile.socialnetworking.linkedin.edit=LinkedIn URL -profile.socialnetworking.myspace=MySpace -profile.socialnetworking.myspace.edit=MySpace URL -profile.socialnetworking.skype=Skype -profile.socialnetworking.skype.edit=Skype \u7528\u6237\u540D -profile.socialnetworking.skype.link=\u901A\u8FC7Skype\u8054\u7CFB\u6211 -profile.socialnetworking.twitter=Twitter -profile.socialnetworking.twitter.edit=Twitter URL profile.socialnetworking.update=\u66F4\u65B0\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u793E\u4EA4\u7F51\u7EDC -profile.staff.update=\u66F4\u65B0\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u6559\u5DE5\u4FE1\u606F -profile.staffprofile=\u6559\u5DE5\u4FE1\u606F -profile.student.update=\u66F4\u65B0\u4E2A\u4EBA\u8D44\u6599\u4E2D\u7684\u5B66\u751F\u4FE1\u606F -profile.subjects=\u4E13\u4E1A -profile.summary=\u4E2A\u4EBA\u4ECB\u7ECD -profile.universityprofileurl=\u5927\u5B66\u8D44\u6599\u7F51\u5740 -success.message.send.ok=\u6D88\u606F\u5DF2\u53D1\u9001 success.preferences.save.ok=\u4FDD\u5B58\u6210\u529F -success.privacy.save.ok=\u4FDD\u5B58\u6210\u529F text.edit.other.warning=\u6CE8\u610F\uFF1A\u4F60\u6B63\u5728\u7F16\u8F91{0}\u7684\u4FE1\u606F\u3002 -text.friend.add=\u9700\u8981{0}\u786E\u8BA4\u60A8\u7684\u8BF7\u6C42\u3002 -text.friend.already=\u4F60\u5DF2\u7ECF\u662F{0}\u7684\u597D\u53CB\u3002 -text.friend.already.pending=\u5728\u4F60\u4E0E{0}\u4E4B\u95F4\u5DF2\u7ECF\u6709\u4E00\u4E2A\u672A\u5904\u7406\u597D\u53CB\u8BF7\u6C42\u3002 -text.friend.cancel=\u786E\u8BA4\u8981\u53D6\u6D88{0}\u7684\u672A\u5904\u7406\u597D\u53CB\u8BF7\u6C42\u5417\uFF1F\u5BF9\u65B9\u4E0D\u4F1A\u5F97\u5230\u901A\u77E5\u3002 -text.friend.confirm=\u6B64\u64CD\u4F5C\u5C06\u786E\u8BA4{0}\u7684\u597D\u53CB\u8BF7\u6C42 -text.friend.confirmed=\u5DF2\u7ECF\u662F\u597D\u53CB -text.friend.feed.num.many={0}\u4E2A\u597D\u53CB -text.friend.feed.num.none=\u6CA1\u6709\u597D\u53CB -text.friend.feed.num.one=1\u4E2A\u597D\u53CB -text.friend.ignore=\u786E\u8BA4\u8981\u5FFD\u7565{0}\u7684\u597D\u53CB\u8BF7\u6C42\u5417\uFF1F\u5BF9\u65B9\u4E0D\u4F1A\u5F97\u5230\u901A\u77E5\u3002 -text.friend.none=\u4F60\u4E0D\u662F{0}\u7684\u8BDD\u8BED\u3002 -text.friend.pending=\u597D\u53CB\u8BF7\u6C42\u5904\u7406\u4E2D -text.friend.remove=\u786E\u8BA4\u8981\u79FB\u9664\u597D\u53CB{0}\u5417\uFF1F\u5BF9\u65B9\u4E0D\u4F1A\u5F97\u5230\u901A\u77E5\u3002 -text.friend.requested=\u597D\u53CB\u8BF7\u6C42\u5DF2\u53D1\u51FA -text.friend.self=\u8FD9\u662F\u4F60\u81EA\u5DF1\uFF01 -text.gallery.feed.num.none=\u6CA1\u6709\u7167\u7247 -text.gallery.pictures.num.none=\u60A8\u7684\u7167\u7247\u5E93\u4E2D\u76EE\u524D\u6CA1\u6709\u7167\u7247\u3002 -text.gallery.upload.tooltip=\u4ECE\u60A8\u7684\u8BA1\u7B97\u673A\u4E2D\u4E0A\u4F20\u7167\u7247\u5230\u7167\u7247\u5E93\u3002\u7167\u7247\u5E93\u4E2D\u7684\u6240\u6709\u7167\u7247\u4E0D\u80FD\u8D85\u8FC7 {0} MB\u3002 text.image.url=\u8F93\u5165\u4F60\u5934\u50CF\u56FE\u7247\u7684URL\u5730\u5740 -text.messages.none=\u6CA1\u6709\u6D88\u606F text.no.fields=\u4F60\u8FD8\u6CA1\u6709\u8F93\u5165\u4EFB\u4F55\u4FE1\u606F text.no.status=\u8F93\u5165\u72B6\u6001 -text.privacy.academicinfo.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u4F60\u7684\u6559\u5B66\u4FE1\u606F\uFF0C\u4F8B\u5982\u9662\u7CFB\u3001\u4E13\u4E1A\u3002 -text.privacy.basicinfo.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u4F60\u7684\u57FA\u672C\u4FE1\u606F\uFF0C\u4F8B\u5982\u6635\u79F0\u3001\u751F\u65E5\u3002 -text.privacy.birthyear.tooltip=\u662F\u5426\u663E\u793A\u4F60\u7684\u51FA\u751F\u5E74\u4EFD\u3002\u6253\u52FE\u8868\u793A\u663E\u793A\u3002 -text.privacy.businessinfo.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5DE5\u4F5C\u4FE1\u606F\uFF0C\u4F8B\u5982\u884C\u4E1A\uFF0C\u804C\u4F4D\uFF0C\u7B80\u5386\u3002 -text.privacy.cannot.modify=\u8FD9\u4E9B\u4FE1\u606F\u88AB\u7BA1\u7406\u5458\u9501\u5B9A\uFF0C\u4E0D\u80FD\u4FEE\u6539\u3002 -text.privacy.contactinfo.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u4F60\u7684email\u548C\u7535\u8BDD\u3002 -text.privacy.messages.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u7ED9\u60A8\u53D1\u9001\u6D88\u606F\u3002 -text.privacy.myfriends.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u4F60\u7684\u597D\u53CB\u5217\u8868\u3002 -text.privacy.mykudos.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u8363\u8A89\u503C\uFF08\u9700\u8981\u5728\u8BBE\u7F6E\u4E2D\u5F00\u542F\u76F8\u5173\u529F\u80FD\uFF09\u3002 -text.privacy.mypictures.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u7167\u7247\u5E93\u3002 -text.privacy.mystatus.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u72B6\u6001\u66F4\u65B0\u3002 -text.privacy.mywall.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5899\u3002 -text.privacy.onlinestatus.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5728\u7EBF\u72B6\u6001\u3002\u540C\u65F6\u5BF9\u5176\u4ED6\u4EBA\u663E\u793A\u4E3A\u79BB\u7EBF\u72B6\u6001\u3002 -text.privacy.personalinfo.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u4F60\u559C\u6B22\u7684\u4E66\u3001\u559C\u6B22\u7684\u8FDE\u7EED\u5267\u7B49\u4FE1\u606F\u3002 -text.privacy.profileimage.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u4F60\u7684\u5934\u50CF\u3002 -text.privacy.socialinfo.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u793E\u4EA4\u7F51\u7EDC\u4FE1\u606F -text.privacy.staff.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u6559\u5DE5\u4FE1\u606F -text.privacy.student.tooltip=\u9009\u62E9\u8C01\u53EF\u4EE5\u67E5\u770B\u60A8\u7684\u5B66\u751F\u4FE1\u606F -text.profile.birthyear.tooltip=\u4F60\u53EF\u4EE5\u5728\u9690\u79C1\u8BBE\u7F6E\u4E2D\u9009\u62E9\u662F\u5426\u663E\u793A\u4F60\u7684\u51FA\u751F\u5E74\u4EFD\u3002 text.profile.facebook.tooltip=\u4F8B\u5982\uFF1Ae.g. http://www.facebook.com/user text.profile.linkedin.tooltip=\u4F8B\u5982\uFF1Ahttp://www.linkedin.com/pub/user text.profile.locked.false=\u9501\u5B9A\u4E2A\u4EBA\u4FE1\u606F\u610F\u5473\u7740\u7528\u6237\u4E0D\u80FD\u7F16\u8F91\u4ED6\u7684\u4FE1\u606F\u3002 text.profile.locked.true=\u89E3\u9664\u4E2A\u4EBA\u4FE1\u606F\u9501\u5B9A\u5C06\u5141\u8BB8\u7528\u6237\u7F16\u8F91\u4ED6\u7684\u4FE1\u606F\u3002 -text.profile.myspace.tooltip=\u4F8B\u5982\uFF1Ahttp://myspace.com/user -text.profile.presence.away={0}\u79BB\u5F00\u4E86 -text.profile.presence.offline={0}\u4E0B\u7EBF\u4E86 -text.profile.presence.online={0}\u5728\u7EBF -text.profile.twitter.tooltip=\u4F8B\u5982\uFF1Ahttp://twitter.com/sakaiproject -text.search.byinterest.all.results=\u641C\u7D22{1}\uFF0C\u4E00\u5171{0}\u6761\u8BB0\u5F55\uFF1A -text.search.byinterest.label=\u5171\u540C\u7231\u597D -text.search.byinterest.no.results=\u6CA1\u6709\u7B26\u5408{0}\u7231\u597D\u7684\u4EBA\u3002 -text.search.byinterest.one.result=\u641C\u7D22{0}\uFF0C\u4E00\u51711\u6761\u8BB0\u5F55\uFF1A -text.search.byinterest.paged.results=\u641C\u7D22{2}\uFF0C\u663E\u793A {0} \u6761\u8BB0\u5F55\uFF08\u6700\u591A\u6BCF\u9875 {1} \u6761\u8BB0\u5F55\uFF09 -text.search.byinterest.tooltip=\u8F93\u5165\u4E00\u4E2A\u7231\u597D\uFF0C\u4F8B\u5982\u201C\u6E38\u6CF3\u201C\uFF0C\u6765\u67E5\u627E\u76F8\u540C\u7231\u597D\u7684\u4EBA -text.search.byname.all.results=\u641C\u7D22{1}\uFF0C\u4E00\u5171{0}\u6761\u8BB0\u5F55\uFF1A -text.search.byname.label=\u59D3\u540D\u6216email -text.search.byname.no.results=\u6CA1\u6709\u7B26\u5408{0}\u7684\u8BB0\u5F55\u3002 -text.search.byname.one.result=\u641C\u7D22{0}\uFF0C\u4E00\u51711\u6761\u8BB0\u5F55\uFF1A -text.search.byname.paged.results=\u641C\u7D22{2}\uFF0C\u663E\u793A {0} \u6761\u8BB0\u5F55\uFF08\u6700\u591A\u6BCF\u9875 {1} \u6761\u8BB0\u5F55\uFF09 -text.search.byname.tooltip=\u8F93\u5165\u59D3\u540D\u6216e-mail\u8FDB\u884C\u641C\u7D22 -text.search.history=\u4E0A\u4E00\u6B21\u641C\u7D22 -text.search.include.connections=\u5728\u641C\u7D22\u7ED3\u679C\u4E2D\u5305\u542B\u597D\u53CB -text.search.include.worksite=\u5728\u6307\u5B9A\u7AD9\u70B9\u4E2D\u8FDB\u884C\u641C\u7D22 -text.search.no.input=\u4F60\u6CA1\u6709\u8FDB\u884C\u4EFB\u4F55\u8F93\u5165 -text.search.no.results=\u6CA1\u6709\u7B26\u5408{0}\u7684\u8BB0\u5F55\u3002 -text.search.no.worksite=\u60A8\u76EE\u524D\u4E0D\u662F\u4EFB\u4F55\u7AD9\u70B9\u7684\u6210\u5458 -text.search.paged.results=\u641C\u7D22{3}\uFF0C\u5C55\u793A\u7B2C{0} - {1}\u6761\u8BB0\u5F55\uFF0C\u5171{2}\u6761\u8BB0\u5F55\uFF1A -text.search.terms.label=\u641C\u7D22\u6761\u4EF6 -text.search.terms.tooltip=\u8F93\u5165\u68C0\u7D22\u8BCD\uFF0C\u901A\u8FC7\u59D3\u540D/email\u8FDB\u884C\u641C\u7D22\u6216\u901A\u8FC7\u5174\u8DA3\u8FDB\u884C\u641C\u7D22 -text.search.toomany.results=\u641C\u7D22{0}\uFF0C\u6709{1}\u6761\u6216\u66F4\u591A\u7ED3\u679C\u4EC5\u663E\u793A\u6700\u524D\u7684{1}\u6761\u8BB0\u5F55\u3002 text.upload.image.file=\u5728\u4F60\u7684\u8BA1\u7B97\u673A\u4E0A\u9009\u62E9\u4E00\u4E2A\u56FE\u7247\u6587\u4EF6\uFF08\u6700\u5927{0}MB\uFF09\uFF1A text.view.profile.nothing=\u6B64\u7528\u6237\u9650\u5236\u4E86\u67E5\u770B\u6743\u9650\u6216\u8005\u6CA1\u6709\u8F93\u5165\u4E2A\u4EBA\u4FE1\u606F\u3002 -text.view.wall.nothing={0}\u5899\u4E0A\u8FD8\u662F\u7A7A\u7684\u3002\u6210\u4E3A\u7B2C\u4E00\u4E2A\u53D1\u5E16\u7684\u5427\u3002 -text.view.wall.restricted=\u53EA\u6709{0}\u7684\u597D\u53CB\u53EF\u4EE5\u67E5\u770B\u6B64\u5899\u3002\u5C06{0}\u6DFB\u52A0\u4E3A\u597D\u53CB\u6765\u67E5\u770B\u5899\u4E0A\u7684\u5185\u5BB9\uFF0C\u53D1\u5E16\u5230\u5899\u3002 -text.wall.no.items=\u60A8\u7684\u5899\u4E0A\u73B0\u5728\u6CA1\u6709\u53EF\u4EE5\u663E\u793A\u7684\u5185\u5BB9\u3002 -text.wall.remove.mine=\u4ECE\u60A8\u7684\u5899\u4E0A\u5220\u9664\u5E16\u5B50\uFF1F -text.wall.remove.other=\u4ECE\u60A8\u7684\u5899\u4E0A\u79FB\u9664 {0} \u7684\u6D88\u606F\u5417\uFF1F -text.worksite.create=\u9009\u62E9\u76F8\u5173\u4EBA\u5458\u521B\u5EFA\u65B0\u7AD9\u70B9\u3002 -text.worksite.refresh=\u7AD9\u70B9\u521B\u5EFA\u540E\u8BF7\u5237\u65B0\u6D4F\u89C8\u5668\u8FDB\u884C\u8BBF\u95EE title.change.profile.picture=\u53D8\u66F4\u4F60\u7684\u4E2A\u4EBA\u5934\u50CF -title.friend.add=\u5C06{0}\u52A0\u4E3A\u597D\u53CB\u5417\uFF1F -title.friend.cancel=\u53D6\u6D88\u597D\u53CB\u8BF7\u6C42\u5417\uFF1F -title.friend.confirm=\u786E\u8BA4{0}\u7684\u597D\u53CB\u8BF7\u6C42\u5417\uFF1F -title.friend.ignore=\u5FFD\u7565\u597D\u53CB\u8BF7\u6C42\u5417\uFF1F -title.friend.remove=\u79FB\u9664\u597D\u53CB\u5417\uFF1F -title.message.compose=\u7F16\u5199\u65B0\u6D88\u606F -title.wall.comment=\u8BC4\u8BBA{0}\u5899\u4E0A\u7684\u5E16\u5B50 -title.wall.remove=\u4ECE\u5899\u4E0A\u5220\u9664\uFF1F - -twitter.auth.do=\u94FE\u63A5\u5230Twitter\u5E10\u53F7 -twitter.auth.linked=\u5DF2\u94FE\u63A5\u5230Twitter\u5E10\u53F7 -twitter.enabled=\u6FC0\u6D3BTwitter\u96C6\u6210 - -twitterUrl.UrlValidator=\u65E0\u6548URL urlField.Required=\u60A8\u672A\u8F93\u5165URL\u5730\u5740 -workphone.PhoneNumberValidator=\u65E0\u6548\u7684\u7535\u8BDD\u53F7\u7801 - -worksite.name=\u7AD9\u70B9\u540D\u79F0 - text.or=\u6216 diff --git a/profile2/api/src/resources/templates/connectionConfirm.xml b/profile2/api/src/resources/templates/connectionConfirm.xml deleted file mode 100644 index 045ccecf6113..000000000000 --- a/profile2/api/src/resources/templates/connectionConfirm.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - ${senderDisplayName} ${bundle["email.connectionconfirm.subject"]} ${localSakaiName} - ${senderDisplayName} ${bundle["email.connectionconfirm.subject"]} ${localSakaiName} - - ${bundle["email.connectionconfirm.toview1"]} ${senderDisplayName} ${bundle["email.connectionconfirm.toview2"]} -${connectionLink} - - - ${senderDisplayName} ${bundle["email.connectionconfirm.confirmed"]} ${localSakaiName} -<p> -${bundle["email.connectionconfirm.toview1"]} ${senderDisplayName} ${bundle["email.connectionconfirm.toview2"]} -<br /><a href="${connectionLink}">${connectionLink}</a> -</p> - - 1 - admin - sakai.profile2.connectionConfirm - - - - diff --git a/profile2/api/src/resources/templates/connectionRequest.xml b/profile2/api/src/resources/templates/connectionRequest.xml deleted file mode 100644 index 22a4088732d0..000000000000 --- a/profile2/api/src/resources/templates/connectionRequest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - ${senderDisplayName} ${bundle["email.connectionrequest.subject"]} ${localSakaiName} - ${senderDisplayName} ${bundle["email.connectionrequest.subject"]} ${localSakaiName} - - ${bundle["email.connectionrequest.toconfirm1"]} ${senderDisplayName} ${bundle["email.connectionrequest.toconfirm2"]} -${connectionLink} - - ${senderDisplayName} ${bundle["email.connectionrequest.subject"]} ${localSakaiName} -<p> -${bundle["email.connectionrequest.toconfirm1"]} ${senderDisplayName} ${bundle["email.connectionrequest.toconfirm2"]} -<br /><a href="${connectionLink}">${connectionLink}</a> -</p> -<p> - - 1 - admin - sakai.profile2.connectionRequest - - - - diff --git a/profile2/api/src/resources/templates/messageNew.xml b/profile2/api/src/resources/templates/messageNew.xml deleted file mode 100644 index 09406715a1dd..000000000000 --- a/profile2/api/src/resources/templates/messageNew.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - ${senderDisplayName} ${bundle["email.messagenew.subject"]} ${localSakaiName} - ${senderDisplayName} ${bundle["email.messagenew.subject"]} ${localSakaiName} - --------------------- -${messageSubject} - -${messageBody} --------------------- - -${bundle["email.messagenew.toview1"]} -${messageLink} - - ${senderDisplayName} ${bundle["email.messagenew.subject"]} ${localSakaiName} -<p> --------------------- -<br />${messageSubject} -<br /> -<br />${messageBody} -<br />-------------------- -</p> - -<p> -${bundle["email.messagenew.toview1"]} -<br /> -<a href="${messageLink}">${messageLink}</a> -</p> - - 1 - admin - sakai.profile2.messageNew - - - - diff --git a/profile2/api/src/resources/templates/messageReply.xml b/profile2/api/src/resources/templates/messageReply.xml deleted file mode 100644 index e674102342a7..000000000000 --- a/profile2/api/src/resources/templates/messageReply.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - ${senderDisplayName} ${bundle["email.messagereply.subject"]} ${localSakaiName} - ${senderDisplayName} ${bundle["email.messagereply.subject"]} ${localSakaiName} - --------------------- -${messageSubject} - -${messageBody} --------------------- - -${bundle["email.messagenew.toview1"]} -${messageLink} - - ${senderDisplayName} ${bundle["email.messagereply.subject"]} ${localSakaiName} -<p> --------------------- -<br />${messageSubject} -<br /> -<br />${messageBody} -<br />-------------------- -</p> - -<p> -${bundle["email.messagenew.toview1"]} -<br /> -<a href="${messageLink}">${messageLink}</a> -</p> - - 1 - admin - sakai.profile2.messageReply - - - - diff --git a/profile2/api/src/resources/templates/profileChangeNotification.xml b/profile2/api/src/resources/templates/profileChangeNotification.xml deleted file mode 100644 index 1423b617d9c8..000000000000 --- a/profile2/api/src/resources/templates/profileChangeNotification.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - ${userDisplayName} ${bundle["email.profilechange.subject"]} ${localSakaiName} - ${userDisplayName} ${bundle["email.profilechange.subject"]} ${localSakaiName} - - ${bundle["email.connectionconfirm.toview1"]} ${userDisplayName} ${bundle["email.connectionrequest.toconfirm2"]} - ${profileLink} - - - ${userDisplayName} ${bundle["email.profilechange.subject"]} ${localSakaiName} - <p> - ${bundle["email.connectionconfirm.toview1"]} ${userDisplayName} ${bundle["email.connectionrequest.toconfirm2"]} - <br /> - <a href="${profileLink}">${profileLink}</a> - </p> - - 1 - admin - sakai.profile2.profileChangeNotification - - - - diff --git a/profile2/api/src/resources/templates/wallEventNew.xml b/profile2/api/src/resources/templates/wallEventNew.xml deleted file mode 100644 index 2d695d631db4..000000000000 --- a/profile2/api/src/resources/templates/wallEventNew.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - ${senderDisplayName} ${bundle["email.wallnew.subject"]} ${localSakaiName} - ${senderDisplayName} ${bundle["email.wallnew.subject"]} ${localSakaiName} - - ${bundle["email.wall.view"]} - ${senderWallLink} - - ${senderDisplayName} ${bundle["email.wallnew.subject"]} ${localSakaiName} - <p> - ${bundle["email.wall.view"]} - <br /><a href="${senderWallLink}">${senderWallLink}</a> - </p> - - 1 - admin - sakai.profile2.wallEventNew - - - - diff --git a/profile2/api/src/resources/templates/wallPostConnectionWallNew.xml b/profile2/api/src/resources/templates/wallPostConnectionWallNew.xml deleted file mode 100644 index 0b94ee519ee6..000000000000 --- a/profile2/api/src/resources/templates/wallPostConnectionWallNew.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - ${senderDisplayName} ${bundle["email.wallnew.subject"]} ${localSakaiName} - ${senderDisplayName} ${bundle["email.wallnew.subject"]} ${localSakaiName} - - ${bundle["email.wall.viewtheir"]} - ${senderWallLink} - - - ${senderDisplayName} ${bundle["email.wallnew.subject"]} ${localSakaiName} - <p> - ${bundle["email.wall.viewtheir"]} - <br /> - <a href="${senderWallLink}">${senderWallLink}</a> - </p> - - 1 - admin - sakai.profile2.wallPostConnectionWallNew - - - - diff --git a/profile2/api/src/resources/templates/wallPostMyWallNew.xml b/profile2/api/src/resources/templates/wallPostMyWallNew.xml deleted file mode 100644 index 86844352cf90..000000000000 --- a/profile2/api/src/resources/templates/wallPostMyWallNew.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - ${senderDisplayName} ${bundle["email.mywallnew.subject"]} ${localSakaiName} - ${senderDisplayName} ${bundle["email.mywallnew.subject"]} ${localSakaiName} - - ${bundle["email.wall.viewmy"]} - ${wallLink} - - - ${senderDisplayName} ${bundle["email.mywallnew.subject"]} ${localSakaiName} - <p> - ${bundle["email.wall.viewmy"]} - <br /><a href="${wallLink}">${wallLink}</a> - </p> - - 1 - admin - sakai.profile2.wallPostMyWallNew - - - - diff --git a/profile2/api/src/resources/templates/wallStatusNew.xml b/profile2/api/src/resources/templates/wallStatusNew.xml deleted file mode 100644 index 582a123c9495..000000000000 --- a/profile2/api/src/resources/templates/wallStatusNew.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - ${senderDisplayName}${bundle["email.wall.theirstatus.subject"]} ${localSakaiName} - ${senderDisplayName}${bundle["email.wall.theirstatus.subject"]} ${localSakaiName} - - ${bundle["email.wall.viewtheir"]} - ${senderWallLink} - - - ${senderDisplayName}${bundle["email.wall.theirstatus.subject"]} ${localSakaiName} - <p> - ${bundle["email.wall.viewtheir"]} - <br /><a href="${senderWallLink}">${senderWallLink}</a> - </p> - - 1 - admin - sakai.profile2.wallStatusNew - - - - diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/dao/ProfileDao.java b/profile2/impl/src/java/org/sakaiproject/profile2/dao/ProfileDao.java index 3f40d4c24d0e..9d38df55e832 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/dao/ProfileDao.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/dao/ProfileDao.java @@ -15,26 +15,14 @@ */ package org.sakaiproject.profile2.dao; -import java.util.Date; import java.util.List; -import org.sakaiproject.profile2.hbm.model.ProfileFriend; import org.sakaiproject.profile2.hbm.model.ProfileImageExternal; import org.sakaiproject.profile2.hbm.model.ProfileImageOfficial; import org.sakaiproject.profile2.hbm.model.ProfileImageUploaded; -import org.sakaiproject.profile2.hbm.model.ProfileKudos; -import org.sakaiproject.profile2.model.CompanyProfile; import org.sakaiproject.profile2.model.ExternalIntegrationInfo; -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.model.MessageParticipant; -import org.sakaiproject.profile2.model.MessageThread; import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.ProfileStatus; import org.sakaiproject.profile2.model.SocialNetworkingInfo; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.model.WallItemComment; /** * Internal DAO Interface for Profile2. @@ -44,49 +32,6 @@ */ public interface ProfileDao { - /** - * Get a list of unconfirmed Friend requests for a given user. Uses a native SQL query - * Returns: (all those where userId is the friend_uuid and confirmed=false) - * - * @param userId uuid of the user to retrieve the list of friends for - */ - public List getRequestedConnectionUserIdsForUser(final String userId); - - /** - * Get a list of unconfirmed outgoing Friend requests for a given user. - * Returns: A list of userids that userId has sent requests to - * - * @param userId uuid of the user to retrieve the list of friends for - */ - public List getOutgoingConnectionUserIdsForUser(final String userId); - - /** - * Get a list of confirmed connections for a given user. Uses a native SQL query so we can use unions - * Returns: (all those where userId is the user_uuid and confirmed=true) & (all those where user is friend_uuid and confirmed=true) - * - * This only returns userIds. If you want a list of Person objects, see getConnectionsForUser() - * - * @param userId uuid of the user to retrieve the list of friends for - */ - public List getConfirmedConnectionUserIdsForUser(final String userId); - - /** - * Get a list of all userIds that match the search criteria in name or email - * - * @param search string to search on - * @return - */ - public List findSakaiPersonsByNameOrEmail(final String search); - - /** - * Get a list of all userIds that match the search criteria in the interest fields. - * - * @param search string to search on - * @param includeBusinessBio true if the business biography should also be searched. - * @return - */ - public List findSakaiPersonsByInterest(final String search, boolean includeBusinessBio); - /** * Get the current ProfileImage records from the database. * There should only ever be one, but in case things get out of sync this returns all. @@ -129,169 +74,6 @@ public interface ProfileDao { */ public boolean saveOfficialImageUrl(ProfileImageOfficial officialImage); - /** - * Get a connection record for a user/friend pair - *

This tries both column arrangements, ie user/friend and friend/user

- * @param userId uuid of the user - * @param friendId uuid of the other user - * @return - */ - public ProfileFriend getConnectionRecord(final String userId, final String friendId); - - /** - * Save a new connection record - * @param profileFriend ProfileFriend record - * @return - */ - public boolean addNewConnection(ProfileFriend profileFriend); - - /** - * Update a connection record - * @param profileFriend ProfileFriend record - * @return - */ - public boolean updateConnection(ProfileFriend profileFriend); - - /** - * Remove a connection record - * @param profileFriend ProfileFriend record - * @return - */ - public boolean removeConnection(ProfileFriend profileFriend); - - /** - * Get a connection record that is pending - * @param userId uuid of the user - * @param friendId uuid of the friend - * @return - */ - public ProfileFriend getPendingConnection(final String userId, final String friendId); - - /** - * Get a ProfileStatus record for a user, but only if the date of the record is within the given time - * @param userId uuid of the user - * @param oldestStatusDate oldest date to search until - * @return - */ - public ProfileStatus getUserStatus(final String userId, final Date oldestStatusDate); - - /** - * Set the status for a user - * @param profileStatus ProfileStatus object - * @return - */ - public boolean setUserStatus(ProfileStatus profileStatus); - - /** - * Remove the ProfileStatus record for a user - * @param profileStatus ProfileStatus object - * @return - */ - public boolean clearUserStatus(ProfileStatus profileStatus); - - /** - * Get a count of all status updates for a user - * @param userUuid uuid of the user - * @return - */ - public int getStatusUpdatesCount(final String userUuid); - - /** - * Add a new ProfilePrivacy record - * @param privacy ProfilePrivacy object - * @return - */ - public ProfilePrivacy addNewPrivacyRecord(ProfilePrivacy privacy); - - /** - * Get the ProfilePrivacy record for the user - * @param userId uuid of the user - * @return - */ - public ProfilePrivacy getPrivacyRecord(final String userId); - - /** - * Update the ProfilePrivacy record - * @param privacy ProfilePrivacy object - * @return - */ - public boolean updatePrivacyRecord(final ProfilePrivacy privacy); - - /** - * Save a new CompanyProfile record - * @param companyProfile CompanyProfile record - * @return - */ - public boolean addNewCompanyProfile(final CompanyProfile companyProfile); - - /** - * Update a CompanyProfile record - * @param companyProfile CompanyProfile record - * @return - */ - public boolean updateCompanyProfile(final CompanyProfile companyProfile); - - /** - * Get the CompanyProfile record for a user and company ID - * @param userId uuid of the user - * @param companyProfileId id of the company - * @return - */ - public CompanyProfile getCompanyProfile(final String userId, final long companyProfileId); - - /** - * Get all CompanyProfile records for a user - * @param userId uuid of the user - * @return - */ - public List getCompanyProfiles(final String userId); - - /** - * Remove a CompanyProfile record - * @param companyProfile CompanyProfile record - * @return - */ - public boolean removeCompanyProfile(final CompanyProfile companyProfile); - - /** - * Add a new GalleryImage record - * - * @param galleryImage GalleryImage record - * @return - */ - public boolean addNewGalleryImage(final GalleryImage galleryImage); - - /** - * Get the GalleryImage record for a user and image ID - * @param userId uuid of the user - * @param imageId id of the image - * @return - */ - public GalleryImage getGalleryImageRecord(final String userId, final long imageId); - - /** - * Get all GalleryImage records for a user - * @param userId uuid of the user - * @return - */ - public List getGalleryImages(final String userId); - - /** - * Remove a GalleryImage record - * - * @param galleryImage GalleryImage record - * @return - */ - public boolean removeGalleryImage(final GalleryImage galleryImage); - - /** - * Get a count of all gallery images that a user has - * @param userUuid uuid of the user - * @return - */ - public int getGalleryImagesCount(final String userUuid); - - /** * Get a SocialNetworkingInfo record for a user * @param userId uuid of the user @@ -360,137 +142,6 @@ public interface ProfileDao { */ public boolean savePreferencesRecord(ProfilePreferences prefs); - /** - * Get a count of all unread messages for a user - * @param userId uuid of the user - * @return - */ - public int getAllUnreadMessagesCount(final String userId); - - /** - * Get a count of all threads with unread messages for a user - * @param userId uuid of the user - * @return - */ - public int getThreadsWithUnreadMessagesCount(final String userId); - - /** - * Get a count of all sent messages for a user - * @param userId uuid of the user - * @return - */ - public int getSentMessagesCount(final String userId); - - /** - * Get a list of MessageThreads for a user - * @param userId uuid of the user - * @return - */ - public List getMessageThreads(final String userId); - - /** - * Get a count of all message threads for a user - * @param userId uuid of the user - * @return - */ - public int getMessageThreadsCount(final String userId); - - /** - * Get a list of all Messages in a given thread - * @param threadId id of the thread - * @return - */ - public List getMessagesInThread(final String threadId); - - /** - * Get a count of all Messages in a given thread - * @param threadId id of the thread - * @return - */ - public int getMessagesInThreadCount(final String threadId); - - /** - * Get a Message record - * @param id uuid of the Message - * @return - */ - public Message getMessage(final String id); - - /** - * Get a MessageThread record - * @param threadId id of the thread - * @return - */ - public MessageThread getMessageThread(final String threadId); - - /** - * Get the latest Message in a MessageThread - * @param threadId id of the thread - * @return - */ - public Message getLatestMessageInThread(final String threadId); - - /** - * Toggle a Message as being read by the given participant - * @param participant MessageParticipant - * @param status true/false for read/unread - * @return - */ - public boolean toggleMessageRead(MessageParticipant participant, final boolean status); - - /** - * Get a MessageParticipant record for the given message and user id - * @param messageId uuid of the message - * @param userUuid uuid of the user - * @return - */ - public MessageParticipant getMessageParticipant(final String messageId, final String userUuid); - - /** - * Get a list of uuids of all perticipants in a thread - * @param threadId id of the thread - * @return - */ - public List getThreadParticipants(final String threadId); - - /** - * Save a MessageThread record - * @param thread MessageThread object - */ - public void saveNewThread(MessageThread thread); - - /** - * Save a Message record - * @param thread Message object - */ - public void saveNewMessage(Message message); - - /** - * Save a MessageParticipant record - * @param thread MessageParticipant object - */ - public void saveNewMessageParticipant(MessageParticipant participant); - - /** - * Save a list of MessageParticipants - * @param participants List of MessageParticipant objects - */ - public void saveNewMessageParticipants(List participants); - - /** - * Get the kudos record for a user - * @param userUuid - * @return ProfileKudos record, or null - */ - public ProfileKudos getKudos(String userUuid); - - /** - * Update a user's kudos record - * @param kudos ProfileKudos for the user - * @return - */ - public boolean updateKudos(ProfileKudos kudos); - /** * Get the ExternalIntegrationInfo record for a user * @param userUuid @@ -505,56 +156,6 @@ public interface ProfileDao { */ public boolean updateExternalIntegrationInfo(ExternalIntegrationInfo info); - /** - * Adds a wall item for the specified user. - * - * @param userUuid the user ID. - * @param item the wall item to add. - * @return true on success, false on failure. - */ - public boolean addNewWallItemForUser(final String userUuid, final WallItem item); - - /** - * Removes a wall item. - * - * @param item the wall item to remove. - * @return true on success, false on failure. - */ - public boolean removeWallItemFromWall(final WallItem item); - - /** - * Returns the specified wall item. - * - * @param wallItemId the wall item to return. - * @return the wall item for the specified id. - */ - public WallItem getWallItem(final long wallItemId); - - /** - * Returns the specified wall item comment. - * - * @param wallItemCommentId the wall item comment to return. - * @return the wall item comment for the specified id. - */ - public WallItemComment getWallItemComment(final long wallItemCommentId); - - /** - * Retrieves all wall items for the specified user. - * - * @param userUuid the user ID. - * @return the wall items for the specified user. - */ - public List getWallItemsForUser(final String userUuid); - - /** - * Adds a new wall item comment. - * - * @param wallItemComment the wall item comment to add. - * @return true if the add is successful and - * false if the add fails. - */ - public boolean addNewCommentToWallItem(WallItemComment wallItemComment); - /** * Invalidate the current profile image for a user. * @@ -566,20 +167,8 @@ public interface ProfileDao { final String QUERY_GET_COMPANY_PROFILE = "getCompanyProfile"; final String QUERY_GET_COMPANY_PROFILES = "getCompanyProfiles"; - final String QUERY_GET_FRIEND_REQUESTS_FOR_USER = "getFriendRequestsForUser"; - final String QUERY_GET_OUTGOING_FRIEND_REQUESTS_FOR_USER = "getOutgoingFriendRequestsForUser"; - final String QUERY_GET_CONFIRMED_FRIEND_USERIDS_FOR_USER = "getConfirmedFriendUserIdsForUser"; - final String QUERY_GET_FRIEND_REQUEST = "getFriendRequest"; - final String QUERY_GET_FRIEND_RECORD = "getFriendRecord"; - final String QUERY_GET_USER_STATUS = "getUserStatus"; final String QUERY_GET_CURRENT_PROFILE_IMAGE_RECORD = "getCurrentProfileImageRecord"; final String QUERY_OTHER_PROFILE_IMAGE_RECORDS = "getOtherProfileImageRecords"; - final String QUERY_GET_STATUS_UPDATES_COUNT = "getStatusUpdatesCount"; - - //GalleryImage - final String QUERY_GET_GALLERY_IMAGE_RECORDS = "getGalleryImageRecords"; - final String QUERY_GET_GALLERY_RECORD = "getGalleryRecord"; - final String QUERY_GET_GALLERY_IMAGE_RECORDS_COUNT = "getGalleryImageRecordsCount"; //SakaiPersonMeta final String QUERY_FIND_SAKAI_PERSONS_BY_NAME_OR_EMAIL = "findSakaiPersonsByNameOrEmail"; @@ -588,37 +177,13 @@ public interface ProfileDao { final String QUERY_GET_ALL_SAKAI_PERSON_IDS = "getAllSakaiPersonIds"; final String QUERY_GET_ALL_SAKAI_PERSON_IDS_COUNT = "getAllSakaiPersonIdsCount"; - //ProfileImageOfficial final String QUERY_GET_OFFICIAL_IMAGE_RECORD = "getProfileImageOfficialRecord"; - // from Message.hbm.xml - final String QUERY_GET_ALL_UNREAD_MESSAGES_COUNT = "getAllUnreadMessagesCount"; - final String QUERY_GET_THREADS_WITH_UNREAD_MESSAGES_COUNT = "getThreadsWithUnreadMessagesCount"; - final String QUERY_GET_MESSAGES_IN_THREAD="getMessagesInThread"; - final String QUERY_GET_MESSAGES_IN_THREAD_COUNT="getMessagesInThreadCount"; - final String QUERY_GET_LATEST_MESSAGE_IN_THREAD = "getLatestMessageInThread"; - final String QUERY_GET_MESSAGE_THREADS="getMessageThreads"; - final String QUERY_GET_MESSAGE_THREADS_COUNT="getMessageThreadsCount"; - final String QUERY_GET_SENT_MESSAGES_COUNT="getSentMessagesCount"; - - //from MessageRecipient.hbm.xml - final String QUERY_GET_MESSAGE_PARTICIPANT_FOR_MESSAGE_AND_UUID="getMessageParticipantForMessageAndUuid"; - final String QUERY_GET_THREAD_PARTICIPANTS="getThreadParticipants"; - - //from WallItem.hbm.xml - final String QUERY_GET_WALL_ITEMS = "getWallItemRecords"; - // Hibernate object fields final String USER_UUID = "userUuid"; - final String FRIEND_UUID = "friendUuid"; - final String CONFIRMED = "confirmed"; - final String OLDEST_STATUS_DATE = "oldestStatusDate"; - final String SEARCH = "search"; final String UUID = "uuid"; final String ID = "id"; - final String THREAD = "thread"; - final String MESSAGE_ID = "messageId"; } diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/dao/impl/ProfileDaoImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/dao/impl/ProfileDaoImpl.java index 381e9c40fa1b..ea0a555177df 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/dao/impl/ProfileDaoImpl.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/dao/impl/ProfileDaoImpl.java @@ -20,27 +20,14 @@ import org.hibernate.Session; import org.hibernate.SessionFactory; import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.hbm.model.ProfileFriend; import org.sakaiproject.profile2.hbm.model.ProfileImageExternal; import org.sakaiproject.profile2.hbm.model.ProfileImageOfficial; import org.sakaiproject.profile2.hbm.model.ProfileImageUploaded; -import org.sakaiproject.profile2.hbm.model.ProfileKudos; -import org.sakaiproject.profile2.model.CompanyProfile; import org.sakaiproject.profile2.model.ExternalIntegrationInfo; -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.model.MessageParticipant; -import org.sakaiproject.profile2.model.MessageThread; import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.ProfileStatus; import org.sakaiproject.profile2.model.SocialNetworkingInfo; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.model.WallItemComment; -import javax.persistence.TemporalType; import javax.persistence.TypedQuery; -import java.util.Date; import java.util.List; /** @@ -54,49 +41,6 @@ public class ProfileDaoImpl implements ProfileDao { private SessionFactory sessionFactory; - @Override - public List getRequestedConnectionUserIdsForUser(final String userId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_FRIEND_REQUESTS_FOR_USER, String.class); - query.setParameter(USER_UUID, userId); - query.setParameter("false", Boolean.FALSE); - return query.getResultList(); - } - - @Override - public List getOutgoingConnectionUserIdsForUser(final String userId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_OUTGOING_FRIEND_REQUESTS_FOR_USER, String.class); - query.setParameter(USER_UUID, userId); - query.setParameter("false", Boolean.FALSE); - return query.getResultList(); - } - - @Override - public List getConfirmedConnectionUserIdsForUser(final String userId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_CONFIRMED_FRIEND_USERIDS_FOR_USER, String.class); - query.setParameter(USER_UUID, userId); - query.setParameter("true", Boolean.TRUE); - return query.getResultList(); - } - - @Override - public List findSakaiPersonsByNameOrEmail(final String search) { - TypedQuery query = getSession().createNamedQuery(QUERY_FIND_SAKAI_PERSONS_BY_NAME_OR_EMAIL, String.class); - query.setParameter(SEARCH, '%' + search + '%'); - return query.getResultList(); - } - - @Override - public List findSakaiPersonsByInterest(final String search, final boolean includeBusinessBio) { - TypedQuery query; - if (includeBusinessBio) { - query = getSession().createNamedQuery(QUERY_FIND_SAKAI_PERSONS_BY_INTEREST_AND_BUSINESS_BIO, String.class); - } else { - query = getSession().createNamedQuery(QUERY_FIND_SAKAI_PERSONS_BY_INTEREST, String.class); - } - query.setParameter(SEARCH, '%' + search + '%'); - return query.getResultList(); - } - @Override public List getCurrentProfileImageRecords(final String userId) { TypedQuery query = getSession().createNamedQuery(QUERY_GET_CURRENT_PROFILE_IMAGE_RECORD, ProfileImageUploaded.class); @@ -118,30 +62,6 @@ public List getOtherProfileImageRecords(final String userI return query.getResultList(); } - @Override - public ProfileFriend getConnectionRecord(final String userId, final String friendId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_FRIEND_RECORD, ProfileFriend.class); - query.setParameter(USER_UUID, userId); - query.setParameter(FRIEND_UUID, friendId); - return query.getResultStream().findAny().orElse(null); - } - - @Override - public CompanyProfile getCompanyProfile(final String userId, final long companyProfileId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_COMPANY_PROFILE, CompanyProfile.class); - query.setParameter(USER_UUID, userId); - query.setParameter(ID, companyProfileId); - return query.getResultStream().findAny().orElse(null); - } - - @Override - public GalleryImage getGalleryImageRecord(final String userId, final long imageId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_GALLERY_RECORD, GalleryImage.class); - query.setParameter(USER_UUID, userId); - query.setParameter(ID, imageId); - return query.getResultStream().findAny().orElse(null); - } - @Override public ProfileImageOfficial getOfficialImageRecordForUser(final String userUuid) { TypedQuery query = getSession().createNamedQuery(QUERY_GET_OFFICIAL_IMAGE_RECORD, ProfileImageOfficial.class); @@ -149,192 +69,6 @@ public ProfileImageOfficial getOfficialImageRecordForUser(final String userUuid) return query.getResultStream().findAny().orElse(null); } - @Override - public boolean addNewConnection(final ProfileFriend profileFriend) { - try { - getSession().persist(profileFriend); - return true; - } catch (Exception e) { - log.warn("request friend failed, {}", e.toString()); - } - return false; - } - - @Override - public boolean updateConnection(final ProfileFriend profileFriend) { - try { - getSession().merge(profileFriend); - return true; - } catch (Exception e) { - log.warn("confirm friend request failed, {}", e.toString()); - } - return false; - } - - @Override - public boolean removeConnection(final ProfileFriend profileFriend) { - try { - Session session = getSession(); - session.remove(session.merge(profileFriend)); - return true; - } catch (Exception e) { - log.warn("remove connection failed, {}", e.toString()); - } - return false; - } - - @Override - public ProfileFriend getPendingConnection(final String userId, final String friendId) { - - if (userId == null || friendId == null) { - throw new IllegalArgumentException("Null Argument in getPendingConnection"); - } - - TypedQuery query = getSession().createNamedQuery(QUERY_GET_FRIEND_REQUEST, ProfileFriend.class); - query.setParameter(USER_UUID, userId); - query.setParameter(FRIEND_UUID, friendId); - query.setParameter(CONFIRMED, false); - return query.getResultStream().findAny().orElse(null); - } - - @Override - public ProfileStatus getUserStatus(final String userId, final Date oldestDate) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_USER_STATUS, ProfileStatus.class); - query.setParameter(USER_UUID, userId); - query.setParameter(OLDEST_STATUS_DATE, oldestDate, TemporalType.TIMESTAMP); - return query.getResultStream().findAny().orElse(null); - } - - @Override - public boolean setUserStatus(final ProfileStatus profileStatus) { - try { - getSession().merge(profileStatus); - return true; - } catch (Exception e) { - log.warn("update User Status failed, {}", e.toString()); - } - return false; - } - - @Override - public boolean clearUserStatus(final ProfileStatus profileStatus) { - try { - Session session = getSession(); - session.remove(session.merge(profileStatus)); - return true; - } catch (final Exception e) { - log.error("clear the Users Status failed, {}", e.toString()); - } - return false; - } - - @Override - public int getStatusUpdatesCount(final String userId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_STATUS_UPDATES_COUNT, Number.class); - query.setParameter(USER_UUID, userId); - return query.getSingleResult().intValue(); - } - - @Override - public ProfilePrivacy addNewPrivacyRecord(final ProfilePrivacy privacy) { - return (ProfilePrivacy) getSession().merge(privacy); - } - - @Override - public ProfilePrivacy getPrivacyRecord(final String userId) { - return getSession().get(ProfilePrivacy.class, userId); - } - - @Override - public boolean updatePrivacyRecord(final ProfilePrivacy privacy) { - try { - getSession().merge(privacy); - return true; - } catch (Exception e) { - log.warn("update privacy record failed, {}", e.toString()); - } - return false; - } - - - @Override - public boolean addNewCompanyProfile(final CompanyProfile companyProfile) { - try { - getSession().persist(companyProfile); - return true; - } catch (Exception e) { - log.warn("add new company profile failed, {}", e.toString()); - } - return false; - } - - @Override - public boolean updateCompanyProfile(final CompanyProfile companyProfile) { - try { - getSession().merge(companyProfile); - return true; - } catch (Exception e) { - log.warn("update company profile failed, {}", e.toString()); - } - return false; - } - - @Override - public List getCompanyProfiles(final String userId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_COMPANY_PROFILES, CompanyProfile.class); - query.setParameter(USER_UUID, userId); - return query.getResultList(); - } - - @Override - public boolean removeCompanyProfile(final CompanyProfile companyProfile) { - try { - Session session = getSession(); - session.remove(session.merge(companyProfile)); - return true; - } catch (Exception e) { - log.warn("remove company profile failed, {}", e.toString()); - } - return false; - } - - @Override - public boolean addNewGalleryImage(final GalleryImage galleryImage) { - try { - getSession().persist(galleryImage); - return true; - } catch (Exception e) { - log.warn("add gallery image failed, {}", e.toString()); - } - return false; - } - - @Override - public List getGalleryImages(final String userId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_GALLERY_IMAGE_RECORDS, GalleryImage.class); - query.setParameter(USER_UUID, userId); - return query.getResultList(); - } - - @Override - public boolean removeGalleryImage(final GalleryImage galleryImage) { - try { - Session session = getSession(); - session.remove(session.merge(galleryImage)); - return true; - } catch (Exception e) { - log.warn("remove gallery image failed, {}", e.toString()); - } - return false; - } - - @Override - public int getGalleryImagesCount(final String userId) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_GALLERY_IMAGE_RECORDS_COUNT, Number.class); - query.setParameter(USER_UUID, userId); - return query.getSingleResult().intValue(); - } - @Override public SocialNetworkingInfo getSocialNetworkingInfo(final String userId) { return getSession().get(SocialNetworkingInfo.class, userId); @@ -384,7 +118,6 @@ public int getAllSakaiPersonIdsCount() { return query.getSingleResult().intValue(); } - @Override public ProfileImageExternal getExternalImageRecordForUser(final String userId) { return getSession().get(ProfileImageExternal.class, userId); @@ -427,145 +160,6 @@ public boolean savePreferencesRecord(final ProfilePreferences prefs) { return false; } - @Override - public int getAllUnreadMessagesCount(final String userId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_ALL_UNREAD_MESSAGES_COUNT, Number.class); - query.setParameter(UUID, userId); - query.setParameter("false", Boolean.FALSE); - return query.getSingleResult().intValue(); - } - - @Override - public int getThreadsWithUnreadMessagesCount(final String userId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_THREADS_WITH_UNREAD_MESSAGES_COUNT, Number.class); - query.setParameter(UUID, userId); - query.setParameter("false", Boolean.FALSE); - return query.getSingleResult().intValue(); - } - - @Override - public List getMessageThreads(final String userId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_MESSAGE_THREADS, MessageThread.class); - query.setParameter(UUID, userId); - return query.getResultList(); - } - - @Override - public int getMessageThreadsCount(final String userId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_MESSAGE_THREADS_COUNT, Number.class); - query.setParameter(UUID, userId); - return query.getSingleResult().intValue(); - } - - @Override - public int getSentMessagesCount(final String userId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_SENT_MESSAGES_COUNT, Number.class); - query.setParameter(UUID, userId); - return query.getSingleResult().intValue(); - } - - @Override - public List getMessagesInThread(final String threadId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_MESSAGES_IN_THREAD, Message.class); - query.setParameter(THREAD, threadId); - return query.getResultList(); - } - - @Override - public int getMessagesInThreadCount(final String threadId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_MESSAGES_IN_THREAD_COUNT, Number.class); - query.setParameter(THREAD, threadId); - return query.getSingleResult().intValue(); - } - - @Override - public Message getMessage(final String id) { - return getSession().get(Message.class, id); - } - - @Override - public MessageThread getMessageThread(final String threadId) { - return getSession().get(MessageThread.class, threadId); - } - - @Override - public Message getLatestMessageInThread(final String threadId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_LATEST_MESSAGE_IN_THREAD, Message.class); - query.setParameter(THREAD, threadId); - List results = query.getResultList(); - if (results.isEmpty()) { - return null; - } - return results.get(0); - } - - @Override - public boolean toggleMessageRead(final MessageParticipant participant, final boolean read) { - try { - participant.setRead(read); - getSession().merge(participant); - return true; - } catch (final Exception e) { - log.warn("toggle message read failed, {}", e.toString()); - } - return false; - } - - @Override - public MessageParticipant getMessageParticipant(final String messageId, final String userUuid) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_MESSAGE_PARTICIPANT_FOR_MESSAGE_AND_UUID, MessageParticipant.class); - query.setParameter(MESSAGE_ID, messageId); - query.setParameter(UUID, userUuid); - List results = query.getResultList(); - if (results.isEmpty()) { - return null; - } - return results.get(0); - } - - @Override - public List getThreadParticipants(final String threadId) { - final TypedQuery query = getSession().createNamedQuery(QUERY_GET_THREAD_PARTICIPANTS, String.class); - query.setParameter(THREAD, threadId); - return query.getResultList(); - } - - @Override - public void saveNewThread(final MessageThread thread) { - try { - getSession().persist(thread); - log.debug("Message thread saved with id [{}]", thread.getId()); - } catch (Exception e) { - log.warn("save new thread failed, {}", e.toString()); - } - } - - @Override - public void saveNewMessage(final Message message) { - try { - getSession().persist(message); - log.debug("Message saved with id [{}]", message.getId()); - } catch (Exception e) { - log.warn("save new message failed, {}", e.toString()); - } - } - - @Override - public void saveNewMessageParticipant(final MessageParticipant participant) { - try { - getSession().persist(participant); - log.debug("Message participant saved with id [{}]", participant.getId()); - } catch (Exception e) { - log.warn("save new message participant failed, {}", e.toString()); - } - } - - @Override - public void saveNewMessageParticipants(final List participants) { - participants.forEach(this::saveNewMessageParticipant); - } - - @Override public boolean saveOfficialImageUrl(final ProfileImageOfficial officialImage) { try { @@ -577,24 +171,6 @@ public boolean saveOfficialImageUrl(final ProfileImageOfficial officialImage) { return false; } - @Override - public ProfileKudos getKudos(final String userUuid) { - return getSession().get(ProfileKudos.class, userUuid); - } - - - @Override - public boolean updateKudos(final ProfileKudos kudos) { - try { - getSession().merge(kudos); - return true; - } catch (Exception e) { - log.warn("update Kudos failed, {}", e.toString()); - } - return false; - } - - @Override public ExternalIntegrationInfo getExternalIntegrationInfo(final String userUuid) { return getSession().get(ExternalIntegrationInfo.class, userUuid); @@ -611,57 +187,6 @@ public boolean updateExternalIntegrationInfo(final ExternalIntegrationInfo info) return false; } - @Override - public boolean addNewWallItemForUser(final String userUuid, final WallItem item) { - try { - getSession().persist(item); - return true; - } catch (Exception e) { - log.warn("add new wall item for user [{}] failed, {}", userUuid, e.toString()); - } - return false; - } - - @Override - public boolean removeWallItemFromWall(final WallItem item) { - try { - Session session = getSession(); - session.remove(session.merge(item)); - return true; - } catch (final Exception e) { - log.warn("delete wall item from wall failed, {}", e.toString()); - } - return false; - } - - @Override - public WallItem getWallItem(final long wallItemId) { - return getSession().get(WallItem.class, wallItemId); - } - - @Override - public WallItemComment getWallItemComment(final long wallItemCommentId) { - return getSession().get(WallItemComment.class, wallItemCommentId); - } - - @Override - public List getWallItemsForUser(final String userUuid) { - TypedQuery query = getSession().createNamedQuery(QUERY_GET_WALL_ITEMS, WallItem.class); - query.setParameter(USER_UUID, userUuid); - return query.getResultList(); - } - - @Override - public boolean addNewCommentToWallItem(final WallItemComment wallItemComment) { - try { - getSession().persist(wallItemComment); - return true; - } catch (Exception e) { - log.warn("add new wall item comment failed, {}", e.toString()); - } - return false; - } - @Override public boolean invalidateCurrentProfileImage(final String userUuid) { try { @@ -680,4 +205,4 @@ public boolean invalidateCurrentProfileImage(final String userUuid) { private Session getSession() { return sessionFactory.getCurrentSession(); } -} \ No newline at end of file +} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/job/KudosJob.java b/profile2/impl/src/java/org/sakaiproject/profile2/job/KudosJob.java deleted file mode 100644 index c7bc6792e8da..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/job/KudosJob.java +++ /dev/null @@ -1,563 +0,0 @@ -/** - * 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.job; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; -import org.quartz.SchedulerException; -import org.quartz.StatefulJob; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfileExternalIntegrationLogic; -import org.sakaiproject.profile2.logic.ProfileImageLogic; -import org.sakaiproject.profile2.logic.ProfileKudosLogic; -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.logic.ProfileStatusLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ExternalIntegrationInfo; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfileImage; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.tool.api.Session; -import org.sakaiproject.tool.api.SessionManager; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * This is the Kudos calculation job. - * - *

Certain items/events have weightings, these are calculated and summed to give a score. - *
That score is then divided by the total number of possible items/weightings and converted to a percentage - * to give the total kudos ranking for the user. - *

- * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Slf4j - public class KudosJob implements StatefulJob { - - private final String BEAN_ID = "org.sakaiproject.profile2.job.KudosJob"; - - - /** - * setup the rule map - */ - private final HashMap RULES = new HashMap() { - private static final long serialVersionUID = 1L; - - { - //points for profile completeness - put("nickname", new BigDecimal("1")); - put("birthday", new BigDecimal("0.5")); - - put("email", new BigDecimal("1")); - put("homePage", new BigDecimal("1")); - put("workPhone", new BigDecimal("1")); - put("homePhone", new BigDecimal("1")); - put("mobilePhone", new BigDecimal("1")); - - put("position", new BigDecimal("0.5")); - put("department", new BigDecimal("0.5")); - put("school", new BigDecimal("0.5")); - put("room", new BigDecimal("0.5")); - put("course", new BigDecimal("0.5")); - put("subjects", new BigDecimal("0.5")); - - put("favouriteBooks", new BigDecimal("0.25")); - put("favouriteTvShows", new BigDecimal("0.25")); - put("favouriteMovies", new BigDecimal("0.25")); - put("favouriteQuotes", new BigDecimal("0.25")); - put("personalSummary", new BigDecimal("2")); - - //points for openness in privacy - put("profileImageShared", new BigDecimal("0.05")); - put("profileImageBonus", new BigDecimal("0.05")); - put("basicInfoShared", new BigDecimal("0.05")); - put("basicInfoBonus", new BigDecimal("0.05")); - put("contactInfoShared", new BigDecimal("0.05")); - put("contactInfoBonus", new BigDecimal("0.05")); - put("personalInfoShared", new BigDecimal("0.05")); - put("personalInfoBonus", new BigDecimal("0.05")); - put("staffInfoShared", new BigDecimal("0.05")); - put("staffInfoBonus", new BigDecimal("0.05")); - put("studentInfoShared", new BigDecimal("0.05")); - put("studentInfoBonus", new BigDecimal("0.05")); - put("viewConnectionsShared", new BigDecimal("0.05")); - put("viewConnectionsBonus", new BigDecimal("0.05")); - put("viewStatusShared", new BigDecimal("0.05")); - put("viewStatusBonus", new BigDecimal("0.05")); - put("viewPicturesShared", new BigDecimal("0.05")); - put("viewPicturesBonus", new BigDecimal("0.05")); - - put("showBirthYear", new BigDecimal("0.1")); - - //points for usage - more points for the heavier usage - put("hasImage", new BigDecimal("5")); - - put("hasOneConnection", new BigDecimal("2")); - put("hasMoreThanTenConnections", new BigDecimal("3")); - - put("hasOneSentMessage", new BigDecimal("2")); - put("hasMoreThanTenSentMessages", new BigDecimal("3")); - - put("hasOneStatusUpdate", new BigDecimal("0.25")); - - // add when PRFL-191 is added - //put("hasMoreThanTenStatusUpdates", new BigDecimal(1)); - //put("hasMoreThanOneHundredStatusUpdates", new BigDecimal(2)); - - put("hasOneGalleryPicture", new BigDecimal("0.25")); - put("hasMoreThanTenGalleryPictures", new BigDecimal("1")); - - //points for others viewing their profile, not yet implemented - //put("hasMoreThanOneVisitor", new BigDecimal(0.05)); - //put("hasMoreThanTenUniqueVisitors", new BigDecimal(2)); - //put("hasMoreThanOneHundredUniqueVisitors", new BigDecimal(3)); - - - } - }; - - - /** - * Calculate the score for this person - * @param person Person object - * @return - */ - private BigDecimal getScore(Person person) { - - BigDecimal score = new BigDecimal(0); - - //profile - UserProfile profile = person.getProfile(); - if(profile != null){ - //basic - if(nb(profile.getNickname())){ - score = score.add(val("nickname")); - } - if(nb(profile.getBirthday())){ - score = score.add(val("birthday")); - } - - //contact - if(nb(profile.getEmail())){ - score = score.add(val("email")); - } - if(nb(profile.getHomepage())){ - score = score.add(val("homePage")); - } - if(nb(profile.getWorkphone())){ - score = score.add(val("workPhone")); - } - if(nb(profile.getHomephone())){ - score = score.add(val("homePhone")); - } - if(nb(profile.getMobilephone())){ - score = score.add(val("mobilePhone")); - } - - //staff/student - if(nb(profile.getPosition())){ - score = score.add(val("position")); - } - if(nb(profile.getDepartment())){ - score = score.add(val("department")); - } - if(nb(profile.getSchool())){ - score = score.add(val("school")); - } - if(nb(profile.getRoom())){ - score = score.add(val("room")); - } - if(nb(profile.getCourse())){ - score = score.add(val("course")); - } - if(nb(profile.getSubjects())){ - score = score.add(val("subjects")); - } - - //personal - if(nb(profile.getFavouriteBooks())){ - score = score.add(val("favouriteBooks")); - } - if(nb(profile.getFavouriteTvShows())){ - score = score.add(val("favouriteTvShows")); - } - if(nb(profile.getFavouriteMovies())){ - score = score.add(val("favouriteMovies")); - } - if(nb(profile.getFavouriteQuotes())){ - score = score.add(val("favouriteQuotes")); - } - if(nb(profile.getPersonalSummary())){ - score = score.add(val("personalSummary")); - } - } - - ProfilePrivacy privacy = person.getPrivacy(); - if(privacy != null){ - - //profile image - switch(privacy.getProfileImage()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("profileImageShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("profileImageShared")); - score = score.add(val("profileImageBonus")); - break; - } - - //basic info - switch(privacy.getBasicInfo()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("basicInfoShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("basicInfoShared")); - score = score.add(val("basicInfoBonus")); - break; - } - - //contact info - switch(privacy.getContactInfo()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("contactInfoShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("contactInfoShared")); - score = score.add(val("contactInfoBonus")); - break; - } - - //personal info - switch(privacy.getPersonalInfo()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("personalInfoShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("personalInfoShared")); - score = score.add(val("personalInfoBonus")); - break; - } - - //staff info - switch(privacy.getStaffInfo()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("staffInfoShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("staffInfoShared")); - score = score.add(val("staffInfoBonus")); - break; - } - - //student info - switch(privacy.getStudentInfo()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("studentInfoShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("studentInfoShared")); - score = score.add(val("studentInfoBonus")); - break; - } - - //view connections - switch(privacy.getMyFriends()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("viewConnectionsShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("viewConnectionsShared")); - score = score.add(val("viewConnectionsBonus")); - break; - } - - //view status - switch(privacy.getMyStatus()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("viewStatusShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("viewStatusShared")); - score = score.add(val("viewStatusBonus")); - break; - } - - //view pictures. if it's disabled, assign full points - if(sakaiProxy.isProfileGalleryEnabledGlobally()) { - switch(privacy.getMyPictures()) { - case (ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) : - score = score.add(val("viewPicturesShared")); - break; - case (ProfileConstants.PRIVACY_OPTION_EVERYONE) : - score = score.add(val("viewPicturesShared")); - score = score.add(val("viewPicturesBonus")); - break; - } - } else { - score = score.add(val("viewPicturesShared")); - score = score.add(val("viewPicturesBonus")); - } - - //birth year visible - if(privacy.isShowBirthYear()){ - score = score.add(val("showBirthYear")); - } - - } - - //points for image that isn't the default - ProfileImage image = imageLogic.getProfileImage(person, ProfileConstants.PROFILE_IMAGE_MAIN); - if(image != null){ - if(image.getBinary() != null) { - score = score.add(val("hasImage")); - } - if(!StringUtils.equals(image.getUrl(), imageLogic.getUnavailableImageURL())) { - score = score.add(val("hasImage")); - } - } - - //number of connections - int numConnections = connectionsLogic.getConnectionsForUserCount(person.getUuid()); - if(numConnections >= 1){ - score = score.add(val("hasOneConnection")); - } - if(numConnections > 10){ - score = score.add(val("hasMoreThanTenConnections")); - } - - //number of sent messages - int numSentMessages = messagingLogic.getSentMessagesCount(person.getUuid()); - if(numSentMessages >= 1){ - score = score.add(val("hasOneSentMessage")); - } - if(numSentMessages > 10){ - score = score.add(val("hasMoreThanTenSentMessages")); - } - - //number of status updates - int numStatusUpdates = statusLogic.getStatusUpdatesCount(person.getUuid()); - if(numStatusUpdates >= 1) { - score = score.add(val("hasOneStatusUpdate")); - } - /* enable for PRFL-191 as well as entries in map above. - if(numStatusUpdates > 10) { - score = score.add(val("hasMoreThanTenStatusUpdates")); - } - if(numStatusUpdates > 100) { - score = score.add(val("hasMoreThanOneHundredStatusUpdates")); - } - */ - - //if gallery enabled, number of gallery pictures - if(sakaiProxy.isProfileGalleryEnabledGlobally()){ - int numGalleryPictures = imageLogic.getGalleryImagesCount(person.getUuid()); - if(numGalleryPictures >= 1) { - score = score.add(val("hasOneGalleryPicture")); - } - if(numGalleryPictures > 10){ - score = score.add(val("hasMoreThanTenGalleryPictures")); - } - } - - - return score; - - } - - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - - //abort if already running on THIS server node (cannot check other nodes) - try { - while(isJobCurrentlyRunning(context)) { - String beanId = context.getJobDetail().getJobDataMap().getString(BEAN_ID); - log.warn("Another instance of "+beanId+" is currently running - Execution aborted."); - return; - } - } catch(SchedulerException e){ - log.error("Aborting job execution due to " +e.toString(), e); - return; - } - - log.info("KudosJob run"); - - //start a session for admin so we can get full profiles - Session session = sessionManager.startSession(); - sessionManager.setCurrentSession(session); - session.setUserEid("admin"); - session.setUserId("admin"); - - //get total possible score - BigDecimal total = getTotal(); - log.info("Total score possible: " + total.setScale(2, RoundingMode.HALF_UP)); - - //get total number of records - List profileUuids = profileLogic.getAllSakaiPersonIds(); - - //iterate over list getting a chunk of profiles at a time - for(String userUuid: profileUuids) { - - Person person = profileLogic.getPerson(userUuid); - if(person == null){ - continue; - } - - log.info("Processing user: " + userUuid + " (" + person.getDisplayName() + ")"); - - //get score for user - BigDecimal score = getScore(person); - BigDecimal percentage = getScoreAsPercentage(score, total); - int adjustedScore = getScoreOutOfTen(score, total); - - //save it - if(kudosLogic.updateKudos(userUuid, adjustedScore, percentage)) { - log.info("Kudos updated for user: " + userUuid + ", score: " + score.setScale(2, RoundingMode.HALF_UP) + ", percentage: " + percentage + ", adjustedScore: " + adjustedScore); - } - - - } - - session.setUserId(null); - session.setUserEid(null); - - log.info("KudosJob finished"); - } - - /** - * Are multiples of this job currently running? - * @param context - * @return - * @throws SchedulerException - */ - private boolean isJobCurrentlyRunning(JobExecutionContext context) throws SchedulerException { - String beanId = context.getJobDetail().getJobDataMap().getString(BEAN_ID); - List jobsRunning = context.getScheduler().getCurrentlyExecutingJobs(); - - int jobsCount = 0; - for(JobExecutionContext j : jobsRunning) - if(StringUtils.equals(beanId, j.getJobDetail().getJobDataMap().getString(BEAN_ID))) { - jobsCount++; //this job=1, any more and they are multiples. - } - if(jobsCount > 1) { - return true; - } - return false; - } - - - /** - * Helper for StringUtils.isNotBlank - * @param s1 String to check - * @return - */ - private boolean nb(String s1){ - return StringUtils.isNotBlank(s1); - } - - /** - * Helper to get the value of the key from the RULES map - * @param key key to getvalue for - * @return BigDecimal value - */ - private BigDecimal val(String key){ - return RULES.get(key); - } - - /** - * Gets the total of all BigDecimals in the RULES map - * @param map - * @return - */ - private BigDecimal getTotal() { - - BigDecimal total = new BigDecimal("0"); - - if(RULES != null) { - for(Map.Entry entry : RULES.entrySet()) { - total = total.add(entry.getValue()); - } - } - return total; - } - - /** - * Gets the score as a percentage, two decimal precision - * @param score score for user - * @param total total possible score - * @return - */ - private BigDecimal getScoreAsPercentage(BigDecimal score, BigDecimal total) { - return score.divide(total, 4, RoundingMode.HALF_UP).multiply(new BigDecimal("100")).stripTrailingZeros(); - } - - /** - * Gets the score out of ten as an int, and rounded up - * @param score score for user - * @param total total possible score - * @return - */ - private static int getScoreOutOfTen(BigDecimal score, BigDecimal total) { - return score.divide(total, 1, RoundingMode.HALF_UP).multiply(new BigDecimal("10")).intValue(); - } - - - public void init(){ - log.info("KudosJob.init()"); - } - - @Setter - private SakaiProxy sakaiProxy; - - @Setter - private ProfileLogic profileLogic; - - @Setter - private ProfileKudosLogic kudosLogic; - - @Setter - private ProfileImageLogic imageLogic; - - @Setter - private ProfileConnectionsLogic connectionsLogic; - - @Setter - private ProfileMessagingLogic messagingLogic; - - @Setter - private ProfileStatusLogic statusLogic; - - @Setter - private ProfileExternalIntegrationLogic externalIntegrationLogic; - - @Setter - private SessionManager sessionManager; - - -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileConnectionsLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileConnectionsLogicImpl.java deleted file mode 100644 index d71b690d51a1..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileConnectionsLogicImpl.java +++ /dev/null @@ -1,668 +0,0 @@ -/** - * 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.logic; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.sakaiproject.memory.api.Cache; -import org.sakaiproject.profile2.cache.CacheManager; -import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.hbm.model.ProfileFriend; -import org.sakaiproject.profile2.model.BasicConnection; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.types.EmailType; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.user.api.User; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * Implementation of ProfileConnectionsLogic for Profile2. - * - * @author Steve Swinsburg (s.swinsburg@gmail.com) - * - */ -@Slf4j -public class ProfileConnectionsLogicImpl implements ProfileConnectionsLogic { - - private Cache cache; - private final String CACHE_NAME = "org.sakaiproject.profile2.cache.connections"; - - - /** - * {@inheritDoc} - */ - @Override - public List getBasicConnectionsForUser(final String userUuid) { - List users = getConnectedUsers(userUuid); - return getBasicConnections(users); - } - - /** - * {@inheritDoc} - */ - @Override - public List getConnectionsForUser(final String userUuid) { - List users = getConnectedUsers(userUuid); - return profileLogic.getPersons(users); - } - - /** - * {@inheritDoc} - */ - @Override - public List getConnectedUsersForUserInsecurely(final String userUuid) { - return getConnectedUsersInsecurely(userUuid); - } - - - /** - * {@inheritDoc} - */ - @Override - public int getConnectionsForUserCount(final String userId) { - return getConnectionsForUser(userId).size(); - } - - /** - * {@inheritDoc} - */ - @Override - public List getConnectionRequestsForUser(final String userId) { - List users = sakaiProxy.getUsers(dao.getRequestedConnectionUserIdsForUser(userId)); - return profileLogic.getPersons(users); - } - - /** - * {@inheritDoc} - */ - public List getOutgoingConnectionRequestsForUser(final String userId) { - - List users = sakaiProxy.getUsers(dao.getOutgoingConnectionUserIdsForUser(userId)); - return profileLogic.getPersons(users); - } - - /** - * {@inheritDoc} - */ - @Override - public int getConnectionRequestsForUserCount(final String userId) { - return getConnectionRequestsForUser(userId).size(); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isUserXFriendOfUserY(String userX, String userY) { - - //if same then friends. - //added this check so we don't need to do it everywhere else and can call isFriend for all user pairs. - if(StringUtils.equals(userX, userY)) { - return true; - } - - //get friends of current user - //TODO change this to be a single lookup rather than iterating over a list - List friendUuids = getConfirmedConnectionUserIdsForUser(userY); - - //if list of confirmed friends contains this user, they are a friend - if(friendUuids.contains(userX)) { - return true; - } - - return false; - } - - - - /** - * {@inheritDoc} - */ - @Override - public List getConnectionsSubsetForSearch(List connections, String search) { - return getConnectionsSubsetForSearch( connections, search, false); - } - - /** - * {@inheritDoc} - */ - @Override - public List getConnectionsSubsetForSearch(List connections, String search, boolean forMessaging) { - - List subList = new ArrayList(); - - //check auth and get currentUserUuid - String currentUserUuid = sakaiProxy.getCurrentUserId(); - if(currentUserUuid == null) { - throw new SecurityException("You must be logged in to get a connection list subset."); - } - - for(Person p : connections){ - //check for match by name - if(StringUtils.startsWithIgnoreCase(p.getDisplayName(), search)) { - - //if reached max size - if(subList.size() == ProfileConstants.MAX_CONNECTIONS_PER_SEARCH) { - break; - } - - //if we need to check messaging privacy setting - if(forMessaging){ - //if not allowed to be messaged by this user - if(!privacyLogic.isActionAllowed(p.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_MESSAGES)){ - continue; - } - } - - //all ok, add them to the list - subList.add(p); - } - } - return subList; - } - - - /** - * {@inheritDoc} - */ - @Override - public int getConnectionStatus(String userA, String userB) { - - //current user must be the user making the request - String currentUserId = sakaiProxy.getCurrentUserId(); - if(!StringUtils.equals(currentUserId, userA)) { - log.error("User: " + currentUserId + " attempted to get the connection status with " + userB + " on behalf of " + userA); - throw new SecurityException("You are not authorised to perform that action."); - } - - ProfileFriend record = dao.getConnectionRecord(userA, userB); - - //no connection - if(record == null) { - return ProfileConstants.CONNECTION_NONE; - } - - //confirmed - if(record.isConfirmed()) { - return ProfileConstants.CONNECTION_CONFIRMED; - } - - //requested - if(StringUtils.equals(userA, record.getUserUuid()) && !record.isConfirmed()) { - return ProfileConstants.CONNECTION_REQUESTED; - } - - //incoming - if(StringUtils.equals(userA, record.getFriendUuid()) && !record.isConfirmed()) { - return ProfileConstants.CONNECTION_INCOMING; - } - - return ProfileConstants.CONNECTION_NONE; - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean requestFriend(String userId, String friendId) { - - if(userId == null || friendId == null){ - throw new IllegalArgumentException("Null argument in ProfileLogic.getFriendsForUser"); - } - - //current user must be the user making the request - String currentUserId = sakaiProxy.getCurrentUserId(); - if(!StringUtils.equals(currentUserId, userId)) { - log.error("User: " + currentUserId + " attempted to make connection request to " + friendId + " on behalf of " + userId); - throw new SecurityException("You are not authorised to perform that action."); - } - - //make a ProfileFriend object with 'Friend Request' constructor - ProfileFriend profileFriend = new ProfileFriend(userId, friendId, ProfileConstants.RELATIONSHIP_FRIEND); - - //make the request - if (dao.addNewConnection(profileFriend)) { - - log.info("User: " + userId + " requested friend: " + friendId); - - sakaiProxy.postEvent(ProfileConstants.EVENT_FRIEND_REQUEST, "/profile/" + friendId, true); - - //send email notification - sendConnectionEmailNotification(friendId, userId, EmailType.EMAIL_NOTIFICATION_REQUEST); - - return true; - } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isFriendRequestPending(String fromUser, String toUser) { - - ProfileFriend profileFriend = dao.getPendingConnection(fromUser, toUser); - - if(profileFriend == null) { - log.debug("ProfileLogic.isFriendRequestPending: No pending friend request from userId: " + fromUser + " to friendId: " + toUser + " found."); - return false; - } - - return true; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean confirmFriendRequest(final String fromUser, final String toUser) { - - if(fromUser == null || toUser == null){ - throw new IllegalArgumentException("Null argument in ProfileLogic.confirmFriendRequest"); - } - - //current user must be the user making the request - String currentUserId = sakaiProxy.getCurrentUserId(); - if(!StringUtils.equals(currentUserId, toUser)) { - log.error("User: " + currentUserId + " attempted to confirm connection request from " + fromUser + " on behalf of " + toUser); - throw new SecurityException("You are not authorised to perform that action."); - } - - //get pending ProfileFriend object request for the given details - ProfileFriend profileFriend = dao.getPendingConnection(fromUser, toUser); - - if(profileFriend == null) { - log.error("ProfileLogic.confirmFriendRequest() failed. No pending friend request from userId: " + fromUser + " to friendId: " + toUser + " found."); - return false; - } - - //make necessary changes to the ProfileFriend object. - profileFriend.setConfirmed(true); - profileFriend.setConfirmedDate(new Date()); - - if(dao.updateConnection(profileFriend)) { - - log.info("User: " + fromUser + " confirmed friend request from: " + toUser); - //send email notification - sendConnectionEmailNotification(fromUser, toUser, EmailType.EMAIL_NOTIFICATION_CONFIRM); - - //post event - sakaiProxy.postEvent(ProfileConstants.EVENT_FRIEND_CONFIRM, "/profile/"+fromUser, true); - - //invalidate the confirmed connection caches for each user as they are now stale - this.cacheManager.evictFromCache(this.cache, fromUser); - this.cacheManager.evictFromCache(this.cache, toUser); - - return true; - } - - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean ignoreFriendRequest(final String fromUser, final String toUser) { - - if(fromUser == null || toUser == null){ - throw new IllegalArgumentException("Null argument in ProfileLogic.ignoreFriendRequest"); - } - - //current user must be the user making the request or the user receiving it. - String currentUserId = sakaiProxy.getCurrentUserId(); - if(!(StringUtils.equals(currentUserId, toUser) || StringUtils.equals(currentUserId, fromUser))) { - log.error("User: " + currentUserId + " attempted to ignore connection request from " + fromUser + " on behalf of " + toUser); - throw new SecurityException("You are not authorised to perform that action."); - } - - //get pending ProfileFriend object request for the given details - ProfileFriend profileFriend = dao.getPendingConnection(fromUser, toUser); - - if(profileFriend == null) { - profileFriend = dao.getPendingConnection(toUser, fromUser); - if (profileFriend == null) { - log.error("ProfileLogic.ignoreFriendRequest() failed. No pending friend request from userId: " + fromUser + " to friendId: " + toUser + " found."); - return false; - } - } - - //delete - if(dao.removeConnection(profileFriend)) { - log.info("User: " + toUser + " ignored friend request from: " + fromUser); - return true; - } - - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean removeFriend(String userId, String friendId) { - - if(userId == null || friendId == null){ - throw new IllegalArgumentException("Null argument in ProfileLogic.removeFriend"); - } - - //current user must be the user making the request - String currentUserId = sakaiProxy.getCurrentUserId(); - if(!StringUtils.equals(currentUserId, userId)) { - log.error("User: " + currentUserId + " attempted to remove connection with " + friendId + " on behalf of " + userId); - throw new SecurityException("You are not authorised to perform that action."); - } - - //get the friend object for this connection pair (could be any way around) - ProfileFriend profileFriend = dao.getConnectionRecord(userId, friendId); - - if(profileFriend == null){ - log.error("ProfileFriend record does not exist for userId: " + userId + ", friendId: " + friendId); - return false; - } - - //delete - if(dao.removeConnection(profileFriend)) { - log.info("User: " + userId + " removed friend: " + friendId); - - //invalidate the confirmed connection caches for each user as they are now stale - this.cacheManager.evictFromCache(this.cache, userId); - this.cacheManager.evictFromCache(this.cache, friendId); - - return true; - } - return false; - } - - - /** - * {@inheritDoc} - */ - @Override - public BasicConnection getBasicConnection(String userUuid) { - return getBasicConnection(sakaiProxy.getUserById(userUuid)); - } - - /** - * {@inheritDoc} - */ - @Override - public BasicConnection getBasicConnection(User user) { - BasicConnection p = new BasicConnection(); - p.setUuid(user.getId()); - p.setDisplayName(user.getDisplayName()); - p.setType(user.getType()); - p.setOnlineStatus(getOnlineStatus(user.getId())); - return p; - } - - /** - * {@inheritDoc} - */ - @Override - public List getBasicConnections(List users) { - - String currentUserUuid = sakaiProxy.getCurrentUserId(); - if (currentUserUuid == null) { - throw new SecurityException("You must be logged in to get a connection list."); - } - - List list = new ArrayList<>(); - - //get online status - Map onlineStatus = getOnlineStatus(sakaiProxy.getUuids(users)); - - //this is created manually so that we can use the bulk retrieval of the online status method. - for(User u:users){ - BasicConnection bc = new BasicConnection(); - bc.setUuid(u.getId()); - bc.setDisplayName(u.getDisplayName()); - bc.setEmail(u.getEmail()); - bc.setProfileUrl(linkLogic.getInternalDirectUrlToUserProfile(u.getId())); - bc.setType(u.getType()); - bc.setOnlineStatus(onlineStatus.get(u.getId())); - if (privacyLogic.isActionAllowed(u.getId(), currentUserUuid, PrivacyType.PRIVACY_OPTION_SOCIALINFO)) { - bc.setSocialNetworkingInfo(profileLogic.getSocialNetworkingInfo(u.getId())); - } - list.add(bc); - } - return list; - } - - - /** - * {@inheritDoc} - */ - @Override - public int getOnlineStatus(String userUuid) { - - //TODO check prefs and privacy for the user. has the user allowed it? - - - //check if user has an active session - boolean active = sakaiProxy.isUserActive(userUuid); - if(!active) { - return ProfileConstants.ONLINE_STATUS_OFFLINE; - } - - //if active, when was their last event - Long lastEventTime = sakaiProxy.getLastEventTimeForUser(userUuid); - if(lastEventTime == null) { - return ProfileConstants.ONLINE_STATUS_OFFLINE; - } - - //if time between now and last event is less than the interval, they are online. - long timeNow = new Date().getTime(); - - if((timeNow - lastEventTime.longValue()) < ProfileConstants.ONLINE_INACTIVITY_INTERVAL) { - return ProfileConstants.ONLINE_STATUS_ONLINE; - } - - //user is online but inactive - return ProfileConstants.ONLINE_STATUS_AWAY; - } - - /** - * {@inheritDoc} - */ - @Override - public Map getOnlineStatus(List userUuids) { - - //get the list of users that have active sessions - List activeUuids = sakaiProxy.getActiveUsers(userUuids); - - //get last event times for the new list - Map lastEventTimes = sakaiProxy.getLastEventTimeForUsers(activeUuids); - - long timeNow = new Date().getTime(); - - //iterate over original list, create the map - Map map = new HashMap(); - for(String uuid: userUuids) { - if(lastEventTimes.containsKey(uuid)) { - - //calc time, if less than interval, online, otherwise away - Long lastEventTime = lastEventTimes.get(uuid); - if(lastEventTime != null && ((timeNow - lastEventTime.longValue()) < ProfileConstants.ONLINE_INACTIVITY_INTERVAL)) { - map.put(uuid, ProfileConstants.ONLINE_STATUS_ONLINE); - } else { - map.put(uuid, ProfileConstants.ONLINE_STATUS_AWAY); - } - } else { - //no session/no last event time - map.put(uuid, ProfileConstants.ONLINE_STATUS_OFFLINE); - } - } - return map; - } - - - - - - /** - * Check auth, privacy and get the list of users that are connected to this user. - * @param userUuid - * @return List, will be empty if none or not allowed. - */ - private List getConnectedUsers(final String userUuid) { - //check auth and get currentUserUuid - String currentUserUuid = sakaiProxy.getCurrentUserId(); - if(currentUserUuid == null) { - throw new SecurityException("You must be logged in to get a connection list."); - } - - List users = new ArrayList<>(); - - //check privacy - if(!privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYFRIENDS)) { - return users; - } - - users = sakaiProxy.getUsers(getConfirmedConnectionUserIdsForUser(userUuid)); - return users; - } - - /** - * Check auth, privacy and get the list of users that are connected to this user. - * @param userUuid - * @return List, will be empty if none or not allowed. - */ - private List getConnectedUsersInsecurely(final String userUuid) { - return sakaiProxy.getUsers(getConfirmedConnectionUserIdsForUser(userUuid)); - } - - - /** - * Helper method to get the list of confirmed connections for a user as a List of uuids. - * - *

First checks the cache and then goes to the dao if necessary.

- * - * @param userUuid - * @return List of uuids, empty if none. - */ - private List getConfirmedConnectionUserIdsForUser(final String userUuid) { - - List userUuids = null; - - if(cache.containsKey(userUuid)){ - log.debug("Fetching connections from cache for: " + userUuid); - userUuids = (List)cache.get(userUuid); - if(userUuids == null) { - // This means that the cache has expired. evict the key from the cache - log.debug("Connections cache appears to have expired for " + userUuid); - this.cacheManager.evictFromCache(this.cache, userUuid); - } - } - if(userUuids == null) { - userUuids = dao.getConfirmedConnectionUserIdsForUser(userUuid); - if(userUuids != null){ - log.debug("Adding connections to cache for: " + userUuid); - cache.put(userUuid, userUuids); - } else { - //if it is null we dont want to return it like that - userUuids = new ArrayList(); - } - } - return userUuids; - } - - - - - /** - * Sends an email notification to the users. Used for connections. This formats the data and calls {@link SakaiProxy.sendEmail(String userId, String emailTemplateKey, Map replacementValues)} - * @param toUuid user to send the message to - this will be formatted depending on their email preferences for this message type so it is safe to pass any users you need - * @param fromUuid uuid from - * @param messageType the message type to send from ProfileConstants. Retrieves the emailTemplateKey based on this value - */ - private void sendConnectionEmailNotification(String toUuid, final String fromUuid, final EmailType messageType) { - //check if email preference enabled - if(!preferencesLogic.isPreferenceEnabled(toUuid, messageType.toPreference())) { - return; - } - - //request - if(messageType == EmailType.EMAIL_NOTIFICATION_REQUEST) { - - String emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_CONNECTION_REQUEST; - - //create the map of replacement values for this email template - Map replacementValues = new HashMap<>(); - replacementValues.put("senderDisplayName", sakaiProxy.getUserDisplayName(fromUuid)); - replacementValues.put("localSakaiName", sakaiProxy.getServiceName()); - replacementValues.put("connectionLink", linkLogic.getEntityLinkToProfileConnections()); - replacementValues.put("localSakaiUrl", sakaiProxy.getPortalUrl()); - replacementValues.put("toolName", sakaiProxy.getCurrentToolTitle()); - - sakaiProxy.sendEmail(toUuid, emailTemplateKey, replacementValues); - return; - } - - //confirm - if(messageType == EmailType.EMAIL_NOTIFICATION_CONFIRM) { - - String emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_CONNECTION_CONFIRM; - - //create the map of replacement values for this email template - Map replacementValues = new HashMap<>(); - replacementValues.put("senderDisplayName", sakaiProxy.getUserDisplayName(fromUuid)); - replacementValues.put("localSakaiName", sakaiProxy.getServiceName()); - replacementValues.put("connectionLink", linkLogic.getEntityLinkToProfileHome(fromUuid)); - replacementValues.put("localSakaiUrl", sakaiProxy.getPortalUrl()); - replacementValues.put("toolName", sakaiProxy.getCurrentToolTitle()); - - sakaiProxy.sendEmail(toUuid, emailTemplateKey, replacementValues); - return; - } - - } - - public void init() { - cache = cacheManager.createCache(CACHE_NAME); - } - - @Setter - private SakaiProxy sakaiProxy; - - @Setter - private ProfileDao dao; - - @Setter - private ProfileLogic profileLogic; - - @Setter - private ProfileLinkLogic linkLogic; - - @Setter - private ProfilePrivacyLogic privacyLogic; - - @Setter - private ProfilePreferencesLogic preferencesLogic; - - @Setter - private CacheManager cacheManager; - -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileContentProducer.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileContentProducer.java index 048bf8535ae2..e10ce33b9c99 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileContentProducer.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileContentProducer.java @@ -33,7 +33,6 @@ import org.sakaiproject.component.api.ServerConfigurationService; import org.sakaiproject.entity.api.Entity; import org.sakaiproject.event.api.Event; -import org.sakaiproject.profile2.model.ProfilePrivacy; import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.search.api.EntityContentProducer; import org.sakaiproject.search.api.EntityContentProducerEvents; @@ -46,9 +45,6 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; -/** - * - */ @Setter @Slf4j public class ProfileContentProducer implements EntityContentProducer, EntityContentProducerEvents { @@ -58,7 +54,6 @@ public class ProfileContentProducer implements EntityContentProducer, EntityCont private static final String ID = "id"; private static final String SPACE = " "; - private ProfilePrivacyLogic privacyLogic; private SakaiPersonManager sakaiPersonManager; private ServerConfigurationService serverConfigurationService; private SearchIndexBuilder searchIndexBuilder; @@ -121,7 +116,6 @@ public String getContent(String ref) { List sps = sakaiPersonManager.findSakaiPersonByUid(userId); if (sps != null && sps.size() > 0) { - ProfilePrivacy privacy = privacyLogic.getPrivacyRecordForUser(userId); SakaiPerson sp = sps.get(0); StringBuffer sb = new StringBuffer(); @@ -135,29 +129,8 @@ public String getContent(String ref) { log.error("No user for user id: " + userId, unde); } - if (privacy.getPersonalInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - sb.append(sp.getNickname()); - sb.append(sp.getNotes()); - } - if (privacy.getStaffInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - sb.append(" ").append(sp.getStaffProfile()); - sb.append(" ").append(sp.getPublications()); - } - if (privacy.getPersonalInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - sb.append(" ").append(sp.getFavouriteBooks()); - sb.append(" ").append(sp.getFavouriteTvShows()); - sb.append(" ").append(sp.getFavouriteQuotes()); - } - if (privacy.getStudentInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - sb.append(" ").append(sp.getEducationCourse()); - sb.append(" ").append(sp.getEducationSubjects()); - sb.append(" ").append(sp.getCampus()); - sb.append(" ").append(sp.getEducationCourse()); - sb.append(" ").append(sp.getEducationSubjects()); - } - if (privacy.getBusinessInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - sb.append(" ").append(sp.getBusinessBiography()); - } + sb.append(sp.getNickname()); + sb.append(sp.getNotes()); return sb.toString(); } else { log.error("No SakaiPerson for uid: {}", userId); diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileImageLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileImageLogicImpl.java index e6e7e9f1c642..88d125c538e8 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileImageLogicImpl.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileImageLogicImpl.java @@ -27,8 +27,6 @@ import java.io.InputStream; import java.net.URL; import java.net.URLConnection; -import java.util.Collections; -import java.util.List; import javax.imageio.ImageIO; @@ -42,13 +40,10 @@ import org.sakaiproject.profile2.hbm.model.ProfileImageExternal; import org.sakaiproject.profile2.hbm.model.ProfileImageOfficial; import org.sakaiproject.profile2.hbm.model.ProfileImageUploaded; -import org.sakaiproject.profile2.model.GalleryImage; import org.sakaiproject.profile2.model.MimeTypeByteArray; import org.sakaiproject.profile2.model.Person; import org.sakaiproject.profile2.model.ProfileImage; import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.types.PrivacyType; import org.sakaiproject.profile2.util.Messages; import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.profile2.util.ProfileUtils; @@ -70,12 +65,6 @@ public class ProfileImageLogicImpl implements ProfileImageLogic { @Setter private SakaiProxy sakaiProxy; - @Setter - private ProfilePrivacyLogic privacyLogic; - - @Setter - private ProfileConnectionsLogic connectionsLogic; - @Setter private ProfilePreferencesLogic preferencesLogic; @@ -91,9 +80,6 @@ public class ProfileImageLogicImpl implements ProfileImageLogic { private Cache cache; private final String CACHE_NAME = "org.sakaiproject.profile2.cache.images"; - /** - * {@inheritDoc} - */ @Override public ProfileImage getBlankProfileImage() { @@ -103,17 +89,11 @@ public ProfileImage getBlankProfileImage() { return profileImage; } - /** - * {@inheritDoc} - */ @Override - public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, ProfilePrivacy privacy, int size) { - return getProfileImage(userUuid, prefs, privacy, size, null); + public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, int size) { + return getProfileImage(userUuid, prefs, size, null); } - /** - * {@inheritDoc} - */ @Override public ProfileImage getOfficialProfileImage(String userUuid, String siteId) { @@ -143,11 +123,8 @@ public ProfileImage getOfficialProfileImage(String userUuid, String siteId) { return getOfficialImage(userUuid, profileImage, defaultImageUrl, StringUtils.equals(userUuid,currentUserId)); } - /** - * {@inheritDoc} - */ @Override - public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, ProfilePrivacy privacy, int size, String siteId) { + public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, int size, String siteId) { ProfileImage image = new ProfileImage(); boolean allowed = false; @@ -184,15 +161,6 @@ public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, P return image; } - //check privacy supplied was valid, if given - if(privacy != null && !StringUtils.equals(userUuid, privacy.getUserUuid())) { - log.error("ProfilePrivacy data supplied was not for user: " + userUuid); - image.setExternalImageUrl(defaultImageUrl); - image.setAltText(getAltText(userUuid, isSameUser, false)); - image.setDefault(true); - return image; - } - //check if same user if(isSameUser){ allowed = true; @@ -206,24 +174,6 @@ public ProfileImage getProfileImage(String userUuid, ProfilePreferences prefs, P } } - //if not allowed yet, check we have a privacy record, if not, get one - if(!allowed && privacy == null) { - privacy = privacyLogic.getPrivacyRecordForUser(userUuid); - //if still null, default image - if(privacy == null) { - log.error("Couldn't retrieve ProfilePrivacy data for user: " + userUuid + ". Using default image."); - image.setExternalImageUrl(defaultImageUrl); - image.setAltText(getAltText(userUuid, isSameUser, false)); - image.setDefault(true); - return image; - } - } - - //if not allowed, check privacy record - if(!allowed) { - allowed = privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_PROFILEIMAGE); - } - //default if still not allowed if(!allowed){ image.setExternalImageUrl(defaultImageUrl); @@ -419,7 +369,7 @@ private ProfileImage getOfficialImage(String userUuid, ProfileImage image,String */ @Override public ProfileImage getProfileImage(Person person, int size) { - return getProfileImage(person.getUuid(), person.getPreferences(), person.getPrivacy(), size, null); + return getProfileImage(person.getUuid(), person.getPreferences(), size, null); } /** @@ -427,7 +377,7 @@ public ProfileImage getProfileImage(Person person, int size) { */ @Override public ProfileImage getProfileImage(Person person, int size, String siteId) { - return getProfileImage(person.getUuid(), person.getPreferences(), person.getPrivacy(), size, siteId); + return getProfileImage(person.getUuid(), person.getPreferences(), size, siteId); } @@ -564,123 +514,6 @@ public boolean saveOfficialImageUrl(final String userUuid, final String url) { return false; } - /** - * {@inheritDoc} - */ - @Override - public boolean addGalleryImage(String userUuid, byte[] imageBytes, String mimeType, String fileName) { - - // check auth and get currentUserUuid - String currentUserUuid = sakaiProxy.getCurrentUserId(); - if (currentUserUuid == null) { - throw new SecurityException("You must be logged in to add a gallery image."); - } - - // check admin, or the currentUser and given uuid match - if (!sakaiProxy.isSuperUser() && !StringUtils.equals(currentUserUuid, userUuid)) { - throw new SecurityException("You are not allowed to add a gallery image."); - } - - String imageId = sakaiProxy.createUuid(); - - // create resource ID - String mainResourcePath = sakaiProxy.getProfileGalleryImagePath(userUuid, imageId); - - byte[] scaledImageBytes = ProfileUtils.scaleImage(imageBytes, ProfileConstants.MAX_GALLERY_IMAGE_XY, mimeType); - - // save image - if (!sakaiProxy.saveFile(mainResourcePath, userUuid, fileName, mimeType,scaledImageBytes)) { - log.error("Couldn't add gallery image to CHS. Aborting."); - return false; - } - - // create thumbnail - byte[] thumbnailBytes = ProfileUtils.scaleImage(imageBytes, ProfileConstants.MAX_GALLERY_THUMBNAIL_IMAGE_XY, mimeType); - String thumbnailResourcePath = sakaiProxy.getProfileGalleryThumbnailPath(userUuid, imageId); - sakaiProxy.saveFile(thumbnailResourcePath, userUuid, fileName, mimeType,thumbnailBytes); - - //save - GalleryImage galleryImage = new GalleryImage(userUuid,mainResourcePath, thumbnailResourcePath, fileName); - if(dao.addNewGalleryImage(galleryImage)){ - log.info("Added new gallery image for user: " + galleryImage.getUserUuid()); - return true; - } - - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public List getGalleryImages(String userUuid) { - - // check auth and get currentUserUuid - String currentUserUuid = sakaiProxy.getCurrentUserId(); - if (currentUserUuid == null) { - throw new SecurityException("You must be logged in to make a request for a user's gallery images."); - } - - return dao.getGalleryImages(userUuid); - } - - /** - * {@inheritDoc} - */ - @Override - public List getGalleryImagesRandomized(String userUuid) { - - List images = getGalleryImages(userUuid); - Collections.shuffle(images); - return images; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean removeGalleryImage(String userId, long imageId) { - if(userId == null || Long.valueOf(imageId) == null){ - throw new IllegalArgumentException("Null argument in ProfileLogicImpl.removeGalleryImage()"); - } - - // check auth and get currentUserUuid - String currentUserUuid = sakaiProxy.getCurrentUserId(); - if (currentUserUuid == null) { - throw new SecurityException("You must be logged in to remove a gallery image."); - } - - // check admin, or the currentUser and given uuid match - if (!sakaiProxy.isSuperUser() && !StringUtils.equals(currentUserUuid, userId)) { - throw new SecurityException("You are not allowed to remove this gallery image."); - } - - GalleryImage galleryImage = dao.getGalleryImageRecord(userId, imageId); - - if(galleryImage == null){ - log.error("GalleryImage record does not exist for userId: " + userId + ", imageId: " + imageId); - return false; - } - - //delete main image - if (!sakaiProxy.removeResource(galleryImage.getMainResource())) { - log.error("Gallery image not removed: " + galleryImage.getMainResource()); - } - - //delete thumbnail - if (!sakaiProxy.removeResource(galleryImage.getThumbnailResource())) { - log.error("Gallery thumbnail not removed: " + galleryImage.getThumbnailResource()); - } - - if(dao.removeGalleryImage(galleryImage)){ - log.info("User: " + userId + " removed gallery image: " + imageId); - return true; - } - - return false; - } - - /** * {@inheritDoc} */ @@ -712,7 +545,7 @@ public boolean resetProfileImage(final String userUuid) { */ @Override public boolean profileImageIsDefault(final String userUuid) { - ProfileImage image = getProfileImage(userUuid, null, null, ProfileConstants.PROFILE_IMAGE_MAIN); + ProfileImage image = getProfileImage(userUuid, null, ProfileConstants.PROFILE_IMAGE_MAIN); return image.isDefault(); } @@ -762,15 +595,6 @@ public String getProfileImageEntityUrl(String userUuid, int size) { return sb.toString(); } - /** - * {@inheritDoc} - */ - @Override - public int getGalleryImagesCount(final String userUuid) { - return dao.getGalleryImagesCount(userUuid); - } - - /** * Get the profile image for the given user, allowing fallback if no thumbnail exists. * diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileKudosLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileKudosLogicImpl.java deleted file mode 100644 index e9c5eedeefa2..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileKudosLogicImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -/** - * 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.logic; - -import java.math.BigDecimal; -import java.util.Date; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.hbm.model.ProfileKudos; - -/** - * Implementation of ProfileKudosLogic API - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Setter -@Slf4j -public class ProfileKudosLogicImpl implements ProfileKudosLogic { - - private ProfileDao dao; - - @Override - public int getKudos(String userUuid){ - - ProfileKudos k = dao.getKudos(userUuid); - if (k == null) { - return 0; - } - return k.getScore(); - } - - @Override - public BigDecimal getRawKudos(String userUuid){ - ProfileKudos k = dao.getKudos(userUuid); - if(k == null){ - return null; - } - return k.getPercentage(); - } - - @Override - public boolean updateKudos(String userUuid, int score, BigDecimal percentage) { - ProfileKudos k = new ProfileKudos(); - k.setUserUuid(userUuid); - k.setScore(score); - k.setPercentage(percentage); - k.setDateAdded(new Date()); - - return dao.updateKudos(k); - } -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogicImpl.java index 3e215b98d579..7c066c2c0418 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogicImpl.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLinkLogicImpl.java @@ -15,7 +15,6 @@ */ package org.sakaiproject.profile2.logic; -import java.util.HashMap; import java.util.Map; import org.apache.commons.lang3.StringUtils; @@ -31,9 +30,6 @@ */ public class ProfileLinkLogicImpl implements ProfileLinkLogic { - /** - * {@inheritDoc} - */ @Override public String getInternalDirectUrlToUserProfile() { final String currentUserUuid = this.sakaiProxy.getCurrentUserId(); @@ -44,9 +40,6 @@ public String getInternalDirectUrlToUserProfile() { return this.sakaiProxy.getDirectUrlToProfileComponent(currentUserUuid, "profile", null); } - /** - * {@inheritDoc} - */ @Override public String getInternalDirectUrlToUserProfile(final String userUuid) { if (this.sakaiProxy.getCurrentUserId() == null) { @@ -55,91 +48,11 @@ public String getInternalDirectUrlToUserProfile(final String userUuid) { return this.sakaiProxy.getDirectUrlToProfileComponent(userUuid, "viewprofile", null); } - /** - * {@inheritDoc} - */ @Override public String getInternalDirectUrlToUserProfile(final String viewerUuid, final String viewedUuid) { return this.sakaiProxy.getDirectUrlToProfileComponent(viewerUuid, viewedUuid, "viewprofile", null); } - /** - * {@inheritDoc} - */ - @Override - public String getInternalDirectUrlToUserWall(final String userUuid, final String wallItemId) { - final String currentUserUuid = this.sakaiProxy.getCurrentUserId(); - if (currentUserUuid == null) { - throw new SecurityException("Must be logged in."); - } - - // link direct to ViewProfile page and add in the user param - String extraParams = null; - if (this.sakaiProxy.isUsingNormalPortal()) { - final Map vars = new HashMap(); - vars.put(ProfileConstants.WICKET_PARAM_USERID, userUuid); - vars.put(ProfileConstants.WICKET_PARAM_WALL_ITEM, wallItemId); - vars.put(ProfileConstants.WICKET_PARAM_TAB, "" + ProfileConstants.TAB_INDEX_WALL); - extraParams = getFormattedStateParamForWicketTool(ProfileConstants.WICKET_PAGE_PROFILE_VIEW, vars); - } - - return this.sakaiProxy.getDirectUrlToUserProfile(currentUserUuid, extraParams); - } - - /** - * {@inheritDoc} - */ - @Override - public String getInternalDirectUrlToUserMessages(final String threadId) { - final String currentUserUuid = this.sakaiProxy.getCurrentUserId(); - if (currentUserUuid == null) { - throw new SecurityException("Must be logged in."); - } - - // link direct to messages page, if we have a threadId, add the appropriate params in - String extraParams = null; - if (this.sakaiProxy.isUsingNormalPortal()) { - Map vars = null; - if (StringUtils.isNotBlank(threadId)) { - vars = new HashMap(); - vars.put(ProfileConstants.WICKET_PARAM_THREAD, threadId); - } - extraParams = getFormattedStateParamForWicketTool(ProfileConstants.WICKET_PAGE_MESSAGES, vars); - } - - return this.sakaiProxy.getDirectUrlToUserProfile(currentUserUuid, extraParams); - } - - /** - * {@inheritDoc} - */ - @Override - public String getInternalDirectUrlToUserConnections(String userId) { - - // link direct to connections page, no extra params needed - String extraParams = null; - if (this.sakaiProxy.isUsingNormalPortal()) { - extraParams = getFormattedStateParamForWicketTool(ProfileConstants.WICKET_PAGE_CONNECTIONS, null); - } - return this.sakaiProxy.getDirectUrlToUserProfile(userId, extraParams); - } - - /** - * {@inheritDoc} - */ - @Override - public String getInternalDirectUrlToUserConnections() { - final String currentUserUuid = this.sakaiProxy.getCurrentUserId(); - if (currentUserUuid == null) { - throw new SecurityException("Must be logged in."); - } - - return this.getInternalDirectUrlToUserConnections(currentUserUuid); - } - - /** - * {@inheritDoc} - */ @Override public String getEntityLinkToProfileHome(final String userUuid) { final StringBuilder url = new StringBuilder(); @@ -152,54 +65,6 @@ public String getEntityLinkToProfileHome(final String userUuid) { return url.toString(); } - /** - * {@inheritDoc} - */ - @Override - public String getEntityLinkToProfileMessages(final String threadId) { - final StringBuilder url = new StringBuilder(); - url.append(getEntityLinkBase()); - url.append(ProfileConstants.LINK_ENTITY_MESSAGES); - if (StringUtils.isNotBlank(threadId)) { - url.append("/"); - url.append(threadId); - } - return url.toString(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getEntityLinkToProfileConnections() { - final StringBuilder url = new StringBuilder(); - url.append(getEntityLinkBase()); - url.append(ProfileConstants.LINK_ENTITY_CONNECTIONS); - return url.toString(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getEntityLinkToProfileWall(final String userUuid) { - final StringBuilder url = new StringBuilder(); - url.append(getEntityLinkBase()); - url.append(ProfileConstants.LINK_ENTITY_WALL); - if (StringUtils.isNotBlank(userUuid)) { - url.append("/"); - url.append(userUuid); - } - return url.toString(); - } - - /** - * {@inheritDoc} - */ - /* - * public String generateTinyUrl(final String url) { return tinyUrlService.generateTinyUrl(url); } - */ - /** * Special method that mimics the urlFor method from Wicket for a class. Since we can't use that outside of Wicket, we need to copy it's * behaviour here. This must be tested in Wicket upgrades but should be stable since the idea is that they are bookmarkable links and diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLogicImpl.java index a7460ba737d5..89b5ceac0f20 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLogicImpl.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileLogicImpl.java @@ -16,9 +16,7 @@ package org.sakaiproject.profile2.logic; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -28,59 +26,50 @@ import org.sakaiproject.entity.api.Entity; import org.sakaiproject.profile2.dao.ProfileDao; import org.sakaiproject.profile2.model.BasicPerson; -import org.sakaiproject.profile2.model.CompanyProfile; import org.sakaiproject.profile2.model.MimeTypeByteArray; import org.sakaiproject.profile2.model.Person; import org.sakaiproject.profile2.model.SocialNetworkingInfo; import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.types.PrivacyType; import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; import org.sakaiproject.user.api.User; /** * Implementation of ProfileLogic for Profile2. - * + * * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) * */ @Slf4j public class ProfileLogicImpl implements ProfileLogic { - /** - * {@inheritDoc} - */ @Override public UserProfile getUserProfile(final String userUuid) { return getUserProfile(userUuid, null); } - /** - * {@inheritDoc} - */ @Override public UserProfile getUserProfile(final String userUuid, final String siteId) { - + //check auth and get currentUserUuid String currentUserUuid = sakaiProxy.getCurrentUserId(); if(currentUserUuid == null) { throw new SecurityException("Must be logged in to get a UserProfile."); } - + //get User User u = sakaiProxy.getUserById(userUuid); if(u == null) { log.error("User " + userUuid + " does not exist."); return null; } - + //setup obj UserProfile p = new UserProfile(); p.setUserUuid(userUuid); p.setDisplayName(u.getDisplayName()); p.setImageUrl(imageLogic.getProfileImageEntityUrl(userUuid, ProfileConstants.PROFILE_IMAGE_MAIN)); p.setImageThumbUrl(imageLogic.getProfileImageEntityUrl(userUuid, ProfileConstants.PROFILE_IMAGE_THUMBNAIL)); - + SakaiPerson sakaiPerson = sakaiProxy.getSakaiPerson(userUuid); if (sakaiPerson == null) { sakaiPerson = sakaiProxy.createSakaiPerson(userUuid); @@ -88,224 +77,69 @@ public UserProfile getUserProfile(final String userUuid, final String siteId) { return p; } } - + //transform p = transformSakaiPersonToUserProfile(p, sakaiPerson); - - //if person requested own profile or superuser, no need for privacy checks - //add the additional information and return + if(StringUtils.equals(userUuid, currentUserUuid) || sakaiProxy.isSuperUser()) { p.setEmail(u.getEmail()); - p.setStatus(statusLogic.getUserStatus(userUuid)); p.setSocialInfo(getSocialNetworkingInfo(userUuid)); - p.setCompanyProfiles(getCompanyProfiles(userUuid)); - return p; } - - //REMOVE the birth year if not allowed - if(!privacyLogic.isBirthYearVisible(userUuid)){ - if(p.getDateOfBirth() != null) { - p.setDateOfBirth(ProfileUtils.stripYear(p.getDateOfBirth())); - } else { - p.setDateOfBirth(null); - } - } - - //REMOVE basic info if not allowed - if(!privacyLogic.isActionAllowed(userUuid,currentUserUuid, PrivacyType.PRIVACY_OPTION_BASICINFO)) { - p.setNickname(null); - p.setDateOfBirth(null); - p.setPersonalSummary(null); - } - + //ADD email if allowed, REMOVE contact info if not - if(privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_CONTACTINFO)) { + if(siteId != null && sakaiProxy.isUserAllowedInSite(currentUserUuid, ProfileConstants.ROSTER_VIEW_EMAIL, siteId)) { p.setEmail(u.getEmail()); - } else if(siteId != null && sakaiProxy.isUserAllowedInSite(currentUserUuid, ProfileConstants.ROSTER_VIEW_EMAIL, siteId)) { - p.setEmail(u.getEmail()); - } else { - p.setEmail(null); - p.setHomepage(null); - p.setHomephone(null); - p.setWorkphone(null); - p.setMobilephone(null); - p.setFacsimile(null); - } - - //REMOVE staff info if not allowed - if(!privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_STAFFINFO)) { - p.setDepartment(null); - p.setPosition(null); - p.setSchool(null); - p.setRoom(null); - p.setStaffProfile(null); - p.setAcademicProfileUrl(null); - p.setUniversityProfileUrl(null); - p.setPublications(null); - } - - //REMOVE student info if not allowed - if(!privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_STUDENTINFO)) { - p.setCourse(null); - p.setSubjects(null); - } - - //REMOVE personal info if not allowed - if(!privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_PERSONALINFO)) { - p.setFavouriteBooks(null); - p.setFavouriteTvShows(null); - p.setFavouriteMovies(null); - p.setFavouriteQuotes(null); - } - - //ADD social networking info if allowed - if(privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_SOCIALINFO)) { - p.setSocialInfo(getSocialNetworkingInfo(userUuid)); - } - - //ADD company info if activated and allowed, REMOVE business bio if not - if(sakaiProxy.isBusinessProfileEnabled()) { - if(privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_BUSINESSINFO)) { - p.setCompanyProfiles(getCompanyProfiles(userUuid)); - } else { - p.setBusinessBiography(null); - } - } else { - p.setBusinessBiography(null); - } - - //ADD profile status if allowed - if(privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYSTATUS)) { - p.setStatus(statusLogic.getUserStatus(userUuid)); - } - + } + + p.setSocialInfo(getSocialNetworkingInfo(userUuid)); + return p; } - - /** - * {@inheritDoc} - */ + @Override public boolean saveUserProfile(SakaiPerson sp) { - + if(sakaiProxy.updateSakaiPerson(sp)) { sendProfileChangeEmailNotification(sp.getAgentUuid()); - - return true; - } - - return false; - } - - - - - - - /** - * {@inheritDoc} - */ - @Override - public boolean addNewCompanyProfile(final CompanyProfile companyProfile) { - - if(dao.addNewCompanyProfile(companyProfile)){ - log.info("Added new company profile for user: " + companyProfile.getUserUuid()); - return true; - } - - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean updateCompanyProfile(final CompanyProfile companyProfile) { - if(dao.updateCompanyProfile(companyProfile)){ - log.info("Saved company profile for user: "+ companyProfile.getUserUuid()); return true; } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public List getCompanyProfiles(final String userId) { - return dao.getCompanyProfiles(userId); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean removeCompanyProfile(String userId, long companyProfileId) { - if (userId == null || Long.valueOf(companyProfileId) == null) { - throw new IllegalArgumentException("Null argument in ProfileLogicImpl.removeCompanyProfile()"); - } - - CompanyProfile companyProfile = dao.getCompanyProfile(userId, companyProfileId); - - if (companyProfile == null) { - log.error("CompanyProfile record does not exist for userId: "+ userId + ", companyProfileId: " + companyProfileId); - return false; - } - if(dao.removeCompanyProfile(companyProfile)){ - log.info("User: " + userId + " removed company profile: "+ companyProfileId); - return true; - } - return false; } - - - /** - * {@inheritDoc} - */ + @Override public SocialNetworkingInfo getSocialNetworkingInfo(final String userId) { - + if(userId == null){ - throw new IllegalArgumentException("Null argument in ProfileLogic.getSocialNetworkingInfo"); + throw new IllegalArgumentException("Null argument in ProfileLogic.getSocialNetworkingInfo"); } - + SocialNetworkingInfo socialNetworkingInfo = dao.getSocialNetworkingInfo(userId); if (null == socialNetworkingInfo) { socialNetworkingInfo = new SocialNetworkingInfo(userId); } - + return socialNetworkingInfo; } - /** - * {@inheritDoc} - */ @Override public boolean saveSocialNetworkingInfo(SocialNetworkingInfo socialNetworkingInfo) { if(dao.saveSocialNetworkingInfo(socialNetworkingInfo)) { log.info("Updated social networking info for user: " + socialNetworkingInfo.getUserUuid()); return true; - } - + } + return false; } - - /** - * {@inheritDoc} - */ + @Override public BasicPerson getBasicPerson(String userUuid) { return getBasicPerson(sakaiProxy.getUserById(userUuid)); } - /** - * {@inheritDoc} - */ @Override public BasicPerson getBasicPerson(User user) { BasicPerson p = new BasicPerson(); @@ -315,9 +149,6 @@ public BasicPerson getBasicPerson(User user) { return p; } - /** - * {@inheritDoc} - */ @Override public List getBasicPersons(List users) { List list = new ArrayList(); @@ -326,18 +157,12 @@ public List getBasicPersons(List users) { } return list; } - - /** - * {@inheritDoc} - */ + @Override public Person getPerson(String userUuid) { return getPerson(sakaiProxy.getUserById(userUuid)); } - /** - * {@inheritDoc} - */ @Override public Person getPerson(User user) { //catch for non existent user @@ -350,15 +175,11 @@ public Person getPerson(User user) { p.setDisplayName(user.getDisplayName()); p.setType(user.getType()); p.setPreferences(preferencesLogic.getPreferencesRecordForUser(userUuid)); - p.setPrivacy(privacyLogic.getPrivacyRecordForUser(userUuid)); p.setProfile(getUserProfile(userUuid)); - + return p; } - /** - * {@inheritDoc} - */ @Override public List getPersons(List users) { List list = new ArrayList<>(); @@ -368,92 +189,54 @@ public List getPersons(List users) { return list; } - /** - * {@inheritDoc} - */ @Override public List getAllSakaiPersonIds() { return dao.getAllSakaiPersonIds(); } - - /** - * {@inheritDoc} - */ + @Override public int getAllSakaiPersonIdsCount() { return dao.getAllSakaiPersonIdsCount(); } - - + //service init public void init() { - log.info("Profile2: init()"); + log.info("Profile2: init()"); } - - - + /** * Convenience method to map a SakaiPerson object onto a UserProfile object - * + * * @param sp input SakaiPerson * @return returns a UserProfile representation of the SakaiPerson object */ private UserProfile transformSakaiPersonToUserProfile(UserProfile p, SakaiPerson sp) { - + //map fields from SakaiPerson to UserProfile //basic info p.setNickname(sp.getNickname()); - p.setDateOfBirth(sp.getDateOfBirth()); - p.setPersonalSummary(sp.getNotes()); p.setPhoneticPronunciation(sp.getPhoneticPronunciation()); - + //contact info - p.setHomepage(sp.getLabeledURI()); - p.setWorkphone(sp.getTelephoneNumber()); - p.setHomephone(sp.getHomePhone()); p.setMobilephone(sp.getMobile()); - p.setFacsimile(sp.getFacsimileTelephoneNumber()); - - //staff info - p.setDepartment(sp.getOrganizationalUnit()); - p.setPosition(sp.getTitle()); - p.setSchool(sp.getCampus()); - p.setRoom(sp.getRoomNumber()); - p.setStaffProfile(sp.getStaffProfile()); - p.setAcademicProfileUrl(sp.getAcademicProfileUrl()); - p.setUniversityProfileUrl(sp.getUniversityProfileUrl()); - p.setPublications(sp.getPublications()); - - //student info - p.setCourse(sp.getEducationCourse()); - p.setSubjects(sp.getEducationSubjects()); - - //personal info - p.setFavouriteBooks(sp.getFavouriteBooks()); - p.setFavouriteTvShows(sp.getFavouriteTvShows()); - p.setFavouriteMovies(sp.getFavouriteMovies()); - p.setFavouriteQuotes(sp.getFavouriteQuotes()); - - //business info - p.setBusinessBiography(sp.getBusinessBiography()); - + return p; } - + /** * Sends an email notification when a user changes their profile, if enabled. * @param toUuid the uuid of the user who changed their profile */ private void sendProfileChangeEmailNotification(final String userUuid) { - + //check if option is enabled boolean enabled = Boolean.valueOf(sakaiProxy.getServerConfigurationParameter("profile2.profile.change.email.enabled", "false")); if(!enabled) { return; } - + //get the user to send to. THis will be translated into an internal ID. Since SakaiProxy.sendEmail takes a userId as a param //it was easier to require an eid here (and thus the person needs to have an account) rather than create a new method that takes an email address. String eidTo = sakaiProxy.getServerConfigurationParameter("profile2.profile.change.email.eid", null); @@ -461,26 +244,15 @@ private void sendProfileChangeEmailNotification(final String userUuid) { log.error("Profile change email notification is enabled but no user eid to send it to is set. Please set 'profile2.profile.change.email.eid' in sakai.properties"); return; } - + //get internal id for this user String userUuidTo = sakaiProxy.getUserIdForEid(eidTo); if(StringUtils.isBlank(userUuidTo)) { log.error("Profile change email notification is setup with an invalid eid. Please adjust 'profile2.profile.change.email.eid' in sakai.properties"); return; } - - String emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_PROFILE_CHANGE_NOTIFICATION; - - //create the map of replacement values for this email template - Map replacementValues = new HashMap<>(); - replacementValues.put("userDisplayName", sakaiProxy.getUserDisplayName(userUuid)); - replacementValues.put("localSakaiName", sakaiProxy.getServiceName()); - replacementValues.put("profileLink", linkLogic.getEntityLinkToProfileHome(userUuid)); - replacementValues.put("localSakaiUrl", sakaiProxy.getPortalUrl()); - - sakaiProxy.sendEmail(userUuidTo, emailTemplateKey, replacementValues); + return; - } @Override @@ -505,26 +277,16 @@ public MimeTypeByteArray getUserNamePronunciation(String uuid) { @Setter private SakaiProxy sakaiProxy; - + @Setter private ProfileDao dao; - + @Setter private ProfilePreferencesLogic preferencesLogic; - - @Setter - private ProfileStatusLogic statusLogic; - - @Setter - private ProfilePrivacyLogic privacyLogic; - - @Setter - private ProfileConnectionsLogic connectionsLogic; - + @Setter private ProfileImageLogic imageLogic; - + @Setter private ProfileLinkLogic linkLogic; - } diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileMessagingLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileMessagingLogicImpl.java deleted file mode 100644 index 7e70e724c824..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileMessagingLogicImpl.java +++ /dev/null @@ -1,397 +0,0 @@ -/** - * 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.logic; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.model.MessageParticipant; -import org.sakaiproject.profile2.model.MessageThread; -import org.sakaiproject.profile2.types.EmailType; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * Implementation of ProfileMessagingLogic for Profile2. - * - * @author Steve Swinsburg (s.swinsburg@gmail.com) - * - */ -@Slf4j -public class ProfileMessagingLogicImpl implements ProfileMessagingLogic { - - /** - * {@inheritDoc} - */ - @Override - public int getAllUnreadMessagesCount(final String userId) { - return dao.getAllUnreadMessagesCount(userId); - } - - - /** - * {@inheritDoc} - */ - @Override - public int getThreadsWithUnreadMessagesCount(final String userId) { - return dao.getThreadsWithUnreadMessagesCount(userId); - } - - /** - * {@inheritDoc} - */ - @Override - public int getSentMessagesCount(final String userId) { - return dao.getSentMessagesCount(userId); - } - - - - /** - * {@inheritDoc} - */ - @Override - public boolean sendNewMessage(final String uuidTo, final String uuidFrom, final String threadId, final String subject, final String messageStr) { - - String messageSubject = StringUtils.defaultIfBlank(subject, ProfileConstants.DEFAULT_PRIVATE_MESSAGE_SUBJECT); - - //setup thread - MessageThread thread = new MessageThread(); - thread.setId(threadId); - thread.setSubject(messageSubject); - - //setup message - Message message = new Message(); - message.setId(ProfileUtils.generateUuid()); - message.setFrom(uuidFrom); - message.setMessage(messageStr); - message.setDatePosted(new Date()); - message.setThread(thread.getId()); - //saveNewMessage(message); - - - //setup participants - //at present we have one for the receipient and one for sender. - //in future we may have multiple recipients and will need to check the existing list of thread participants - List threadParticipants = new ArrayList(); - threadParticipants.add(uuidTo); - threadParticipants.add(uuidFrom); - - List participants = new ArrayList(); - for(String threadParticipant : threadParticipants){ - MessageParticipant p = new MessageParticipant(); - p.setMessageId(message.getId()); - p.setUuid(threadParticipant); - if(StringUtils.equals(threadParticipant, message.getFrom())) { - p.setRead(true); //sender - } else { - p.setRead(false); - } - p.setDeleted(false); - - participants.add(p); - } - - if(saveAllNewMessageParts(thread, message, participants)) { - sendMessageEmailNotification(threadParticipants, uuidFrom, threadId, messageSubject, messageStr, EmailType.EMAIL_NOTIFICATION_MESSAGE_NEW); - //post event - sakaiProxy.postEvent(ProfileConstants.EVENT_MESSAGE_SENT, "/profile/" + uuidTo, true); - return true; - } - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public Message replyToThread(final String threadId, final String reply, final String uuidFrom) { - - try { - - //create the message and save it - Message message = new Message(); - message.setId(ProfileUtils.generateUuid()); - message.setFrom(uuidFrom); - message.setMessage(reply); - message.setDatePosted(new Date()); - message.setThread(threadId); - dao.saveNewMessage(message); - - //get the thread subject - String subject = getMessageThread(threadId).getSubject(); - - //get a unique list of participants in this thread, and save a record for each participant for this new message - List uuids = getThreadParticipants(threadId); - for(String uuidTo : uuids) { - MessageParticipant participant = getDefaultMessageParticipantRecord(message.getId(), uuidTo); - if(StringUtils.equals(uuidFrom, uuidTo)) { - participant.setRead(true); //sender - } else { - // Fire message sent events for each recipient - sakaiProxy.postEvent(ProfileConstants.EVENT_MESSAGE_SENT, "/profile/" + uuidTo, true); - } - - dao.saveNewMessageParticipant(participant); - } - - //send email notifications - sendMessageEmailNotification(uuids, uuidFrom, threadId, subject, reply, EmailType.EMAIL_NOTIFICATION_MESSAGE_REPLY); - - return message; - } catch (Exception e) { - log.error("ProfileLogic.replyToThread(): Couldn't send reply: " + e.getClass() + " : " + e.getMessage()); - } - - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public List getMessageThreads(final String userId) { - - List threads = dao.getMessageThreads(userId); - - //get latest message for each thread - for(MessageThread thread : threads) { - thread.setMostRecentMessage(dao.getLatestMessageInThread(thread.getId())); - } - - return threads; - } - - /** - * {@inheritDoc} - */ - @Override - public int getMessageThreadsCount(final String userId) { - return dao.getMessageThreadsCount(userId); - } - - /** - * {@inheritDoc} - */ - @Override - public List getMessagesInThread(final String threadId) { - return dao.getMessagesInThread(threadId); - } - - /** - * {@inheritDoc} - */ - @Override - public int getMessagesInThreadCount(final String threadId) { - return dao.getMessagesInThreadCount(threadId); - } - - - - /** - * {@inheritDoc} - */ - @Override - public Message getMessage(final String id) { - return dao.getMessage(id); - } - - /** - * {@inheritDoc} - */ - @Override - public MessageThread getMessageThread(final String threadId) { - - MessageThread thread = dao.getMessageThread(threadId); - if(thread == null){ - return null; - } - - //add the latest message for this thread - thread.setMostRecentMessage(dao.getLatestMessageInThread(threadId)); - - return thread; - } - - - - - /** - * {@inheritDoc} - */ - @Override - public boolean toggleMessageRead(MessageParticipant participant, final boolean status) { - return dao.toggleMessageRead(participant, status); - } - - - /** - * {@inheritDoc} - */ - /* - public boolean toggleAllMessagesInThreadAsRead(final String threadId, final String userUuid, final boolean read) { - // TODO Auto-generated method stub - return false; - } - */ - - /** - * {@inheritDoc} - */ - @Override - public MessageParticipant getMessageParticipant(final String messageId, final String userUuid) { - return dao.getMessageParticipant(messageId, userUuid); - } - - - - /** - * Create a default MessageParticipant object for a message and user. This is so they can mark messages as unread/delete them. Not persisted until actioned. - * @param messageId - * @param userUuid - * @return - */ - private MessageParticipant getDefaultMessageParticipantRecord(final String messageId, final String userUuid) { - - MessageParticipant participant = new MessageParticipant(); - participant.setMessageId(messageId); - participant.setUuid(userUuid); - participant.setRead(false); - participant.setDeleted(false); - - return participant; - } - - /** - * {@inheritDoc} - */ - @Override - public List getThreadParticipants(final String threadId) { - return dao.getThreadParticipants(threadId); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isThreadParticipant(final String threadId, final String userId) { - return getThreadParticipants(threadId).contains(userId); - } - - /** - * {@inheritDoc} - */ - @Override - public String getThreadSubject(final String threadId) { - MessageThread thread = dao.getMessageThread(threadId); - return thread.getSubject(); - } - - - /** - * Sends an email notification to the users. Used for messages. This formats the data and calls {@link SakaiProxy.sendEmail(List userIds, String emailTemplateKey, Map replacementValues)} - * @param toUuids list of users to send the message to - this will be formatted depending on their email preferences for this message type so it is safe to pass all users you need - * @param fromUuid uuid from - * @param directId the id of the item, used for direct links back to this item, if required. - * @param subject subject of message - * @param messageStr body of message - * @param messageType the message type to send. Retrieves the emailTemplateKey based on this value - */ - private void sendMessageEmailNotification(final List toUuids, final String fromUuid, final String directId, final String subject, final String messageStr, final EmailType messageType) { - - //is email notification enabled for this message type? Reformat the recipient list - for(Iterator it = toUuids.iterator(); it.hasNext();) { - if(!preferencesLogic.isPreferenceEnabled(it.next(), messageType.toPreference())) { - it.remove(); - } - } - - //the sender is a message participant but we don't want email confirmations for them, so remove - toUuids.remove(fromUuid); - - //new message - if(messageType == EmailType.EMAIL_NOTIFICATION_MESSAGE_NEW) { - - String emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_MESSAGE_NEW; - - //create the map of replacement values for this email template - Map replacementValues = new HashMap<>(); - replacementValues.put("senderDisplayName", sakaiProxy.getUserDisplayName(fromUuid)); - replacementValues.put("localSakaiName", sakaiProxy.getServiceName()); - replacementValues.put("messageSubject", subject); - replacementValues.put("messageBody", messageStr); - replacementValues.put("messageLink", linkLogic.getEntityLinkToProfileMessages(directId)); - replacementValues.put("localSakaiUrl", sakaiProxy.getPortalUrl()); - replacementValues.put("toolName", sakaiProxy.getCurrentToolTitle()); - - sakaiProxy.sendEmail(toUuids, emailTemplateKey, replacementValues); - return; - } - - //reply - if (messageType == EmailType.EMAIL_NOTIFICATION_MESSAGE_REPLY) { - - String emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_MESSAGE_REPLY; - - //create the map of replacement values for this email template - Map replacementValues = new HashMap<>(); - replacementValues.put("senderDisplayName", sakaiProxy.getUserDisplayName(fromUuid)); - replacementValues.put("localSakaiName", sakaiProxy.getServiceName()); - replacementValues.put("messageSubject", subject); - replacementValues.put("messageBody", messageStr); - replacementValues.put("messageLink", linkLogic.getEntityLinkToProfileMessages(directId)); - replacementValues.put("localSakaiUrl", sakaiProxy.getPortalUrl()); - replacementValues.put("toolName", sakaiProxy.getCurrentToolTitle()); - - sakaiProxy.sendEmail(toUuids, emailTemplateKey, replacementValues); - return; - } - } - - /* - * helper method to save a message once all parts have been created. takes care of rollbacks incase of failure (TODO) - */ - private boolean saveAllNewMessageParts(MessageThread thread, Message message, List participants) { - dao.saveNewThread(thread); - dao.saveNewMessage(message); - dao.saveNewMessageParticipants(participants); - - return true; - } - - @Setter - private SakaiProxy sakaiProxy; - - @Setter - private ProfileLinkLogic linkLogic; - - @Setter - private ProfilePreferencesLogic preferencesLogic; - - @Setter - private ProfileDao dao; - -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogicImpl.java index 9c9dbd9583d0..f202d8398430 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogicImpl.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfilePreferencesLogicImpl.java @@ -68,8 +68,6 @@ public ProfilePreferences getPreferencesRecordForUser(final String userId, final return prefs; } - - @Override public boolean savePreferencesRecord(ProfilePreferences prefs) { @@ -81,47 +79,6 @@ public boolean savePreferencesRecord(ProfilePreferences prefs) { return false; } - @Override - public boolean isPreferenceEnabled(final String userUuid, final PreferenceType type) { - - //get preferences record for this user - ProfilePreferences prefs = getPreferencesRecordForUser(userUuid); - - boolean result; - - switch (type) { - case EMAIL_NOTIFICATION_REQUEST: - result = prefs.isRequestEmailEnabled(); - break; - case EMAIL_NOTIFICATION_CONFIRM: - result = prefs.isConfirmEmailEnabled(); - break; - case EMAIL_NOTIFICATION_MESSAGE_NEW: - result = prefs.isMessageNewEmailEnabled(); - break; - case EMAIL_NOTIFICATION_MESSAGE_REPLY: - result = prefs.isMessageReplyEmailEnabled(); - break; - case EMAIL_NOTIFICATION_WALL_EVENT_NEW: - case EMAIL_NOTIFICATION_WALL_STATUS_NEW: - case EMAIL_NOTIFICATION_WALL_POST_MY_NEW: - case EMAIL_NOTIFICATION_WALL_POST_CONNECTION_NEW: - result = prefs.isWallItemNewEmailEnabled(); - break; - case EMAIL_NOTIFICATION_WORKSITE_NEW: - result = prefs.isWorksiteNewEmailEnabled(); - break; - default: - // invalid type - log.debug("Is preference enabled. False for user [{}], type [{}]", userUuid, type); - result = false; - break; - } - - return result; - } - - /** * Create a preferences record according to the defaults. * @@ -131,17 +88,8 @@ private ProfilePreferences getDefaultPreferencesRecord(final String userId) { ProfilePreferences prefs = new ProfilePreferences(); prefs.setUserUuid(userId); - prefs.setRequestEmailEnabled(ProfileConstants.DEFAULT_EMAIL_REQUEST_SETTING); - prefs.setConfirmEmailEnabled(ProfileConstants.DEFAULT_EMAIL_CONFIRM_SETTING); - prefs.setMessageNewEmailEnabled(ProfileConstants.DEFAULT_EMAIL_MESSAGE_NEW_SETTING); - prefs.setMessageReplyEmailEnabled(ProfileConstants.DEFAULT_EMAIL_MESSAGE_REPLY_SETTING); - prefs.setWallItemNewEmailEnabled(ProfileConstants.DEFAULT_EMAIL_MESSAGE_WALL_SETTING); - prefs.setWorksiteNewEmailEnabled(ProfileConstants.DEFAULT_EMAIL_MESSAGE_WORKSITE_SETTING); prefs.setUseOfficialImage(ProfileConstants.DEFAULT_OFFICIAL_IMAGE_SETTING); - prefs.setShowKudos(ProfileConstants.DEFAULT_SHOW_KUDOS_SETTING); - prefs.setShowGalleryFeed(ProfileConstants.DEFAULT_SHOW_GALLERY_FEED_SETTING); prefs.setUseGravatar(ProfileConstants.DEFAULT_GRAVATAR_SETTING); - prefs.setShowOnlineStatus(ProfileConstants.DEFAULT_SHOW_ONLINE_STATUS_SETTING); return prefs; } diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfilePrivacyLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfilePrivacyLogicImpl.java deleted file mode 100644 index 14f89e202452..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfilePrivacyLogicImpl.java +++ /dev/null @@ -1,463 +0,0 @@ -/** - * 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.logic; - -import java.util.HashMap; - -import org.apache.commons.lang3.StringUtils; -import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * Implementation of ProfilePrivacyLogic API - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Setter -@Slf4j -public class ProfilePrivacyLogicImpl implements ProfilePrivacyLogic { - - private ProfileConnectionsLogic connectionsLogic; - private ProfileDao dao; - private SakaiProxy sakaiProxy; - - @Override - public ProfilePrivacy getPrivacyRecordForUser(final String userId) { - - if (StringUtils.isBlank(userId)) { - throw new IllegalArgumentException("Invalid userid " + userId); - } - - // will stay null if we can't get or create one - ProfilePrivacy privacy = dao.getPrivacyRecord(userId); - log.debug("Fetching privacy record from dao for [{}]", userId); - - // if none, create and persist a default - if (privacy == null) { - privacy = dao.addNewPrivacyRecord(getDefaultPrivacyRecord(userId)); - } - - if (privacy == null) { - log.warn("Couldn't retrieve or create a privacy record for [{}], this should not occur", userId); - } else { - log.debug("Created default privacy record for [{}]", userId); - sakaiProxy.postEvent(ProfileConstants.EVENT_PRIVACY_NEW, "/profile/" + userId, true); - } - - return privacy; - } - - @Override - public boolean savePrivacyRecord(ProfilePrivacy privacy) { - - //if changes not allowed - if(!sakaiProxy.isPrivacyChangeAllowedGlobally()) { - log.warn("Privacy changes are not permitted as per sakai.properties setting 'profile2.privacy.change.enabled'."); - return false; - } - - return dao.updatePrivacyRecord(privacy); - } - - @Override - public boolean isActionAllowed(final String userX, final String userY, final PrivacyType type) { - - //if user is requesting own info, they ARE allowed - if(StringUtils.equals(userX, userY)) { - return true; - } - - //get privacy record for this user - ProfilePrivacy profilePrivacy = getPrivacyRecordForUser(userX); - if(profilePrivacy == null) { - log.warn("Couldn't get a ProfilePrivacy record for userX [{}]", userX); - return false; - } - - boolean isConnected = connectionsLogic.isUserXFriendOfUserY(userX, userY); - - boolean result=false; - - log.debug("userX: {}, userY: {}, type: {}", userX, userY, type); - - switch (type) { - - case PRIVACY_OPTION_PROFILEIMAGE: - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getProfileImage() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getProfileImage() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getProfileImage() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_BASICINFO: - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getBasicInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if restricted to only self, not allowed - if(profilePrivacy.getBasicInfo() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getBasicInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getBasicInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_CONTACTINFO: - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getContactInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if restricted to only self, not allowed - if(profilePrivacy.getContactInfo() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getContactInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getContactInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_STAFFINFO: - - //if restricted to only self, not allowed - if(profilePrivacy.getStaffInfo() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getStaffInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getStaffInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getStaffInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_STUDENTINFO: - - //if restricted to only self, not allowed - if(profilePrivacy.getStudentInfo() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getStudentInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getStudentInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getStudentInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_BUSINESSINFO: - - //if restricted to only self, not allowed - if(profilePrivacy.getBusinessInfo() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getBusinessInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getBusinessInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getBusinessInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_SOCIALINFO: - - //if restricted to only self, not allowed - if(profilePrivacy.getSocialNetworkingInfo() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getSocialNetworkingInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getSocialNetworkingInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getSocialNetworkingInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_PERSONALINFO: - - //if restricted to only self, not allowed - if(profilePrivacy.getPersonalInfo() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getPersonalInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getPersonalInfo() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getPersonalInfo() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_MYFRIENDS: - - //if restricted to only self, not allowed - if(profilePrivacy.getMyFriends() == ProfileConstants.PRIVACY_OPTION_ONLYME) { - result = false; break; - } - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getMyFriends() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getMyFriends() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getMyFriends() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_MYPICTURES: - - //if user is friend and friends are allowed - if (isConnected && profilePrivacy.getMyPictures() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getMyPictures() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getMyPictures() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_MYSTATUS: - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getMyStatus() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getMyStatus() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getMyStatus() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_MYKUDOS: - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getMyKudos() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getMyKudos() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getMyKudos() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_MYWALL: - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getMyWall() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getMyWall() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getMyWall() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_ONLINESTATUS: - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getOnlineStatus() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getOnlineStatus() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = false; break; - } - - //if everyone is allowed - if(profilePrivacy.getOnlineStatus() == ProfileConstants.PRIVACY_OPTION_EVERYONE) { - result = true; break; - } - - break; - case PRIVACY_OPTION_MESSAGES: - - //if nobody allowed - if(profilePrivacy.getMessages() == ProfileConstants.PRIVACY_OPTION_NOBODY) { - result = false; break; - } - - //if user is friend and friends are allowed - if(isConnected && profilePrivacy.getMessages() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - //if not friend and set to friends only - if(!isConnected && profilePrivacy.getMessages() == ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS) { - result = true; break; - } - - - break; - default: - //invalid type - log.warn("False for userX: {}, userY: {}, type: {}", userX, userY, type); - result = false; - break; - } - - return result; - } - - @Override - public boolean isBirthYearVisible(String uuid) { - return getPrivacyRecordForUser(uuid).isShowBirthYear(); - } - - - - /** - * Create a privacy record according to the defaults. - * - * @param userId uuid of the user to create the record for - */ - private ProfilePrivacy getDefaultPrivacyRecord(String userId) { - - //get the overridden privacy settings. they'll be defaults if not specified - HashMap props = sakaiProxy.getOverriddenPrivacySettings(); - - //using the props, set them into the ProfilePrivacy object - ProfilePrivacy privacy = new ProfilePrivacy(); - privacy.setUserUuid(userId); - privacy.setProfileImage((Integer)props.get("profileImage")); - privacy.setBasicInfo((Integer)props.get("basicInfo")); - privacy.setContactInfo((Integer)props.get("contactInfo")); - privacy.setStaffInfo((Integer)props.get("staffInfo")); - privacy.setStudentInfo((Integer)props.get("studentInfo")); - privacy.setPersonalInfo((Integer)props.get("personalInfo")); - privacy.setShowBirthYear((Boolean)props.get("birthYear")); - privacy.setMyFriends((Integer)props.get("myFriends")); - privacy.setMyStatus((Integer)props.get("myStatus")); - privacy.setMyPictures((Integer)props.get("myPictures")); - privacy.setMessages((Integer)props.get("messages")); - privacy.setBusinessInfo((Integer)props.get("businessInfo")); - privacy.setMyKudos((Integer)props.get("myKudos")); - privacy.setMyWall((Integer)props.get("myWall")); - privacy.setSocialNetworkingInfo((Integer)props.get("socialInfo")); - privacy.setOnlineStatus((Integer)props.get("onlineStatus")); - - return privacy; - } -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileSearchLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileSearchLogicImpl.java deleted file mode 100644 index ddcd5e1638a6..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileSearchLogicImpl.java +++ /dev/null @@ -1,349 +0,0 @@ -/** - * 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.logic; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.commons.lang3.StringUtils; -import org.sakaiproject.authz.api.Member; -import org.sakaiproject.memory.api.Cache; -import org.sakaiproject.profile2.cache.CacheManager; -import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.model.BasicConnection; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfileSearchTerm; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; -import org.sakaiproject.site.api.Site; -import org.sakaiproject.user.api.User; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * Implementation of ProfileSearchLogic API - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * @author Daniel Robinson (d.b.robinson@lancaster.ac.uk) - */ -@Slf4j -public class ProfileSearchLogicImpl implements ProfileSearchLogic { - - private Cache> cache; - private final String CACHE_NAME = "org.sakaiproject.profile2.cache.search"; - - /** - * {@inheritDoc} - */ - @Override - public List findUsersByNameOrEmail(String search, boolean includeConnections, String worksiteId) { - - //add users from SakaiPerson (clean list) - List sakaiPersonUuids = dao.findSakaiPersonsByNameOrEmail(search); - List users = sakaiProxy.getUsers(sakaiPersonUuids); - - //add local users from UserDirectoryService - users.addAll(sakaiProxy.searchUsers(search)); - - //add external users from UserDirectoryService - users.addAll(sakaiProxy.searchExternalUsers(search)); - - //remove duplicates - ProfileUtils.removeDuplicates(users); - - //remove connections if requested - if (false == includeConnections) { - removeConnectionsFromUsers(users); - } - - //if worksite id is specified - if (null != worksiteId) { - //remove any matches that are not in specified worksite - users = removeNonWorksiteMembersFromUsers(users, worksiteId); - } - - log.debug("Found " + users.size() + " results for search: " + search); - - //restrict to only return the max number. UI will print message - int maxResults = sakaiProxy.getMaxSearchResults(); - if(users.size() >= maxResults) { - users = users.subList(0, maxResults); - } - - //remove invisible - users = removeInvisibleUsers(users); - - return profileLogic.getPersons(users); - } - - /** - * {@inheritDoc} - */ - @Override - public List findUsersByInterest(String search, boolean includeConnections, String worksiteId) { - - //add users from SakaiPerson - List sakaiPersonUuids = dao.findSakaiPersonsByInterest(search, sakaiProxy.isBusinessProfileEnabled()); - - //remove connections if requested - if (false == includeConnections) { - removeConnectionsFromUserIds(sakaiPersonUuids); - } - - //if worksite id is specified - if (null != worksiteId) { - //remove any matches that are not in specified worksite - sakaiPersonUuids = removeNonWorksiteMembersFromUserIds(sakaiPersonUuids, worksiteId); - } - - List users = sakaiProxy.getUsers(sakaiPersonUuids); - - //restrict to only return the max number. UI will print message - int maxResults = sakaiProxy.getMaxSearchResults(); - if(users.size() >= maxResults) { - users = users.subList(0, maxResults); - } - - //remove invisible - users = removeInvisibleUsers(users); - - return profileLogic.getPersons(users); - } - - /** - * {@inheritDoc} - */ - @Override - public ProfileSearchTerm getLastSearchTerm(String userUuid) { - - List searchHistory = getSearchHistory(userUuid); - if (null != searchHistory && searchHistory.size() > 0) { - return searchHistory.get(searchHistory.size() - 1); - } - return null; - } - - /** - * {@inheritDoc} - */ - @Override - public List getSearchHistory(String userUuid) { - log.debug("Fetching searchHistory from cache for: {}", userUuid); - //TODO this could do with a refactor - Map termMap = cache.get(userUuid); - if (termMap != null) { - List searchHistory = new ArrayList<>(termMap.values()); - Collections.sort(searchHistory); - return searchHistory; - } else { - return null; - } - } - - /** - * {@inheritDoc} - */ - @Override - public void addSearchTermToHistory(String userUuid, ProfileSearchTerm searchTerm) { - - if (null == searchTerm) { - throw new IllegalArgumentException("search term cannot be null"); - } - - if (null == searchTerm.getUserUuid()) { - throw new IllegalArgumentException("search term must contain UUID of user"); - } - - if (!StringUtils.equals(userUuid, searchTerm.getUserUuid())) { - throw new IllegalArgumentException("userUuid must match search term userUuid"); - } - - Map searchHistory = cache.get(userUuid); - if(searchHistory == null) { - searchHistory = new HashMap<>(); - } - - // if search term already in history, remove old one (do BEFORE checking size) - searchHistory.remove(searchTerm.getSearchTerm()); - - if (searchHistory.size() == ProfileConstants.DEFAULT_MAX_SEARCH_HISTORY) { - searchHistory.remove(getSearchHistory(userUuid).get(0).getSearchTerm()); - } - - // then add - searchHistory.put(searchTerm.getSearchTerm(), searchTerm); - - cache.put(searchTerm.getUserUuid(), searchHistory); - } - - /** - * {@inheritDoc} - */ - @Override - public void clearSearchHistory(String userUuid) { - - if (cache.containsKey(userUuid)) { - cache.remove(userUuid); - } else { - log.warn("unable to clear search history; uuid not found: " + userUuid); - } - } - - /** - * Remove invisible users from the list - * @param users - * @return cleaned list - */ - private List removeInvisibleUsers(List users){ - - //if superuser return list unchanged. - if(sakaiProxy.isSuperUser()){ - return users; - } - - //get list of invisible users as Users - List invisibleUsers = sakaiProxy.getUsers(sakaiProxy.getInvisibleUsers()); - if(invisibleUsers.isEmpty()) { - return users; - } - - //remove - users.removeAll(invisibleUsers); - - return users; - } - - /** - * Remove any connections from list of users. - * - * @param users - */ - private void removeConnectionsFromUsers(List users) { - - List connections = connectionsLogic.getBasicConnectionsForUser(sakaiProxy.getCurrentUserId()); - for (BasicConnection connection : connections) { - for (User user : users) { - if (StringUtils.equals(user.getId(), connection.getUuid())) { - users.remove(user); - break; - } - } - - } - } - - /** - * Remove any connections from list of user ids. - * - * @param userIds - */ - private void removeConnectionsFromUserIds(List userIds) { - - List connections = connectionsLogic.getBasicConnectionsForUser(sakaiProxy.getCurrentUserId()); - for (BasicConnection connection : connections) { - if (userIds.contains(connection.getUuid())) { - userIds.remove(connection.getUuid()); - } - - } - } - - /** - * Remove any non-worksite members from list of users. - * - * @param users - * @param worksiteId - * @return a list of matching worksite member users. - */ - private List removeNonWorksiteMembersFromUsers(List users, String worksiteId) { - - List worksiteMembers = new ArrayList(); - - Site site = sakaiProxy.getSite(worksiteId); - if (null == site) { - log.error("Unable to receive worksite with id: " + worksiteId); - } else { - Set members = sakaiProxy.getSite(worksiteId).getMembers(); - for (Member member : members) { - for (User user : users) { - if (StringUtils.equals(user.getId(), member.getUserId())) { - worksiteMembers.add(user); - break; - } - } - } - } - - return worksiteMembers; - } - - /** - * Remove any non-worksite members from list of user ids. - * - * @param userIds - * @param worksiteId - * @return a list of matching worksite member user ids. - */ - private List removeNonWorksiteMembersFromUserIds(List userIds, String worksiteId) { - - List worksiteMemberIds = new ArrayList(); - - Site site = sakaiProxy.getSite(worksiteId); - if (null == site) { - log.error("Unable to receive worksite with id: " + worksiteId); - } else { - Set members = sakaiProxy.getSite(worksiteId).getMembers(); - for (Member member : members) { - for (String userId : userIds) { - if (StringUtils.equals(userId, member.getUserId())) { - worksiteMemberIds.add(userId); - break; - } - } - } - } - - return worksiteMemberIds; - } - - public void init() { - cache = cacheManager.createCache(CACHE_NAME); - } - - @Setter - private SakaiProxy sakaiProxy; - - @Setter - private ProfileDao dao; - - @Setter - private ProfileLogic profileLogic; - - @Setter - private ProfileConnectionsLogic connectionsLogic; - - @Setter - private CacheManager cacheManager; - -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileStatusLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileStatusLogicImpl.java deleted file mode 100644 index b7a09705bfd4..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileStatusLogicImpl.java +++ /dev/null @@ -1,176 +0,0 @@ -/** - * 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.logic; - -import java.util.Calendar; -import java.util.Date; - -import org.apache.commons.lang3.StringUtils; -import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.ProfileStatus; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * Implementation of ProfileStatusLogic API - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Slf4j -public class ProfileStatusLogicImpl implements ProfileStatusLogic { - - /** - * {@inheritDoc} - */ - @Override - public ProfileStatus getUserStatus(final String userUuid, ProfilePrivacy privacy) { - - //check privacy - if(privacy == null){ - return null; - } - - String currentUserUuid = sakaiProxy.getCurrentUserId(); - - //if not same, check privacy - if(!StringUtils.equals(userUuid, currentUserUuid)) { - - //check allowed - if(!privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYSTATUS)){ - return null; - } - } - - // compute oldest date for status - Calendar cal = Calendar.getInstance(); - cal.add(Calendar.DAY_OF_YEAR, -7); - final Date oldestStatusDate = cal.getTime(); - - //get data - ProfileStatus status = dao.getUserStatus(userUuid, oldestStatusDate); - if(status == null){ - return null; - } - - //format the date field - if(status.getDateAdded() != null){ - status.setDateFormatted(ProfileUtils.convertDateForStatus(status.getDateAdded())); - } - - return status; - } - - /** - * {@inheritDoc} - */ - @Override - public ProfileStatus getUserStatus(final String userUuid) { - return getUserStatus(userUuid, privacyLogic.getPrivacyRecordForUser(userUuid)); - } - - - - /** - * {@inheritDoc} - */ - @Override - public boolean setUserStatus(String userId, String status) { - - //create object - ProfileStatus profileStatus = new ProfileStatus(userId,status,new Date()); - - return setUserStatus(profileStatus); - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean setUserStatus(ProfileStatus profileStatus) { - - //current user must be the user making the request - if(!StringUtils.equals(sakaiProxy.getCurrentUserId(), profileStatus.getUserUuid())) { - throw new SecurityException("You are not authorised to perform that action."); - } - - //PRFL-588 ensure size limit. Column size is 255. - String tMessage = ProfileUtils.truncate(profileStatus.getMessage(), 255, false); - profileStatus.setMessage(tMessage); - - if(dao.setUserStatus(profileStatus)){ - log.info("Updated status for user: " + profileStatus.getUserUuid()); - return true; - } - - return false; - } - - - /** - * {@inheritDoc} - */ - @Override - public boolean clearUserStatus(String userId) { - - ProfileStatus profileStatus = getUserStatus(userId); - - if(profileStatus == null){ - log.error("ProfileStatus null for userId: " + userId); - return false; - } - - //current user must be the user making the request - if(!StringUtils.equals(sakaiProxy.getCurrentUserId(), profileStatus.getUserUuid())) { - throw new SecurityException("You are not authorised to perform that action."); - } - - if(dao.clearUserStatus(profileStatus)) { - log.info("User: " + userId + " cleared status"); - return true; - } - - return false; - } - - /** - * {@inheritDoc} - */ - @Override - public int getStatusUpdatesCount(final String userUuid) { - return dao.getStatusUpdatesCount(userUuid); - } - - - - @Setter - private SakaiProxy sakaiProxy; - - @Setter - private ProfilePrivacyLogic privacyLogic; - - @Setter - private ProfileConnectionsLogic connectionsLogic; - - @Setter - private ProfileDao dao; - -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileWallLogicImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileWallLogicImpl.java deleted file mode 100644 index 115aacff5d9c..000000000000 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/ProfileWallLogicImpl.java +++ /dev/null @@ -1,413 +0,0 @@ -/** - * 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.logic; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.sakaiproject.profile2.dao.ProfileDao; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.model.WallItemComment; -import org.sakaiproject.profile2.types.EmailType; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; - -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; - -/** - * Implementation of ProfileWallLogic API for Profile2 wall. - * - * @author d.b.robinson@lancaster.ac.uk - * @deprecated The wall functionality will be removed from Sakai for the 13 release. - */ -@Deprecated -@Slf4j -public class ProfileWallLogicImpl implements ProfileWallLogic { - - /** - * Creates a new instance of ProfileWallLogicImpl. - */ - public ProfileWallLogicImpl() { - - } - - private boolean addNewItemToWall(int itemType, String itemText, final String userUuid) { - - final WallItem wallItem = new WallItem(); - - wallItem.setUserUuid(userUuid); - wallItem.setCreatorUuid(userUuid); - wallItem.setType(itemType); - wallItem.setDate(new Date()); - // this string is mapped to a localized resource string in GUI - wallItem.setText(itemText); - - return dao.addNewWallItemForUser(userUuid, wallItem); - - } - - /** - * {@inheritDoc} - */ - @Override - public boolean addNewCommentToWallItem(WallItemComment wallItemComment) { - if (dao.addNewCommentToWallItem(wallItemComment)) { - String ref = "/profile/wall/item/comment/" + wallItemComment.getId(); - sakaiProxy.postEvent(ProfileConstants.EVENT_WALL_ITEM_COMMENT_NEW, ref, false); - return true; - } else { - return false; - } - } - - private void notifyConnections(int itemType, String itemText, final String userUuid) { - - // get the connections of the creator of this content - final List connections = connectionsLogic.getConnectionsForUser(userUuid); - - if (null == connections || 0 == connections.size()) { - // there are therefore no walls to post event to - return; - } - - // set corresponding message type and exit if type unknown - final EmailType itemMessageType; - switch (itemType) { - case ProfileConstants.WALL_ITEM_TYPE_EVENT: - itemMessageType = EmailType.EMAIL_NOTIFICATION_WALL_EVENT_NEW; - break; - case ProfileConstants.WALL_ITEM_TYPE_STATUS: - itemMessageType = EmailType.EMAIL_NOTIFICATION_WALL_STATUS_NEW; - break; - default: - log.warn("not sending email due to unknown wall item type: " + itemType); - return; - } - - Thread thread = new Thread() { - @Override - public void run() { - - List uuidsToEmail = new ArrayList(); - - for (Person connection : connections) { - - // only send email if user has preference set - if (true == preferencesLogic.isPreferenceEnabled(connection.getUuid(), itemMessageType.toPreference())) { - uuidsToEmail.add(connection.getUuid()); - } - } - - sendWallNotificationEmailToConnections(uuidsToEmail, userUuid, itemMessageType); - } - }; - thread.start(); - } - - /** - * {@inheritDoc} - */ - @Override - public void addNewEventToWall(String event, final String userUuid) { - if (addNewItemToWall(ProfileConstants.WALL_ITEM_TYPE_EVENT, event, userUuid)) { - notifyConnections(ProfileConstants.WALL_ITEM_TYPE_EVENT, event, userUuid); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void addNewStatusToWall(String status, String userUuid) { - if (addNewItemToWall(ProfileConstants.WALL_ITEM_TYPE_STATUS, status, userUuid)) { - notifyConnections(ProfileConstants.WALL_ITEM_TYPE_STATUS, status, userUuid); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean postWallItemToWall(final String userUuid, final WallItem wallItem) { - // post to wall - if (false == dao.addNewWallItemForUser(userUuid, wallItem)) { - return false; - } - - String ref = "/profile/" + wallItem.getUserUuid() + "/wall/item/" + wallItem.getId(); - sakaiProxy.postEvent(ProfileConstants.EVENT_WALL_ITEM_NEW, ref, false); - - // don't email user if they've posted on their own wall - if (!StringUtils.equals(sakaiProxy.getCurrentUserId(), userUuid)) { - sendWallNotificationEmailToUser(userUuid, wallItem.getCreatorUuid(), EmailType.EMAIL_NOTIFICATION_WALL_POST_MY_NEW); - } - // and if they have posted on their own wall, let connections know - else { - // get the connections of the user associated with the wall - final List connections = connectionsLogic.getConnectionsForUser(userUuid); - - if (null != connections) { - - Thread thread = new Thread() { - @Override - public void run() { - - List uuidsToEmail = new ArrayList(); - - for (Person connection : connections) { - - // only send email if user has preference set - if (preferencesLogic.isPreferenceEnabled(connection.getUuid(), EmailType.EMAIL_NOTIFICATION_WALL_POST_CONNECTION_NEW.toPreference())) { - uuidsToEmail.add(connection.getUuid()); - } - } - - sendWallNotificationEmailToConnections(uuidsToEmail, userUuid, EmailType.EMAIL_NOTIFICATION_WALL_POST_CONNECTION_NEW); - } - }; - thread.start(); - } - } - - return true; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean removeWallItemFromWall(WallItem wallItem) { - - if (dao.removeWallItemFromWall(wallItem)) { - String ref = "/profile/wall/item/remove/" + wallItem.getId(); - sakaiProxy.postEvent(ProfileConstants.EVENT_WALL_ITEM_REMOVE, ref, false); - return true; - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public WallItem getWallItem(long wallItemId) { - return dao.getWallItem(wallItemId); - } - - /** - * {@inheritDoc} - */ - @Override - public WallItemComment getWallItemComment(final long wallItemCommentId) { - return dao.getWallItemComment(wallItemCommentId); - } - - /** - * {@inheritDoc} - */ - @Override - public List getWallItemsForUser(String userUuid, ProfilePrivacy privacy) { - - if (null == userUuid) { - throw new IllegalArgumentException("must provide user id"); - } - - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - if (null == currentUserUuid) { - throw new SecurityException( - "You must be logged in to make a request for a user's wall items."); - } - - if (null == privacy) { - return new ArrayList(); - } - - if (false == StringUtils.equals(userUuid, currentUserUuid) && false == sakaiProxy.isSuperUser()) { - if (false == privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYWALL)) { - return new ArrayList(); - } - } - - List wallItems = dao.getWallItemsForUser(userUuid); - - // filter wall items - List filteredWallItems = new ArrayList(); - for (WallItem wallItem : wallItems) { - // current user is always allowed to see their wall items - if (true == StringUtils.equals(userUuid, currentUserUuid) || - true == sakaiProxy.isSuperUser()) { - filteredWallItems.add(wallItem); - // don't allow friend-of-a-friend if not connected - } else if (privacyLogic.isActionAllowed(wallItem.getCreatorUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_MYWALL)) { - filteredWallItems.add(wallItem); - } - } - - // wall items are comparable and need to be in order - Collections.sort(filteredWallItems); - - return filteredWallItems; - } - - /** - * {@inheritDoc} - */ - @Override - public List getWallItemsForUser(String userUuid) { - return getWallItemsForUser(userUuid, privacyLogic - .getPrivacyRecordForUser(userUuid)); - } - - /** - * {@inheritDoc} - */ - @Override - public int getWallItemsCount(String userUuid) { - return getWallItemsCount(userUuid, privacyLogic - .getPrivacyRecordForUser(userUuid)); - } - - /** - * {@inheritDoc} - */ - @Override - public int getWallItemsCount(String userUuid, ProfilePrivacy privacy) { - - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - if (null == sakaiProxy.getCurrentUserId()) { - throw new SecurityException( - "You must be logged in to make a request for a user's wall items."); - } - - if (null == privacy) { - return 0; - } - - if (false == StringUtils.equals(userUuid, currentUserUuid) && false == sakaiProxy.isSuperUser()) { - - if (false == privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYWALL)) { - return 0; - } - } - - List wallItems = dao.getWallItemsForUser(userUuid); - - // filter wall items - List filteredWallItems = new ArrayList(); - for (WallItem wallItem : wallItems) { - // current user is always allowed to see their wall items - if (true == StringUtils.equals(userUuid, currentUserUuid) || - true == sakaiProxy.isSuperUser()) { - filteredWallItems.add(wallItem); - // don't allow friend-of-a-friend if not connected - } else if (privacyLogic.isActionAllowed(wallItem.getCreatorUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_MYWALL)) { - filteredWallItems.add(wallItem); - } - } - - return filteredWallItems.size(); - } - - private void sendWallNotificationEmailToConnections(List toUuids, final String fromUuid, final EmailType messageType) { - - // create the map of replacement values for this email template - Map replacementValues = new HashMap<>(); - replacementValues.put("senderDisplayName", sakaiProxy.getUserDisplayName(fromUuid)); - replacementValues.put("senderWallLink", linkLogic.getEntityLinkToProfileWall(fromUuid)); - replacementValues.put("localSakaiName", sakaiProxy.getServiceName()); - replacementValues.put("localSakaiUrl", sakaiProxy.getPortalUrl()); - replacementValues.put("toolName", sakaiProxy.getCurrentToolTitle()); - - String emailTemplateKey = null; - - if (EmailType.EMAIL_NOTIFICATION_WALL_EVENT_NEW == messageType) { - emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_EVENT_NEW; - } else if (EmailType.EMAIL_NOTIFICATION_WALL_POST_CONNECTION_NEW == messageType) { - emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_POST_CONNECTION_NEW; - } else if (EmailType.EMAIL_NOTIFICATION_WALL_STATUS_NEW == messageType) { - emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_STATUS_NEW; - } - - if (null != emailTemplateKey) { - // send individually to personalize email - for (String toUuid : toUuids) { - // this just keeps overwriting profileLink with current toUuid - replacementValues.put("wallLink", linkLogic.getEntityLinkToProfileWall(toUuid)); - sakaiProxy.sendEmail(toUuid, emailTemplateKey, replacementValues); - } - } else { - log.warn("not sending email, unknown message type for sendWallNotificationEmailToConnections: " + messageType); - } - } - - private void sendWallNotificationEmailToUser(String toUuid, final String fromUuid, final EmailType messageType) { - - // check if email preference enabled - if (!preferencesLogic.isPreferenceEnabled(toUuid, messageType.toPreference())) { - return; - } - - // create the map of replacement values for this email template - Map replacementValues = new HashMap<>(); - replacementValues.put("senderDisplayName", sakaiProxy.getUserDisplayName(fromUuid)); - replacementValues.put("localSakaiName", sakaiProxy.getServiceName()); - replacementValues.put("localSakaiUrl", sakaiProxy.getPortalUrl()); - replacementValues.put("toolName", sakaiProxy.getCurrentToolTitle()); - - String emailTemplateKey = null; - - if (EmailType.EMAIL_NOTIFICATION_WALL_POST_MY_NEW == messageType) { - emailTemplateKey = ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_POST_MY_NEW; - - replacementValues.put("wallLink", linkLogic.getEntityLinkToProfileWall(toUuid)); - } - - if (null != emailTemplateKey) { - sakaiProxy.sendEmail(toUuid, emailTemplateKey, replacementValues); - } else { - log.warn("not sending email, unknown message type for sendWallNotificationEmailToUser: " + messageType); - } - - } - - @Setter - private ProfileDao dao; - - @Setter - private ProfilePrivacyLogic privacyLogic; - - @Setter - private ProfileConnectionsLogic connectionsLogic; - - @Setter - private ProfileLinkLogic linkLogic; - - @Setter - private ProfilePreferencesLogic preferencesLogic; - - @Setter - private SakaiProxy sakaiProxy; - -} diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/logic/SakaiProxyImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/logic/SakaiProxyImpl.java index 059a10a90cc7..44285a607f0f 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/logic/SakaiProxyImpl.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/logic/SakaiProxyImpl.java @@ -18,12 +18,9 @@ import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -47,9 +44,6 @@ import org.sakaiproject.exception.IdUsedException; import org.sakaiproject.exception.PermissionException; import org.sakaiproject.id.api.IdManager; -import org.sakaiproject.messaging.api.Message; -import org.sakaiproject.messaging.api.MessageMedium; -import org.sakaiproject.messaging.api.UserMessagingService; import org.sakaiproject.profile2.model.MimeTypeByteArray; import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.profile2.util.ProfileUtils; @@ -78,33 +72,21 @@ public class SakaiProxyImpl implements SakaiProxy { private static ResourceLoader rb = new ResourceLoader("ProfileApplication"); - /** - * {@inheritDoc} - */ @Override public String getCurrentSiteId() { return this.toolManager.getCurrentPlacement().getContext(); } - /** - * {@inheritDoc} - */ @Override public String getCurrentUserId() { return this.sessionManager.getCurrentSessionUserId(); } - /** - * {@inheritDoc} - */ @Override public User getCurrentUser() { return this.userDirectoryService.getCurrentUser(); } - /** - * {@inheritDoc} - */ @Override public String getUserEid(final String userId) { String eid = null; @@ -116,9 +98,6 @@ public String getUserEid(final String userId) { return eid; } - /** - * {@inheritDoc} - */ @Override public String getUserIdForEid(final String eid) { String userUuid = null; @@ -130,9 +109,6 @@ public String getUserIdForEid(final String eid) { return userUuid; } - /** - * {@inheritDoc} - */ @Override public String getUserDisplayName(final String userId) { String name = null; @@ -144,9 +120,6 @@ public String getUserDisplayName(final String userId) { return name; } - /** - * {@inheritDoc} - */ @Override public String getUserFirstName(final String userId) { String email = null; @@ -158,9 +131,6 @@ public String getUserFirstName(final String userId) { return email; } - /** - * {@inheritDoc} - */ @Override public String getUserLastName(final String userId) { String email = null; @@ -172,9 +142,6 @@ public String getUserLastName(final String userId) { return email; } - /** - * {@inheritDoc} - */ @Override public String getUserEmail(final String userId) { String email = null; @@ -186,9 +153,6 @@ public String getUserEmail(final String userId) { return email; } - /** - * {@inheritDoc} - */ @Override public boolean checkForUser(final String userId) { User u = null; @@ -203,9 +167,6 @@ public boolean checkForUser(final String userId) { return false; } - /** - * {@inheritDoc} - */ @Override public boolean checkForUserByEid(final String eid) { User u = null; @@ -220,33 +181,21 @@ public boolean checkForUserByEid(final String eid) { return false; } - /** - * {@inheritDoc} - */ @Override public boolean isSuperUser() { return this.securityService.isSuperUser(); } - /** - * {@inheritDoc} - */ @Override public boolean isSuperUserAndProxiedToUser(final String userId) { return (isSuperUser() && !StringUtils.equals(userId, getCurrentUserId())); } - /** - * {@inheritDoc} - */ @Override public boolean isUserRoleSwapped() { return this.securityService.isUserRoleSwapped(); } - /** - * {@inheritDoc} - */ @Override public String getUserType(final String userId) { String type = null; @@ -258,9 +207,6 @@ public String getUserType(final String userId) { return type; } - /** - * {@inheritDoc} - */ @Override public User getUserById(final String userId) { User u = null; @@ -273,9 +219,6 @@ public User getUserById(final String userId) { return u; } - /** - * {@inheritDoc} - */ @Override public User getUserQuietly(final String userId) { User u = null; @@ -287,9 +230,6 @@ public User getUserQuietly(final String userId) { return u; } - /** - * {@inheritDoc} - */ @Override public String getCurrentToolTitle() { final Tool tool = this.toolManager.getCurrentTool(); @@ -300,9 +240,6 @@ public String getCurrentToolTitle() { } } - /** - * {@inheritDoc} - */ @Override public List getUsers(final List userIds) { List rval = new ArrayList<>(); @@ -314,9 +251,6 @@ public List getUsers(final List userIds) { return rval; } - /** - * {@inheritDoc} - */ @Override public List getUuids(final List users) { final List uuids = new ArrayList(); @@ -326,9 +260,6 @@ public List getUuids(final List users) { return uuids; } - /** - * {@inheritDoc} - */ @Override public SakaiPerson getSakaiPerson(final String userId) { @@ -336,16 +267,12 @@ public SakaiPerson getSakaiPerson(final String userId) { try { sakaiPerson = this.sakaiPersonManager.getSakaiPerson(userId, this.sakaiPersonManager.getUserMutableType()); - } catch (final Exception e) { - log.error( - "SakaiProxy.getSakaiPerson(): Couldn't get SakaiPerson for: " + userId + " : " + e.getClass() + " : " + e.getMessage()); + } catch (Exception e) { + log.error("Couldn't get SakaiPerson for userId {}: ", userId, e.toString()); } return sakaiPerson; } - /** - * {@inheritDoc} - */ @Override public byte[] getSakaiPersonJpegPhoto(final String userId) { @@ -373,9 +300,6 @@ public byte[] getSakaiPersonJpegPhoto(final String userId) { return image; } - /** - * {@inheritDoc} - */ @Override public String getSakaiPersonImageUrl(final String userId) { @@ -403,9 +327,6 @@ public String getSakaiPersonImageUrl(final String userId) { return url; } - /** - * {@inheritDoc} - */ @Override public SakaiPerson getSakaiPersonPrototype() { @@ -419,9 +340,6 @@ public SakaiPerson getSakaiPersonPrototype() { return sakaiPerson; } - /** - * {@inheritDoc} - */ @Override public SakaiPerson createSakaiPerson(final String userId) { @@ -435,9 +353,6 @@ public SakaiPerson createSakaiPerson(final String userId) { return sakaiPerson; } - /** - * {@inheritDoc} - */ @Override public boolean updateSakaiPerson(final SakaiPerson sakaiPerson) { // the save is void, so unless it throws an exception, its ok (?) @@ -452,60 +367,11 @@ public boolean updateSakaiPerson(final SakaiPerson sakaiPerson) { return false; } - /** - * {@inheritDoc} - */ @Override public int getMaxProfilePictureSize() { return this.serverConfigurationService.getInt("profile2.picture.max", ProfileConstants.MAX_IMAGE_UPLOAD_SIZE); } - private String getProfileGalleryPath(final String userId) { - final String slash = Entity.SEPARATOR; - - final StringBuilder path = new StringBuilder(); - path.append(slash); - path.append("private"); - path.append(slash); - path.append("profileGallery"); - path.append(slash); - path.append(userId); - path.append(slash); - - return path.toString(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getProfileGalleryImagePath(final String userId, final String imageId) { - - final StringBuilder path = new StringBuilder(getProfileGalleryPath(userId)); - - path.append(ProfileConstants.GALLERY_IMAGE_MAIN); - path.append(Entity.SEPARATOR); - path.append(imageId); - - return path.toString(); - } - - /** - * {@inheritDoc} - */ - @Override - public String getProfileGalleryThumbnailPath(final String userId, final String imageId) { - final StringBuilder path = new StringBuilder(getProfileGalleryPath(userId)); - path.append(ProfileConstants.GALLERY_IMAGE_THUMBNAILS); - path.append(Entity.SEPARATOR); - path.append(imageId); - - return path.toString(); - } - - /** - * {@inheritDoc} - */ @Override public String getProfileImageResourcePath(final String userId, final int type) { @@ -527,9 +393,6 @@ public String getProfileImageResourcePath(final String userId, final int type) { } - /** - * {@inheritDoc} - */ @Override public boolean saveFile(final String fullResourceId, final String userId, final String fileName, final String mimeType, final byte[] fileData) { @@ -573,9 +436,6 @@ public boolean saveFile(final String fullResourceId, final String userId, final } - /** - * {@inheritDoc} - */ @Override public MimeTypeByteArray getResource(final String resourceId) { @@ -607,9 +467,6 @@ public MimeTypeByteArray getResource(final String resourceId) { return null; } - /** - * {@inheritDoc} - */ @Override public boolean removeResource(final String resourceId) { try { @@ -624,119 +481,51 @@ public boolean removeResource(final String resourceId) { } } - /** - * {@inheritDoc} - */ - @Override - public List searchUsers(final String search) { - return this.userDirectoryService.searchUsers(search, ProfileConstants.FIRST_RECORD, ProfileConstants.MAX_RECORDS); - } - - /** - * {@inheritDoc} - */ - @Override - public List searchExternalUsers(final String search) { - return this.userDirectoryService.searchExternalUsers(search, ProfileConstants.FIRST_RECORD, ProfileConstants.MAX_RECORDS); - } - - /** - * {@inheritDoc} - */ @Override public void postEvent(final String event, final String reference, final boolean modify) { this.eventTrackingService.post(this.eventTrackingService.newEvent(event, reference, modify)); } - /** - * {@inheritDoc} - */ - @Override - public void sendEmail(final List userIds, final String emailTemplateKey, final Map replacementValues) { - - final Set users = new HashSet<>(getUsers(userIds)); - - replacementValues.put("bundle", rb); - userMessagingService.message(users, - Message.builder().tool(ProfileConstants.TOOL_ID).type(emailTemplateKey).build(), - Arrays.asList(new MessageMedium[] {MessageMedium.EMAIL}), replacementValues, NotificationService.NOTI_REQUIRED); - } - - /** - * {@inheritDoc} - */ - @Override - public void sendEmail(final String userId, final String emailTemplateKey, final Map replacementValues) { - sendEmail(Collections.singletonList(userId), emailTemplateKey, replacementValues); - } - - /** - * {@inheritDoc} - */ @Override public String getServerName() { return this.serverConfigurationService.getServerName(); } - /** - * {@inheritDoc} - */ @Override public String getPortalUrl() { return this.serverConfigurationService.getPortalUrl(); } - /** - * {@inheritDoc} - */ @Override public String getServerUrl() { return this.serverConfigurationService.getServerUrl(); } - /** - * {@inheritDoc} - */ @Override public String getFullPortalUrl() { return getServerUrl() + getPortalPath(); } - /** - * {@inheritDoc} - */ @Override public String getPortalPath() { return this.serverConfigurationService.getString("portalPath", "/portal"); } - /** - * {@inheritDoc} - */ @Override public boolean isUsingNormalPortal() { return StringUtils.equals(getPortalPath(), "/portal"); } - /** - * {@inheritDoc} - */ @Override public String getUserHomeUrl() { return this.serverConfigurationService.getUserHomeUrl(); } - /** - * {@inheritDoc} - */ @Override public String getServiceName() { return this.serverConfigurationService.getString("ui.service", ProfileConstants.SAKAI_PROP_SERVICE_NAME); } - /** - * {@inheritDoc} - */ @Override public void updateEmailForUser(final String userId, final String email) { try { @@ -751,9 +540,6 @@ public void updateEmailForUser(final String userId, final String email) { } } - /** - * {@inheritDoc} - */ @Override public void updateNameForUser(final String userId, final String firstName, final String lastName) { try { @@ -769,9 +555,6 @@ public void updateNameForUser(final String userId, final String firstName, final } } - /** - * {@inheritDoc} - */ @Override @Deprecated public String getDirectUrlToUserProfile(final String userId, final String extraParams) { @@ -819,17 +602,11 @@ public String getDirectUrlToUserProfile(final String userId, final String extraP } - /** - * {@inheritDoc} - */ @Override public String getDirectUrlToProfileComponent(final String userId, final String component, final Map extraParams) { return getDirectUrlToProfileComponent(getCurrentUserId(), userId, component, extraParams); } - /** - * {@inheritDoc} - */ @Override public String getDirectUrlToProfileComponent(final String viewerUuid, final String viewedUuid, final String component, final Map extraParams) { @@ -880,9 +657,6 @@ public String getDirectUrlToProfileComponent(final String viewerUuid, final Stri } } - /** - * {@inheritDoc} - */ @Override public boolean isAccountUpdateAllowed(final String userId) { try { @@ -895,19 +669,6 @@ public boolean isAccountUpdateAllowed(final String userId) { } } - /** - * {@inheritDoc} - */ - @Override - public boolean isBusinessProfileEnabled() { - return this.serverConfigurationService.getBoolean( - "profile2.profile.business.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_BUSINESS_ENABLED); - } - - /** - * {@inheritDoc} - */ @Override public boolean isSocialProfileEnabled() { return this.serverConfigurationService.getBoolean( @@ -915,39 +676,6 @@ public boolean isSocialProfileEnabled() { ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_SOCIAL_ENABLED); } - /** - * {@inheritDoc} - */ - @Override - public boolean isInterestsProfileEnabled() { - return this.serverConfigurationService.getBoolean( - "profile2.profile.interests.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_INTERESTS_ENABLED); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isStaffProfileEnabled() { - return this.serverConfigurationService.getBoolean( - "profile2.profile.staff.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_STAFF_ENABLED); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isStudentProfileEnabled() { - return this.serverConfigurationService.getBoolean( - "profile2.profile.student.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_STUDENT_ENABLED); - } - - /** - * {@inheritDoc} - */ @Override public boolean isNamePronunciationProfileEnabled() { return this.serverConfigurationService.getBoolean( @@ -955,42 +683,6 @@ public boolean isNamePronunciationProfileEnabled() { ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_PRONUNCIATION_ENABLED); } - /** - * {@inheritDoc} - */ - @Override - public boolean isWallEnabledGlobally() { - return this.serverConfigurationService.getBoolean( - "profile2.wall.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_WALL_ENABLED); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isWallDefaultProfilePage() { - return this.serverConfigurationService.getBoolean( - "profile2.wall.default", - ProfileConstants.SAKAI_PROP_PROFILE2_WALL_DEFAULT); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isProfileGalleryEnabledGlobally() { - if (!isMenuEnabledGlobally()) { - return false; - } else { - return this.serverConfigurationService.getBoolean("profile2.gallery.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_GALLERY_ENABLED); - } - } - - /** - * {@inheritDoc} - */ @Override public boolean isProfilePictureChangeEnabled() { // PRFL-395: Ability to enable/disable profile picture change per user type @@ -1001,9 +693,6 @@ public boolean isProfilePictureChangeEnabled() { return this.serverConfigurationService.getBoolean("profile2.picture.change." + userType + ".enabled", globallyEnabled); } - /** - * {@inheritDoc} - */ @Override public int getProfilePictureType() { final String pictureType = this.serverConfigurationService.getString("profile2.picture.type", @@ -1030,9 +719,6 @@ else if (StringUtils.equals(pictureType, ProfileConstants.PICTURE_SETTING_OFFICI } } - /** - * {@inheritDoc} - */ @Override public List getAcademicEntityConfigurationSet() { @@ -1046,9 +732,6 @@ public List getAcademicEntityConfigurationSet() { return list; } - /** - * {@inheritDoc} - */ @Override public List getMinimalEntityConfigurationSet() { final String configuration = this.serverConfigurationService.getString("profile2.profile.entity.set.minimal", @@ -1061,9 +744,6 @@ public List getMinimalEntityConfigurationSet() { return list; } - /** - * {@inheritDoc} - */ @Override public String ensureUuid(final String userId) { @@ -1091,9 +771,6 @@ public String ensureUuid(final String userId) { return null; } - /** - * {@inheritDoc} - */ @Override public boolean currentUserMatchesRequest(final String userUuid) { @@ -1108,61 +785,6 @@ public boolean currentUserMatchesRequest(final String userUuid) { return false; } - /** - * {@inheritDoc} - */ - @Override - public boolean isPrivacyChangeAllowedGlobally() { - return this.serverConfigurationService.getBoolean("profile2.privacy.change.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_PRIVACY_CHANGE_ENABLED); - } - - /** - * {@inheritDoc} - */ - @Override - public HashMap getOverriddenPrivacySettings() { - - final HashMap props = new HashMap(); - props.put("profileImage", this.serverConfigurationService.getInt("profile2.privacy.default.profileImage", - ProfileConstants.DEFAULT_PRIVACY_OPTION_PROFILEIMAGE)); - props.put("basicInfo", this.serverConfigurationService.getInt("profile2.privacy.default.basicInfo", - ProfileConstants.DEFAULT_PRIVACY_OPTION_BASICINFO)); - props.put("contactInfo", this.serverConfigurationService.getInt("profile2.privacy.default.contactInfo", - ProfileConstants.DEFAULT_PRIVACY_OPTION_CONTACTINFO)); - props.put("staffInfo", this.serverConfigurationService.getInt("profile2.privacy.default.staffInfo", - ProfileConstants.DEFAULT_PRIVACY_OPTION_STAFFINFO)); - props.put("studentInfo", this.serverConfigurationService.getInt("profile2.privacy.default.studentInfo", - ProfileConstants.DEFAULT_PRIVACY_OPTION_STUDENTINFO)); - props.put("personalInfo", this.serverConfigurationService.getInt("profile2.privacy.default.personalInfo", - ProfileConstants.DEFAULT_PRIVACY_OPTION_PERSONALINFO)); - props.put("birthYear", this.serverConfigurationService.getBoolean("profile2.privacy.default.birthYear", - ProfileConstants.DEFAULT_BIRTHYEAR_VISIBILITY)); - props.put("myFriends", this.serverConfigurationService.getInt("profile2.privacy.default.myFriends", - ProfileConstants.DEFAULT_PRIVACY_OPTION_MYFRIENDS)); - props.put("myStatus", this.serverConfigurationService.getInt("profile2.privacy.default.myStatus", - ProfileConstants.DEFAULT_PRIVACY_OPTION_MYSTATUS)); - props.put("myPictures", this.serverConfigurationService.getInt("profile2.privacy.default.myPictures", - ProfileConstants.DEFAULT_PRIVACY_OPTION_MYPICTURES)); - props.put("messages", this.serverConfigurationService.getInt("profile2.privacy.default.messages", - ProfileConstants.DEFAULT_PRIVACY_OPTION_MESSAGES)); - props.put("businessInfo", this.serverConfigurationService.getInt("profile2.privacy.default.businessInfo", - ProfileConstants.DEFAULT_PRIVACY_OPTION_BUSINESSINFO)); - props.put("myKudos", this.serverConfigurationService.getInt("profile2.privacy.default.myKudos", - ProfileConstants.DEFAULT_PRIVACY_OPTION_MYKUDOS)); - props.put("myWall", - this.serverConfigurationService.getInt("profile2.privacy.default.myWall", ProfileConstants.DEFAULT_PRIVACY_OPTION_MYWALL)); - props.put("socialInfo", this.serverConfigurationService.getInt("profile2.privacy.default.socialInfo", - ProfileConstants.DEFAULT_PRIVACY_OPTION_SOCIALINFO)); - props.put("onlineStatus", this.serverConfigurationService.getInt("profile2.privacy.default.onlineStatus", - ProfileConstants.DEFAULT_PRIVACY_OPTION_ONLINESTATUS)); - - return props; - } - - /** - * {@inheritDoc} - */ @Override public List getInvisibleUsers() { final String config = this.serverConfigurationService.getString("profile2.invisible.users", @@ -1170,35 +792,6 @@ public List getInvisibleUsers() { return ProfileUtils.getListFromString(config, ProfileConstants.SAKAI_PROP_LIST_SEPARATOR); } - /** - * {@inheritDoc} - */ - @Override - public boolean isConnectionAllowedBetweenUserTypes(final String requestingUserType, final String targetUserType) { - - if (isSuperUser()) { - return true; - } - - final String configuration = this.serverConfigurationService - .getString("profile2.allowed.connection.usertypes." + requestingUserType); - if (StringUtils.isBlank(configuration)) { - return true; - } - - final String[] values = StringUtils.split(configuration, ','); - final List valueList = Arrays.asList(values); - - if (valueList.contains(targetUserType)) { - return true; - } - - return false; - } - - /** - * {@inheritDoc} - */ @Override public boolean toggleProfileLocked(final String userId, final boolean locked) { final SakaiPerson sp = getSakaiPerson(userId); @@ -1212,27 +805,18 @@ public boolean toggleProfileLocked(final String userId, final boolean locked) { return false; } - /** - * {@inheritDoc} - */ @Override public boolean isOfficialImageEnabledGlobally() { return this.serverConfigurationService.getBoolean("profile2.official.image.enabled", ProfileConstants.SAKAI_PROP_PROFILE2_OFFICIAL_IMAGE_ENABLED); } - /** - * {@inheritDoc} - */ @Override public boolean isUsingOfficialImage() { return getProfilePictureType() == ProfileConstants.PICTURE_SETTING_OFFICIAL; } - /** - * {@inheritDoc} - */ @Override public boolean isUsingOfficialImageButAlternateSelectionEnabled() { @@ -1244,97 +828,61 @@ public boolean isUsingOfficialImageButAlternateSelectionEnabled() { return false; } - /** - * {@inheritDoc} - */ @Override public String getOfficialImageSource() { return this.serverConfigurationService.getString("profile2.official.image.source", ProfileConstants.OFFICIAL_IMAGE_SETTING_DEFAULT); } - /** - * {@inheritDoc} - */ @Override public String getOfficialImagesDirectory() { return this.serverConfigurationService.getString("profile2.official.image.directory", "/official-photos"); } - /** - * {@inheritDoc} - */ @Override public String getOfficialImagesFileSystemPattern() { return this.serverConfigurationService.getString("profile2.official.image.directory.pattern", "TWO_DEEP"); } - /** - * {@inheritDoc} - */ @Override public String getOfficialImageAttribute() { return this.serverConfigurationService.getString("profile2.official.image.attribute", ProfileConstants.USER_PROPERTY_JPEG_PHOTO); } - /** - * {@inheritDoc} - */ @Override public String createUuid() { return this.idManager.createUuid(); } - /** - * {@inheritDoc} - */ @Override public boolean isUserActive(final String userUuid) { return this.activityService.isUserActive(userUuid); } - /** - * {@inheritDoc} - */ @Override public List getActiveUsers(final List userUuids) { return this.activityService.getActiveUsers(userUuids); } - /** - * {@inheritDoc} - */ @Override public Long getLastEventTimeForUser(final String userUuid) { return this.activityService.getLastEventTimeForUser(userUuid); } - /** - * {@inheritDoc} - */ @Override public Map getLastEventTimeForUsers(final List userUuids) { return this.activityService.getLastEventTimeForUsers(userUuids); } - /** - * {@inheritDoc} - */ @Override public String getServerConfigurationParameter(final String key, final String def) { return this.serverConfigurationService.getString(key, def); } - /** - * {@inheritDoc} - */ @Override public boolean isUserMyWorkspace(final String siteId) { return this.siteService.isUserSite(siteId); } - /** - * {@inheritDoc} - */ @Override public boolean isUserAllowedInSite(final String userId, final String permission, final String siteId) { if (this.securityService.isSuperUser()) { @@ -1350,54 +898,22 @@ public boolean isUserAllowedInSite(final String userId, final String permission, return false; } - /** - * {@inheritDoc} - */ @Override public boolean checkForSite(final String siteId) { return this.siteService.siteExists(siteId); } - /** - * {@inheritDoc} - */ - @Override - public int getMaxSearchResults() { - return this.serverConfigurationService.getInt( - "profile2.search.maxSearchResults", - ProfileConstants.DEFAULT_MAX_SEARCH_RESULTS); - } - - /** - * {@inheritDoc} - */ - @Override - public int getMaxSearchResultsPerPage() { - return this.serverConfigurationService.getInt( - "profile2.search.maxSearchResultsPerPage", - ProfileConstants.DEFAULT_MAX_SEARCH_RESULTS_PER_PAGE); - } - - /** - * {@inheritDoc} - */ @Override public boolean isGravatarImageEnabledGlobally() { return this.serverConfigurationService.getBoolean("profile2.gravatar.image.enabled", ProfileConstants.SAKAI_PROP_PROFILE2_GRAVATAR_IMAGE_ENABLED); } - /** - * {@inheritDoc} - */ @Override public boolean isUserAllowedAddSite(final String userUuid) { return this.siteService.allowAddSite(userUuid); } - /** - * {@inheritDoc} - */ @Override public Site addSite(final String id, final String type) { Site site = null; @@ -1414,9 +930,6 @@ public Site addSite(final String id, final String type) { return site; } - /** - * {@inheritDoc} - */ @Override public boolean saveSite(final Site site) { try { @@ -1431,9 +944,6 @@ public boolean saveSite(final Site site) { return true; } - /** - * {@inheritDoc} - */ @Override public Site getSite(final String siteId) { try { @@ -1444,129 +954,43 @@ public Site getSite(final String siteId) { } } - /** - * {@inheritDoc} - */ @Override public List getUserSites() { return this.siteService.getSites(SelectionType.ACCESS, null, null, null, SortType.TITLE_ASC, null); } - /** - * {@inheritDoc} - */ @Override public Tool getTool(final String id) { return this.toolManager.getTool(id); } - /** - * {@inheritDoc} - */ @Override public List getToolsRequired(final String category) { return this.serverConfigurationService.getToolsRequired(category); } - /** - * {@inheritDoc} - */ @Override public boolean isGoogleIntegrationEnabledGlobally() { return this.serverConfigurationService.getBoolean("profile2.integration.google.enabled", ProfileConstants.SAKAI_PROP_PROFILE2_GOOGLE_INTEGRATION_ENABLED); } - /** - * {@inheritDoc} - */ @Override public boolean isLoggedIn() { return StringUtils.isNotBlank(getCurrentUserId()); } - /** - * {@inheritDoc} - */ @Override public boolean isProfileFieldsEnabled() { return this.serverConfigurationService.getBoolean("profile2.profile.fields.enabled", ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_FIELDS_ENABLED); } - /** - * {@inheritDoc} - */ - @Override - public boolean isProfileStatusEnabled() { - return this.serverConfigurationService.getBoolean("profile2.profile.status.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_PROFILE_STATUS_ENABLED); - - } - - /** - * {@inheritDoc} - */ @Override public boolean isMenuEnabledGlobally() { return this.serverConfigurationService.getBoolean("profile2.menu.enabled", ProfileConstants.SAKAI_PROP_PROFILE2_MENU_ENABLED); } - /** - * {@inheritDoc} - */ - @Override - public boolean isConnectionsEnabledGlobally() { - if (!isMenuEnabledGlobally()) { - return false; - } else { - return this.serverConfigurationService.getBoolean("profile2.connections.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_CONNECTIONS_ENABLED); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isMessagingEnabledGlobally() { - if (isConnectionsEnabledGlobally()) { - return this.serverConfigurationService.getBoolean("profile2.messaging.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_MESSAGING_ENABLED); - } else { - return false; - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isSearchEnabledGlobally() { - if (!isMenuEnabledGlobally()) { - return false; - } else { - return this.serverConfigurationService.getBoolean("profile2.search.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_SEARCH_ENABLED); - } - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isPrivacyEnabledGlobally() { - if (!isMenuEnabledGlobally()) { - return false; - } else { - return this.serverConfigurationService.getBoolean("profile2.privacy.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_PRIVACY_ENABLED); - } - } - - /** - * {@inheritDoc} - */ @Override public boolean isPreferenceEnabledGlobally() { if (!isMenuEnabledGlobally()) { @@ -1577,27 +1001,6 @@ public boolean isPreferenceEnabledGlobally() { } } - /** - * {@inheritDoc} - */ - @Override - public boolean isMyKudosEnabledGlobally() { - return this.serverConfigurationService.getBoolean("profile2.myKudos.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_MY_KUDOS_ENABLED); - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isOnlineStatusEnabledGlobally() { - return this.serverConfigurationService.getBoolean("profile2.onlineStatus.enabled", - ProfileConstants.SAKAI_PROP_PROFILE2_ONLINE_STATUS_ENABLED); - } - - /** - * {@inheritDoc} - */ @Override public SiteService.SiteTitleValidationStatus validateSiteTitle(String orig, String stripped) { return this.siteService.validateSiteTitle(orig, stripped); @@ -1650,25 +1053,16 @@ private ToolConfiguration getFirstInstanceOfTool(final String siteId, final Stri } } - /** - * {@inheritDoc} - */ @Override public String getNamePronunciationExamplesLink() { return this.serverConfigurationService.getString("profile2.profile.name.pronunciation.examples.link", ""); } - /** - * {@inheritDoc} - */ @Override public int getNamePronunciationDuration() { return this.serverConfigurationService.getInt("profile2.profile.name.pronunciation.duration", 10); } - /** - * {@inheritDoc} - */ @Override public boolean isUserMemberOfSite(final String userId, final String siteId){ try { @@ -1678,9 +1072,6 @@ public boolean isUserMemberOfSite(final String userId, final String siteId){ } } - /** - * {@inheritDoc} - */ @Override public boolean areUsersMembersOfSameSite(final String userId1, final String userId2){ if (StringUtils.equals(userId1, userId2)) { @@ -1698,25 +1089,6 @@ public boolean areUsersMembersOfSameSite(final String userId1, final String user } } - /** - * init - */ - public void init() { - log.info("Profile2 SakaiProxy init()"); - - // process the email templates - userMessagingService.importTemplateFromResourceXmlFile("templates/connectionConfirm.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_CONNECTION_CONFIRM); - userMessagingService.importTemplateFromResourceXmlFile("templates/connectionRequest.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_CONNECTION_REQUEST); - userMessagingService.importTemplateFromResourceXmlFile("templates/messageNew.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_MESSAGE_NEW); - userMessagingService.importTemplateFromResourceXmlFile("templates/messageReply.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_MESSAGE_REPLY); - userMessagingService.importTemplateFromResourceXmlFile("templates/profileChangeNotification.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_PROFILE_CHANGE_NOTIFICATION); - userMessagingService.importTemplateFromResourceXmlFile("templates/wallEventNew.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_EVENT_NEW); - userMessagingService.importTemplateFromResourceXmlFile("templates/wallPostConnectionWallNew.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_POST_CONNECTION_NEW); - userMessagingService.importTemplateFromResourceXmlFile("templates/wallPostMyWallNew.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_POST_MY_NEW); - userMessagingService.importTemplateFromResourceXmlFile("templates/wallStatusNew.xml", ProfileConstants.TOOL_ID + "." + ProfileConstants.EMAIL_TEMPLATE_KEY_WALL_STATUS_NEW); - - } - @Setter private ToolManager toolManager; @@ -1749,7 +1121,4 @@ public void init() { @Setter private ActivityService activityService; - - @Setter - private UserMessagingService userMessagingService; } diff --git a/profile2/impl/src/java/org/sakaiproject/profile2/service/ProfileServiceImpl.java b/profile2/impl/src/java/org/sakaiproject/profile2/service/ProfileServiceImpl.java index 9ca99778583f..9766b6e40d1f 100644 --- a/profile2/impl/src/java/org/sakaiproject/profile2/service/ProfileServiceImpl.java +++ b/profile2/impl/src/java/org/sakaiproject/profile2/service/ProfileServiceImpl.java @@ -15,13 +15,10 @@ */ package org.sakaiproject.profile2.service; -import java.util.List; import java.util.Optional; import org.sakaiproject.entity.api.EntityManager; import org.sakaiproject.entity.api.EntityProducer; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.model.Person; import org.sakaiproject.profile2.util.ProfileConstants; import lombok.Data; @@ -30,16 +27,11 @@ public class ProfileServiceImpl implements ProfileService, EntityProducer { private EntityManager entityManager; - private ProfileConnectionsLogic connectionsLogic; public void init() { entityManager.registerEntityProducer(this, "/profile/"); } - public List getConnectionsForUser(String userUuid) { - return connectionsLogic.getConnectionsForUser(userUuid); - } - public Optional getTool() { return Optional.of(ProfileConstants.TOOL_ID); } diff --git a/profile2/impl/src/webapp/WEB-INF/components.xml b/profile2/impl/src/webapp/WEB-INF/components.xml index e47eafd11bf6..67b0761a0cff 100644 --- a/profile2/impl/src/webapp/WEB-INF/components.xml +++ b/profile2/impl/src/webapp/WEB-INF/components.xml @@ -5,8 +5,7 @@ + class="org.sakaiproject.profile2.logic.SakaiProxyImpl"> @@ -19,7 +18,6 @@ - @@ -48,10 +46,7 @@ - - - @@ -61,14 +56,6 @@ - - - - - - - @@ -76,56 +63,17 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -133,28 +81,6 @@ - - - - - - - - - - - - - - - - - - - @@ -167,99 +93,25 @@ - org/sakaiproject/profile2/hbm/ProfileStatus.hbm.xml - org/sakaiproject/profile2/hbm/ProfilePrivacy.hbm.xml - org/sakaiproject/profile2/hbm/ProfileFriend.hbm.xml org/sakaiproject/profile2/hbm/ProfileImageUploaded.hbm.xml org/sakaiproject/profile2/hbm/SakaiPersonMeta.hbm.xml org/sakaiproject/profile2/hbm/ProfilePreferences.hbm.xml org/sakaiproject/profile2/hbm/ProfileImageExternal.hbm.xml - org/sakaiproject/profile2/hbm/Message.hbm.xml - org/sakaiproject/profile2/hbm/MessageThread.hbm.xml - org/sakaiproject/profile2/hbm/MessageParticipant.hbm.xml - org/sakaiproject/profile2/hbm/GalleryImage.hbm.xml org/sakaiproject/profile2/hbm/CompanyProfile.hbm.xml org/sakaiproject/profile2/hbm/SocialNetworkingInfo.hbm.xml org/sakaiproject/profile2/hbm/ProfileImageOfficial.hbm.xml - org/sakaiproject/profile2/hbm/ProfileKudos.hbm.xml org/sakaiproject/profile2/hbm/ExternalIntegrationInfo.hbm.xml - org/sakaiproject/profile2/hbm/WallItem.hbm.xml - org/sakaiproject/profile2/hbm/WallItemComment.hbm.xml - - - - - org/sakaiproject/profile2/emailtemplates/template-messageNew.xml - org/sakaiproject/profile2/emailtemplates/template-messageReply.xml - org/sakaiproject/profile2/emailtemplates/template-connectionRequest.xml - org/sakaiproject/profile2/emailtemplates/template-connectionConfirm.xml - org/sakaiproject/profile2/emailtemplates/template-wallEventNew.xml - org/sakaiproject/profile2/emailtemplates/template-wallPostMyWallNew.xml - org/sakaiproject/profile2/emailtemplates/template-wallPostConnectionWallNew.xml - org/sakaiproject/profile2/emailtemplates/template-wallStatusNew.xml - org/sakaiproject/profile2/emailtemplates/template-worksiteNew.xml - org/sakaiproject/profile2/emailtemplates/template-profileChangeNotification.xml - - org/sakaiproject/profile2/emailtemplates/template-messageNew_zh_CN.xml - org/sakaiproject/profile2/emailtemplates/template-messageReply_zh_CN.xml - org/sakaiproject/profile2/emailtemplates/template-connectionRequest_zh_CN.xml - org/sakaiproject/profile2/emailtemplates/template-connectionConfirm_zh_CN.xml - - org/sakaiproject/profile2/emailtemplates/template-messageNew_sv_SE.xml - org/sakaiproject/profile2/emailtemplates/template-messageReply_sv_SE.xml - org/sakaiproject/profile2/emailtemplates/template-connectionRequest_sv_SE.xml - org/sakaiproject/profile2/emailtemplates/template-connectionConfirm_sv_SE.xml - - org/sakaiproject/profile2/emailtemplates/template-messageNew_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-messageReply_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-connectionRequest_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-connectionConfirm_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-wallEventNew_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-wallPostMyWallNew_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-wallPostConnectionWallNew_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-wallStatusNew_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-worksiteNew_es_ES.xml - org/sakaiproject/profile2/emailtemplates/template-profileChangeNotification_es_ES.xml - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/ProfileApplication.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/ProfileApplication.java index 635797ef616c..f5669953bcd7 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/ProfileApplication.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/ProfileApplication.java @@ -26,8 +26,6 @@ import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.resource.loader.IStringResourceLoader; import org.apache.wicket.spring.injection.annot.SpringComponentInjector; -import org.sakaiproject.profile2.tool.pages.MyFriends; -import org.sakaiproject.profile2.tool.pages.MyMessages; import org.sakaiproject.profile2.tool.pages.MyProfile; import org.sakaiproject.profile2.tool.pages.ViewProfile; import org.sakaiproject.util.ResourceLoader; @@ -52,9 +50,6 @@ protected void init() { // Custom resource loader since our properties are not in the default location getResourceSettings().getStringResourceLoaders().add(new ProfileStringResourceLoader()); - // page mounting so async calls work correctly with the cryptomapper - // mountPage("/messages", MyMessages.class); - // encrypt URLs // this immediately sets up a session (note that things like css now becomes bound to the session) //getSecuritySettings().setCryptFactory(new KeyInSessionSunJceCryptFactory()); // diff key per user @@ -62,8 +57,6 @@ protected void init() { //setRootRequestMapper(cryptoMapper); // page mounting - mountPage("/connections", MyFriends.class); - mountPage("/messages", MyMessages.class); mountPage("/profile", MyProfile.class); mountPage("/viewprofile/${id}", ViewProfile.class); diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/GalleryImageRenderer.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/GalleryImageRenderer.html deleted file mode 100644 index df63e48f72af..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/GalleryImageRenderer.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/GalleryImageRenderer.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/GalleryImageRenderer.java deleted file mode 100644 index 23fa8b07e89d..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/GalleryImageRenderer.java +++ /dev/null @@ -1,78 +0,0 @@ -/** - * 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.tool.components; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.markup.html.image.ContextImage; -import org.apache.wicket.markup.html.image.Image; -import org.apache.wicket.markup.html.image.resource.BufferedDynamicImageResource; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.request.resource.IResource; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.util.ProfileConstants; - -/** - * Gallery component for rendering a single image. - */ -public class GalleryImageRenderer extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - /** - * Creates a new instance of GalleryImageRenderer. - */ - public GalleryImageRenderer(String id, String imageResourceId) { - super(id); - - if (imageResourceId == null) { - add(new ContextImage("img",new Model(ProfileConstants.UNAVAILABLE_IMAGE))); - return; - } - else if (sakaiProxy.getResource(imageResourceId) == null) { - // may have been deleted in CHS - add(new ContextImage("img",new Model(ProfileConstants.UNAVAILABLE_IMAGE))); - return; - } - - final byte[] imageBytes = sakaiProxy.getResource(imageResourceId).getBytes(); - - if (imageBytes != null && imageBytes.length > 0) { - - BufferedDynamicImageResource imageResource = new BufferedDynamicImageResource() { - - private static final long serialVersionUID = 1L; - @Override - protected byte[] getImageData(IResource.Attributes ignored) { - return imageBytes; - } - }; - - Image myPic = new Image("img", new Model(imageResource)); - myPic.add(new AttributeModifier("alt", new StringResourceModel("profile.gallery.image.alt",this,null).getString())); - add(myPic); - - } else { - add(new ContextImage("img",new Model(ProfileConstants.UNAVAILABLE_IMAGE))); - } - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/OnlinePresenceIndicator.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/OnlinePresenceIndicator.java deleted file mode 100644 index e115f85fa911..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/OnlinePresenceIndicator.java +++ /dev/null @@ -1,106 +0,0 @@ -/** - * 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.tool.components; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.image.ContextImage; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.util.ProfileConstants; - -/** - * Component to render the online status of a user - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public class OnlinePresenceIndicator extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - public OnlinePresenceIndicator(String id, String userUuid) { - super(id); - - //get user's firstname - String firstname = sakaiProxy.getUserFirstName(userUuid); - if(StringUtils.isBlank(firstname)){ - firstname = new StringResourceModel("profile.name.first.none").getString(); - } - - //get user's online status - int status = connectionsLogic.getOnlineStatus(userUuid); - - //get the mapping - Map m = mapStatus(status); - - // Tooltip text - String tooltipText = new StringResourceModel(m.get("text")).setParameters(firstname).getString(); - - WebMarkupContainer buttonContainer = new WebMarkupContainer("online-presence-button"); - buttonContainer.add(new AttributeModifier("data-bs-title", tooltipText)); - - ContextImage image = new ContextImage("icon", new Model<>(m.get("url"))); - buttonContainer.add(image); - - add(buttonContainer); - - } - - /** - * Map an online status to an image url - * - * @param status - * @return map of relative image url and text. There are two keys, "url" and "text". The text is a key that needs to be used though. - */ - private Map mapStatus(int status){ - - Map m = new HashMap(); - - if(status == ProfileConstants.ONLINE_STATUS_OFFLINE){ - m.put("url", ProfileConstants.ONLINE_STATUS_OFFLINE_IMG); - m.put("text", "text.profile.presence.offline"); - } - else if(status == ProfileConstants.ONLINE_STATUS_ONLINE){ - m.put("url", ProfileConstants.ONLINE_STATUS_ONLINE_IMG); - m.put("text", "text.profile.presence.online"); - } - else if(status == ProfileConstants.ONLINE_STATUS_AWAY){ - m.put("url", ProfileConstants.ONLINE_STATUS_AWAY_IMG); - m.put("text", "text.profile.presence.away"); - } - //status will only ever be these three values. - - return m; - - } - - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ProfileStatusRenderer.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ProfileStatusRenderer.html deleted file mode 100644 index 67e919fbd0ca..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ProfileStatusRenderer.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - -[message] -[date] - - - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ProfileStatusRenderer.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ProfileStatusRenderer.java deleted file mode 100644 index 1edeb520d8c8..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ProfileStatusRenderer.java +++ /dev/null @@ -1,178 +0,0 @@ -/** - * 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.tool.components; - -import lombok.Setter; -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.ProfileStatusLogic; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.ProfileStatus; - -import lombok.extern.slf4j.Slf4j; - -/** - * This is a helper panel for displaying a user's status. - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Slf4j -public class ProfileStatusRenderer extends Panel { - - private static final long serialVersionUID = 1L; - - private String userUuid; - private ProfilePrivacy privacy; - private String msgClass; - private String dateClass; - - @Setter private boolean hasStatusSet = false; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileStatusLogic") - private ProfileStatusLogic statusLogic; - - /** - * Render the status panel for the user. - *

Where possible, use a fuller constructor.

- * @param id - wicket:id - * @param userUuid - uuid for user whose status we are showing - * @param msgClass - class for the message text - * @param dateClass - class for the date text - */ - public ProfileStatusRenderer(final String id, final String userUuid, final String msgClass, final String dateClass) { - super(id); - - //set incoming - this.userUuid = userUuid; - this.msgClass = msgClass; - this.dateClass = dateClass; - - //get data - this.privacy = privacyLogic.getPrivacyRecordForUser(userUuid); - - //render - renderStatus(); - } - - /** - * Render the status panel for the user. - * @param id - wicket:id - * @param userUuid - uuid for user whose status we are showing - * @param privacy - ProfilePrivacy object for user - * @param msgClass - class for the message text - * @param dateClass - class for the date text - */ - public ProfileStatusRenderer(final String id, final String userUuid, final ProfilePrivacy privacy, final String msgClass, final String dateClass) { - super(id); - - //set incoming - this.userUuid = userUuid; - this.privacy = privacy; - this.msgClass = msgClass; - this.dateClass = dateClass; - - //render - renderStatus(); - } - - - /** - * Render the status panel for the user. - * @param id - wicket:id - * @param person - Person object for user whose status we are showing - * @param msgClass - class for the message text - * @param dateClass - class for the date text - */ - public ProfileStatusRenderer(final String id, final Person person, final String msgClass, final String dateClass) { - super(id); - - //set incoming - this.msgClass = msgClass; - this.dateClass = dateClass; - - //extract data - this.userUuid = person.getUuid(); - this.privacy = person.getPrivacy(); - - //render - renderStatus(); - } - - - - - - /** - * Render method - */ - private void renderStatus() { - - log.debug("ProfileStatusRenderer has been added."); - setOutputMarkupPlaceholderTag(true); - - //get status - ProfileStatus status = statusLogic.getUserStatus(userUuid, privacy); - - //get status - if(status == null) { - log.debug("ProfileStatus null"); - setVisible(false); - setupBlankFields(); - return; - } - - //check message - if(StringUtils.isBlank(status.getMessage())) { - log.debug("ProfileStatus message blank"); - setVisible(false); - setupBlankFields(); - return; - } - - this.hasStatusSet = true; - - //output - add(new Label("message", status.getMessage()) - .add(new AttributeModifier("class", new Model(msgClass))) - ); - add(new Label("date", status.getDateFormatted()) - .add(new AttributeModifier("class", new Model(dateClass))) - ); - - } - - //helper to render blank fields - private void setupBlankFields() { - add(new Label("message")); - add(new Label("date")); - } - - // if there is text - public boolean hasStatusSet() { - return this.hasStatusSet; - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ResourceReferences.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ResourceReferences.java deleted file mode 100644 index 81504f1aa720..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/components/ResourceReferences.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * 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.tool.components; - -import org.apache.wicket.request.resource.ContextRelativeResource; -import org.sakaiproject.profile2.util.ProfileConstants; - -/** - * - * A set of ResourceReferences - * - * @author Steve Swinsburg - * - */ -public class ResourceReferences { - - public static final ContextRelativeResource CROSS_IMG_LOCAL = new ContextRelativeResource(ProfileConstants.CROSS_IMG_LOCAL); - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/ConfirmedFriendsDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/ConfirmedFriendsDataProvider.java deleted file mode 100644 index 3f4ee3621308..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/ConfirmedFriendsDataProvider.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.io.Serializable; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.injection.Injector; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.tool.models.DetachablePersonModel; - -/** - * ConfirmedFriendsDataProvider.java - * Steve Swinsburg - * s.swinsburg@lancaster.ac.uk - * January 2009 - * - * This implementation of Wicket's IDataProvider gets a list of confirmed friends - * of userX, visible by userY. - * - * This is used by MyFriends where a list of confirmed friends is required, and - * in this case, both userX and userY will be the same so it calls a different method to get the friends list - * (only requires userX) - * - * It is also used in ViewFriends where userX is the owner of the page and userY is - * the person viewing the page. - * - * - */ -@Slf4j -public class ConfirmedFriendsDataProvider implements IDataProvider, Serializable { - - private static final long serialVersionUID = 1L; - private String userUuid; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private transient ProfileConnectionsLogic connectionsLogic; - - public ConfirmedFriendsDataProvider(final String userUuid) { - this.userUuid = userUuid; - - Injector.get().inject(this); - } - - public Iterator iterator(long first, long count) { - - //deference for backwards compatibility - //should really check bounds here - int f = (int) first; - int c = (int) count; - - try { - List connections = connectionsLogic.getConnectionsForUser(userUuid); - Collections.sort(connections); - List slice = connections.subList(f, f + c); - return slice.iterator(); - } - catch (Exception e) { - log.error(e.getMessage(), e); - return Collections.EMPTY_LIST.iterator(); - } - } - - public long size() { - return connectionsLogic.getConnectionsForUserCount(userUuid); - } - - public IModel model(Person object) { - return new DetachablePersonModel(object); - } - - - public void detach() {} - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/FriendsFeedDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/FriendsFeedDataProvider.java deleted file mode 100644 index c7dfd51035dc..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/FriendsFeedDataProvider.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.io.Serializable; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.injection.Injector; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.tool.models.DetachablePersonModel; -import org.sakaiproject.profile2.util.ProfileConstants; - -/** - * FriendsFeedDataProvider.java - * Steve Swinsburg - * s.swinsburg@lancaster.ac.uk - * January 2009 - * - * This implementation of Wicket's IDataProvider gets a list of friends of userX as Person objects - */ -@Slf4j -public class FriendsFeedDataProvider implements IDataProvider, Serializable { - - private static final long serialVersionUID = 1L; - private String userUuid; - private int subListSize = 0; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - public FriendsFeedDataProvider(final String userUuid) { - this.userUuid = userUuid; - - Injector.get().inject(this); - - //calculate the number we'll have in the feed, 0 < n < ProfileConstants.MAX_FRIENDS_FEED_ITEMS - int count = connectionsLogic.getConnectionsForUserCount(userUuid); - subListSize = ProfileConstants.MAX_FRIENDS_FEED_ITEMS; - - if(count < subListSize) { - subListSize = count; - } - } - - - public Iterator iterator(long first, long count) { - - //deference for backwards compatibility - //should really check bounds here - int f = (int) first; - int c = (int) count; - - try { - List connections = connectionsLogic.getConnectionsForUser(userUuid).subList(f, f + c); - Collections.shuffle(connections); - List slice = connections.subList(f, f + c); - return slice.iterator(); - } - catch (Exception e) { - log.error(e.getMessage(), e); - return Collections.EMPTY_LIST.iterator(); - } - } - - public long size() { - return subListSize; - } - - public IModel model(Person object) { - return new DetachablePersonModel(object); - } - - public void detach() {} - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/GalleryImageDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/GalleryImageDataProvider.java deleted file mode 100644 index 622436cd20d7..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/GalleryImageDataProvider.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.util.Iterator; - -import org.apache.wicket.injection.Injector; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileImageLogic; -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.tool.models.DetachableGalleryImageModel; - -/** - * IDataProvider implementation for retrieving gallery images. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class GalleryImageDataProvider implements IDataProvider { - - private static final long serialVersionUID = 1L; - protected String userUuid; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileImageLogic") - protected ProfileImageLogic imageLogic; - - public GalleryImageDataProvider(String userUuid) { - this.userUuid = userUuid; - - Injector.get().inject(this); - } - - public Iterator iterator(long first, long count) { - - //deference for backwards compatibility - //should really check bounds here - int f = (int) first; - int c = (int) count; - - return imageLogic.getGalleryImages(userUuid).subList(f, f + c).iterator(); - } - - public IModel model(GalleryImage object) { - return new DetachableGalleryImageModel(object); - } - - public long size() { - return imageLogic.getGalleryImagesCount(userUuid); - } - - public void detach() { - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/GalleryImageRandomizedDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/GalleryImageRandomizedDataProvider.java deleted file mode 100644 index 4db9794172ac..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/GalleryImageRandomizedDataProvider.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.util.Iterator; - -import org.sakaiproject.profile2.model.GalleryImage; - -/** - * Extension of GalleryImageDataProvider that retrieves gallery - * images in randomized order. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class GalleryImageRandomizedDataProvider extends - GalleryImageDataProvider { - - private static final long serialVersionUID = 1L; - - public GalleryImageRandomizedDataProvider(String userUuid) { - super(userUuid); - } - - public Iterator iterator(int first, int count) { - return imageLogic.getGalleryImagesRandomized(userUuid).subList(first, - first + count).iterator(); - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/MessageThreadsDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/MessageThreadsDataProvider.java deleted file mode 100644 index 14b42b697ad0..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/MessageThreadsDataProvider.java +++ /dev/null @@ -1,96 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import org.apache.wicket.injection.Injector; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.model.MessageThread; -import org.sakaiproject.profile2.tool.models.DetachableMessageThreadModel; - -/** - * Implementation of IDataProvider that retrieves the MessageThreads for a user, containing the most recent message in each - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ - -public class MessageThreadsDataProvider implements IDataProvider { - - private static final long serialVersionUID = 1L; - private final String userUuid; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - private ProfileMessagingLogic messagingLogic; - - public MessageThreadsDataProvider(String userUuid) { - this.userUuid = userUuid; - - Injector.get().inject(this); - } - - /** - * retrieve a sublist from the database, for paging - * TODO make it retrieve only the sublist from the DB, this just gets the lot and then returns a sublist. - * - * @see org.apache.wicket.markup.repeater.data.IDataProvider#iterator(int, int) - */ - public Iterator iterator(long first, long count){ - - //deference for backwards compatibility - //should really check bounds here - int f = (int) first; - int c = (int) count; - - List slice = messagingLogic.getMessageThreads(userUuid).subList(f, f + c); - Collections.sort(slice, Collections.reverseOrder()); - return slice.iterator(); - - } - - /** - * returns total number of message thread headers - * - * @see org.apache.wicket.markup.repeater.data.IDataProvider#size() - */ - public long size(){ - return messagingLogic.getMessageThreadsCount(userUuid); - } - - /** - * wraps retrieved message pojo with a wicket model - * - * @see org.apache.wicket.markup.repeater.data.IDataProvider#model(java.lang.Object) - */ - public IModel model(MessageThread object){ - return new DetachableMessageThreadModel(object); - } - - /** - * @see org.apache.wicket.model.IDetachable#detach() - */ - public void detach(){ - } - - - - } \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/MessagesDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/MessagesDataProvider.java deleted file mode 100644 index f199df095578..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/MessagesDataProvider.java +++ /dev/null @@ -1,99 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.injection.Injector; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.tool.models.DetachableMessageModel; - -/** - * Implementation of IDataProvider that retrieves messages in a given thread - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -@Slf4j -public class MessagesDataProvider implements IDataProvider { - - private static final long serialVersionUID = 1L; - private final String threadId; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - protected ProfileMessagingLogic messagingLogic; - - public MessagesDataProvider(String threadId) { - this.threadId = threadId; - - Injector.get().inject(this); - } - - /** - * retrieves messages from database, gets the sublist and returns an iterator for that sublist - * - * @see org.apache.wicket.markup.repeater.data.IDataProvider#iterator(int, int) - */ - public Iterator iterator(long first, long count){ - - //deference for backwards compatibility - //should really check bounds here - int f = (int) first; - int c = (int) count; - - try { - List slice = messagingLogic.getMessagesInThread(threadId).subList(f, f + c); - return slice.iterator(); - } - catch (Exception e) { - log.error(e.getMessage(), e); - return Collections.EMPTY_LIST.iterator(); - } - } - - /** - * returns total number of message thread headers - * - * @see org.apache.wicket.markup.repeater.data.IDataProvider#size() - */ - public long size(){ - return messagingLogic.getMessagesInThreadCount(threadId); - } - - /** - * wraps retrieved message pojo with a wicket model - * - * @see org.apache.wicket.markup.repeater.data.IDataProvider#model(java.lang.Object) - */ - public IModel model(Message object){ - return new DetachableMessageModel(object); - } - - /** - * @see org.apache.wicket.model.IDetachable#detach() - */ - public void detach(){ - } - - } \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/RequestedFriendsDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/RequestedFriendsDataProvider.java deleted file mode 100644 index 606c8e9795f7..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/RequestedFriendsDataProvider.java +++ /dev/null @@ -1,86 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.io.Serializable; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.injection.Injector; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.tool.models.DetachablePersonModel; - -/** - * RequestedFriendsDataProvider.java - * Steve Swinsburg - * s.swinsburg@lancaster.ac.uk - * January 2009 - * - * This implementation of Wicket's IDataProvider gets a list of friend requests incoming to userId - * - */ -@Slf4j -public class RequestedFriendsDataProvider implements IDataProvider, Serializable { - - private static final long serialVersionUID = 1L; - private String userUuid; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - public RequestedFriendsDataProvider(final String userUuid) { - this.userUuid = userUuid; - - Injector.get().inject(this); - } - - public Iterator iterator(long first, long count) { - - //deference for backwards compatibility - //should really check bounds here - int f = (int) first; - int c = (int) count; - - try { - List requests = connectionsLogic.getConnectionRequestsForUser(userUuid); - Collections.sort(requests); - List slice = requests.subList(f, f + c); - return slice.iterator(); - } - catch (Exception e) { - log.error(e.getMessage(), e); - return Collections.EMPTY_LIST.iterator(); - } - } - - public long size() { - return connectionsLogic.getConnectionRequestsForUserCount(userUuid); - } - - public IModel model(Person object) { - return new DetachablePersonModel(object); - } - - public void detach() {} - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/WallItemDataProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/WallItemDataProvider.java deleted file mode 100644 index 1945ae6ff5b1..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/dataproviders/WallItemDataProvider.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * 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.tool.dataproviders; - -import java.util.Iterator; - -import org.apache.wicket.injection.Injector; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.IModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.tool.models.DetachableWallItemModel; - -/** - * Data provider for wall items. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class WallItemDataProvider implements IDataProvider { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - private String userUuid; - - public WallItemDataProvider(String userUuid) { - this.userUuid = userUuid; - - Injector.get().inject(this); - } - - @Override - public Iterator iterator(long first, long count) { - - //deference for backwards compatibility - //should really check bounds here - int f = (int) first; - int c = (int) count; - - return wallLogic.getWallItemsForUser(userUuid).subList(f, f + c).iterator(); - } - - @Override - public IModel model(WallItem object) { - return new DetachableWallItemModel(object); - } - - @Override - public long size() { - return wallLogic.getWallItemsCount(userUuid); - } - - @Override - public void detach() { - // TODO Auto-generated method stub - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileEntityProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileEntityProvider.java index ffeaee17d714..3a8fdc1cbe48 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileEntityProvider.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileEntityProvider.java @@ -48,13 +48,10 @@ import org.sakaiproject.entitybroker.exception.EntityNotFoundException; import org.sakaiproject.entitybroker.util.AbstractEntityProvider; import org.sakaiproject.entitybroker.util.TemplateParseUtil; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; import org.sakaiproject.profile2.logic.ProfileImageLogic; import org.sakaiproject.profile2.logic.ProfileLinkLogic; import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.BasicConnection; import org.sakaiproject.profile2.model.MimeTypeByteArray; import org.sakaiproject.profile2.model.ProfileImage; import org.sakaiproject.profile2.model.UserProfile; @@ -115,10 +112,7 @@ public Object getEntity(EntityReference ref) { } return userProfile; } - - - - + @EntityCustomAction(action="image",viewKey=EntityView.VIEW_SHOW) public Object getProfileImage(OutputStream out, EntityView view, Map params, EntityReference ref) { @@ -187,13 +181,13 @@ public Object getProfileImage(OutputStream out, EntityView view, Map connections = connectionsLogic.getBasicConnectionsForUser(uuid); - if(connections == null) { - throw new EntityException("Error retrieving connections for " + ref.getId(), ref.getReference()); - } - return new ActionReturn(connections); - } - - @EntityCustomAction(action="friendStatus",viewKey=EntityView.VIEW_SHOW) - public Object getConnectionStatus(EntityReference ref, Map parameters) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to get a friend status record."); - } - - //convert input to uuid (user making query) - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if(StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - if (false == parameters.containsKey("friendId")) { - throw new EntityNotFoundException("Parameter must be specified: friendId", ref.getId()); - } - - return connectionsLogic.getConnectionStatus(uuid, parameters.get("friendId").toString()); - } - - @EntityCustomAction(action="unreadMessagesCount",viewKey=EntityView.VIEW_SHOW) - public Object getUnreadMessagesCount(EntityReference ref) { - - if (!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to get the unread messages count."); - } - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if (StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - if (sakaiProxy.isSuperUser() || sakaiProxy.getCurrentUserId().equals(uuid)) { - return new ActionReturn(messagingLogic.getAllUnreadMessagesCount(uuid)); - } else { - throw new SecurityException("You can only view your own message count."); - } - } - - @EntityCustomAction(action="requestFriend", viewKey=EntityView.VIEW_SHOW) - public Object requestFriend(EntityReference ref,Map params) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to make a connection request."); - } - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if(StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - String friendId = (String) params.get("friendId"); - - //get list of connections - if (!connectionsLogic.requestFriend(uuid, friendId)) { - throw new EntityException("Error requesting friend connection for " + ref.getId(), ref.getReference()); - } else { - return Messages.getString("Label.friend.requested"); - } - } - - @EntityCustomAction(action="removeFriend",viewKey=EntityView.VIEW_SHOW) - public Object removeFriend(EntityReference ref,Map params) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to remove a connection."); - } - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if(StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - String friendId = (String) params.get("friendId"); - - //get list of connections - if(!connectionsLogic.removeFriend(uuid, friendId)) { - throw new EntityException("Error removing friend connection for " + ref.getId(), ref.getReference()); - } - else - return Messages.getString("Label.friend.add"); - } - - @EntityCustomAction(action="confirmFriendRequest",viewKey=EntityView.VIEW_SHOW) - public Object confirmFriendRequest(EntityReference ref,Map params) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to confirm a connection request."); - } - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if(StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - String friendId = (String) params.get("friendId"); - - //get list of connections - if(!connectionsLogic.confirmFriendRequest(friendId, uuid)) { - //if(!connectionsLogic.confirmFriendRequest(uuid, friendId)) { - throw new EntityException("Error confirming friend connection for " + ref.getId(), ref.getReference()); - } - else - return Messages.getString("Label.friend.remove"); - } - - @EntityCustomAction(action="ignoreFriendRequest",viewKey=EntityView.VIEW_SHOW) - public Object ignoreFriendRequest(EntityReference ref,Map params) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to ignore a connection request."); - } - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if(StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - String friendId = (String) params.get("friendId"); - - //we're ignoring a request FROM the friendId TO the uuid - if(!connectionsLogic.ignoreFriendRequest(friendId, uuid)) { - throw new EntityException("Error ignoring friend connection for " + ref.getId(), ref.getReference()); - } - else - return Messages.getString("Label.friend.add"); - } - - @EntityCustomAction(action="incomingConnectionRequests", viewKey=EntityView.VIEW_SHOW) - public Object getIncomingConnectionRequests(EntityView view, EntityReference ref) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to get the incoming connection list."); - } - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if (StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - final List requests - = connectionsLogic.getConnectionRequestsForUser(uuid).stream().map(p -> { - BasicConnection bc = new BasicConnection(); - bc.setUuid(p.getUuid()); - bc.setDisplayName(p.getDisplayName()); - bc.setEmail(p.getProfile().getEmail()); - bc.setProfileUrl(linkLogic.getInternalDirectUrlToUserProfile(p.getUuid())); - bc.setType(p.getType()); - bc.setSocialNetworkingInfo(p.getProfile().getSocialInfo()); - return bc; - }).collect(Collectors.toList()); - - if (requests == null) { - throw new EntityException("Error retrieving connection requests for " + ref.getId(), ref.getReference()); - } - return new ActionReturn(requests); - } - - @EntityCustomAction(action="outgoingConnectionRequests", viewKey=EntityView.VIEW_SHOW) - public Object getOutgoingConnectionRequests(EntityView view, EntityReference ref) { - - if (!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to get the outgoing connection list."); - } - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if (StringUtils.isBlank(uuid)) { - throw new EntityNotFoundException("Invalid user.", ref.getId()); - } - - final List requests - = connectionsLogic.getOutgoingConnectionRequestsForUser(uuid).stream().map(p -> { - BasicConnection bc = new BasicConnection(); - bc.setUuid(p.getUuid()); - bc.setDisplayName(p.getDisplayName()); - bc.setEmail(p.getProfile().getEmail()); - bc.setProfileUrl(linkLogic.getInternalDirectUrlToUserProfile(p.getUuid())); - bc.setType(p.getType()); - bc.setSocialNetworkingInfo(p.getProfile().getSocialInfo()); - return bc; - }).collect(Collectors.toList()); - - if (requests == null) { - throw new EntityException("Error retrieving outgoing connection requests for " + uuid, ref.getReference()); - } - - return new ActionReturn(requests); - } - @EntityURLRedirect("/{prefix}/{id}/account") public String redirectUserAccount(Map vars) { return "user/" + vars.get("id") + vars.get(TemplateParseUtil.DOT_EXTENSION); @@ -526,28 +300,19 @@ public Object getNamePronunciation(OutputStream out, EntityView view, Map vars) { - return this.linkLogic.getInternalDirectUrlToUserMessages(vars.get("thread")); - } - - @EntityURLRedirect("/{prefix}/messages") - public String redirectToMyMessages() { - return this.linkLogic.getInternalDirectUrlToUserMessages(null); - } - - @EntityURLRedirect("/{prefix}/connections") - public String redirectToMyConnections() { - return this.linkLogic.getInternalDirectUrlToUserConnections(); - } - - @EntityURLRedirect("/{prefix}/wall/{userUuid}") - public String redirectToMyWall(final Map vars) { - return this.linkLogic.getInternalDirectUrlToUserWall(vars.get("userUuid"), - null); - } - - @EntityURLRedirect("/{prefix}/wall/{userUuid}/item/{wallItemId}") - public String redirectToMyWallItem(final Map vars) { - return this.linkLogic.getInternalDirectUrlToUserWall(vars.get("userUuid"), - vars.get("wallItemId")); - } - @Setter private ProfileLinkLogic linkLogic; diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileMessagingEntityProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileMessagingEntityProvider.java deleted file mode 100644 index 82b7334108f7..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileMessagingEntityProvider.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * 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.tool.entityprovider; - -import lombok.Setter; - -import org.sakaiproject.entitybroker.EntityView; -import org.sakaiproject.entitybroker.entityprovider.EntityProvider; -import org.sakaiproject.entitybroker.entityprovider.annotations.EntityCustomAction; -import org.sakaiproject.entitybroker.entityprovider.capabilities.ActionsExecutable; -import org.sakaiproject.entitybroker.entityprovider.capabilities.AutoRegisterEntityProvider; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Describeable; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Outputable; -import org.sakaiproject.entitybroker.entityprovider.extension.ActionReturn; -import org.sakaiproject.entitybroker.entityprovider.extension.Formats; -import org.sakaiproject.entitybroker.util.AbstractEntityProvider; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; - -/** - * This is the entity provider for messaging in Profile2 - * - * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) - * - */ -public class ProfileMessagingEntityProvider extends AbstractEntityProvider implements EntityProvider, AutoRegisterEntityProvider, Outputable, Describeable, ActionsExecutable{ - - public final static String ENTITY_PREFIX = "profile-message"; - - @Override - public String getEntityPrefix() { - return ENTITY_PREFIX; - } - - @EntityCustomAction(action="unread-count",viewKey=EntityView.VIEW_LIST) - public Object getUnreadMessageCount(EntityView view) { - - //get current user - String uuid = sakaiProxy.getCurrentUserId(); - - //get count & return - int count = messagingLogic.getAllUnreadMessagesCount(uuid); - return new ActionReturn(count); - } - - @Override - public String[] getHandledOutputFormats() { - return new String[] {Formats.XML, Formats.JSON}; - } - - @Setter - private SakaiProxy sakaiProxy; - - @Setter - private ProfileMessagingLogic messagingLogic; -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileStatusEntityProvider.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileStatusEntityProvider.java deleted file mode 100644 index 67472358b808..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/entityprovider/ProfileStatusEntityProvider.java +++ /dev/null @@ -1,140 +0,0 @@ -/** - * 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.tool.entityprovider; - -import java.util.Map; - -import org.apache.commons.lang3.StringUtils; -import org.sakaiproject.entitybroker.EntityReference; -import org.sakaiproject.entitybroker.entityprovider.CoreEntityProvider; -import org.sakaiproject.entitybroker.entityprovider.capabilities.AutoRegisterEntityProvider; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Createable; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Describeable; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Inputable; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Outputable; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Sampleable; -import org.sakaiproject.entitybroker.entityprovider.capabilities.Updateable; -import org.sakaiproject.entitybroker.entityprovider.extension.Formats; -import org.sakaiproject.entitybroker.exception.EntityException; -import org.sakaiproject.entitybroker.util.AbstractEntityProvider; -import org.sakaiproject.profile2.logic.ProfileStatusLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ProfileStatus; - -import lombok.Setter; - -/** - * This is the entity provider for a user's profile status. - * - * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) - * - */ -public class ProfileStatusEntityProvider extends AbstractEntityProvider implements CoreEntityProvider, AutoRegisterEntityProvider, Outputable, Updateable, Createable, Inputable, Sampleable, Describeable { - - public final static String ENTITY_PREFIX = "profile-status"; - - @Override - public String getEntityPrefix() { - return ENTITY_PREFIX; - } - - @Override - public boolean entityExists(String eid) { - return true; - } - - @Override - public Object getSampleEntity() { - return new ProfileStatus(); - } - - @Override - public Object getEntity(EntityReference ref) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to get a user's status."); - } - - //note, returning null = 404 thrown by EB. - - //convert input to uuid - String uuid = sakaiProxy.ensureUuid(ref.getId()); - if(StringUtils.isBlank(uuid)) { - return null; - } - - return statusLogic.getUserStatus(uuid); - } - - @Override - public void updateEntity(EntityReference ref, Object entity, Map params) { - - if(!sakaiProxy.isLoggedIn()) { - throw new SecurityException("You must be logged in to update your status."); - } - - String userId = ref.getId(); - if (StringUtils.isBlank(userId)) { - throw new IllegalArgumentException("Cannot update, No userId in provided reference: " + ref); - } - - if (entity.getClass().isAssignableFrom(ProfileStatus.class)) { - ProfileStatus status = (ProfileStatus) entity; - statusLogic.setUserStatus(status); - } else { - throw new IllegalArgumentException("Invalid entity for update, must be ProfileStatus object"); - } - - } - - @Override - public String createEntity(EntityReference ref, Object entity, Map params) { - - //reference will be the userUuid, which comes from the ProfileStatus obj passed in - String userUuid = null; - - if (entity.getClass().isAssignableFrom(ProfileStatus.class)) { - ProfileStatus status = (ProfileStatus) entity; - - if(statusLogic.setUserStatus(status)) { - userUuid = status.getUserUuid(); - } - if(userUuid == null) { - throw new EntityException("Could not create entity", ref.getReference()); - } - } else { - throw new IllegalArgumentException("Invalid entity for create, must be ProfileStatus object"); - } - return userUuid; - } - - @Override - public String[] getHandledOutputFormats() { - return new String[] {Formats.XML, Formats.JSON}; - } - - @Override - public String[] getHandledInputFormats() { - return new String[] {Formats.XML, Formats.JSON, Formats.HTML}; - } - - @Setter - private SakaiProxy sakaiProxy; - - @Setter - private ProfileStatusLogic statusLogic; - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableGalleryImageModel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableGalleryImageModel.java deleted file mode 100644 index 1a4b013a2b3d..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableGalleryImageModel.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * 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.tool.models; - -import org.apache.wicket.model.LoadableDetachableModel; -import org.sakaiproject.profile2.model.GalleryImage; - -/** - * IModel implementation for GalleryImage. - */ -public class DetachableGalleryImageModel extends LoadableDetachableModel { - - private static final long serialVersionUID = 1L; - - private final GalleryImage image; - - public DetachableGalleryImageModel(GalleryImage image) { - this.image = image; - } - - @Override - public int hashCode() { - return Long.valueOf(image.getId()).hashCode(); - } - - @Override - public boolean equals(final Object obj) { - if (obj == this) { - return true; - } else if (obj == null) { - return false; - } else if (obj instanceof DetachableGalleryImageModel) { - DetachableGalleryImageModel other = (DetachableGalleryImageModel) obj; - return other.image.getId() == image.getId(); - } - return false; - } - - @Override - protected GalleryImage load() { - return image; - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableMessageModel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableMessageModel.java deleted file mode 100644 index 146b4123dc15..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableMessageModel.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * 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.tool.models; - -import org.apache.wicket.injection.Injector; -import org.apache.wicket.model.LoadableDetachableModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.model.Message; - -/** - * Detachable model for an instance of Message - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public class DetachableMessageModel extends LoadableDetachableModel{ - - private static final long serialVersionUID = 1L; - private final String id; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - protected ProfileMessagingLogic messagingLogic; - - /** - * @param m - */ - public DetachableMessageModel(Message m){ - this.id = m.getId(); - Injector.get().inject(this); - } - - /** - * @param id - */ - public DetachableMessageModel(String id){ - this.id = id; - Injector.get().inject(this); - } - - /** - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - return id.hashCode(); - } - - /** - * used for dataview with ReuseIfModelsEqualStrategy item reuse strategy - * - * @see org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(final Object obj){ - if (obj == this){ - return true; - } - else if (obj == null){ - return false; - } - else if (obj instanceof DetachableMessageModel) { - DetachableMessageModel other = (DetachableMessageModel)obj; - return other.id == id; - } - return false; - } - - /** - * @see org.apache.wicket.model.LoadableDetachableModel#load() - */ - protected Message load(){ - return messagingLogic.getMessage(id); - } -} \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableMessageThreadModel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableMessageThreadModel.java deleted file mode 100644 index 367cc27f031e..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableMessageThreadModel.java +++ /dev/null @@ -1,87 +0,0 @@ -/** - * 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.tool.models; - -import org.apache.wicket.injection.Injector; -import org.apache.wicket.model.LoadableDetachableModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.model.MessageThread; - -/** - * Detachable model for an instance of MessageThread - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ -public class DetachableMessageThreadModel extends LoadableDetachableModel{ - - private static final long serialVersionUID = 1L; - private final String id; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - private ProfileMessagingLogic messagingLogic; - - /** - * @param m - */ - public DetachableMessageThreadModel(MessageThread m){ - this.id = m.getId(); - Injector.get().inject(this); - } - - /** - * @param id - */ - public DetachableMessageThreadModel(String id){ - this.id = id; - Injector.get().inject(this); - } - - /** - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - return id.hashCode(); - } - - /** - * used for dataview with ReuseIfModelsEqualStrategy item reuse strategy - * - * @see org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(final Object obj){ - if (obj == this){ - return true; - } - else if (obj == null){ - return false; - } - else if (obj instanceof DetachableMessageThreadModel) { - DetachableMessageThreadModel other = (DetachableMessageThreadModel)obj; - return other.id == id; - } - return false; - } - - /** - * @see org.apache.wicket.model.LoadableDetachableModel#load() - */ - protected MessageThread load(){ - return messagingLogic.getMessageThread(id); - } -} \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableWallItemModel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableWallItemModel.java deleted file mode 100644 index 89ee1defc116..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/DetachableWallItemModel.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * 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.tool.models; - -import org.apache.wicket.model.LoadableDetachableModel; -import org.sakaiproject.profile2.model.WallItem; - -public class DetachableWallItemModel extends LoadableDetachableModel{ - - private static final long serialVersionUID = 1L; - - private WallItem wallItem; - - public DetachableWallItemModel(WallItem wallItem) { - this.wallItem = wallItem; - } - - @Override - protected WallItem load() { - return wallItem; - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/FriendAction.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/FriendAction.java deleted file mode 100644 index 868f1bcf32f1..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/FriendAction.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * 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.tool.models; - -import java.io.Serializable; - -import lombok.Data; -import lombok.NoArgsConstructor; - -import org.apache.wicket.Component; - -/** - * Simple model to back the action behind adding/removing/confirming/ignoring friend requests - * Given to the modal windows, they then set the attributes and the calling page knows what to do based on these attributes. - * To be used ONLY by the Profile2 tool. - * - *

DO NOT USE THIS YOURSELF.

- * - * @author Steve Swinsburg (s.swinsburg@lancaster.ac.uk) - */ - -@Data -@NoArgsConstructor -public class FriendAction implements Serializable { - - private static final long serialVersionUID = 1L; - - private boolean requested; - private boolean confirmed; - private boolean removed; - private boolean ignored; - private Component updateThisComponentOnSuccess; - -} \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/NewMessageModel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/NewMessageModel.java deleted file mode 100644 index f8429ea102a2..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/NewMessageModel.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * 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.tool.models; - -import java.io.Serializable; - -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * A helper model that contains all fields that a new message should contain. - * This is not persisted - it is separated out into its constituent parts instead. - * - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - */ -@Data -@NoArgsConstructor -public class NewMessageModel implements Serializable { - - private static final long serialVersionUID = 1L; - private String to; - private String from; - private String subject; - private String message; - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/WallAction.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/WallAction.java deleted file mode 100644 index 736ec36bead7..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/models/WallAction.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * 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.tool.models; - -import java.io.Serializable; - -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * Model for wall modal window to back actions e.g. removing a wall post. - * - * @author d.b.robinson@lancaster.ac.uk - */ -@Data -@NoArgsConstructor -public class WallAction implements Serializable { - - private static final long serialVersionUID = 1L; - - private boolean itemRemoved; -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.html index 65edf12077f8..f22c82721c0a 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.html @@ -48,44 +48,6 @@ -
  • - - - [myPicturesLabel] - - -
  • -
  • - - - [myFriendsLabel] - [newRequestsLabel] - - -
  • -
  • - - - [myMessagesLabel] - [newMessagesLabel] - - -
  • -
  • - - - [searchLabel] - - - -
  • -
  • - - - [myPrivacyLabel] - - -
  • diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.java index 8010f800b13f..57cb9e0c3755 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/BasePage.java @@ -22,7 +22,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.wicket.AttributeModifier; import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.head.CssHeaderItem; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.head.OnLoadHeaderItem; @@ -35,22 +34,13 @@ import org.apache.wicket.model.ResourceModel; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.spring.injection.annot.SpringBean; -import org.apache.wicket.util.cookies.CookieDefaults; -import org.apache.wicket.util.cookies.CookieUtils; import org.apache.wicket.util.string.StringValue; import org.sakaiproject.portal.util.PortalUtils; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; import org.sakaiproject.profile2.logic.ProfileExternalIntegrationLogic; import org.sakaiproject.profile2.logic.ProfileImageLogic; -import org.sakaiproject.profile2.logic.ProfileKudosLogic; import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.ProfileSearchLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.profile2.util.ProfileUtils; import lombok.extern.slf4j.Slf4j; @@ -67,37 +57,14 @@ public class BasePage extends WebPage implements IHeaderContributor { @SpringBean(name = "org.sakaiproject.profile2.logic.ProfilePreferencesLogic") protected ProfilePreferencesLogic preferencesLogic; - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - protected ProfilePrivacyLogic privacyLogic; - - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - protected ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfileMessagingLogic") - protected ProfileMessagingLogic messagingLogic; - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfileImageLogic") protected ProfileImageLogic imageLogic; - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfileKudosLogic") - protected ProfileKudosLogic kudosLogic; - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfileExternalIntegrationLogic") protected ProfileExternalIntegrationLogic externalIntegrationLogic; - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfileWallLogic") - protected ProfileWallLogic wallLogic; - - @SpringBean(name = "org.sakaiproject.profile2.logic.ProfileSearchLogic") - protected ProfileSearchLogic searchLogic; - - Link myPicturesLink; Link myProfileLink; Link otherProfileLink; - Link myFriendsLink; - Link myMessagesLink; - Link myPrivacyLink; - Link searchLink; Link preferencesLink; public BasePage() { @@ -144,114 +111,6 @@ public void onClick() { this.otherProfileLink.setVisible(false); add(this.otherProfileLink); - // my pictures link - this.myPicturesLink = new Link("myPicturesLink") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - setEnabled(false); - setResponsePage(new MyPictures()); - } - }; - this.myPicturesLink.add(new Label("myPicturesLabel", new ResourceModel("link.my.pictures"))); - this.myPicturesLink.add(new AttributeModifier("title", new ResourceModel("link.my.pictures.tooltip"))); - - if (!this.sakaiProxy.isProfileGalleryEnabledGlobally()) { - this.myPicturesLink.setVisible(false); - } - - add(this.myPicturesLink); - - // my friends link - this.myFriendsLink = new Link("myFriendsLink") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - setResponsePage(new MyFriends()); - } - }; - this.myFriendsLink.add(new Label("myFriendsLabel", new ResourceModel("link.my.friends"))); - this.myFriendsLink.add(new AttributeModifier("title", new ResourceModel("link.my.friends.tooltip"))); - - // get count of new connection requests - final int newRequestsCount = this.connectionsLogic.getConnectionRequestsForUserCount(currentUserUuid); - final Label newRequestsLabel = new Label("newRequestsLabel", new Model(newRequestsCount)); - this.myFriendsLink.add(newRequestsLabel); - - if (newRequestsCount == 0) { - newRequestsLabel.setVisible(false); - } - - if (!this.sakaiProxy.isConnectionsEnabledGlobally()) { - this.myFriendsLink.setVisible(false); - } - - add(this.myFriendsLink); - - // messages link - this.myMessagesLink = new Link("myMessagesLink") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - setResponsePage(new MyMessages()); - } - }; - this.myMessagesLink.add(new Label("myMessagesLabel", new ResourceModel("link.my.messages"))); - this.myMessagesLink.add(new AttributeModifier("title", new ResourceModel("link.my.messages.tooltip"))); - - // get count of new messages grouped by thread - final int newMessagesCount = this.messagingLogic.getThreadsWithUnreadMessagesCount(currentUserUuid); - final Label newMessagesLabel = new Label("newMessagesLabel", new Model(newMessagesCount)); - this.myMessagesLink.add(newMessagesLabel); - - if (newMessagesCount == 0) { - newMessagesLabel.setVisible(false); - } - - if (!this.sakaiProxy.isMessagingEnabledGlobally()) { - this.myMessagesLink.setVisible(false); - } - add(this.myMessagesLink); - - // privacy link - this.myPrivacyLink = new Link("myPrivacyLink") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - setResponsePage(new MyPrivacy()); - } - }; - this.myPrivacyLink.add(new Label("myPrivacyLabel", new ResourceModel("link.my.privacy"))); - this.myPrivacyLink.add(new AttributeModifier("title", new ResourceModel("link.my.privacy.tooltip"))); - - if (!this.sakaiProxy.isPrivacyEnabledGlobally()) { - this.myPrivacyLink.setVisible(false); - } - - add(this.myPrivacyLink); - - // search link - this.searchLink = new Link("searchLink") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - setResponsePage(new MySearch()); - } - }; - this.searchLink.add(new Label("searchLabel", new ResourceModel("link.my.search"))); - this.searchLink.add(new AttributeModifier("title", new ResourceModel("link.my.search.tooltip"))); - - if (!this.sakaiProxy.isSearchEnabledGlobally()) { - this.searchLink.setVisible(false); - } - - add(this.searchLink); - // preferences link this.preferencesLink = new Link("preferencesLink") { private static final long serialVersionUID = 1L; @@ -330,20 +189,6 @@ protected void disableLink(final Link l) { l.setEnabled(false); } - /** - * Set the cookie that stores the current tab index. - * - * @param tabIndex the current tab index. - */ - protected void setTabCookie(final int tabIndex) { - - final CookieDefaults defaults = new CookieDefaults(); - defaults.setMaxAge(-1); - - final CookieUtils utils = new CookieUtils(defaults); - utils.save(ProfileConstants.TAB_COOKIE, String.valueOf(tabIndex)); - } - /** * Parse a param * diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyFriends.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyFriends.html deleted file mode 100644 index 0a80fb765d67..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyFriends.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - -
    -
    - - - -
    - - -
    [requestedFriends]
    - - -
    [confirmedFriends]
    - - -
    - - - - -
    -
    - - - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyFriends.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyFriends.java deleted file mode 100644 index e2a0a0944a2a..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyFriends.java +++ /dev/null @@ -1,76 +0,0 @@ -/** - * 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.tool.pages; - - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.markup.html.panel.Panel; - -import org.sakaiproject.profile2.tool.pages.panels.ConfirmedFriends; -import org.sakaiproject.profile2.tool.pages.panels.RequestedFriends; -import org.sakaiproject.profile2.util.ProfileConstants; - -@Slf4j -public class MyFriends extends BasePage { - - private Panel confirmedFriends; - private Panel requestedFriends; - - public MyFriends() { - - log.debug("MyFriends()"); - - disableLink(myFriendsLink); - - //get current user - final String userId = sakaiProxy.getCurrentUserId(); - - //friend requests panel - requestedFriends = new RequestedFriends("requestedFriends", userId); - requestedFriends.setOutputMarkupId(true); - add(requestedFriends); - - - //confirmed friends panel - confirmedFriends = new ConfirmedFriends("confirmedFriends", userId); - confirmedFriends.setOutputMarkupId(true); - add(confirmedFriends); - - //post view event - sakaiProxy.postEvent(ProfileConstants.EVENT_FRIENDS_VIEW_OWN, "/profile/"+userId, false); - - } - - //method to allow us to update the confirmedFriends panel - public void updateConfirmedFriends(AjaxRequestTarget target, String userId) { - - ConfirmedFriends newPanel = new ConfirmedFriends("confirmedFriends", userId); - newPanel.setOutputMarkupId(true); - confirmedFriends.replaceWith(newPanel); - confirmedFriends=newPanel; //keep reference up to date! - if(target != null) { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - - } - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyMessages.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyMessages.html deleted file mode 100644 index faa0978747c4..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyMessages.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - -
    -
    - - - -
    - -
    - -
    - - -
    [panel content]
    - -
    - - - -
    -
    - - - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyMessages.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyMessages.java deleted file mode 100644 index f7a577cdd128..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyMessages.java +++ /dev/null @@ -1,122 +0,0 @@ -/** - * 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.tool.pages; - - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.RepeatingView; -import org.apache.wicket.model.ResourceModel; -import org.sakaiproject.profile2.tool.pages.panels.ComposeNewMessage; -import org.sakaiproject.profile2.tool.pages.panels.MessageThreadsView; -import org.sakaiproject.profile2.tool.pages.panels.MessageView; - -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -@Slf4j -public class MyMessages extends BasePage { - - private Panel tabPanel; - - public MyMessages() { - renderMyMessages(null); - } - - - public MyMessages(final String threadId) { - renderMyMessages(threadId); - } - - - private void renderMyMessages(final String threadId) { - - log.debug("MyMessages( {})", threadId); - - disableLink(myMessagesLink); - - //get user - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - - - //action buttons - Form tabs = new Form("tabs"); - RepeatingView buttons = new RepeatingView("repeater"); - - buttons.add(new AjaxFallbackButton(buttons.newChildId(), new ResourceModel("link.messages.mymessages"), tabs) { - private static final long serialVersionUID = 1L; - - @Override - public void onSubmit(Optional targetOptional) { - log.debug("Showing message list"); - targetOptional.ifPresent(target -> { - switchContentPanel(new MessageThreadsView("tabPanel"), target); - }); - } - }); - buttons.add(new AjaxFallbackButton(buttons.newChildId(), new ResourceModel("link.messages.compose"), tabs) { - private static final long serialVersionUID = 1L; - - @Override - public void onSubmit(Optional targetOptional) { - log.debug("Showing compose panel"); - targetOptional.ifPresent(target -> { - switchContentPanel(new ComposeNewMessage("tabPanel"), target); - }); - } - }); - - tabs.add(buttons); - add(tabs); - - if(StringUtils.isNotBlank(threadId)){ - //default view for viewing message - tabPanel = new MessageView("tabPanel", currentUserUuid, threadId); - } else { - //default view for viewing threads - tabPanel = new MessageThreadsView("tabPanel"); - } - - tabPanel.setOutputMarkupId(true); - add(tabPanel); - - } - - - private void switchContentPanel(Panel replacement, AjaxRequestTarget target) { - - replacement.setOutputMarkupId(true); - tabPanel.replaceWith(replacement); - if(target != null) { - target.add(replacement); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - - //must keep reference up to date - tabPanel=replacement; - - } - - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPicture.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPicture.java index 561a4087cdf1..94ed330a2819 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPicture.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPicture.java @@ -20,9 +20,7 @@ import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.model.Model; -import org.sakaiproject.profile2.model.GalleryImage; import org.sakaiproject.profile2.tool.components.ErrorLevelsFeedbackMessageFilter; -import org.sakaiproject.profile2.tool.pages.panels.GalleryImageEdit; /** * Component for current user to view one of their own pictures, with ability @@ -30,22 +28,9 @@ */ public class MyPicture extends BasePage { - public MyPicture(String userId, GalleryImage galleryImage, - long galleryPageIndex) { + public MyPicture(String userId) { configureFeedback(); - - Label galleryImageHeading = new Label("galleryImageHeading", - new Model(galleryImage.getDisplayName())); - add(galleryImageHeading); - - Form galleryImageForm = new Form("galleryImageForm"); - galleryImageForm.setOutputMarkupId(true); - add(galleryImageForm); - - GalleryImageEdit galleryImageEdit = new GalleryImageEdit( - "galleryImageEdit", userId, galleryImage, galleryPageIndex); - galleryImageForm.add(galleryImageEdit); } private void configureFeedback() { diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPictures.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPictures.html deleted file mode 100644 index 4ef2fff9750b..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPictures.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPictures.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPictures.java deleted file mode 100644 index e1ad0eb71f8c..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPictures.java +++ /dev/null @@ -1,372 +0,0 @@ -/** - * 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.tool.pages; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.FilenameUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.upload.FileUpload; -import org.apache.wicket.markup.html.form.upload.MultiFileUploadField; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.markup.html.navigation.paging.PagingNavigator; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.GridView; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.util.file.Files; -import org.apache.wicket.util.file.Folder; -import org.apache.wicket.util.lang.Bytes; - -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.tool.components.GalleryImageRenderer; -import org.sakaiproject.profile2.tool.components.IconWithToolTip; -import org.sakaiproject.profile2.tool.dataproviders.GalleryImageDataProvider; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -/** - * Main gallery component for viewing the current user's picture gallery. - * - * @author d.b.robinson@lancaster.ac.uk - */ -@Slf4j -public class MyPictures extends BasePage { - - private List addPictureFiles = new ArrayList(); - private FileListView addPictureListView; - private Folder addPictureUploadFolder; - private GridView gridView; - - /** - * Constructor for current user. - */ - public MyPictures() { - renderMyPictures(0, sakaiProxy.getCurrentUserId()); - } - - /** - * Constructor for current user. - * - * @param pageToDisplay - * gallery page index used to set the page the user is returned - * to after making a change to the gallery. - */ - public MyPictures(long pageToDisplay) { - renderMyPictures(pageToDisplay, sakaiProxy.getCurrentUserId()); - } - - /** - * Does the actual rendering of the page - */ - private void renderMyPictures(long pageToDisplay, String userUuid) { - - log.debug("MyPictures()"); - - disableLink(myPicturesLink); - - createGalleryForm(userUuid, pageToDisplay); - createAddPictureForm(userUuid); - } - - private void createAddPictureForm(final String userUuid) { - - addPictureUploadFolder = new Folder(System - .getProperty("java.io.tmpdir"), "addPicturesUploadFolder"); - addPictureUploadFolder.mkdirs(); - - //file feedback will be redirected here - final FeedbackPanel fileFeedback = new FeedbackPanel("fileFeedback"); - fileFeedback.setOutputMarkupId(true); - - Form addPictureForm = new FileUploadForm("form", userUuid, fileFeedback); - addPictureForm.add(fileFeedback); - addPictureForm.setOutputMarkupId(true); - add(addPictureForm); - - Label invalidFileTypeMessageLabel = new Label("invalidFileTypeMessage",new ResourceModel("pictures.filetypewarning")); - invalidFileTypeMessageLabel.setMarkupId("invalidFileTypeMessage"); - invalidFileTypeMessageLabel.setOutputMarkupId(true); - addPictureForm.add(invalidFileTypeMessageLabel); - - WebMarkupContainer addPictureContainer = new WebMarkupContainer( - "addPictureContainer"); - addPictureContainer.add(new Label("addPictureLabel", new ResourceModel( - "pictures.addpicture"))); - - addPictureContainer.add(new MultiFileUploadField("choosePicture", - new PropertyModel>(addPictureForm, - "uploads"), ProfileConstants.MAX_GALLERY_FILE_UPLOADS)); - - IndicatingAjaxButton submitButton = new IndicatingAjaxButton( - "submitPicture", new ResourceModel("button.gallery.upload")) { - - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - target.add(fileFeedback); - } - - @Override - protected void onError(AjaxRequestTarget target) { - log.debug("MyPictures.onSubmit validation failed."); - target.add(fileFeedback); - } - - }; - addPictureContainer.add(submitButton); - - addPictureContainer - .add(new IconWithToolTip("galleryImageUploadToolTip", - ProfileConstants.INFO_ICON, new StringResourceModel( - "text.gallery.upload.tooltip") - .setParameters(sakaiProxy.getMaxProfilePictureSize() * ProfileConstants.MAX_GALLERY_FILE_UPLOADS))); - - addPictureForm.add(addPictureContainer); - - addPictureFiles.addAll(Arrays - .asList(addPictureUploadFolder.listFiles())); - addPictureListView = new FileListView("fileList", addPictureFiles); - addPictureForm.add(addPictureListView); - } - - private void createGalleryForm(final String userUuid, long pageToDisplay) { - - Label galleryHeading = new Label("galleryHeading", new ResourceModel( - "heading.pictures.my.pictures")); - add(galleryHeading); - - Form galleryForm = new Form("galleryForm"); - galleryForm.setOutputMarkupId(true); - - populateGallery(galleryForm, userUuid, pageToDisplay); - add(galleryForm); - - Label addPictureHeading = new Label("addPictureHeading", - new ResourceModel("heading.pictures.addpicture")); - add(addPictureHeading); - } - - /** - * Populates gallery using GalleryImageDataProvider for given user. The - * pageToDisplay allows us to return the user to the gallery page they were - * previously viewing after removing an image from the gallery. - */ - private void populateGallery(Form galleryForm, final String userUuid, - long pageToDisplay) { - - IDataProvider dataProvider = new GalleryImageDataProvider(userUuid); - - long numImages = dataProvider.size(); - - gridView = new GridView("rows", dataProvider) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(Item item) { - - final GalleryImage image = (GalleryImage) item.getModelObject(); - - final GalleryImageRenderer galleryImageThumbnailRenderer = new GalleryImageRenderer( - "galleryImageThumbnailRenderer", image - .getThumbnailResource()); - - AjaxLink galleryImageLink = new AjaxLink("galleryItem") { - - @Override - public void onClick(AjaxRequestTarget target) { - setResponsePage(new MyPicture(userUuid, image, getCurrentPage())); - } - - }; - galleryImageLink.add(galleryImageThumbnailRenderer); - - item.add(galleryImageLink); - } - - @Override - protected void populateEmptyItem(Item item) { - - Link galleryImageLink = new Link("galleryItem") { - @Override - public void onClick() { - - } - }; - - galleryImageLink.add(new Label("galleryImageThumbnailRenderer")); - item.add(galleryImageLink); - } - }; - gridView.setRows(3); - gridView.setColumns(4); - - galleryForm.add(gridView); - - Label noPicturesLabel; - - //pager - if (numImages == 0) { - galleryForm.add(new PagingNavigator("navigator", gridView).setVisible(false)); - noPicturesLabel = new Label("noPicturesLabel", new ResourceModel("text.gallery.pictures.num.none")); - } else if (numImages <= ProfileConstants.MAX_GALLERY_IMAGES_PER_PAGE) { - galleryForm.add(new PagingNavigator("navigator", gridView).setVisible(false)); - noPicturesLabel = new Label("noPicturesLabel"); - noPicturesLabel.setVisible(false); - } else { - galleryForm.add(new PagingNavigator("navigator", gridView)); - noPicturesLabel = new Label("noPicturesLabel"); - noPicturesLabel.setVisible(false); - } - - - - - - galleryForm.add(noPicturesLabel); - - // set page to display - if (pageToDisplay > 0) { - if (pageToDisplay < gridView.getPageCount()) { - gridView.setCurrentPage(pageToDisplay); - } else { - // default to last page for add/remove operations - gridView.setCurrentPage(gridView.getPageCount() - 1); - } - } else { - gridView.setCurrentPage(0); - } - } - - private class FileListView extends ListView { - - private static final long serialVersionUID = 1L; - - public FileListView(String name, final List files) { - super(name, files); - } - - protected void populateItem(ListItem listItem) { - final File file = (File) listItem.getModelObject(); - listItem.add(new Label("file", file.getName())); - listItem.add(new Link("delete") { - public void onClick() { - Files.remove(file); - } - }); - } - } - - private class FileUploadForm extends Form { - - private static final long serialVersionUID = 1L; - - private final Collection uploads = new ArrayList(); - - private final String userUuid; - - private FeedbackPanel fileFeedback; - - public FileUploadForm(String id, String userUuid, FeedbackPanel fileFeedback) { - super(id); - - this.userUuid = userUuid; - this.fileFeedback = fileFeedback; - - // set form to multipart mode - setMultiPart(true); - - setMaxSize(Bytes.megabytes(sakaiProxy.getMaxProfilePictureSize() - * ProfileConstants.MAX_GALLERY_FILE_UPLOADS)); - } - - public Collection getUploads() { - return uploads; - } - - protected void onSubmit() { - - if (uploads.size() == 0) { - error(new StringResourceModel("error.gallery.upload.warning", this, null).getString()); - return; - } - - Iterator filesToUpload = uploads.iterator(); - - while (filesToUpload.hasNext()) { - final FileUpload upload = filesToUpload.next(); - - if (upload == null) { - log.error("picture upload was null."); - error(new StringResourceModel("error.no.file.uploaded", this, null).getString()); - return; - } else if (upload.getSize() == 0) { - log.error("picture upload was empty."); - error(new StringResourceModel("error.empty.file.uploaded", this, null).getString()); - return; - } else if (!ProfileUtils.checkContentTypeForProfileImage(upload - .getContentType())) { - log.error("attempted to upload invalid file type to gallery"); - error(new StringResourceModel("error.invalid.image.type", this, null).getString()); - return; - } - - byte[] imageBytes = upload.getBytes(); - - if (!imageLogic.addGalleryImage( - userUuid, imageBytes, upload.getContentType(), - FilenameUtils.getName(upload.getClientFileName()))) { - - log.error("unable to save gallery image"); - error(new StringResourceModel("error.file.save.failed", this, null).getString()); - return; - } - - // post upload event - sakaiProxy.postEvent( - ProfileConstants.EVENT_GALLERY_IMAGE_UPLOAD, - "/profile/" + sakaiProxy.getCurrentUserId(), true); - } - - // post to walls if wall enabled - if (true == sakaiProxy.isWallEnabledGlobally()) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_GALLERY_IMAGE_UPLOAD, sakaiProxy.getCurrentUserId()); - } - - setResponsePage(new MyPictures(gridView.getPageCount())); - } - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.html index 378c8ca1350f..bf34dd05497d 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.html @@ -27,175 +27,52 @@
    -
    - - - -
    +
    + +
    + +
    + +

    [Preferences]

    + +
    + + +
    +

    [profile image settings]

    +
    [imageSettingsText]
    + +
    +
    [officialImageLabel]
    +
    + +
    +
    + +
    +
    + + +
    +
    +
    + +
    + +
    + +
    + +
    [formFeedback]
    + +
    -
    +
    -

    [Preferences]

    - -
    - - -

    [email notifications]

    -
    [send me email when]
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
     [On][Off]
    [requestsLabel] - - - - - -
    [confirmsLabel] - - - - - -
    [messageNewLabel] - - - - - -
    [messageReplyLabel] - - - - - -
    [wallItemNewLabel] - - - - - -
    [wallItemNewLabel] - - - - - -
    -
    - - -
    -

    [profile image settings]

    -
    [imageSettingsText]
    - -
    -
    [officialImageLabel]
    -
    - -
    -
    - -
    -
    - - -
    -
    -
    - - -
    -

    [widget settings]

    -
    [widgetSettingsText]
    - -
    - - - - - - - - - - - - - - - - -
    [kudosLabel] - - - [kudosToolTip]
    [galleryFeedLabel] - - - [galleryFeedToolTip]
    [onlineStatusLabel] - - - [onlineStatusToolTip]
    -
    -
    - -
    - -
    - -
    - -
    [formFeedback]
    - -
    - -
    - - - - -
    +
    diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.java index 642d9947a179..c0abc392242c 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPreferences.java @@ -15,31 +15,22 @@ */ package org.sakaiproject.profile2.tool.pages; - import lombok.extern.slf4j.Slf4j; import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel; import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.Radio; -import org.apache.wicket.markup.html.form.RadioGroup; -import org.apache.wicket.markup.html.panel.EmptyPanel; import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; import org.sakaiproject.profile2.exception.ProfilePreferencesNotDefinedException; import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.tool.components.IconWithToolTip; import org.sakaiproject.profile2.util.ProfileConstants; @Slf4j @@ -95,157 +86,6 @@ public MyPreferences() { Form form = new Form("form", preferencesModel); form.setOutputMarkupId(true); - - //EMAIL SECTION - - //email settings - form.add(new Label("emailSectionHeading", new ResourceModel("heading.section.email"))); - form.add(new Label("emailSectionText", new StringResourceModel("preferences.email.message").setParameters(emailAddress)).setEscapeModelStrings(false)); - - //on/off labels - form.add(new Label("prefOn", new ResourceModel("preference.option.on"))); - form.add(new Label("prefOff", new ResourceModel("preference.option.off"))); - - //request emails - final RadioGroup emailRequests = new RadioGroup("requestEmailEnabled", new PropertyModel(preferencesModel, "requestEmailEnabled")); - Radio requestsOn = new Radio("requestsOn", new Model(Boolean.TRUE)); - requestsOn.setMarkupId("requestsoninput"); - requestsOn.setOutputMarkupId(true); - emailRequests.add(requestsOn); - Radio requestsOff = new Radio("requestsOff", new Model(Boolean.FALSE)); - requestsOff.setMarkupId("requestsoffinput"); - requestsOff.setOutputMarkupId(true); - emailRequests.add(requestsOff); - emailRequests.add(new Label("requestsLabel", new ResourceModel("preferences.email.requests"))); - form.add(emailRequests); - - //updater - emailRequests.add(new AjaxFormChoiceComponentUpdatingBehavior() { - private static final long serialVersionUID = 1L; - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //visibility for request emails - emailRequests.setVisible(sakaiProxy.isConnectionsEnabledGlobally()); - - //confirm emails - final RadioGroup emailConfirms = new RadioGroup("confirmEmailEnabled", new PropertyModel(preferencesModel, "confirmEmailEnabled")); - Radio confirmsOn = new Radio("confirmsOn", new Model(Boolean.TRUE)); - confirmsOn.setMarkupId("confirmsoninput"); - confirmsOn.setOutputMarkupId(true); - emailConfirms.add(confirmsOn); - Radio confirmsOff = new Radio("confirmsOff", new Model(Boolean.FALSE)); - confirmsOff.setMarkupId("confirmsoffinput"); - confirmsOff.setOutputMarkupId(true); - emailConfirms.add(confirmsOff); - emailConfirms.add(new Label("confirmsLabel", new ResourceModel("preferences.email.confirms"))); - form.add(emailConfirms); - - //updater - emailConfirms.add(new AjaxFormChoiceComponentUpdatingBehavior() { - private static final long serialVersionUID = 1L; - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //visibility for confirm emails - emailConfirms.setVisible(sakaiProxy.isConnectionsEnabledGlobally()); - - //new message emails - final RadioGroup emailNewMessage = new RadioGroup("messageNewEmailEnabled", new PropertyModel(preferencesModel, "messageNewEmailEnabled")); - Radio messageNewOn = new Radio("messageNewOn", new Model(Boolean.valueOf(true))); - messageNewOn.setMarkupId("messagenewoninput"); - messageNewOn.setOutputMarkupId(true); - emailNewMessage.add(messageNewOn); - Radio messageNewOff = new Radio("messageNewOff", new Model(Boolean.valueOf(false))); - messageNewOff.setMarkupId("messagenewoffinput"); - messageNewOff.setOutputMarkupId(true); - emailNewMessage.add(messageNewOff); - emailNewMessage.add(new Label("messageNewLabel", new ResourceModel("preferences.email.message.new"))); - form.add(emailNewMessage); - - //updater - emailNewMessage.add(new AjaxFormChoiceComponentUpdatingBehavior() { - private static final long serialVersionUID = 1L; - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - emailNewMessage.setVisible(sakaiProxy.isMessagingEnabledGlobally()); - - //message reply emails - final RadioGroup emailReplyMessage = new RadioGroup("messageReplyEmailEnabled", new PropertyModel(preferencesModel, "messageReplyEmailEnabled")); - Radio messageReplyOn = new Radio("messageReplyOn", new Model(Boolean.valueOf(true))); - messageReplyOn.setMarkupId("messagereplyoninput"); - messageNewOn.setOutputMarkupId(true); - emailReplyMessage.add(messageReplyOn); - Radio messageReplyOff = new Radio("messageReplyOff", new Model(Boolean.valueOf(false))); - messageReplyOff.setMarkupId("messagereplyoffinput"); - messageNewOff.setOutputMarkupId(true); - emailReplyMessage.add(messageReplyOff); - emailReplyMessage.add(new Label("messageReplyLabel", new ResourceModel("preferences.email.message.reply"))); - form.add(emailReplyMessage); - - //updater - emailReplyMessage.add(new AjaxFormChoiceComponentUpdatingBehavior() { - private static final long serialVersionUID = 1L; - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - emailReplyMessage.setVisible(sakaiProxy.isMessagingEnabledGlobally()); - - // new wall item notification emails - final RadioGroup wallItemNew = new RadioGroup("wallItemNewEmailEnabled", new PropertyModel(preferencesModel, "wallItemNewEmailEnabled")); - Radio wallItemNewOn = new Radio("wallItemNewOn", new Model(Boolean.valueOf(true))); - wallItemNewOn.setMarkupId("wallitemnewoninput"); - wallItemNewOn.setOutputMarkupId(true); - wallItemNew.add(wallItemNewOn); - Radio wallItemNewOff = new Radio("wallItemNewOff", new Model(Boolean.valueOf(false))); - wallItemNewOff.setMarkupId("wallitemnewoffinput"); - wallItemNewOff.setOutputMarkupId(true); - wallItemNew.add(wallItemNewOff); - wallItemNew.add(new Label("wallItemNewLabel", new ResourceModel("preferences.email.wall.new"))); - form.add(wallItemNew); - - //updater - wallItemNew.add(new AjaxFormChoiceComponentUpdatingBehavior() { - private static final long serialVersionUID = 1L; - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //visibility for wall items - wallItemNew.setVisible(sakaiProxy.isWallEnabledGlobally()); - - // added to new worksite emails - final RadioGroup worksiteNew = new RadioGroup("worksiteNewEmailEnabled", new PropertyModel(preferencesModel, "worksiteNewEmailEnabled")); - Radio worksiteNewOn = new Radio("worksiteNewOn", new Model(Boolean.valueOf(true))); - worksiteNewOn.setMarkupId("worksitenewoninput"); - worksiteNewOn.setOutputMarkupId(true); - worksiteNew.add(worksiteNewOn); - Radio worksiteNewOff = new Radio("worksiteNewOff", new Model(Boolean.valueOf(false))); - worksiteNewOff.setMarkupId("worksitenewoffinput"); - worksiteNewOff.setOutputMarkupId(true); - worksiteNew.add(worksiteNewOff); - worksiteNew.add(new Label("worksiteNewLabel", new ResourceModel("preferences.email.worksite.new"))); - form.add(worksiteNew); - - //updater - worksiteNew.add(new AjaxFormChoiceComponentUpdatingBehavior() { - private static final long serialVersionUID = 1L; - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - // IMAGE SECTION //only one of these can be selected at a time WebMarkupContainer is = new WebMarkupContainer("imageSettingsContainer"); @@ -327,103 +167,6 @@ protected void onUpdate(AjaxRequestTarget target) { } form.add(is); - - - // WIDGET SECTION - WebMarkupContainer ws = new WebMarkupContainer("widgetSettingsContainer"); - ws.setOutputMarkupId(true); - int visibleWidgetCount = 0; - - //widget settings - ws.add(new Label("widgetSettingsHeading", new ResourceModel("heading.section.widget"))); - ws.add(new Label("widgetSettingsText", new ResourceModel("preferences.widget.message"))); - - //kudos - WebMarkupContainer kudosContainer = new WebMarkupContainer("kudosContainer"); - kudosContainer.add(new Label("kudosLabel", new ResourceModel("preferences.widget.kudos"))); - CheckBox kudosSetting = new CheckBox("kudosSetting", new PropertyModel(preferencesModel, "showKudos")); - kudosSetting.setMarkupId("kudosinput"); - kudosSetting.setOutputMarkupId(true); - kudosContainer.add(kudosSetting); - //tooltip - kudosContainer.add(new IconWithToolTip("kudosToolTip", ProfileConstants.INFO_ICON, new ResourceModel("preferences.widget.kudos.tooltip"))); - - - //updater - kudosSetting.add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - ws.add(kudosContainer); - if(sakaiProxy.isMyKudosEnabledGlobally()) { - visibleWidgetCount++; - } else { - kudosContainer.setVisible(false); - } - - - //gallery feed - WebMarkupContainer galleryFeedContainer = new WebMarkupContainer("galleryFeedContainer"); - galleryFeedContainer.add(new Label("galleryFeedLabel", new ResourceModel("preferences.widget.gallery"))); - CheckBox galleryFeedSetting = new CheckBox("galleryFeedSetting", new PropertyModel(preferencesModel, "showGalleryFeed")); - galleryFeedSetting.setMarkupId("galleryfeedsettinginput"); - galleryFeedSetting.setOutputMarkupId(true); - galleryFeedContainer.add(galleryFeedSetting); - //tooltip - galleryFeedContainer.add(new IconWithToolTip("galleryFeedToolTip", ProfileConstants.INFO_ICON, new ResourceModel("preferences.widget.gallery.tooltip"))); - - //updater - galleryFeedSetting.add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - ws.add(galleryFeedContainer); - if(sakaiProxy.isProfileGalleryEnabledGlobally()) { - visibleWidgetCount++; - } else { - galleryFeedContainer.setVisible(false); - } - - - //online status - WebMarkupContainer onlineStatusContainer = new WebMarkupContainer("onlineStatusContainer"); - onlineStatusContainer.add(new Label("onlineStatusLabel", new ResourceModel("preferences.widget.onlinestatus"))); - CheckBox onlineStatusSetting = new CheckBox("onlineStatusSetting", new PropertyModel(preferencesModel, "showOnlineStatus")); - onlineStatusSetting.setMarkupId("onlinestatussettinginput"); - onlineStatusSetting.setOutputMarkupId(true); - onlineStatusContainer.add(onlineStatusSetting); - //tooltip - onlineStatusContainer.add(new IconWithToolTip("onlineStatusToolTip", ProfileConstants.INFO_ICON, new ResourceModel("preferences.widget.onlinestatus.tooltip"))); - - //updater - onlineStatusSetting.add(new AjaxFormComponentUpdatingBehavior("change") { - private static final long serialVersionUID = 1L; - - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - ws.add(onlineStatusContainer); - - if(sakaiProxy.isOnlineStatusEnabledGlobally()){ - visibleWidgetCount++; - } else { - onlineStatusContainer.setVisible(false); - } - - // Hide widget container if nothing to show - if(visibleWidgetCount == 0) { - ws.setVisible(false); - } - - form.add(ws); //submit button IndicatingAjaxButton submitButton = new IndicatingAjaxButton("submit", form) { @@ -459,20 +202,13 @@ protected void onSubmit(AjaxRequestTarget target) { target.add(formFeedback); } - - }; submitButton.setModel(new ResourceModel("button.save.settings")); submitButton.setDefaultFormProcessing(false); form.add(submitButton); add(form); - } - - - - } diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPrivacy.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPrivacy.html deleted file mode 100644 index dcba91c040f6..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPrivacy.html +++ /dev/null @@ -1,271 +0,0 @@ - - - - - - - - - -
    -
    -
    -
    -

    [Privacy settings]

    -
    [can't change]
    -
    -
    - - -
    -
    - [profileImageLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [basicInfoLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [contactInfoLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [staffInfoLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [studentInfoLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [businessInfoLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [socialNetworkingInfoLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [personalInfoLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [birthYearLabel] -
    -
    - - -
    -
    - - -
    -
    - [myFriendsLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [onlineStatusLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [myStatusLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [myPicturesLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [messagesLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [myKudosLabel] -
    -
    - -
    - -
    -
    -
    - - -
    -
    - [myWallLabel] -
    -
    - -
    - -
    -
    -
    - -
    - -
    - -
    - -
    - -
    [formFeedback]
    - -
    -
    -
    -
    - - - - - -
    - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPrivacy.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPrivacy.java deleted file mode 100644 index 75f4772089db..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyPrivacy.java +++ /dev/null @@ -1,495 +0,0 @@ -/** - * 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.tool.pages; - - -import java.util.ArrayList; -import java.util.LinkedHashMap; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.CheckBox; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.model.CompoundPropertyModel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; - -import org.sakaiproject.profile2.exception.ProfilePrivacyNotDefinedException; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.HashMapChoiceRenderer; -import org.sakaiproject.profile2.util.ProfileConstants; - -@Slf4j -public class MyPrivacy extends BasePage { - - private transient ProfilePrivacy profilePrivacy; - - public MyPrivacy() { - - log.debug("MyPrivacy()"); - - disableLink(myPrivacyLink); - - //get current user - final String userUuid = sakaiProxy.getCurrentUserId(); - - //get the privacy record for this user from the database, or a default if none exists - profilePrivacy = privacyLogic.getPrivacyRecordForUser(userUuid); - - //if null, throw exception - if(profilePrivacy == null) { - throw new ProfilePrivacyNotDefinedException("Couldn't retrieve privacy record for " + userUuid); - } - - Label heading = new Label("heading", new ResourceModel("heading.privacy")); - add(heading); - - Label infoLocked = new Label("infoLocked"); - infoLocked.setOutputMarkupPlaceholderTag(true); - infoLocked.setVisible(false); - add(infoLocked); - - //feedback for form submit action - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - final String formFeedbackId = formFeedback.getMarkupId(); - add(formFeedback); - - - - //create model - CompoundPropertyModel privacyModel = new CompoundPropertyModel(profilePrivacy); - - //setup form - Form form = new Form("form", privacyModel); - form.setOutputMarkupId(true); - - - //setup LinkedHashMap of privacy options for strict things - final LinkedHashMap privacySettingsStrict = new LinkedHashMap(); - privacySettingsStrict.put(ProfileConstants.PRIVACY_OPTION_EVERYONE, new StringResourceModel("privacy.option.everyone", this,null).getString()); - privacySettingsStrict.put(ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS, new StringResourceModel("privacy.option.onlyfriends", this,null).getString()); - privacySettingsStrict.put(ProfileConstants.PRIVACY_OPTION_ONLYME, new StringResourceModel("privacy.option.onlyme", this,null).getString()); - - //model that wraps our options - IModel dropDownModelStrict = new Model() { - public ArrayList getObject() { - return new ArrayList<>(privacySettingsStrict.keySet()); - } - }; - - //setup LinkedHashMap of privacy options for more relaxed things - final LinkedHashMap privacySettingsRelaxed = new LinkedHashMap(); - privacySettingsRelaxed.put(ProfileConstants.PRIVACY_OPTION_EVERYONE, new StringResourceModel("privacy.option.everyone", this,null).getString()); - privacySettingsRelaxed.put(ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS, new StringResourceModel("privacy.option.onlyfriends", this,null).getString()); - - //model that wraps our options - IModel dropDownModelRelaxed = new Model() { - public ArrayList getObject() { - return new ArrayList<>(privacySettingsRelaxed.keySet()); - } - }; - - //setup LinkedHashMap of privacy options for super duper strict things! - final LinkedHashMap privacySettingsSuperStrict = new LinkedHashMap(); - privacySettingsSuperStrict.put(ProfileConstants.PRIVACY_OPTION_ONLYFRIENDS, new StringResourceModel("privacy.option.onlyfriends", this,null).getString()); - privacySettingsSuperStrict.put(ProfileConstants.PRIVACY_OPTION_NOBODY, new StringResourceModel("privacy.option.nobody", this,null).getString()); - - //model that wraps our options - IModel dropDownModelSuperStrict = new Model() { - public ArrayList getObject() { - return new ArrayList<>(privacySettingsSuperStrict.keySet()); - } - }; - - //when using DDC with a compoundPropertyModel we use this constructor: DDC(String,IModel>,IChoiceRenderer) - //and the ID of the DDC field maps to the field in the CompoundPropertyModel - - //the AjaxFormComponentUpdatingBehavior is to allow the DDC and checkboxes to fadeaway any error/success message - //that might be visible since the form has changed and it needs to be submitted again for it to take effect - - //profile image privacy - WebMarkupContainer profileImageContainer = new WebMarkupContainer("profileImageContainer"); - profileImageContainer.add(new Label("profileImageLabel", new ResourceModel("privacy.profileimage"))); - DropDownChoice profileImageChoice = new DropDownChoice("profileImage", dropDownModelRelaxed, new HashMapChoiceRenderer(privacySettingsRelaxed)); - profileImageChoice.setMarkupId("imageprivacyinput"); - profileImageChoice.setOutputMarkupId(true); - profileImageContainer.add(profileImageChoice); - form.add(profileImageContainer); - //updater - profileImageChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - - - //basicInfo privacy - WebMarkupContainer basicInfoContainer = new WebMarkupContainer("basicInfoContainer"); - basicInfoContainer.add(new Label("basicInfoLabel", new ResourceModel("privacy.basicinfo"))); - DropDownChoice basicInfoChoice = new DropDownChoice("basicInfo", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - basicInfoChoice.setMarkupId("basicinfoprivacyinput"); - basicInfoChoice.setOutputMarkupId(true); - basicInfoContainer.add(basicInfoChoice); - form.add(basicInfoContainer); - //updater - basicInfoChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //contactInfo privacy - WebMarkupContainer contactInfoContainer = new WebMarkupContainer("contactInfoContainer"); - contactInfoContainer.add(new Label("contactInfoLabel", new ResourceModel("privacy.contactinfo"))); - DropDownChoice contactInfoChoice = new DropDownChoice("contactInfo", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - contactInfoChoice.setMarkupId("contactinfoprivacyinput"); - contactInfoChoice.setOutputMarkupId(true); - contactInfoContainer.add(contactInfoChoice); - form.add(contactInfoContainer); - //updater - contactInfoChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //staffInfo privacy - WebMarkupContainer staffInfoContainer = new WebMarkupContainer("staffInfoContainer"); - staffInfoContainer.add(new Label("staffInfoLabel", new ResourceModel("privacy.staffinfo"))); - DropDownChoice staffInfoChoice = new DropDownChoice("staffInfo", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - staffInfoChoice.setMarkupId("staffinfoprivacyinput"); - staffInfoChoice.setOutputMarkupId(true); - staffInfoContainer.add(staffInfoChoice); - form.add(staffInfoContainer); - //updater - staffInfoChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //studentInfo privacy - WebMarkupContainer studentInfoContainer = new WebMarkupContainer("studentInfoContainer"); - studentInfoContainer.add(new Label("studentInfoLabel", new ResourceModel("privacy.studentinfo"))); - DropDownChoice studentInfoChoice = new DropDownChoice("studentInfo", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - studentInfoChoice.setMarkupId("studentinfoprivacyinput"); - studentInfoChoice.setOutputMarkupId(true); - studentInfoContainer.add(studentInfoChoice); - form.add(studentInfoContainer); - //updater - studentInfoChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //businesInfo privacy - WebMarkupContainer businessInfoContainer = new WebMarkupContainer("businessInfoContainer"); - businessInfoContainer.add(new Label("businessInfoLabel", new ResourceModel("privacy.businessinfo"))); - DropDownChoice businessInfoChoice = new DropDownChoice("businessInfo", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - businessInfoChoice.setMarkupId("businessinfoprivacyinput"); - businessInfoChoice.setOutputMarkupId(true); - businessInfoContainer.add(businessInfoChoice); - form.add(businessInfoContainer); - //updater - businessInfoChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - businessInfoContainer.setVisible(sakaiProxy.isBusinessProfileEnabled()); - - //socialNetworkingInfo privacy - WebMarkupContainer socialNetworkingInfoContainer = new WebMarkupContainer("socialNetworkingInfoContainer"); - socialNetworkingInfoContainer.add(new Label("socialNetworkingInfoLabel", new ResourceModel("privacy.socialinfo"))); - DropDownChoice socialNetworkingInfoChoice = new DropDownChoice("socialNetworkingInfo", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - socialNetworkingInfoChoice.setMarkupId("socialinfoprivacyinput"); - socialNetworkingInfoChoice.setOutputMarkupId(true); - socialNetworkingInfoContainer.add(socialNetworkingInfoChoice); - form.add(socialNetworkingInfoContainer); - //updater - socialNetworkingInfoChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - - //personalInfo privacy - WebMarkupContainer personalInfoContainer = new WebMarkupContainer("personalInfoContainer"); - personalInfoContainer.add(new Label("personalInfoLabel", new ResourceModel("privacy.personalinfo"))); - DropDownChoice personalInfoChoice = new DropDownChoice("personalInfo", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - personalInfoChoice.setMarkupId("personalinfoprivacyinput"); - personalInfoChoice.setOutputMarkupId(true); - personalInfoContainer.add(personalInfoChoice); - form.add(personalInfoContainer); - //updater - personalInfoChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //birthYear privacy - WebMarkupContainer birthYearContainer = new WebMarkupContainer("birthYearContainer"); - birthYearContainer.add(new Label("birthYearLabel", new ResourceModel("privacy.birthyear"))); - CheckBox birthYearCheckbox = new CheckBox("birthYear", new PropertyModel<>(privacyModel, "showBirthYear")); - birthYearCheckbox.setMarkupId("birthyearprivacyinput"); - birthYearCheckbox.setOutputMarkupId(true); - birthYearContainer.add(birthYearCheckbox); - form.add(birthYearContainer); - //updater - birthYearCheckbox.add(new AjaxFormComponentUpdatingBehavior("click") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - //myFriends privacy - WebMarkupContainer myFriendsContainer = new WebMarkupContainer("myFriendsContainer"); - myFriendsContainer.add(new Label("myFriendsLabel", new ResourceModel("privacy.myfriends"))); - DropDownChoice myFriendsChoice = new DropDownChoice("myFriends", dropDownModelStrict, new HashMapChoiceRenderer(privacySettingsStrict)); - myFriendsChoice.setMarkupId("friendsprivacyinput"); - myFriendsChoice.setOutputMarkupId(true); - myFriendsContainer.add(myFriendsChoice); - form.add(myFriendsContainer); - //updater - myFriendsChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - myFriendsContainer.setVisible(sakaiProxy.isConnectionsEnabledGlobally()); - - //myStatus privacy - WebMarkupContainer myStatusContainer = new WebMarkupContainer("myStatusContainer"); - myStatusContainer.add(new Label("myStatusLabel", new ResourceModel("privacy.mystatus"))); - DropDownChoice myStatusChoice = new DropDownChoice("myStatus", dropDownModelRelaxed, new HashMapChoiceRenderer(privacySettingsRelaxed)); - myStatusChoice.setMarkupId("statusprivacyinput"); - myStatusChoice.setOutputMarkupId(true); - myStatusContainer.add(myStatusChoice); - form.add(myStatusContainer); - //updater - myStatusChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - myStatusContainer.setVisible(sakaiProxy.isProfileStatusEnabled()); - - // gallery privacy - WebMarkupContainer myPicturesContainer = new WebMarkupContainer("myPicturesContainer"); - myPicturesContainer.add(new Label("myPicturesLabel", new ResourceModel("privacy.mypictures"))); - DropDownChoice myPicturesChoice = new DropDownChoice("myPictures", dropDownModelRelaxed, new HashMapChoiceRenderer(privacySettingsRelaxed)); - myPicturesChoice.setMarkupId("picturesprivacyinput"); - myPicturesChoice.setOutputMarkupId(true); - myPicturesContainer.add(myPicturesChoice); - form.add(myPicturesContainer); - - myPicturesChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - myPicturesContainer.setVisible(sakaiProxy.isProfileGalleryEnabledGlobally()); - - // messages privacy - WebMarkupContainer messagesContainer = new WebMarkupContainer("messagesContainer"); - messagesContainer.add(new Label("messagesLabel", new ResourceModel("privacy.messages"))); - DropDownChoice messagesChoice = new DropDownChoice("messages", dropDownModelSuperStrict, new HashMapChoiceRenderer(privacySettingsSuperStrict)); - messagesChoice.setMarkupId("messagesprivacyinput"); - messagesChoice.setOutputMarkupId(true); - messagesContainer.add(messagesChoice); - form.add(messagesContainer); - - messagesChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - messagesContainer.setVisible(sakaiProxy.isMessagingEnabledGlobally()); - - // kudos privacy - WebMarkupContainer myKudosContainer = new WebMarkupContainer("myKudosContainer"); - myKudosContainer.add(new Label("myKudosLabel", new ResourceModel("privacy.mykudos"))); - DropDownChoice kudosChoice = new DropDownChoice("myKudos", dropDownModelRelaxed, new HashMapChoiceRenderer(privacySettingsRelaxed)); - kudosChoice.setMarkupId("kudosprivacyinput"); - kudosChoice.setOutputMarkupId(true); - myKudosContainer.add(kudosChoice); - form.add(myKudosContainer); - - kudosChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - myKudosContainer.setVisible(sakaiProxy.isMyKudosEnabledGlobally()); - - // wall privacy - WebMarkupContainer myWallContainer = new WebMarkupContainer("myWallContainer"); - myWallContainer.add(new Label("myWallLabel", new ResourceModel("privacy.mywall"))); - DropDownChoice myWallChoice = new DropDownChoice("myWall", dropDownModelRelaxed, new HashMapChoiceRenderer(privacySettingsRelaxed)); - myWallChoice.setMarkupId("wallprivacyinput"); - myWallChoice.setOutputMarkupId(true); - myWallContainer.add(myWallChoice); - form.add(myWallContainer); - - myWallChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - myWallContainer.setVisible(sakaiProxy.isWallEnabledGlobally()); - - - // online status privacy - WebMarkupContainer onlineStatusContainer = new WebMarkupContainer("onlineStatusContainer"); - onlineStatusContainer.add(new Label("onlineStatusLabel", new ResourceModel("privacy.onlinestatus"))); - DropDownChoice onlineStatusChoice = new DropDownChoice("onlineStatus", dropDownModelRelaxed, new HashMapChoiceRenderer(privacySettingsRelaxed)); - onlineStatusChoice.setMarkupId("onlinestatusprivacyinput"); - onlineStatusChoice.setOutputMarkupId(true); - onlineStatusContainer.add(onlineStatusChoice); - form.add(onlineStatusContainer); - - onlineStatusChoice.add(new AjaxFormComponentUpdatingBehavior("change") { - @Override - protected void onUpdate(AjaxRequestTarget target) { - target.appendJavaScript("$('#" + formFeedbackId + "').fadeOut();"); - } - }); - - onlineStatusContainer.setVisible(sakaiProxy.isOnlineStatusEnabledGlobally()); - - //submit button - IndicatingAjaxButton submitButton = new IndicatingAjaxButton("submit", form) { - @Override - protected void onSubmit(AjaxRequestTarget target) { - //save() form, show feedback. perhaps redirect back to main page after a short while? - if(save(form)){ - formFeedback.setDefaultModel(new ResourceModel("success.privacy.save.ok")); - formFeedback.add(new AttributeModifier("class", new Model("success"))); - - //post update event - sakaiProxy.postEvent(ProfileConstants.EVENT_PRIVACY_UPDATE, "/profile/"+userUuid, true); - - } else { - formFeedback.setDefaultModel(new ResourceModel("error.privacy.save.failed")); - formFeedback.add(new AttributeModifier("class", new Model("alertMessage"))); - } - - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - - //PRFL-775 - set focus to feedback message so it is announced to screenreaders - target.appendJavaScript("$('#" + formFeedbackId + "').focus();"); - - target.add(formFeedback); - } - }; - submitButton.setModel(new ResourceModel("button.save.settings")); - submitButton.setOutputMarkupId(true); - form.add(submitButton); - - //cancel button - /* - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - protected void onSubmit(Optional targetOptional) { - setResponsePage(new MyProfile()); - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - */ - - if(!sakaiProxy.isPrivacyChangeAllowedGlobally()){ - infoLocked.setDefaultModel(new ResourceModel("text.privacy.cannot.modify")); - infoLocked.setVisible(true); - - profileImageChoice.setEnabled(false); - basicInfoChoice.setEnabled(false); - contactInfoChoice.setEnabled(false); - studentInfoChoice.setEnabled(false); - businessInfoChoice.setEnabled(false); - personalInfoChoice.setEnabled(false); - birthYearCheckbox.setEnabled(false); - myFriendsChoice.setEnabled(false); - myStatusChoice.setEnabled(false); - myPicturesChoice.setEnabled(false); - messagesChoice.setEnabled(false); - myWallChoice.setEnabled(false); - onlineStatusChoice.setEnabled(false); - - submitButton.setEnabled(false); - submitButton.setVisible(false); - - form.setEnabled(false); - } - - add(form); - } - - - //called when the form is to be saved - private boolean save(Form form) { - - //get the backing model - its elems have been updated with the form params - ProfilePrivacy profilePrivacy = (ProfilePrivacy) form.getModelObject(); - - if(privacyLogic.savePrivacyRecord(profilePrivacy)) { - log.info("Saved ProfilePrivacy for: {}", profilePrivacy.getUserUuid()); - return true; - } else { - log.info("Couldn't save ProfilePrivacy for: {}", profilePrivacy.getUserUuid()); - return false; - } - - } - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.html index ef298d6ade42..50862dac09c0 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.html @@ -45,36 +45,18 @@ - -
    - -
    - -
    - -
    - -
    [my status panel]
    - [feedback panel] - - -
    [my profile tabs]
    +
    [my profile panel profile tabs]
    diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.java index 2c1fce7f184a..752f100204c5 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MyProfile.java @@ -15,37 +15,18 @@ */ package org.sakaiproject.profile2.tool.pages; - -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.http.Cookie; - -import org.apache.commons.lang3.StringUtils; import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; import org.apache.wicket.RestartResponseException; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.extensions.ajax.markup.html.tabs.AjaxTabbedPanel; -import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; -import org.apache.wicket.extensions.markup.html.tabs.ITab; import org.apache.wicket.markup.head.IHeaderResponse; -import org.apache.wicket.markup.head.OnLoadHeaderItem; import org.apache.wicket.markup.head.StringHeaderItem; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.EmptyPanel; import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.model.Model; import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.request.mapper.parameter.PageParameters; -import org.apache.wicket.util.cookies.CookieUtils; import org.sakaiproject.api.common.edu.person.SakaiPerson; import org.sakaiproject.profile2.exception.ProfileNotDefinedException; import org.sakaiproject.profile2.exception.ProfilePreferencesNotDefinedException; @@ -53,16 +34,8 @@ import org.sakaiproject.profile2.model.ProfilePreferences; import org.sakaiproject.profile2.model.SocialNetworkingInfo; import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.tool.components.NotifyingAjaxLazyLoadPanel; import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.tool.pages.panels.FriendsFeed; -import org.sakaiproject.profile2.tool.pages.panels.GalleryFeed; -import org.sakaiproject.profile2.tool.pages.panels.KudosPanel; import org.sakaiproject.profile2.tool.pages.panels.MyProfilePanel; -import org.sakaiproject.profile2.tool.pages.panels.MyStatusPanel; -import org.sakaiproject.profile2.tool.pages.panels.MyWallPanel; -import org.sakaiproject.profile2.tool.pages.windows.AddFriend; import org.sakaiproject.profile2.util.ProfileConstants; import lombok.extern.slf4j.Slf4j; @@ -83,14 +56,6 @@ public MyProfile() { renderMyProfile(userUuid); } - public MyProfile(PageParameters pageParameters) { - - final String requestedTab = pageParameters.get(0).toString(ProfileConstants.PROFILE); - - String userUuid = sakaiProxy.getCurrentUserId(); - renderMyProfile(userUuid, requestedTab); - } - /** * This constructor is called if we are viewing someone elses but in edit mode. * This will only be called if we were a superuser editing someone else's profile. @@ -109,15 +74,11 @@ public MyProfile(final String userUuid) { renderMyProfile(userUuid); } - private void renderMyProfile(final String userUuid) { - renderMyProfile(userUuid, ProfileConstants.PROFILE); - } - /** * Does the actual rendering of the page * @param userUuid */ - private void renderMyProfile(final String userUuid, final String requestedTab) { + private void renderMyProfile(final String userUuid) { //don't do this for super users viewing other people's profiles as otherwise there is no way back to own profile if (!sakaiProxy.isSuperUserAndProxiedToUser(userUuid)) { @@ -175,41 +136,10 @@ private void renderMyProfile(final String userUuid, final String requestedTab) { userProfile.setUserUuid(userUuid); userProfile.setNickname(sakaiPerson.getNickname()); - userProfile.setDateOfBirth(sakaiPerson.getDateOfBirth()); userProfile.setDisplayName(userDisplayName); - //userProfile.setFirstName(userFirstName); - //userProfile.setLastName(userLastName); - //userProfile.setMiddleName(sakaiPerson.getInitials()); userProfile.setEmail(userEmail); - userProfile.setHomepage(sakaiPerson.getLabeledURI()); - userProfile.setHomephone(sakaiPerson.getHomePhone()); - userProfile.setWorkphone(sakaiPerson.getTelephoneNumber()); userProfile.setMobilephone(sakaiPerson.getMobile()); - userProfile.setFacsimile(sakaiPerson.getFacsimileTelephoneNumber()); - - userProfile.setDepartment(sakaiPerson.getOrganizationalUnit()); - userProfile.setPosition(sakaiPerson.getTitle()); - userProfile.setSchool(sakaiPerson.getCampus()); - userProfile.setRoom(sakaiPerson.getRoomNumber()); - - userProfile.setCourse(sakaiPerson.getEducationCourse()); - userProfile.setSubjects(sakaiPerson.getEducationSubjects()); - - userProfile.setStaffProfile(sakaiPerson.getStaffProfile()); - userProfile.setAcademicProfileUrl(sakaiPerson.getAcademicProfileUrl()); - userProfile.setUniversityProfileUrl(sakaiPerson.getUniversityProfileUrl()); - userProfile.setPublications(sakaiPerson.getPublications()); - - // business fields - userProfile.setBusinessBiography(sakaiPerson.getBusinessBiography()); - userProfile.setCompanyProfiles(profileLogic.getCompanyProfiles(userUuid)); - - userProfile.setFavouriteBooks(sakaiPerson.getFavouriteBooks()); - userProfile.setFavouriteTvShows(sakaiPerson.getFavouriteTvShows()); - userProfile.setFavouriteMovies(sakaiPerson.getFavouriteMovies()); - userProfile.setFavouriteQuotes(sakaiPerson.getFavouriteQuotes()); - userProfile.setPersonalSummary(sakaiPerson.getNotes()); userProfile.setPhoneticPronunciation(sakaiPerson.getPhoneticPronunciation()); userProfile.setPronouns(sakaiPerson.getPronouns()); @@ -248,155 +178,50 @@ private void renderMyProfile(final String userUuid, final String requestedTab) { /* SIDELINKS */ WebMarkupContainer sideLinks = new WebMarkupContainer("sideLinks"); int visibleSideLinksCount = 0; - - //ADMIN: ADD AS CONNECTION - if(sakaiProxy.isSuperUserAndProxiedToUser(userUuid)) { - - //init - boolean friend = false; - boolean friendRequestToThisPerson = false; - boolean friendRequestFromThisPerson = false; - String currentUserUuid = sakaiProxy.getCurrentUserId(); - String nickname = userProfile.getNickname(); - if(StringUtils.isBlank(nickname)) { - nickname=""; - } - - //setup model to store the actions in the modal windows - final FriendAction friendActionModel = new FriendAction(); - - //setup friend status - friend = connectionsLogic.isUserXFriendOfUserY(userUuid, currentUserUuid); - if(!friend) { - friendRequestToThisPerson = connectionsLogic.isFriendRequestPending(currentUserUuid, userUuid); - } - if(!friend && !friendRequestToThisPerson) { - friendRequestFromThisPerson = connectionsLogic.isFriendRequestPending(userUuid, currentUserUuid); - } - - WebMarkupContainer addFriendContainer = new WebMarkupContainer("addFriendContainer"); - final ModalWindow addFriendWindow = new ModalWindow("addFriendWindow"); - - //link - final AjaxLink addFriendLink = new AjaxLink("addFriendLink") { - private static final long serialVersionUID = 1L; - public void onClick(AjaxRequestTarget target) { - addFriendWindow.show(target); - } - }; - final Label addFriendLabel = new Label("addFriendLabel"); - addFriendLink.add(addFriendLabel); - addFriendContainer.add(addFriendLink); - - //setup link/label and windows - if(friend) { - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.confirmed")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction connection-confirmed"))); - addFriendLink.setEnabled(false); - } else if (friendRequestToThisPerson) { - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.requested")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction connection-request"))); - addFriendLink.setEnabled(false); - } else if (friendRequestFromThisPerson) { - //TODO (confirm pending friend request link) - //could be done by setting the content off the addFriendWindow. - //will need to rename some links to make more generic and set the onClick and setContent in here for link and window - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.pending")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction connection-request"))); - addFriendLink.setEnabled(false); - } else { - addFriendLabel.setDefaultModel(new StringResourceModel("link.friend.add.name").setParameters(nickname)); - addFriendLink.add(new AttributeModifier("class", new Model("connection-add"))); - addFriendWindow.setContent(new AddFriend(addFriendWindow.getContentId(), addFriendWindow, friendActionModel, currentUserUuid, userUuid)); - } - - sideLinks.add(addFriendContainer); - - //ADD FRIEND MODAL WINDOW HANDLER - addFriendWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { - private static final long serialVersionUID = 1L; - - public void onClose(AjaxRequestTarget target){ - if(friendActionModel.isRequested()) { - //friend was successfully requested, update label and link - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.requested")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction"))); - addFriendLink.setEnabled(false); - target.add(addFriendLink); - } - } - }); - - add(addFriendWindow); - - if(sakaiProxy.isConnectionsEnabledGlobally()) { - visibleSideLinksCount++; - } else { - addFriendContainer.setVisible(false); - } - - - //ADMIN: LOCK/UNLOCK A PROFILE - WebMarkupContainer lockProfileContainer = new WebMarkupContainer("lockProfileContainer"); - final Label lockProfileLabel = new Label("lockProfileLabel"); - - final AjaxLink lockProfileLink = new AjaxLink("lockProfileLink") { - private static final long serialVersionUID = 1L; - - public void onClick(AjaxRequestTarget target) { - //toggle it to be opposite of what it currently is, update labels and icons - boolean locked = isLocked(); - if(sakaiProxy.toggleProfileLocked(userUuid, !locked)) { - setLocked(!locked); - log.info("MyProfile(): SuperUser toggled lock status of profile for " + userUuid + " to " + !locked); - lockProfileLabel.setDefaultModel(new ResourceModel("link.profile.locked." + isLocked())); - add(new AttributeModifier("title", new ResourceModel("text.profile.locked." + isLocked()))); - if(isLocked()){ - add(new AttributeModifier("class", new Model("locked"))); - } else { - add(new AttributeModifier("class", new Model("unlocked"))); - } - target.add(this); - } - } - }; - - //set init icon for locked - if(isLocked()){ - lockProfileLink.add(new AttributeModifier("class", new Model("locked"))); - } else { - lockProfileLink.add(new AttributeModifier("class", new Model("unlocked"))); - } - - lockProfileLink.add(lockProfileLabel); - - //setup link/label and windows with special property based on locked status - lockProfileLabel.setDefaultModel(new ResourceModel("link.profile.locked." + isLocked())); - lockProfileLink.add(new AttributeModifier("title", new ResourceModel("text.profile.locked." + isLocked()))); - - lockProfileContainer.add(lockProfileLink); - sideLinks.add(lockProfileContainer); - - visibleSideLinksCount++; - - - } else { - //blank components - WebMarkupContainer addFriendContainer = new WebMarkupContainer("addFriendContainer"); - addFriendContainer.add(new AjaxLink("addFriendLink") { - public void onClick(AjaxRequestTarget target) {} - }).add(new Label("addFriendLabel")); - sideLinks.add(addFriendContainer); - add(new WebMarkupContainer("addFriendWindow")); - - WebMarkupContainer lockProfileContainer = new WebMarkupContainer("lockProfileContainer"); - lockProfileContainer.add(new AjaxLink("lockProfileLink") { - public void onClick(AjaxRequestTarget target) {} - }).add(new Label("lockProfileLabel")); - sideLinks.add(lockProfileContainer); - } - + //ADMIN: LOCK/UNLOCK A PROFILE + WebMarkupContainer lockProfileContainer = new WebMarkupContainer("lockProfileContainer"); + final Label lockProfileLabel = new Label("lockProfileLabel"); + + final AjaxLink lockProfileLink = new AjaxLink("lockProfileLink") { + private static final long serialVersionUID = 1L; + + public void onClick(AjaxRequestTarget target) { + //toggle it to be opposite of what it currently is, update labels and icons + boolean locked = isLocked(); + if(sakaiProxy.toggleProfileLocked(userUuid, !locked)) { + setLocked(!locked); + log.info("MyProfile(): SuperUser toggled lock status of profile for " + userUuid + " to " + !locked); + lockProfileLabel.setDefaultModel(new ResourceModel("link.profile.locked." + isLocked())); + add(new AttributeModifier("title", new ResourceModel("text.profile.locked." + isLocked()))); + if(isLocked()){ + add(new AttributeModifier("class", new Model("locked"))); + } else { + add(new AttributeModifier("class", new Model("unlocked"))); + } + target.add(this); + } + } + }; + + //set init icon for locked + if(isLocked()){ + lockProfileLink.add(new AttributeModifier("class", new Model("locked"))); + } else { + lockProfileLink.add(new AttributeModifier("class", new Model("unlocked"))); + } + + lockProfileLink.add(lockProfileLabel); + + //setup link/label and windows with special property based on locked status + lockProfileLabel.setDefaultModel(new ResourceModel("link.profile.locked." + isLocked())); + lockProfileLink.add(new AttributeModifier("title", new ResourceModel("text.profile.locked." + isLocked()))); + + lockProfileContainer.add(lockProfileLink); + + sideLinks.add(lockProfileContainer); + + visibleSideLinksCount++; //hide entire list if no links to show if(visibleSideLinksCount == 0) { @@ -404,145 +229,12 @@ public void onClick(AjaxRequestTarget target) {} } add(sideLinks); - - //status panel - Panel myStatusPanel = new MyStatusPanel("myStatusPanel", userProfile); - add(myStatusPanel); - - List tabs = new ArrayList(); - AjaxTabbedPanel tabbedPanel = new AjaxTabbedPanel("myProfileTabs", tabs) { - - private static final long serialVersionUID = 1L; - - // overridden so we can add tooltips to tabs - @Override - protected WebMarkupContainer newLink(String linkId, final int index) { - WebMarkupContainer link = super.newLink(linkId, index); - - if (ProfileConstants.TAB_INDEX_PROFILE == index) { - link.add(new AttributeModifier("title", - new ResourceModel("link.tab.profile.tooltip"))); - - } else if (ProfileConstants.TAB_INDEX_WALL == index) { - link.add(new AttributeModifier("title", - new ResourceModel("link.tab.wall.tooltip"))); - } - return link; - } - }; - - - CookieUtils utils = new CookieUtils(); - Cookie tabCookie = utils.getCookie(ProfileConstants.TAB_COOKIE); - - if (sakaiProxy.isProfileFieldsEnabled()) { - tabs.add(new AbstractTab(new ResourceModel("link.tab.profile")) { - - private static final long serialVersionUID = 1L; - - @Override - public Panel getPanel(String panelId) { - setTabCookie(ProfileConstants.TAB_INDEX_PROFILE); - MyProfilePanelState panelState = new MyProfilePanelState(); - panelState.showBusinessDisplay = sakaiProxy.isBusinessProfileEnabled(); - panelState.showSocialNetworkingDisplay = sakaiProxy.isSocialProfileEnabled(); - panelState.showInterestsDisplay = sakaiProxy.isInterestsProfileEnabled(); - panelState.showStaffDisplay = sakaiProxy.isStaffProfileEnabled(); - panelState.showStudentDisplay = sakaiProxy.isStudentProfileEnabled(); - panelState.showNamePronunciationDisplay = sakaiProxy.isNamePronunciationProfileEnabled(); - return new MyProfilePanel(panelId, userProfile,panelState); - } - - }); - } + MyProfilePanelState panelState = new MyProfilePanelState(); + panelState.showSocialNetworkingDisplay = sakaiProxy.isSocialProfileEnabled(); + panelState.showNamePronunciationDisplay = sakaiProxy.isNamePronunciationProfileEnabled(); - // DEPRECATED: UNLESS THERE IS AN EXPRESSED DESIRE FOR THIS FUNCTIONALITY THE WALL WILL BE REMOVED FOR 13. - if (sakaiProxy.isWallEnabledGlobally()) { - - tabs.add(new AbstractTab(new ResourceModel("link.tab.wall")) { - - private static final long serialVersionUID = 1L; - - @Override - public Panel getPanel(String panelId) { - - setTabCookie(ProfileConstants.TAB_INDEX_WALL); - if (sakaiProxy.isSuperUser()) { - return new MyWallPanel(panelId, userUuid); - } else { - return new MyWallPanel(panelId); - } - } - }); - - if (ProfileConstants.WALL.equals(requestedTab) - || (sakaiProxy.isWallDefaultProfilePage() && null == tabCookie)) { - tabbedPanel.setSelectedTab(ProfileConstants.TAB_INDEX_WALL); - } else if (null != tabCookie) { - tabbedPanel.setSelectedTab(Integer.parseInt(tabCookie.getValue())); - } - } - - add(tabbedPanel); - - //kudos panel - add(new AjaxLazyLoadPanel("myKudos"){ - private static final long serialVersionUID = 1L; - - @Override - public Component getLazyLoadComponent(String markupId) { - if(sakaiProxy.isMyKudosEnabledGlobally() && prefs.isShowKudos()){ - - int score = kudosLogic.getKudos(userUuid); - if(score > 0) { - return new KudosPanel(markupId, userUuid, userUuid, score); - } - } - return new EmptyPanel(markupId); - } - }); - - - //friends feed panel for self - lazy loaded - add(new NotifyingAjaxLazyLoadPanel("friendsFeed") { - private static final long serialVersionUID = 1L; - - @Override - public Component getLazyLoadComponent(String markupId) { - if(sakaiProxy.isConnectionsEnabledGlobally()) { - return new FriendsFeed(markupId, userUuid, userUuid); - } - return new EmptyPanel(markupId); - } - - @Override - public void renderHead(IHeaderResponse response) { - response.render(OnLoadHeaderItem.forScript("resizeFrame('grow');")); - } - }); - - - //gallery feed panel - add(new NotifyingAjaxLazyLoadPanel("galleryFeed") { - private static final long serialVersionUID = 1L; - - @Override - public Component getLazyLoadComponent(String markupId) { - if (sakaiProxy.isProfileGalleryEnabledGlobally() && prefs.isShowGalleryFeed()) { - return new GalleryFeed(markupId, userUuid, userUuid) - .setOutputMarkupId(true); - } else { - return new EmptyPanel(markupId); - } - } - - @Override - public void renderHead(IHeaderResponse response) { - response.render(OnLoadHeaderItem.forScript("resizeFrame('grow');")); - } - - }); + add(new MyProfilePanel("myProfilePanel", userProfile, panelState)); } @Override diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MySearch.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MySearch.html deleted file mode 100644 index 783499f4bb33..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MySearch.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - -
    -
    - - -
    - -
    - - -
    - -
    -

    [searchLabel]

    -
    -

    - - -

    -
    -
    - -
    -
    -

    [searchTypeNameLabel]

    -
    - -
    -

    [searchTypeInterestLabel]

    -
    - -
    -
    -
    - -
    - -

    [connectionsLabel]

    -
    - -
    - -

    [worksiteLabel]

    -
    - -
    -
    - - -
    -
    - -
    - -
    - - - -
    - -
    - - -
    - [searchHistoryLabel] - -
    - -
    -
    - - -
    -
    No results or 1-5 of 20 results
    -
    - -
    -
    - -
    -
    [search results navigator]
    -
    - - - - -
    - [name] - status -
    - -
    -
    summary
    -
    -
    -
    - -
    - -
    - - - - -
    -
    - - - - - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MySearch.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MySearch.java deleted file mode 100644 index 480c72444377..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/MySearch.java +++ /dev/null @@ -1,947 +0,0 @@ -/** - * 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.tool.pages; - - -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.LinkedHashMap; -import java.util.List; - -import javax.servlet.http.Cookie; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.ajax.markup.html.form.AjaxButton; -import org.apache.wicket.behavior.Behavior; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.CheckBox; -import org.apache.wicket.markup.html.form.DropDownChoice; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.Radio; -import org.apache.wicket.markup.html.form.RadioGroup; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.link.ExternalLink; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.link.PopupSettings; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.markup.html.list.PageableListView; -import org.apache.wicket.markup.html.navigation.paging.PagingNavigator; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.LoadableDetachableModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.util.cookies.CookieUtils; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfileSearchTerm; -import org.sakaiproject.profile2.tool.components.HashMapChoiceRenderer; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.components.ProfileStatusRenderer; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.tool.models.StringModel; -import org.sakaiproject.profile2.tool.pages.windows.AddFriend; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; -import org.sakaiproject.site.api.Site; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class MySearch extends BasePage { - - private List results = new ArrayList(); - - private WebMarkupContainer numSearchResultsContainer; - private Label numSearchResults; - private WebMarkupContainer resultsContainer; - private AjaxButton clearButton; - private AjaxButton clearHistoryButton; - private TextField searchField; - private RadioGroup searchTypeRadioGroup; - private CheckBox connectionsCheckBox; - private CheckBox worksiteCheckBox; - private DropDownChoice worksiteChoice; - - // Used independently of search history for current search, and - // transient because Cookie isn't serializable - private transient Cookie searchCookie = null; - - public MySearch() { - - log.debug("MySearch()"); - - disableLink(searchLink); - - //check for current search cookie - CookieUtils utils = new CookieUtils(); - searchCookie = utils.getCookie(ProfileConstants.SEARCH_COOKIE); - - //setup model to store the actions in the modal windows - final FriendAction friendActionModel = new FriendAction(); - - //get current user info - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - final String currentUserType = sakaiProxy.getUserType(currentUserUuid); - - /* - * Combined search form - */ - - //heading - Label searchHeading = new Label("searchHeading", new ResourceModel("heading.search")); - add(searchHeading); - - //setup form - final StringModel searchStringModel = new StringModel(); - Form searchForm = new Form("searchForm", new Model(searchStringModel)); - searchForm.setOutputMarkupId(true); - - //search field - searchForm.add(new Label("searchLabel", new ResourceModel("text.search.terms.label"))); - searchField = new TextField("searchField", new PropertyModel(searchStringModel, "string")); - searchField.setRequired(true); - searchField.setMarkupId("searchinput"); - searchField.setOutputMarkupId(true); - searchForm.add(searchField); - - //by name or by interest radio group - searchTypeRadioGroup = new RadioGroup("searchTypeRadioGroup"); - // so we can repaint after clicking on search history links - searchTypeRadioGroup.setOutputMarkupId(true); - searchTypeRadioGroup.setRenderBodyOnly(false); - Radio searchTypeRadioName = new Radio("searchTypeName", new Model(ProfileConstants.SEARCH_TYPE_NAME)); - searchTypeRadioName.setMarkupId("searchtypenameinput"); - searchTypeRadioName.setOutputMarkupId(true); - searchTypeRadioName.add(new AttributeModifier("title", new ResourceModel("text.search.byname.tooltip"))); - searchTypeRadioGroup.add(searchTypeRadioName); - Radio searchTypeRadioInterest = new Radio("searchTypeInterest", new Model(ProfileConstants.SEARCH_TYPE_INTEREST)); - searchTypeRadioInterest.setMarkupId("searchtypeinterestinput"); - searchTypeRadioInterest.setOutputMarkupId(true); - searchTypeRadioInterest.add(new AttributeModifier("title", new ResourceModel("text.search.byinterest.tooltip"))); - searchTypeRadioGroup.add(searchTypeRadioInterest); - searchTypeRadioGroup.add(new Label("searchTypeNameLabel", new ResourceModel("text.search.byname.label"))); - searchTypeRadioGroup.add(new Label("searchTypeInterestLabel", new ResourceModel("text.search.byinterest.label"))); - searchForm.add(searchTypeRadioGroup); - - searchForm.add(new Label("connectionsLabel", new ResourceModel("text.search.include.connections"))); - // model is true (include connections by default) - connectionsCheckBox = new CheckBox("connectionsCheckBox", new Model(true)); - connectionsCheckBox.setMarkupId("includeconnectionsinput"); - connectionsCheckBox.setOutputMarkupId(true); - //hide if connections disabled globally - connectionsCheckBox.setVisible(sakaiProxy.isConnectionsEnabledGlobally()); - searchForm.add(connectionsCheckBox); - - final List worksites = sakaiProxy.getUserSites(); - final boolean hasWorksites = !worksites.isEmpty(); - - searchForm.add(new Label("worksiteLabel", new ResourceModel("text.search.include.worksite"))); - // model is false (include all worksites by default) - worksiteCheckBox = new CheckBox("worksiteCheckBox", new Model(false)); - worksiteCheckBox.setMarkupId("limittositeinput"); - worksiteCheckBox.setOutputMarkupId(true); - worksiteCheckBox.setEnabled(hasWorksites); - searchForm.add(worksiteCheckBox); - - final IModel defaultWorksiteIdModel; - if (hasWorksites) { - defaultWorksiteIdModel = new Model(worksites.get(0).getId()); - } else { - defaultWorksiteIdModel = new ResourceModel("text.search.no.worksite"); - } - - final LinkedHashMap worksiteMap = new LinkedHashMap(); - - if (hasWorksites) { - for (Site worksite : worksites) { - worksiteMap.put(worksite.getId(), worksite.getTitle()); - } - } else { - worksiteMap.put(defaultWorksiteIdModel.getObject(), defaultWorksiteIdModel.getObject()); - } - - IModel worksitesModel = new Model() { - - @Override - public ArrayList getObject() { - return new ArrayList(worksiteMap.keySet()); - } - }; - - worksiteChoice = new DropDownChoice("worksiteChoice", defaultWorksiteIdModel, worksitesModel, new HashMapChoiceRenderer(worksiteMap)); - worksiteChoice.setMarkupId("worksiteselect"); - worksiteChoice.setOutputMarkupId(true); - worksiteChoice.setNullValid(false); - worksiteChoice.setEnabled(hasWorksites); - searchForm.add(worksiteChoice); - - /* - * - * RESULTS - * - */ - - //search results label/container - numSearchResultsContainer = new WebMarkupContainer("numSearchResultsContainer"); - numSearchResultsContainer.setOutputMarkupPlaceholderTag(true); - numSearchResults = new Label("numSearchResults"); - numSearchResults.setOutputMarkupId(true); - numSearchResults.setEscapeModelStrings(false); - numSearchResultsContainer.add(numSearchResults); - - //clear results button - Form clearResultsForm = new Form("clearResults"); - clearResultsForm.setOutputMarkupPlaceholderTag(true); - - clearButton = new AjaxButton("clearButton", clearResultsForm) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - - // clear cookie if present - if (null != searchCookie) { - CookieUtils utils = new CookieUtils(); - utils.remove(ProfileConstants.SEARCH_COOKIE); - } - - //clear the fields, hide self, then repaint - searchField.clearInput(); - searchField.updateModel(); - - numSearchResultsContainer.setVisible(false); - resultsContainer.setVisible(false); - clearButton.setVisible(false); - - target.add(searchField); - target.add(numSearchResultsContainer); - target.add(resultsContainer); - target.add(this); - } - }; - clearButton.setOutputMarkupPlaceholderTag(true); - if (null == searchCookie) { - clearButton.setVisible(false); //invisible until we have something to clear - } - clearButton.setModel(new ResourceModel("button.search.clear")); - clearResultsForm.add(clearButton); - numSearchResultsContainer.add(clearResultsForm); - - add(numSearchResultsContainer); - - // model to wrap search results - LoadableDetachableModel> resultsModel = new LoadableDetachableModel>(){ - private static final long serialVersionUID = 1L; - - @Override - protected List load() { - return results; - } - }; - - //container which wraps list - resultsContainer = new WebMarkupContainer("searchResultsContainer"); - resultsContainer.setOutputMarkupPlaceholderTag(true); - if (null == searchCookie) { - resultsContainer.setVisible(false); //hide initially - } - - //connection window - final ModalWindow connectionWindow = new ModalWindow("connectionWindow"); - - //search results - final PageableListView resultsListView = new PageableListView("searchResults", - resultsModel, sakaiProxy.getMaxSearchResultsPerPage()) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(final ListItem item) { - - Person person = item.getModelObject(); - - //get basic values - final String userUuid = person.getUuid(); - final String displayName = person.getDisplayName(); - final String userType = person.getType(); - - //get connection status - int connectionStatus = connectionsLogic.getConnectionStatus(currentUserUuid, userUuid); - boolean friend = connectionStatus == ProfileConstants.CONNECTION_CONFIRMED; - - //image wrapper, links to profile - Link friendItem = new Link("searchResultPhotoWrap") { - private static final long serialVersionUID = 1L; - @Override - public void onClick() { - setResponsePage(new ViewProfile(userUuid)); - } - }; - - //image - ProfileImage searchResultPhoto = new ProfileImage("searchResultPhoto", new Model(userUuid)); - searchResultPhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - friendItem.add(searchResultPhoto); - - item.add(friendItem); - - //name and link to profile (if allowed or no link) - Link profileLink = new Link("searchResultProfileLink", new Model(userUuid)) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - //if user found themself, go to own profile, else show other profile - if(userUuid.equals(currentUserUuid)) { - setResponsePage(new MyProfile()); - } else { - //gets userUuid of other user from the link's model - setResponsePage(new ViewProfile((String)getModelObject())); - } - } - }; - - profileLink.add(new Label("searchResultName", displayName)); - item.add(profileLink); - - //status component - ProfileStatusRenderer status = new ProfileStatusRenderer("searchResultStatus", person, "search-result-status-msg", "search-result-status-date") { - @Override - public boolean isVisible(){ - return sakaiProxy.isProfileStatusEnabled(); - } - }; - status.setOutputMarkupId(true); - item.add(status); - - - /* ACTIONS */ - boolean isFriendsListVisible = privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYFRIENDS); - boolean isConnectionAllowed = sakaiProxy.isConnectionAllowedBetweenUserTypes(userType, currentUserType); - - - //ADD CONNECTION LINK - final WebMarkupContainer c1 = new WebMarkupContainer("connectionContainer"); - c1.setOutputMarkupId(true); - - if(!isConnectionAllowed && !sakaiProxy.isConnectionsEnabledGlobally()){ - //add blank components - TODO turn this into an EmptyLink component - AjaxLink emptyLink = new AjaxLink("connectionLink"){ - private static final long serialVersionUID = 1L; - @Override - public void onClick(AjaxRequestTarget target) {} - }; - emptyLink.add(new Label("connectionLabel")); - c1.add(emptyLink); - c1.setVisible(false); - } else { - //render the link - final Label connectionLabel = new Label("connectionLabel"); - connectionLabel.setOutputMarkupId(true); - - final AjaxLink connectionLink = new AjaxLink("connectionLink", new Model(userUuid)) { - private static final long serialVersionUID = 1L; - @Override - public void onClick(AjaxRequestTarget target) { - - //get this item, reinit some values and set content for modal - final String userUuid = getModelObject(); - connectionWindow.setContent(new AddFriend(connectionWindow.getContentId(), connectionWindow, friendActionModel, currentUserUuid, userUuid)); - - // connection modal window handler - connectionWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { - private static final long serialVersionUID = 1L; - @Override - public void onClose(AjaxRequestTarget target){ - if(friendActionModel.isRequested()) { - connectionLabel.setDefaultModel(new ResourceModel("text.friend.requested")); - add(new AttributeModifier("class", new Model("instruction connection-request"))); - setEnabled(false); - target.add(c1); - } - } - }); - //in preparation for the window being closed, update the text. this will only - //be put into effect if its a successful model update from the window close - //connectionLabel.setModel(new ResourceModel("text.friend.requested")); - //this.add(new AttributeModifier("class", new Model("instruction"))); - //this.setEnabled(false); - //friendActionModel.setUpdateThisComponentOnSuccess(this); - - connectionWindow.show(target); - target.appendJavaScript("fixWindowVertical();"); - - } - }; - - connectionLink.add(connectionLabel); - - //setup 'add connection' link - if(StringUtils.equals(userUuid, currentUserUuid)) { - connectionLabel.setDefaultModel(new ResourceModel("text.friend.self")); - connectionLink.add(new AttributeModifier("class", new Model("instruction profile"))); - connectionLink.setEnabled(false); - } else if(friend) { - connectionLabel.setDefaultModel(new ResourceModel("text.friend.confirmed")); - connectionLink.add(new AttributeModifier("class", new Model("instruction connection-confirmed"))); - connectionLink.setEnabled(false); - } else if (connectionStatus == ProfileConstants.CONNECTION_REQUESTED) { - connectionLabel.setDefaultModel(new ResourceModel("text.friend.requested")); - connectionLink.add(new AttributeModifier("class", new Model("instruction connection-request"))); - connectionLink.setEnabled(false); - } else if (connectionStatus == ProfileConstants.CONNECTION_INCOMING) { - connectionLabel.setDefaultModel(new ResourceModel("text.friend.pending")); - connectionLink.add(new AttributeModifier("class", new Model("instruction connection-request"))); - connectionLink.setEnabled(false); - } else { - connectionLabel.setDefaultModel(new ResourceModel("link.friend.add")); - } - connectionLink.setOutputMarkupId(true); - c1.add(connectionLink); - } - - item.add(c1); - - - //VIEW FRIENDS LINK - WebMarkupContainer c2 = new WebMarkupContainer("viewFriendsContainer"); - c2.setOutputMarkupId(true); - - final AjaxLink viewFriendsLink = new AjaxLink("viewFriendsLink") { - private static final long serialVersionUID = 1L; - @Override - public void onClick(AjaxRequestTarget target) { - //if user found themself, go to MyFriends, else, ViewFriends - if(userUuid.equals(currentUserUuid)) { - setResponsePage(new MyFriends()); - } else { - setResponsePage(new ViewFriends(userUuid)); - } - } - }; - final Label viewFriendsLabel = new Label("viewFriendsLabel", new ResourceModel("link.view.friends")); - viewFriendsLink.add(viewFriendsLabel); - - //hide if not allowed - if(!isFriendsListVisible && !sakaiProxy.isConnectionsEnabledGlobally()) { - viewFriendsLink.setEnabled(false); - c2.setVisible(false); - } - viewFriendsLink.setOutputMarkupId(true); - c2.add(viewFriendsLink); - item.add(c2); - - WebMarkupContainer c3 = new WebMarkupContainer("emailContainer"); - c3.setOutputMarkupId(true); - - ExternalLink emailLink = new ExternalLink("emailLink", - "mailto:" + person.getProfile().getEmail(), - new ResourceModel("profile.email").getObject()); - - c3.add(emailLink); - - if (StringUtils.isBlank(person.getProfile().getEmail()) || - !privacyLogic.isActionAllowed(person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_CONTACTINFO)) { - c3.setVisible(false); - } - item.add(c3); - - WebMarkupContainer c4 = new WebMarkupContainer("websiteContainer"); - c4.setOutputMarkupId(true); - - // TODO home page, university profile URL or academic/research URL (see PRFL-35) - ExternalLink websiteLink = new ExternalLink("websiteLink", person.getProfile() - .getHomepage(), new ResourceModel( - "profile.homepage").getObject()).setPopupSettings(new PopupSettings()); - - c4.add(websiteLink); - - if (StringUtils.isBlank(person.getProfile().getHomepage()) || - !privacyLogic.isActionAllowed(person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_CONTACTINFO)) { - - c4.setVisible(false); - } - item.add(c4); - - // TODO personal, academic or business (see PRFL-35) - - if (privacyLogic.isActionAllowed( - person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_BASICINFO)) { - - item.add(new Label("searchResultSummary", - StringUtils.abbreviate(ProfileUtils.stripHtml( - person.getProfile().getPersonalSummary()), 200))); - } else { - item.add(new Label("searchResultSummary", "")); - } - } - }; - - resultsListView.add(new MySearchCookieBehavior(resultsListView)); - resultsContainer.add(resultsListView); - - final PagingNavigator searchResultsNavigator = new PagingNavigator("searchResultsNavigator", resultsListView); - searchResultsNavigator.setOutputMarkupId(true); - searchResultsNavigator.setVisible(false); - - resultsContainer.add(searchResultsNavigator); - - add(connectionWindow); - - //add results container - add(resultsContainer); - - /* - * SEARCH HISTORY - */ - - final WebMarkupContainer searchHistoryContainer = new WebMarkupContainer("searchHistoryContainer"); - searchHistoryContainer.setOutputMarkupPlaceholderTag(true); - - Label searchHistoryLabel = new Label("searchHistoryLabel", new ResourceModel("text.search.history")); - searchHistoryContainer.add(searchHistoryLabel); - - IModel> searchHistoryModel = new LoadableDetachableModel>() { - - private static final long serialVersionUID = 1L; - - @Override - protected List load() { - List searchHistory = searchLogic.getSearchHistory(currentUserUuid); - if (null == searchHistory) { - return new ArrayList(); - } else { - return searchHistory; - } - } - - }; - ListView searchHistoryList = new ListView("searchHistoryList", searchHistoryModel) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(final ListItem item) { - - AjaxLink link = new AjaxLink("previousSearchLink") { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - if (null != target) { - - // post view event - sakaiProxy.postEvent(ProfileConstants.EVENT_SEARCH_BY_NAME, "/profile/"+currentUserUuid, false); - - ProfileSearchTerm searchTerm = item.getModelObject(); - // this will update its position in list - searchLogic.addSearchTermToHistory(currentUserUuid, searchTerm); - - searchStringModel.setString(searchTerm.getSearchTerm()); - searchTypeRadioGroup.setModel(new Model(searchTerm.getSearchType())); - connectionsCheckBox.setModel(new Model(searchTerm.isConnections())); - - if (null == searchTerm.getWorksite()) { - worksiteCheckBox.setModel(new Model(false)); - worksiteChoice.setModel(new Model(defaultWorksiteIdModel)); - } else { - worksiteCheckBox.setModel(new Model(true)); - worksiteChoice.setModel(new Model(searchTerm.getWorksite())); - } - - setSearchCookie(searchTerm.getSearchType(), searchTerm.getSearchTerm(), searchTerm.getSearchPageNumber(), searchTerm.isConnections(), searchTerm.getWorksite()); - - if (ProfileConstants.SEARCH_TYPE_NAME.equals(searchTerm.getSearchType())) { - - searchByName(resultsListView, searchResultsNavigator, - searchHistoryContainer, target, searchTerm.getSearchTerm(), searchTerm.isConnections(), searchTerm.getWorksite()); - - } else if (ProfileConstants.SEARCH_TYPE_INTEREST.equals(searchTerm.getSearchType())) { - - searchByInterest(resultsListView, searchResultsNavigator, - searchHistoryContainer, target, searchTerm.getSearchTerm(), searchTerm.isConnections(), searchTerm.getWorksite()); - } - } - } - - }; - link.add(new Label("previousSearchLabel", item.getModelObject().getSearchTerm())); - item.add(link); - } - }; - - searchHistoryContainer.add(searchHistoryList); - add(searchHistoryContainer); - - if (null == searchLogic.getSearchHistory(currentUserUuid)) { - searchHistoryContainer.setVisible(false); - } - - //clear button - Form clearHistoryForm = new Form("clearHistory"); - clearHistoryForm.setOutputMarkupPlaceholderTag(true); - - clearHistoryButton = new AjaxButton("clearHistoryButton", clearHistoryForm) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - - searchLogic.clearSearchHistory(currentUserUuid); - - //clear the fields, hide self, then repaint - searchField.clearInput(); - searchField.updateModel(); - - searchHistoryContainer.setVisible(false); - clearHistoryButton.setVisible(false); - - target.add(searchField); - target.add(searchHistoryContainer); - target.add(this); - } - }; - clearHistoryButton.setOutputMarkupPlaceholderTag(true); - - if (null == searchLogic.getSearchHistory(currentUserUuid)) { - clearHistoryButton.setVisible(false); //invisible until we have something to clear - } - clearHistoryButton.setModel(new ResourceModel("button.search.history.clear")); - clearHistoryForm.add(clearHistoryButton); - searchHistoryContainer.add(clearHistoryForm); - - /* - * Combined search submit - */ - IndicatingAjaxButton searchSubmitButton = new IndicatingAjaxButton("searchSubmit", searchForm) { - - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - - if(target != null) { - //get the model and text entered - StringModel model = searchForm.getModelObject(); - //PRFL-811 - dont strip this down, we will lose i18n chars. - //And there is no XSS risk since its only for the current user. - String searchText = model.getString(); - - //get search type - String searchType = searchTypeRadioGroup.getModelObject(); - - log.debug("MySearch search by {}: {}", searchType, searchText); - - if(StringUtils.isBlank(searchText)){ - return; - } - - // save search terms - ProfileSearchTerm searchTerm = new ProfileSearchTerm(); - searchTerm.setUserUuid(currentUserUuid); - searchTerm.setSearchType(searchType); - searchTerm.setSearchTerm(searchText); - searchTerm.setSearchPageNumber(0); - searchTerm.setSearchDate(new Date()); - searchTerm.setConnections(connectionsCheckBox.getModelObject()); - // set to worksite or empty depending on value of checkbox - searchTerm.setWorksite((worksiteCheckBox.getModelObject()) ? worksiteChoice.getValue() : null); - - searchLogic.addSearchTermToHistory(currentUserUuid, searchTerm); - - // set cookie for current search (page 0 when submitting new search) - setSearchCookie(searchTerm.getSearchType(), URLEncoder.encode(searchTerm.getSearchTerm()), searchTerm.getSearchPageNumber(), searchTerm.isConnections(), searchTerm.getWorksite()); - - if (ProfileConstants.SEARCH_TYPE_NAME.equals(searchType)) { - - searchByName(resultsListView, searchResultsNavigator, searchHistoryContainer, target, searchTerm.getSearchTerm(), searchTerm.isConnections(), searchTerm.getWorksite()); - - //post view event - sakaiProxy.postEvent(ProfileConstants.EVENT_SEARCH_BY_NAME, "/profile/"+currentUserUuid, false); - } else if (ProfileConstants.SEARCH_TYPE_INTEREST.equals(searchType)) { - - searchByInterest(resultsListView, searchResultsNavigator, searchHistoryContainer, target, searchTerm.getSearchTerm(), searchTerm.isConnections(), searchTerm.getWorksite()); - - //post view event - sakaiProxy.postEvent(ProfileConstants.EVENT_SEARCH_BY_INTEREST, "/profile/"+currentUserUuid, false); - } - } - } - }; - searchSubmitButton.setModel(new ResourceModel("button.search.generic")); - searchForm.add(searchSubmitButton); - add(searchForm); - - if (null != searchCookie) { - - String searchString = getCookieSearchString(searchCookie.getValue()); - searchStringModel.setString(searchString); - - Boolean filterConnections = getCookieFilterConnections(searchCookie.getValue()); - String worksiteId = getCookieFilterWorksite(searchCookie.getValue()); - Boolean filterWorksite = null != worksiteId; - - connectionsCheckBox.setModel(new Model(filterConnections)); - worksiteCheckBox.setModel(new Model(filterWorksite)); - worksiteChoice.setModel(new Model((null == worksiteId) ? defaultWorksiteIdModel : worksiteId)); - - if (searchCookie.getValue().startsWith(ProfileConstants.SEARCH_TYPE_NAME)) { - searchTypeRadioGroup.setModel(new Model(ProfileConstants.SEARCH_TYPE_NAME)); - searchByName(resultsListView, searchResultsNavigator, searchHistoryContainer, null, searchString, filterConnections, worksiteId); - - } else if (searchCookie.getValue().startsWith(ProfileConstants.SEARCH_TYPE_INTEREST)) { - searchTypeRadioGroup.setModel(new Model(ProfileConstants.SEARCH_TYPE_INTEREST)); - searchByInterest(resultsListView, searchResultsNavigator, searchHistoryContainer, null, searchString, filterConnections, worksiteId); - } - } else { - // default search type is name - searchTypeRadioGroup.setModel(new Model(ProfileConstants.SEARCH_TYPE_NAME)); - } - } - - // use null target when using cookie - private void searchByName( - final PageableListView resultsListView, - final PagingNavigator searchResultsNavigator, - final WebMarkupContainer searchHistoryContainer, - AjaxRequestTarget target, String searchTerm, boolean connections, - String worksiteId) { - - //search both UDP and SakaiPerson for matches. - results = new ArrayList(searchLogic.findUsersByNameOrEmail(searchTerm, connections, worksiteId)); - Collections.sort(results); - - int numResults = results.size(); - int maxResults = sakaiProxy.getMaxSearchResults(); - int maxResultsPerPage = sakaiProxy.getMaxSearchResultsPerPage(); - - // set current page if previously-viewed search - int currentPage = getCurrentPageNumber(); - - //show the label wrapper - numSearchResultsContainer.setVisible(true); - - //text - //Strip the chars for display purposes - String cleanedSearchTerm = ProfileUtils.stripAndCleanHtml(searchTerm); - if(numResults == 0) { - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byname.no.results").setParameters(cleanedSearchTerm)); - resultsContainer.setVisible(false); - searchResultsNavigator.setVisible(false); - } else if (numResults == 1) { - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byname.one.result").setParameters(cleanedSearchTerm)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(false); - } else if (numResults == maxResults) { - resultsListView.setCurrentPage(currentPage); - numSearchResults.setDefaultModel(new StringResourceModel("text.search.toomany.results").setParameters(cleanedSearchTerm, maxResults, maxResults)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(true); - } else if (numResults > maxResultsPerPage) { - resultsListView.setCurrentPage(currentPage); - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byname.paged.results").setParameters(numResults, resultsListView.getViewSize(), cleanedSearchTerm)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(true); - } else { - resultsListView.setCurrentPage(currentPage); - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byname.all.results").setParameters(numResults, cleanedSearchTerm)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(false); - } - - if (null != target) { - //repaint components - target.add(searchField); - target.add(searchTypeRadioGroup); - target.add(connectionsCheckBox); - target.add(worksiteCheckBox); - target.add(worksiteChoice); - target.add(clearButton); - target.add(numSearchResultsContainer); - clearButton.setVisible(true); - target.add(resultsContainer); - clearHistoryButton.setVisible(true); - searchHistoryContainer.setVisible(true); - target.add(searchHistoryContainer); - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - } - - // use null target when using cookie - private void searchByInterest( - final PageableListView resultsListView, - final PagingNavigator searchResultsNavigator, - WebMarkupContainer searchHistoryContainer, - AjaxRequestTarget target, String searchTerm, boolean connections, - String worksiteId) { - - //search SakaiPerson for matches - results = new ArrayList(searchLogic.findUsersByInterest(searchTerm, connections, worksiteId)); - Collections.sort(results); - - int numResults = results.size(); - int maxResults = sakaiProxy.getMaxSearchResults(); - int maxResultsPerPage = sakaiProxy.getMaxSearchResultsPerPage(); - - // set current page if previously-viewed search - int currentPage = getCurrentPageNumber(); - - //show the label wrapper - numSearchResultsContainer.setVisible(true); - - //text - //Strip the chars for display purposes - String cleanedSearchTerm = ProfileUtils.stripAndCleanHtml(searchTerm); - if(numResults == 0) { - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byinterest.no.results").setParameters(cleanedSearchTerm)); - resultsContainer.setVisible(false); - searchResultsNavigator.setVisible(false); - } else if (numResults == 1) { - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byinterest.one.result").setParameters(cleanedSearchTerm)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(false); - } else if (numResults == maxResults) { - resultsListView.setCurrentPage(currentPage); - numSearchResults.setDefaultModel(new StringResourceModel("text.search.toomany.results").setParameters(cleanedSearchTerm, maxResults, maxResults)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(true); - } else if (numResults > maxResultsPerPage) { - resultsListView.setCurrentPage(currentPage); - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byinterest.paged.results").setParameters(numResults, resultsListView.getViewSize(), cleanedSearchTerm)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(true); - } else { - resultsListView.setCurrentPage(currentPage); - numSearchResults.setDefaultModel(new StringResourceModel("text.search.byinterest.all.results").setParameters(numResults, cleanedSearchTerm)); - resultsContainer.setVisible(true); - searchResultsNavigator.setVisible(false); - } - - if (null != target) { - //repaint components - target.add(searchField); - target.add(searchTypeRadioGroup); - target.add(connectionsCheckBox); - target.add(worksiteCheckBox); - target.add(worksiteChoice); - target.add(clearButton); - target.add(numSearchResultsContainer); - clearButton.setVisible(true); - target.add(resultsContainer); - clearHistoryButton.setVisible(true); - searchHistoryContainer.setVisible(true); - target.add(searchHistoryContainer); - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - } - - private int getCurrentPageNumber() { - if (null == searchCookie) { - return 0; - } else { - return getCookiePageNumber(); - } - } - - private int getCookiePageNumber() { - return Integer.parseInt(searchCookie.getValue().substring( - searchCookie.getValue().indexOf(ProfileConstants.SEARCH_COOKIE_VALUE_PAGE_MARKER) + 1, - searchCookie.getValue().indexOf(ProfileConstants.SEARCH_COOKIE_VALUE_SEARCH_MARKER))); - } - - private void updatePageNumber(long l, String cookieString) { - /* TODO update the cookies - setSearchCookie(getCookieSearchType(cookieString), - getCookieSearchString(cookieString), - l, - getCookieFilterConnections(cookieString), - getCookieFilterWorksite(cookieString)); - */ - } - - private void setSearchCookie(String searchCookieValuePrefix, - String searchText, int searchPageNumber, boolean connections, - String worksiteId) { - - searchCookie = new Cookie( - ProfileConstants.SEARCH_COOKIE, - searchCookieValuePrefix - + ProfileConstants.SEARCH_COOKIE_VALUE_CONNECTIONS_MARKER - + connections - + ProfileConstants.SEARCH_COOKIE_VALUE_WORKSITE_MARKER - + worksiteId - + ProfileConstants.SEARCH_COOKIE_VALUE_PAGE_MARKER - + searchPageNumber - + ProfileConstants.SEARCH_COOKIE_VALUE_SEARCH_MARKER - + searchText); - // don't persist indefinitely - searchCookie.setMaxAge(-1); - //getWebRequestCycle().getWebResponse().addCookie(searchCookie); - //TODO sort out the cookies - } - - private String getCookieSearchString(String cookieString) { - return URLDecoder.decode(cookieString.substring(cookieString.indexOf(ProfileConstants.SEARCH_COOKIE_VALUE_SEARCH_MARKER) + 1)); - } - - private boolean getCookieFilterConnections(String cookieString) { - return Boolean.parseBoolean( - cookieString.substring(cookieString.indexOf(ProfileConstants.SEARCH_COOKIE_VALUE_CONNECTIONS_MARKER) + 1, - cookieString.indexOf(ProfileConstants.SEARCH_COOKIE_VALUE_WORKSITE_MARKER))); - } - - private String getCookieFilterWorksite(String cookieString) { - String worksiteId = cookieString.substring(cookieString.indexOf(ProfileConstants.SEARCH_COOKIE_VALUE_WORKSITE_MARKER) + 1, - cookieString.indexOf(ProfileConstants.SEARCH_COOKIE_VALUE_PAGE_MARKER)); - - return (worksiteId.equals("null") ? null : worksiteId); - } - - // behaviour so we can set the current search cookie when the navigator page changes - private class MySearchCookieBehavior extends Behavior { - - private static final long serialVersionUID = 1L; - - private PageableListView view; - - public MySearchCookieBehavior(PageableListView view) { - this.view = view; - } - - @Override - public void beforeRender(Component component) { - if (searchCookie != null) { - updatePageNumber(view.getCurrentPage(), searchCookie.getValue()); - } - } - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewFriends.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewFriends.html deleted file mode 100644 index 5cde7d90896d..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewFriends.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - -
    -
    - - - -
    - - -
    [confirmedFriends]
    - -
    - - - -
    -
    - - - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewFriends.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewFriends.java deleted file mode 100644 index 3084c4f57dea..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewFriends.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * 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.tool.pages; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.markup.html.panel.Panel; - -import org.sakaiproject.profile2.tool.pages.panels.ConfirmedFriends; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; - -import org.apache.wicket.markup.html.basic.Label; - -import org.apache.wicket.model.StringResourceModel; - -@Slf4j -public class ViewFriends extends BasePage { - - public ViewFriends(final String userUuid) { - - log.debug("ViewFriends()"); - - //get user viewing this page - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - - //check person viewing this page (currentuserId) is allowed to view userId's friends - unless admin - boolean isFriendsListVisible = sakaiProxy.isSuperUser() - || privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYFRIENDS); - - if (isFriendsListVisible) { - //show confirmed friends panel for the given user - Panel confirmedFriends = new ConfirmedFriends("confirmedFriends", userUuid); - confirmedFriends.setOutputMarkupId(true); - add(confirmedFriends); - - //post view event - sakaiProxy.postEvent(ProfileConstants.EVENT_FRIENDS_VIEW_OTHER, "/profile/"+userUuid, false); - } else { - log.debug("User: {} is not allowed to view the friends list for: {} ", currentUserUuid, userUuid); - String displayName = sakaiProxy.getUserDisplayName(userUuid); - Label notPermitted = new Label("confirmedFriends" - , new StringResourceModel("error.friend.view.disallowed").setParameters(displayName)); - add(notPermitted); - } - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPicture.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPicture.java deleted file mode 100644 index 43f724daadf5..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPicture.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * 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.tool.pages; - -import org.apache.wicket.feedback.FeedbackMessage; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.model.Model; -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.tool.components.ErrorLevelsFeedbackMessageFilter; -import org.sakaiproject.profile2.tool.components.GalleryImageRenderer; - -/** - * View-only version of MyPicture. - */ -public class ViewPicture extends BasePage { - - public ViewPicture(GalleryImage galleryImage) { - configureFeedback(); - - Label galleryImageHeading = new Label("galleryImageHeading", - new Model(galleryImage.getDisplayName())); - add(galleryImageHeading); - - Form galleryImageForm = new Form("galleryImageForm"); - galleryImageForm.setOutputMarkupId(true); - add(galleryImageForm); - - GalleryImageRenderer galleryImageRenderer = new GalleryImageRenderer( - "galleryImageRenderer", galleryImage.getMainResource()); - galleryImageForm.add(galleryImageRenderer); - } - - private void configureFeedback() { - - // activate feedback panel - final FeedbackPanel feedbackPanel = new FeedbackPanel("feedback"); - feedbackPanel.setOutputMarkupId(true); - feedbackPanel.setVisible(false); - - add(feedbackPanel); - - // don't show filtered feedback errors in feedback panel - int[] filteredErrorLevels = new int[] { FeedbackMessage.ERROR }; - feedbackPanel.setFilter(new ErrorLevelsFeedbackMessageFilter( - filteredErrorLevels)); - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPictures.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPictures.html deleted file mode 100644 index 42e0253a6c0a..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPictures.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - -
    -
    -
    -
    - - -
    -

    [galleryHeading]

    - - -
    -
    -
    -
    -
    - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPictures.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPictures.java deleted file mode 100644 index 831711995598..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewPictures.java +++ /dev/null @@ -1,141 +0,0 @@ -/** - * 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.tool.pages; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.feedback.FeedbackMessage; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.navigation.paging.PagingNavigator; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.GridView; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.StringResourceModel; - -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.tool.components.ErrorLevelsFeedbackMessageFilter; -import org.sakaiproject.profile2.tool.components.GalleryImageRenderer; -import org.sakaiproject.profile2.tool.dataproviders.GalleryImageDataProvider; -import org.sakaiproject.profile2.util.ProfileConstants; - -/** - * Gallery component for viewing another user's pictures. - */ -@Slf4j -public class ViewPictures extends BasePage { - - private GridView gridView; - - public ViewPictures(String userUuid) { - - log.debug("ViewPictures()"); - - configureFeedback(); - createGalleryForm(userUuid); - } - - private void createGalleryForm(final String userUuid) { - - Label galleryHeading = new Label("galleryHeading", new StringResourceModel( - "heading.pictures.view.pictures").setParameters(sakaiProxy.getUserDisplayName(userUuid))); - - add(galleryHeading); - - Form galleryForm = new Form("galleryForm"); - galleryForm.setOutputMarkupId(true); - - populateGallery(galleryForm, userUuid); - - add(galleryForm); - } - - private void populateGallery(Form galleryForm, final String userUuid) { - - IDataProvider dataProvider = new GalleryImageDataProvider(userUuid); - - long numImages = dataProvider.size(); - - gridView = new GridView("rows", dataProvider) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(Item item) { - - final GalleryImage image = (GalleryImage) item.getModelObject(); - - final GalleryImageRenderer galleryImageThumbnailRenderer = new GalleryImageRenderer( - "galleryImageThumbnailRenderer", image - .getThumbnailResource()); - - AjaxLink galleryImageLink = new AjaxLink("galleryItem") { - @Override - public void onClick(AjaxRequestTarget target) { - setResponsePage(new ViewPicture(image)); - } - }; - galleryImageLink.add(galleryImageThumbnailRenderer); - - item.add(galleryImageLink); - } - - @Override - protected void populateEmptyItem(Item item) { - - Link galleryImageLink = new Link("galleryItem") { - @Override - public void onClick() { - - } - }; - - galleryImageLink.add(new Label("galleryImageThumbnailRenderer")); - item.add(galleryImageLink); - } - }; - - gridView.setRows(3); - gridView.setColumns(4); - - galleryForm.add(gridView); - - //pager - if (numImages == 0) { - galleryForm.add(new PagingNavigator("navigator", gridView).setVisible(false)); - } else if (numImages <= ProfileConstants.MAX_GALLERY_IMAGES_PER_PAGE) { - galleryForm.add(new PagingNavigator("navigator", gridView).setVisible(false)); - } else { - galleryForm.add(new PagingNavigator("navigator", gridView)); - } - } - - private void configureFeedback() { - - // activate feedback panel - final FeedbackPanel feedback = new FeedbackPanel("feedback"); - feedback.setOutputMarkupId(true); - add(feedback); - - // don't show filtered feedback errors in feedback panel - int[] filteredErrorLevels = new int[] { FeedbackMessage.ERROR }; - feedback.setFilter(new ErrorLevelsFeedbackMessageFilter( - filteredErrorLevels)); - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.html index 357e01c67c82..1ef9f6305651 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.html @@ -33,34 +33,14 @@
    - - - -
    - - -
    - - -
    - - -
    - [profileName] - [online indicator here] -
    [status here]
    - - - -
    [view profile tabs]
    +

    [profileName]

    +
    [view profile panel]
    diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.java index 1a19269fd6ee..f21043b7f212 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/ViewProfile.java @@ -15,45 +15,17 @@ */ package org.sakaiproject.profile2.tool.pages; -import java.util.ArrayList; -import java.util.List; - -import javax.servlet.http.Cookie; - import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; import org.apache.wicket.RestartResponseException; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.extensions.ajax.markup.html.tabs.AjaxTabbedPanel; -import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; -import org.apache.wicket.extensions.markup.html.tabs.ITab; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.EmptyPanel; -import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.request.mapper.parameter.PageParameters; -import org.apache.wicket.util.cookies.CookieUtils; import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.OnlinePresenceIndicator; import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.components.ProfileStatusRenderer; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.tool.pages.panels.FriendsFeed; -import org.sakaiproject.profile2.tool.pages.panels.GalleryFeed; -import org.sakaiproject.profile2.tool.pages.panels.KudosPanel; import org.sakaiproject.profile2.tool.pages.panels.ViewProfilePanel; -import org.sakaiproject.profile2.tool.pages.panels.ViewWallPanel; -import org.sakaiproject.profile2.tool.pages.windows.AddFriend; -import org.sakaiproject.profile2.types.PrivacyType; import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.user.api.User; @@ -64,9 +36,6 @@ public ViewProfile(final String userUuid, final String tab) { log.debug("ViewProfile()"); - // setup model to store the actions in the modal windows - final FriendAction friendActionModel = new FriendAction(); - // get current user info final User currentUser = this.sakaiProxy.getUserQuietly(this.sakaiProxy.getCurrentUserId()); final String currentUserId = currentUser.getId(); @@ -84,21 +53,11 @@ public ViewProfile(final String userUuid, final String tab) { throw new RestartResponseException(new MyProfile(userUuid)); } - myPicturesLink.setVisible(false); - myFriendsLink.setVisible(false); - myMessagesLink.setVisible(false); - myPrivacyLink.setVisible(false); - searchLink.setVisible(false); preferencesLink.setVisible(false); // post view event this.sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_VIEW_OTHER, "/profile/" + userUuid, false); - /* - * DEPRECATED via PRFL-24 when privacy was relaxed if(!isProfileAllowed) { throw new ProfileIllegalAccessException("User: " + - * currentUserId + " is not allowed to view profile for: " + userUuid); } - */ - // get some values from User final User user = this.sakaiProxy.getUserQuietly(userUuid); if (user == null) { @@ -111,35 +70,6 @@ public ViewProfile(final String userUuid, final String tab) { disableLink(otherProfileLink); final String userType = user.getType(); - // init - final boolean friend; - boolean friendRequestToThisPerson = false; - boolean friendRequestFromThisPerson = false; - - // friend? - friend = this.connectionsLogic.isUserXFriendOfUserY(userUuid, currentUserId); - - // if not friend, has a friend request already been made to this person? - if (!friend) { - friendRequestToThisPerson = this.connectionsLogic.isFriendRequestPending(currentUserId, userUuid); - } - - // if not friend and no friend request to this person, has a friend request been made from this person to the current user? - if (!friend && !friendRequestToThisPerson) { - friendRequestFromThisPerson = this.connectionsLogic.isFriendRequestPending(userUuid, currentUserId); - } - - // privacy checks - final ProfilePrivacy privacy = this.privacyLogic.getPrivacyRecordForUser(userUuid); - - final boolean isFriendsListVisible = this.privacyLogic.isActionAllowed(userUuid, currentUserId, - PrivacyType.PRIVACY_OPTION_MYFRIENDS); - final boolean isKudosVisible = this.privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_MYKUDOS); - final boolean isGalleryVisible = this.privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_MYPICTURES); - final boolean isConnectionAllowed = this.sakaiProxy.isConnectionAllowedBetweenUserTypes(currentUserType, userType); - final boolean isOnlineStatusVisible = this.privacyLogic.isActionAllowed(userUuid, currentUserId, - PrivacyType.PRIVACY_OPTION_ONLINESTATUS); - final ProfilePreferences prefs = this.preferencesLogic.getPreferencesRecordForUser(userUuid); /* IMAGE */ @@ -149,166 +79,13 @@ public ViewProfile(final String userUuid, final String tab) { final Label profileName = new Label("profileName", userDisplayName); add(profileName); - /* ONLINE PRESENCE INDICATOR */ - if (this.sakaiProxy.isOnlineStatusEnabledGlobally() && prefs.isShowOnlineStatus() && isOnlineStatusVisible) { - add(new OnlinePresenceIndicator("online", userUuid)); - } else { - add(new EmptyPanel("online")); - } - - /* STATUS PANEL */ - if (this.sakaiProxy.isProfileStatusEnabled()) { - add(new ProfileStatusRenderer("status", userUuid, privacy, null, "tiny")); - } else { - add(new EmptyPanel("status")); - } - - /* TABS */ - final List tabs = new ArrayList(); - - final AjaxTabbedPanel tabbedPanel = new AjaxTabbedPanel("viewProfileTabs", tabs) { - - private static final long serialVersionUID = 1L; - - // overridden so we can add tooltips to tabs - @Override - protected WebMarkupContainer newLink(final String linkId, final int index) { - final WebMarkupContainer link = super.newLink(linkId, index); - - if (ProfileConstants.TAB_INDEX_PROFILE == index) { - link.add(new AttributeModifier("title", - new ResourceModel("link.tab.profile.tooltip"))); - - } else if (ProfileConstants.TAB_INDEX_WALL == index) { - link.add(new AttributeModifier("title", - new ResourceModel("link.tab.wall.tooltip"))); - } - return link; - } - }; - - final CookieUtils utils = new CookieUtils(); - final Cookie tabCookie = utils.getCookie(ProfileConstants.TAB_COOKIE); - - if (this.sakaiProxy.isProfileFieldsEnabled()) { - tabs.add(new AbstractTab(new ResourceModel("link.tab.profile")) { - - private static final long serialVersionUID = 1L; - - @Override - public Panel getPanel(final String panelId) { - - setTabCookie(ProfileConstants.TAB_INDEX_PROFILE); - return new ViewProfilePanel(panelId, userUuid, currentUserId, - privacy, friend); - } - }); - } - - // DEPRECATED: UNLESS THERE IS AN EXPRESSED DESIRE FOR THIS FUNCTIONALITY THE WALL WILL BE REMOVED FOR 13. - if (this.sakaiProxy.isWallEnabledGlobally()) { - - tabs.add(new AbstractTab(new ResourceModel("link.tab.wall")) { - - private static final long serialVersionUID = 1L; - - @Override - public Panel getPanel(final String panelId) { - - setTabCookie(ProfileConstants.TAB_INDEX_WALL); - return new ViewWallPanel(panelId, userUuid); - } - }); - - if (this.sakaiProxy.isWallDefaultProfilePage() && null == tabCookie) { - - tabbedPanel.setSelectedTab(ProfileConstants.TAB_INDEX_WALL); - } - } - - if (null != tab) { - tabbedPanel.setSelectedTab(Integer.parseInt(tab)); - } else if (null != tabCookie) { - try { - tabbedPanel.setSelectedTab(Integer.parseInt(tabCookie.getValue())); - } catch (final IndexOutOfBoundsException e) { - // do nothing. This will be thrown if the cookie contains a value > the number of tabs but thats ok. - } - } - - add(tabbedPanel); + add(new ViewProfilePanel("viewProfilePanel", userUuid, currentUserId)); /* SIDELINKS */ final WebMarkupContainer sideLinks = new WebMarkupContainer("sideLinks"); int visibleSideLinksCount = 0; - final WebMarkupContainer addFriendContainer = new WebMarkupContainer("addFriendContainer"); - - // ADD FRIEND MODAL WINDOW - final ModalWindow addFriendWindow = new ModalWindow("addFriendWindow"); - - // FRIEND LINK/STATUS - final AjaxLink addFriendLink = new AjaxLink("addFriendLink") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(final AjaxRequestTarget target) { - addFriendWindow.show(target); - } - }; - - final Label addFriendLabel = new Label("addFriendLabel"); - addFriendLink.add(addFriendLabel); - - addFriendContainer.add(addFriendLink); - - // setup link/label and windows - if (friend) { - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.confirmed")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction connection-confirmed"))); - addFriendLink.setEnabled(false); - } else if (friendRequestToThisPerson) { - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.requested")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction connection-request"))); - addFriendLink.setEnabled(false); - } else if (friendRequestFromThisPerson) { - // TODO (confirm pending friend request link) - // could be done by setting the content off the addFriendWindow. - // will need to rename some links to make more generic and set the onClick and setContent in here for link and window - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.pending")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction connection-request"))); - addFriendLink.setEnabled(false); - } else { - addFriendLabel.setDefaultModel(new StringResourceModel("link.friend.add.name").setParameters(user.getFirstName())); - addFriendWindow - .setContent(new AddFriend(addFriendWindow.getContentId(), addFriendWindow, friendActionModel, currentUserId, userUuid)); - } - sideLinks.add(addFriendContainer); - - // ADD FRIEND MODAL WINDOW HANDLER - addFriendWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { - private static final long serialVersionUID = 1L; - - @Override - public void onClose(final AjaxRequestTarget target) { - if (friendActionModel.isRequested()) { - // friend was successfully requested, update label and link - addFriendLabel.setDefaultModel(new ResourceModel("text.friend.requested")); - addFriendLink.add(new AttributeModifier("class", new Model("instruction connection-request"))); - addFriendLink.setEnabled(false); - target.add(addFriendLink); - } - } - }); - addFriendWindow.setVisible(this.sakaiProxy.isConnectionsEnabledGlobally()); - add(addFriendWindow); - - // hide connection link if not allowed - if (!isConnectionAllowed && !this.sakaiProxy.isConnectionsEnabledGlobally()) { - addFriendContainer.setVisible(false); - } else { - visibleSideLinksCount++; - } + visibleSideLinksCount++; // hide entire list if no links to show if (visibleSideLinksCount == 0) { @@ -316,56 +93,6 @@ public void onClose(final AjaxRequestTarget target) { } add(sideLinks); - - /* KUDOS PANEL */ - if (this.sakaiProxy.isMyKudosEnabledGlobally() && isKudosVisible) { - add(new AjaxLazyLoadPanel("myKudos") { - private static final long serialVersionUID = 1L; - - @Override - public Component getLazyLoadComponent(final String markupId) { - if (prefs.isShowKudos()) { - - final int score = ViewProfile.this.kudosLogic.getKudos(userUuid); - if (score > 0) { - return new KudosPanel(markupId, userUuid, currentUserId, score); - } - } - return new EmptyPanel(markupId); - } - }); - } else { - add(new EmptyPanel("myKudos").setVisible(false)); - } - - /* FRIENDS FEED PANEL */ - if (this.sakaiProxy.isConnectionsEnabledGlobally() && isFriendsListVisible) { - add(new AjaxLazyLoadPanel("friendsFeed") { - private static final long serialVersionUID = 1L; - - @Override - public Component getLazyLoadComponent(final String markupId) { - return new FriendsFeed(markupId, userUuid, currentUserId); - } - - }); - } else { - add(new EmptyPanel("friendsFeed").setVisible(false)); - } - - /* GALLERY FEED PANEL */ - if (this.sakaiProxy.isProfileGalleryEnabledGlobally() && isGalleryVisible && prefs.isShowGalleryFeed()) { - add(new AjaxLazyLoadPanel("galleryFeed") { - private static final long serialVersionUID = 1L; - - @Override - public Component getLazyLoadComponent(final String markupId) { - return new GalleryFeed(markupId, userUuid, currentUserId).setOutputMarkupId(true); - } - }); - } else { - add(new EmptyPanel("galleryFeed").setVisible(false)); - } } /** diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileDisplay.html deleted file mode 100644 index 372bc7594063..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileDisplay.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -
    [companyNameLabel][companyName]
    [companyWebAddressLabel][companyWebAddress]
    [companyDescriptionLabel][companyDescription]
    -
    - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileDisplay.java deleted file mode 100644 index 9a3bb3a1dc4a..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileDisplay.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.ExternalLink; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.ResourceModel; -import org.sakaiproject.profile2.model.CompanyProfile; - -/** - * Panel for displaying and editing company profile data - */ -public class CompanyProfileDisplay extends Panel { - - private static final long serialVersionUID = 1L; - - public CompanyProfileDisplay(String id, CompanyProfile companyProfile) { - - super(id); - - String companyName = companyProfile.getCompanyName(); - String companyWebAddress = companyProfile.getCompanyWebAddress(); - String companyDescription = companyProfile.getCompanyDescription(); - - WebMarkupContainer companyNameContainer = new WebMarkupContainer( - "companyNameContainer"); - companyNameContainer.add(new Label("companyNameLabel", - new ResourceModel("profile.business.company.name"))); - companyNameContainer.add(new Label("companyName", companyName)); - - add(companyNameContainer); - - if (StringUtils.isBlank(companyName)) { - companyNameContainer.setVisible(false); - } - - WebMarkupContainer companyWebAddressContainer = new WebMarkupContainer( - "companyWebAddressContainer"); - companyWebAddressContainer.add(new Label("companyWebAddressLabel", - new ResourceModel("profile.business.company.web"))); - companyWebAddressContainer.add(new ExternalLink("companyWebAddress", - companyWebAddress, companyWebAddress)); - - add(companyWebAddressContainer); - - if (StringUtils.isBlank(companyWebAddress)) { - companyWebAddressContainer.setVisible(false); - } - - WebMarkupContainer companyDescriptionContainer = new WebMarkupContainer( - "companyDescriptionContainer"); - companyDescriptionContainer.add(new Label("companyDescriptionLabel", - new ResourceModel("profile.business.company.description"))); - companyDescriptionContainer.add(new Label("companyDescription", - companyDescription)); - - add(companyDescriptionContainer); - - if (StringUtils.isBlank(companyDescription)) { - companyDescriptionContainer.setVisible(false); - } - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileEdit.html deleted file mode 100644 index e39254a18f53..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileEdit.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - -
    [companyNameLabel] - - -
    [companyWebAddressLabel] - - - [companyWebAddressFeedback] -
    [companyDescriptionLabel] - - -
    -
    - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileEdit.java deleted file mode 100644 index 9cbba5f95d81..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CompanyProfileEdit.java +++ /dev/null @@ -1,116 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.validation.validator.UrlValidator; -import org.sakaiproject.profile2.model.CompanyProfile; -import org.sakaiproject.profile2.tool.components.ComponentVisualErrorBehaviour; -import org.sakaiproject.profile2.tool.components.FeedbackLabel; - -/** - * Panel for displaying and editing company profile data - */ -public class CompanyProfileEdit extends Panel { - - private static final long serialVersionUID = 1L; - - public CompanyProfileEdit(String id, CompanyProfile companyProfile) { - - super(id, new Model(companyProfile)); - - WebMarkupContainer companyNameContainer = new WebMarkupContainer( - "companyNameContainer"); - companyNameContainer.add(new Label("companyNameLabel", - new ResourceModel("profile.business.company.name"))); - TextField companyName = new TextField("companyName", - new PropertyModel(companyProfile, "companyName")); - companyName.setOutputMarkupId(true); - companyNameContainer.add(companyName); - String companyNameId = companyName.getMarkupId(); - Label companyNameAccessibilityLabel = new Label("companyNameAccessibilityLabel", new ResourceModel("accessibility.profile.companyname.input")); - companyNameAccessibilityLabel.add(new AttributeAppender("for",new Model(companyNameId)," ")); - companyNameContainer.add(companyNameAccessibilityLabel); - - add(companyNameContainer); - - WebMarkupContainer companyWebAddressContainer = new WebMarkupContainer( - "companyWebAddressContainer"); - companyWebAddressContainer.add(new Label("companyWebAddressLabel", - new ResourceModel("profile.business.company.web"))); - - TextField companyWebAddress = new TextField("companyWebAddress", - new PropertyModel(companyProfile, "companyWebAddress")) { - - private static final long serialVersionUID = 1L; - - // add http:// if missing - @Override - public void convertInput() { - String input = getInput(); - - if (StringUtils.isNotBlank(input) - && !(input.startsWith("http://") || input - .startsWith("https://"))) { - setConvertedInput("http://" + input); - } else { - setConvertedInput(StringUtils.isBlank(input) ? null : input); - } - } - }; - companyWebAddress.setOutputMarkupId(true); - companyWebAddress.add(new UrlValidator()); - companyWebAddressContainer.add(companyWebAddress); - String companyUrlId = companyWebAddress.getMarkupId(); - Label companyUrlAccessibilityLabel = new Label("companyUrlAccessibilityLabel", new ResourceModel("accessibility.profile.companyurl.input")); - companyUrlAccessibilityLabel.add(new AttributeAppender("for",new Model(companyUrlId)," ")); - companyWebAddressContainer.add(companyUrlAccessibilityLabel); - - final FeedbackLabel companyWebAddressFeedback = new FeedbackLabel( - "companyWebAddressFeedback", companyWebAddress); - companyWebAddressFeedback.setOutputMarkupId(true); - companyWebAddressContainer.add(companyWebAddressFeedback); - companyWebAddress.add(new ComponentVisualErrorBehaviour("blur", - companyWebAddressFeedback)); - companyWebAddress.add(new AttributeAppender("aria-describedby",new Model(companyWebAddressFeedback.getMarkupId())," ")); - - add(companyWebAddressContainer); - - WebMarkupContainer companyDescriptionContainer = new WebMarkupContainer( - "companyDescriptionContainer"); - companyDescriptionContainer.add(new Label("companyDescriptionLabel", - new ResourceModel("profile.business.company.description"))); - TextArea companyDescription = new TextArea("companyDescription", - new PropertyModel(companyProfile, "companyDescription")); - companyDescription.setOutputMarkupId(true); - companyDescriptionContainer.add(companyDescription); - String companyDescriptionId = companyDescription.getMarkupId(); - Label companyDescriptionAccessibilityLabel = new Label("companyDescriptionAccessibilityLabel", new ResourceModel("accessibility.profile.companydescription.input")); - companyDescriptionAccessibilityLabel.add(new AttributeAppender("for",new Model(companyDescriptionId)," ")); - companyDescriptionContainer.add(companyDescriptionAccessibilityLabel); - - add(companyDescriptionContainer); - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ComposeNewMessage.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ComposeNewMessage.html deleted file mode 100644 index 278f22869fd6..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ComposeNewMessage.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - -
    [toLabel] - - -
    [subjectLabel] - -
    [messageLabel] - - -
    - -
    - -
    - -
    - -
    [formFeedback]
    - -
    - - - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ComposeNewMessage.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ComposeNewMessage.java deleted file mode 100644 index 54890e9f7948..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ComposeNewMessage.java +++ /dev/null @@ -1,270 +0,0 @@ -/** - * 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.tool.pages.panels; - -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxEventBehavior; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.tool.components.ResourceReferences; -import org.sakaiproject.profile2.tool.models.NewMessageModel; -import org.sakaiproject.profile2.util.ProfileUtils; -import org.wicketstuff.objectautocomplete.AutoCompletionChoicesProvider; -import org.wicketstuff.objectautocomplete.ObjectAutoCompleteBuilder; -import org.wicketstuff.objectautocomplete.ObjectAutoCompleteField; -import org.wicketstuff.objectautocomplete.ObjectAutoCompleteRenderer; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class ComposeNewMessage extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - protected ProfileMessagingLogic messagingLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - protected ProfileConnectionsLogic connectionsLogic; - - private TextField toField; - private Label formFeedback; - - public ComposeNewMessage(String id) { - super(id); - - //current user - final String userId = sakaiProxy.getCurrentUserId(); - - //setup model - NewMessageModel newMessage = new NewMessageModel(); - newMessage.setFrom(userId); - - //feedback for form submit action - formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - add(formFeedback); - - - //setup form - final Form form = new Form("form", new Model(newMessage)); - - //close button - /* - WebMarkupContainer closeButton = new WebMarkupContainer("closeButton"); - closeButton.add(new AjaxFallbackLink("link") { - private static final long serialVersionUID = 1L; - - public void onClick(AjaxRequestTarget target) { - if(target != null) { - target.prependJavascript("$('#" + thisPanel.getMarkupId() + "').slideUp();"); - target.appendJavascript("setMainFrameHeight(window.name);"); - } - } - }.add(new ContextImage("img",new Model(ProfileConstants.CLOSE_IMAGE)))); - form.add(closeButton); - */ - - - //to label - form.add(new Label("toLabel", new ResourceModel("message.to"))); - - //get connections - final List connections = connectionsLogic.getConnectionsForUser(userId); - Collections.sort(connections); - - // list provider - AutoCompletionChoicesProvider provider = new AutoCompletionChoicesProvider() { - private static final long serialVersionUID = 1L; - - @Override - public Iterator getChoices(String input) { - return connectionsLogic.getConnectionsSubsetForSearch(connections, input, true).iterator(); - } - }; - - //renderer - ObjectAutoCompleteRenderer renderer = new ObjectAutoCompleteRenderer(){ - private static final long serialVersionUID = 1L; - - @Override - protected String getIdValue(Person p) { - return p.getUuid(); - } - @Override - protected String getTextValue(Person p) { - return p.getDisplayName(); - } - }; - - - //autocompletefield builder - ObjectAutoCompleteBuilder builder = new ObjectAutoCompleteBuilder(provider); - builder.autoCompleteRenderer(renderer); - builder.searchLinkImage(ResourceReferences.CROSS_IMG_LOCAL); - builder.preselect(); - - //autocompletefield - final ObjectAutoCompleteField autocompleteField = builder.build("toField", new PropertyModel(newMessage, "to")); - toField = autocompleteField.getSearchTextField(); - toField.setMarkupId("messagerecipientinput"); - toField.setOutputMarkupId(true); - toField.add(new AttributeModifier("class", new Model("formInputField"))); - toField.setRequired(true); - form.add(autocompleteField); - - //subject - form.add(new Label("subjectLabel", new ResourceModel("message.subject"))); - final TextField subjectField = new TextField("subjectField", new PropertyModel(newMessage, "subject")); - subjectField.setMarkupId("messagesubjectinput"); - subjectField.setOutputMarkupId(true); - subjectField.add(new RecipientEventBehavior("focus")); - form.add(subjectField); - - //body - form.add(new Label("messageLabel", new ResourceModel("message.message"))); - final TextArea messageField = new TextArea("messageField", new PropertyModel(newMessage, "message")); - messageField.setMarkupId("messagebodyinput"); - messageField.setOutputMarkupId(true); - messageField.setRequired(true); - messageField.add(new RecipientEventBehavior("focus")); - form.add(messageField); - - //send button - IndicatingAjaxButton sendButton = new IndicatingAjaxButton("sendButton", form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - - //get the backing model - NewMessageModel newMessage = form.getModelObject(); - - //generate the thread id - String threadId = ProfileUtils.generateUuid(); - - //save it, it will be abstracted into its proper parts and email notifications sent - if(newMessage.getTo()!=null && messagingLogic.sendNewMessage(newMessage.getTo(), newMessage.getFrom(), threadId, newMessage.getSubject(), newMessage.getMessage())) { - - //success - formFeedback.setDefaultModel(new ResourceModel("success.message.send.ok")); - formFeedback.add(new AttributeModifier("class", new Model("success"))); - - //target.appendJavascript("$('#" + form.getMarkupId() + "').slideUp();"); - target.appendJavaScript("setMainFrameHeight(window.name);"); - - //PRFL-797 all fields when successful, to prevent multiple messages. - //User can just click Compose message again to get a new form - this.setEnabled(false); - autocompleteField.setEnabled(false); - subjectField.setEnabled(false); - messageField.setEnabled(false); - target.add(this); - target.add(autocompleteField); - target.add(subjectField); - target.add(messageField); - - } else { - //error - formFeedback.setDefaultModel(new ResourceModel("error.message.send.failed")); - formFeedback.add(new AttributeModifier("class", new Model("alertMessage"))); - } - - formFeedback.setVisible(true); - target.add(formFeedback); - - } - - @Override - protected void onError(AjaxRequestTarget target) { - - //check which item didn't validate and update the feedback model - if(!toField.isValid()) { - formFeedback.setDefaultModel(new ResourceModel("error.message.required.to")); - } - if(!messageField.isValid()) { - formFeedback.setDefaultModel(new ResourceModel("error.message.required.body")); - } - formFeedback.add(new AttributeModifier("class", new Model("alertMessage"))); - - target.add(formFeedback); - } - }; - form.add(sendButton); - sendButton.setModel(new ResourceModel("button.message.send")); - - add(form); - - } - - - /** - * Inner class to provide simple validation of the to field and print an error message - * if it's not set. This is a bit of a hack since it should be on the toField, - * but we can't overload the onchange/onblur event of the toField itself as that event is already taken. - * - * Would need to reimplement autocompletebox as plain javascript. - * - * @author Steve Swinsburg (steve.swinsburg@gmail.com) - * - */ - class RecipientEventBehavior extends AjaxEventBehavior { - - private static final long serialVersionUID = 1L; - - public RecipientEventBehavior(String event) { - super(event); - } - - @Override - protected void onEvent(AjaxRequestTarget target) { - if(StringUtils.isBlank(toField.getValue())) { - formFeedback.setDefaultModel(new ResourceModel("error.message.required.to")); - formFeedback.add(new AttributeModifier("class", new Model("alertMessage"))); - } else { - formFeedback.setVisible(false); - } - target.add(formFeedback); - - - } - - - } - - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ConfirmedFriends.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ConfirmedFriends.html deleted file mode 100644 index e963924266e6..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ConfirmedFriends.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - -

    - [My friends - ] - [36] -

    - -
    -
    - -
    -
    - - [dataview navigator] -
    - -
    - - - - -
    - [name] - [status] -
    - -
    -
    summary
    -
    -
    - -
    -
    - - - -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ConfirmedFriends.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ConfirmedFriends.java deleted file mode 100644 index f9af3dd5450a..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ConfirmedFriends.java +++ /dev/null @@ -1,359 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.ajax.markup.html.form.AjaxButton; -import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.link.ExternalLink; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.link.PopupSettings; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.DataView; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.components.ProfileStatusRenderer; -import org.sakaiproject.profile2.tool.dataproviders.ConfirmedFriendsDataProvider; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.tool.pages.MySearch; -import org.sakaiproject.profile2.tool.pages.ViewFriends; -import org.sakaiproject.profile2.tool.pages.ViewProfile; -import org.sakaiproject.profile2.tool.pages.windows.RemoveFriend; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class ConfirmedFriends extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - protected ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - protected ProfilePrivacyLogic privacyLogic; - - private Integer numConfirmedFriends = 0; - private boolean ownList = false; - - - public ConfirmedFriends(final String id, final String userUuid) { - super(id); - - log.debug("ConfirmedFriends()"); - - //setup model to store the actions in the modal windows - final FriendAction friendActionModel = new FriendAction(); - - //get info for user viewing this page (will be the same if user is viewing own list, different if viewing someone else's) - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - //User currentUser = sakaiProxy.getUserQuietly(currentUserUuid); - //final String currentUserType = currentUser.getType(); //to be used for checking if connection between users is allowed, when this is added - - //if viewing own friends, you can manage them. - if(userUuid.equals(currentUserUuid)) { - ownList = true; - } - - //get our list of confirmed friends as an IDataProvider - ConfirmedFriendsDataProvider provider = new ConfirmedFriendsDataProvider(userUuid); - - //init number of friends - numConfirmedFriends = (int) provider.size(); - - //model so we can update the number of friends - IModel numConfirmedFriendsModel = new Model() { - private static final long serialVersionUID = 1L; - public Integer getObject() { - return numConfirmedFriends; - } - }; - - //heading - final WebMarkupContainer confirmedFriendsHeading = new WebMarkupContainer("confirmedFriendsHeading"); - Label confirmedFriendsLabel = new Label("confirmedFriendsLabel"); - //if viewing own list, "my friends", else, "their name's friends" - if(ownList) { - confirmedFriendsLabel.setDefaultModel(new ResourceModel("heading.friends.my")); - } else { - String displayName = sakaiProxy.getUserDisplayName(userUuid); - confirmedFriendsLabel.setDefaultModel(new StringResourceModel("heading.friends.view").setParameters(displayName)); - } - confirmedFriendsHeading.add(confirmedFriendsLabel); - confirmedFriendsHeading.add(new Label("confirmedFriendsNumber", numConfirmedFriendsModel)); - confirmedFriendsHeading.setOutputMarkupId(true); - add(confirmedFriendsHeading); - - // actions - Form confirmedFriendsButtonForm = new Form("confirmedFriendsButtonForm"); - add(confirmedFriendsButtonForm); - - //search for connections - AjaxButton searchConnectionsButton = new AjaxButton("searchConnectionsButton", confirmedFriendsButtonForm) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - setResponsePage(new MySearch()); - } - }; - searchConnectionsButton.setModel(new ResourceModel("link.my.friends.search")); - confirmedFriendsButtonForm.add(searchConnectionsButton); - - //container which wraps list - final WebMarkupContainer confirmedFriendsContainer = new WebMarkupContainer("confirmedFriendsContainer"); - confirmedFriendsContainer.setOutputMarkupId(true); - - //connection window - final ModalWindow connectionWindow = new ModalWindow("connectionWindow"); - - //results - DataView confirmedFriendsDataView = new DataView("connections", provider) { - private static final long serialVersionUID = 1L; - - protected void populateItem(final Item item) { - - Person person = (Person)item.getDefaultModelObject(); - final String personUuid = person.getUuid(); - - //setup values - String displayName = person.getDisplayName(); - boolean friend; - - //get friend status - if(ownList) { - friend = true; //viewing own page of conenctions, must be friend! - } else { - friend = connectionsLogic.isUserXFriendOfUserY(userUuid, personUuid); //other person viewing, check if they are friends - } - - //get other objects - ProfilePrivacy privacy = person.getPrivacy(); - ProfilePreferences prefs = person.getPreferences(); - - //image wrapper, links to profile - Link friendItem = new Link("connectionPhotoWrap", new Model(personUuid)) { - private static final long serialVersionUID = 1L; - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - }; - - //image - ProfileImage connectionPhoto = new ProfileImage("connectionPhoto", new Model(personUuid)); - connectionPhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - friendItem.add(connectionPhoto); - - item.add(friendItem); - - //name and link to profile - Link profileLink = new Link("connectionLink", new Model(personUuid)) { - private static final long serialVersionUID = 1L; - - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - - }; - profileLink.add(new Label("connectionName", displayName)); - item.add(profileLink); - - //status component - ProfileStatusRenderer status = new ProfileStatusRenderer("connectionStatus", person, "connection-status-msg", "connection-status-date"); - status.setOutputMarkupId(true); - item.add(status); - - - /* ACTIONS */ - - WebMarkupContainer c1 = new WebMarkupContainer("removeConnectionContainer"); - c1.setOutputMarkupId(true); - - //REMOVE FRIEND LINK AND WINDOW - final AjaxLink removeConnectionLink = new AjaxLink("removeConnectionLink", new Model(personUuid)) { - private static final long serialVersionUID = 1L; - public void onClick(AjaxRequestTarget target) { - - //get this item, and set content for modalwindow - String friendUuid = getModelObject(); - connectionWindow.setContent(new RemoveFriend(connectionWindow.getContentId(), connectionWindow, friendActionModel, userUuid, friendUuid)); - - //modalwindow handler - connectionWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { - private static final long serialVersionUID = 1L; - public void onClose(AjaxRequestTarget target){ - if(friendActionModel.isRemoved()) { - - //decrement number of friends - numConfirmedFriends--; - - //remove friend item from display - target.appendJavaScript("$('#" + item.getMarkupId() + "').slideUp();"); - - //update label - target.add(confirmedFriendsHeading); - - //if none left, hide whole thing - if(numConfirmedFriends==0) { - target.appendJavaScript("$('#" + confirmedFriendsContainer.getMarkupId() + "').fadeOut();"); - } - } - } - }); - - connectionWindow.show(target); - target.appendJavaScript("fixWindowVertical();"); - } - }; - //ContextImage removeConnectionIcon = new ContextImage("removeConnectionIcon",new Model(ProfileConstants.DELETE_IMG)); - removeConnectionLink.add(new AttributeModifier("alt", new StringResourceModel("accessibility.connection.remove").setParameters(displayName))); - //removeConnectionLink.add(removeConnectionIcon); - removeConnectionLink.add(new AttributeModifier("title", new ResourceModel("link.title.removefriend"))); - removeConnectionLink.add(new Label("removeConnectionLabel", new ResourceModel("button.friend.remove")).setOutputMarkupId(true)); - c1.add(removeConnectionLink); - item.add(c1); - - //can only delete if own connections - if(!ownList) { - removeConnectionLink.setEnabled(false); - removeConnectionLink.setVisible(false); - } - - WebMarkupContainer c2 = new WebMarkupContainer("viewFriendsContainer"); - c2.setOutputMarkupId(true); - - final AjaxLink viewFriendsLink = new AjaxLink("viewFriendsLink") { - private static final long serialVersionUID = 1L; - public void onClick(AjaxRequestTarget target) { - // always ViewFriends because a user isn't connected to himself - setResponsePage(new ViewFriends(personUuid)); - } - }; - final Label viewFriendsLabel = new Label("viewFriendsLabel", new ResourceModel("link.view.friends")); - viewFriendsLink.add(viewFriendsLabel); - - //hide if not allowed - if(!privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYFRIENDS)) { - viewFriendsLink.setEnabled(false); - c2.setVisible(false); - } - viewFriendsLink.setOutputMarkupId(true); - c2.add(viewFriendsLink); - item.add(c2); - - WebMarkupContainer c3 = new WebMarkupContainer("emailContainer"); - c3.setOutputMarkupId(true); - - ExternalLink emailLink = new ExternalLink("emailLink", - "mailto:" + person.getProfile().getEmail(), - new ResourceModel("profile.email").getObject()); - - c3.add(emailLink); - - if (StringUtils.isBlank(person.getProfile().getEmail()) || - false == privacyLogic.isActionAllowed( - person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_CONTACTINFO)) { - - c3.setVisible(false); - } - item.add(c3); - - WebMarkupContainer c4 = new WebMarkupContainer("websiteContainer"); - c4.setOutputMarkupId(true); - - // TODO home page, university profile URL or academic/research URL (see PRFL-35) - ExternalLink websiteLink = new ExternalLink("websiteLink", person.getProfile() - .getHomepage(), new ResourceModel( - "profile.homepage").getObject()).setPopupSettings(new PopupSettings()); - - c4.add(websiteLink); - - if (StringUtils.isBlank(person.getProfile().getHomepage()) || - false == privacyLogic.isActionAllowed( - person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_CONTACTINFO)) { - - c4.setVisible(false); - } - item.add(c4); - - // basic info can be set to 'only me' so still need to check - if (true == privacyLogic.isActionAllowed( - person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_BASICINFO)) { - - item.add(new Label("connectionSummary", - StringUtils.abbreviate(ProfileUtils.stripHtml( - person.getProfile().getPersonalSummary()), 200))); - } else { - item.add(new Label("connectionSummary", "")); - } - - item.setOutputMarkupId(true); - } - - }; - confirmedFriendsDataView.setOutputMarkupId(true); - confirmedFriendsDataView.setItemsPerPage(ProfileConstants.MAX_CONNECTIONS_PER_PAGE); - - confirmedFriendsContainer.add(confirmedFriendsDataView); - - //add results container - add(confirmedFriendsContainer); - - //add window - add(connectionWindow); - - //add pager - AjaxPagingNavigator pager = new AjaxPagingNavigator("navigator", confirmedFriendsDataView); - add(pager); - - //initially, if no friends, hide container and pager - if(numConfirmedFriends == 0) { - confirmedFriendsContainer.setVisible(false); - pager.setVisible(false); - } - - //also, if num less than num required for pager, hide it - if(numConfirmedFriends <= ProfileConstants.MAX_CONNECTIONS_PER_PAGE) { - pager.setVisible(false); - } - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CreateWorksitePanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CreateWorksitePanel.html deleted file mode 100644 index 93c744eb526d..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/CreateWorksitePanel.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - -
    -
    [formFeedback]
    - -
    - -
    -
    -
    - - - - - - - [createWorksiteToolTip] -
    - -
    -
    - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/FriendsFeed.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/FriendsFeed.html deleted file mode 100644 index a4adc5d07309..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/FriendsFeed.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - -
    [My friends]
    -
    - -
    - [num friends] - [view friends] -
    - -
    - - - - - - -
    -
    - - [friend name] -
    -
    -
    - - -
    - - - -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/FriendsFeed.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/FriendsFeed.java deleted file mode 100644 index 7db2e49d8de6..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/FriendsFeed.java +++ /dev/null @@ -1,213 +0,0 @@ -/** - * 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.tool.pages.panels; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.GridView; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.dataproviders.FriendsFeedDataProvider; -import org.sakaiproject.profile2.tool.pages.MyFriends; -import org.sakaiproject.profile2.tool.pages.MyProfile; -import org.sakaiproject.profile2.tool.pages.MySearch; -import org.sakaiproject.profile2.tool.pages.ViewFriends; -import org.sakaiproject.profile2.tool.pages.ViewProfile; -import org.sakaiproject.profile2.util.ProfileConstants; - -/* - * id = markup id - * ownerUserId = userId of the page that this friends feed panel is on - * viewingUserId = userId of the person who is viewing this friends feed panel - * (this might be the same or might be different if viewing someone else's profile and is passed to the DataProvider to decide) - * - */ -@Slf4j -public class FriendsFeed extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - protected ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - protected ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - protected ProfilePrivacyLogic privacyLogic; - - - public FriendsFeed(String id, final String ownerUserId, final String viewingUserId) { - super(id); - - log.debug("FriendsFeed()"); - - //heading - Label heading = new Label("heading"); - - if(viewingUserId.equals(ownerUserId)) { - heading.setDefaultModel(new ResourceModel("heading.widget.my.friends")); - } else { - String displayName = sakaiProxy.getUserDisplayName(ownerUserId); - heading.setDefaultModel(new StringResourceModel("heading.widget.view.friends").setParameters(displayName)); - } - add(heading); - - - //get our list of friends as an IDataProvider - //the FriendDataProvider takes care of the privacy associated with the associated list - //so what it returns will always be clean - FriendsFeedDataProvider provider = new FriendsFeedDataProvider(ownerUserId); - - GridView dataView = new GridView("rows", provider) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateEmptyItem(Item item) - { - Link friendItem = new Link("friendsFeedItem") { - private static final long serialVersionUID = 1L; - public void onClick() {} - }; - - ProfileImage friendPhoto = new ProfileImage("friendPhoto", new Model(null)); - friendPhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - friendItem.add(friendPhoto); - - friendItem.add(new Label("friendName","empty")); - item.add(friendItem); - friendItem.setVisible(false); - } - - protected void populateItem(Item item) - { - final Person person = (Person)item.getDefaultModelObject(); - final String friendId = person.getUuid(); - - //setup info - String displayName = person.getDisplayName(); - boolean friend; - - - //get friend status - if(ownerUserId.equals(viewingUserId)) { - friend = true; //viewing own list of friends so must be a friend - } else { - friend = connectionsLogic.isUserXFriendOfUserY(viewingUserId, friendId); //other person viewing, check if they are friends - } - - //link to their profile - Link friendItem = new Link("friendsFeedItem") { - private static final long serialVersionUID = 1L; - public void onClick() { - //link to own profile if link will point to self - if(viewingUserId.equals(friendId)) { - setResponsePage(new MyProfile()); - } else { - setResponsePage(new ViewProfile(friendId)); - } - - } - }; - - /* IMAGE */ - ProfileImage friendPhoto = new ProfileImage("friendPhoto", new Model(friendId)); - friendPhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - friendItem.add(friendPhoto); - - //name (will be linked also) - Label friendLinkLabel = new Label("friendName", displayName); - friendItem.add(friendLinkLabel); - - item.add(friendItem); - - } - }; - - dataView.setColumns(3); - add(dataView); - - /* NUM FRIENDS LABEL (can't just use provider as it only ever returns the number in the grid */ - final int numFriends = connectionsLogic.getConnectionsForUserCount(ownerUserId); - Label numFriendsLabel = new Label("numFriendsLabel"); - add(numFriendsLabel); - - - /* VIEW ALL FRIENDS LINK */ - Link viewFriendsLink = new Link("viewFriendsLink") { - private static final long serialVersionUID = 1L; - - public void onClick() { - //this could come from a bookmarkablelink, but this works for now - if(numFriends == 0) { - setResponsePage(new MySearch()); - } else { - //if own FriendsFeed, link to own MyFriends, otherwise link to ViewFriends - if (sakaiProxy.isSuperUserAndProxiedToUser(ownerUserId)) { - setResponsePage(new ViewFriends(ownerUserId)); - } else if (viewingUserId.equals(ownerUserId)) { - setResponsePage(new MyFriends()); - } else { - setResponsePage(new ViewFriends(ownerUserId)); - } - } - } - }; - Label viewFriendsLabel = new Label("viewFriendsLabel"); - viewFriendsLink.add(viewFriendsLabel); - add(viewFriendsLink); - - - /* TESTS FOR THE ABOVE to change labels and links */ - if(numFriends == 0) { - numFriendsLabel.setDefaultModel(new ResourceModel("text.friend.feed.num.none")); - //numFriendsLabel.setVisible(false); - //if own FriendsFeed, show search link, otherwise hide - if(viewingUserId.equals(ownerUserId)) { - if (sakaiProxy.isSearchEnabledGlobally()) { - viewFriendsLabel.setDefaultModel(new ResourceModel("link.friend.feed.search")); - } - } else { - viewFriendsLink.setVisible(false); - } - } else if (numFriends == 1) { - numFriendsLabel.setDefaultModel(new ResourceModel("text.friend.feed.num.one")); - viewFriendsLink.setVisible(false); - } else { - numFriendsLabel.setDefaultModel(new StringResourceModel("text.friend.feed.num.many").setParameters(numFriends)); - viewFriendsLabel.setDefaultModel(new ResourceModel("link.friend.feed.view")); - } - - } - - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryFeed.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryFeed.html deleted file mode 100644 index f632fe935bc4..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryFeed.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - -
    [My pictures]
    -
    - -
    - [Num pictures] - - [View pictures] - -
    - - -
    -
    - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryFeed.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryFeed.java deleted file mode 100644 index 9273678b4142..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryFeed.java +++ /dev/null @@ -1,170 +0,0 @@ -/** - * 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.tool.pages.panels; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.GridView; -import org.apache.wicket.markup.repeater.data.IDataProvider; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.tool.components.GalleryImageRenderer; -import org.sakaiproject.profile2.tool.dataproviders.GalleryImageRandomizedDataProvider; -import org.sakaiproject.profile2.tool.pages.MyPictures; -import org.sakaiproject.profile2.tool.pages.ViewPicture; -import org.sakaiproject.profile2.tool.pages.ViewPictures; - -/** - * Gallery image feed component which sits on MyProfile/ViewProfile. - * - * @author d.b.robinson@lancaster.ac.uk - */ -@Slf4j -public class GalleryFeed extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") - private ProfileLogic profileLogic; - - @SuppressWarnings("unchecked") - public GalleryFeed(String id, final String ownerUserId, - final String viewingUserId) { - - super(id); - - log.debug("GalleryFeed()"); - - Label heading; - if (viewingUserId.equals(ownerUserId)) { - heading = new Label("heading", new ResourceModel( - "heading.widget.my.pictures")); - } else { - heading = new Label("heading", new StringResourceModel( - "heading.widget.view.pictures").setParameters(sakaiProxy.getUserDisplayName(ownerUserId))); - } - add(heading); - - IDataProvider dataProvider = new GalleryImageRandomizedDataProvider(ownerUserId); - - GridView dataView = new GridView("rows", dataProvider) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateEmptyItem(Item item) { - // TODO make "fake" clickable - Link emptyImageLink = new Link("galleryFeedItem") { - public void onClick() { - } - - }; - - Label galleryFeedPicture = new Label("galleryImageThumbnailRenderer", ""); - emptyImageLink.add(galleryFeedPicture); - - item.add(emptyImageLink); - } - - @Override - protected void populateItem(Item item) { - - final GalleryImage image = (GalleryImage) item.getModelObject(); - - GalleryImageRenderer galleryImageThumbnailRenderer = new GalleryImageRenderer( - "galleryImageThumbnailRenderer", image - .getThumbnailResource()); - - AjaxLink galleryFeedItem = new AjaxLink("galleryFeedItem") { - - @Override - public void onClick(AjaxRequestTarget target) { - // view-only (i.e. no edit functionality) - setResponsePage(new ViewPicture(image)); - } - }; - galleryFeedItem.add(galleryImageThumbnailRenderer); - - item.add(galleryFeedItem); - - } - - }; - // limit gallery to 3x2 thumbnails - dataView.setColumns(3); - dataView.setRows(2); - - add(dataView); - - AjaxLink viewPicturesLink = new AjaxLink("viewPicturesLink") { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - - if (sakaiProxy.isSuperUserAndProxiedToUser(ownerUserId)) { - setResponsePage(new ViewPictures(ownerUserId)); - } else if (viewingUserId.equals(ownerUserId)) { - setResponsePage(new MyPictures()); - } else { - setResponsePage(new ViewPictures(ownerUserId)); - } - } - - }; - - Label numPicturesLabel = new Label("numPicturesLabel"); - add(numPicturesLabel); - - Label viewPicturesLabel; - - if (dataView.getItemCount() == 0) { - numPicturesLabel.setDefaultModel(new ResourceModel( - "text.gallery.feed.num.none")); - viewPicturesLabel = new Label("viewPicturesLabel", - new ResourceModel("link.gallery.feed.addnew")); - - if (!viewingUserId.equals(ownerUserId) || - sakaiProxy.isSuperUserAndProxiedToUser(ownerUserId)) { - viewPicturesLink.setVisible(false); - } - - } else { - numPicturesLabel.setVisible(false); - viewPicturesLabel = new Label("viewPicturesLabel", - new ResourceModel("link.gallery.feed.view")); - } - - viewPicturesLink.add(viewPicturesLabel); - - add(viewPicturesLink); - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryImageEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryImageEdit.html deleted file mode 100644 index 120aeb02b099..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryImageEdit.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - -
    [formFeedback]
    -
    - - - - - - - - - - - - - - - - - -
    [removePictureLabel][setProfileImageLabel]
    -
    -
    -
    - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryImageEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryImageEdit.java deleted file mode 100644 index a229bf8a3502..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/GalleryImageEdit.java +++ /dev/null @@ -1,322 +0,0 @@ -/** - * 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.tool.pages.panels; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileImageLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.GalleryImage; -import org.sakaiproject.profile2.tool.components.GalleryImageRenderer; -import org.sakaiproject.profile2.tool.pages.MyPictures; -import org.sakaiproject.profile2.tool.pages.MyProfile; -import org.sakaiproject.profile2.util.ProfileConstants; - -import java.util.Optional; - -/** - * Gallery component for viewing a gallery image alongside options, including - * removing the image and setting the image as the new profile image. - */ -@Slf4j -public class GalleryImageEdit extends Panel { - - private static final long serialVersionUID = 1L; - - private final WebMarkupContainer imageOptionsContainer; - private final WebMarkupContainer removeConfirmContainer; - private final WebMarkupContainer setProfileImageConfirmContainer; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileImageLogic") - private ProfileImageLogic imageLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - private ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - public GalleryImageEdit(String id, - final String userId, final GalleryImage image, - final long galleryPageIndex) { - - super(id); - - log.debug("GalleryImageEdit()"); - - // feedback label for user alert in event remove/set actions fail - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - add(formFeedback); - - Form imageEditForm = new Form("galleryImageEditForm"); - - imageEditForm.setOutputMarkupId(true); - add(imageEditForm); - - imageOptionsContainer = new WebMarkupContainer("galleryImageOptionsContainer"); - imageOptionsContainer.setOutputMarkupId(true); - imageOptionsContainer.setOutputMarkupPlaceholderTag(true); - - imageOptionsContainer.add(new Label("removePictureLabel", - new ResourceModel("pictures.removepicture"))); - - AjaxFallbackButton removePictureButton = createRemovePictureButton(imageEditForm); - imageOptionsContainer.add(removePictureButton); - - Label setProfileImageLabel = new Label("setProfileImageLabel", - new ResourceModel("pictures.setprofileimage")); - imageOptionsContainer.add(setProfileImageLabel); - - AjaxFallbackButton setProfileImageButton = createSetProfileImageButton(imageEditForm); - - if ((true == sakaiProxy.isOfficialImageEnabledGlobally() && - false == sakaiProxy.isUsingOfficialImageButAlternateSelectionEnabled()) - || preferencesLogic.getPreferencesRecordForUser(userId).isUseOfficialImage()) { - - setProfileImageLabel.setVisible(false); - setProfileImageButton.setVisible(false); - } - - imageOptionsContainer.add(setProfileImageButton); - - imageEditForm.add(imageOptionsContainer); - - removeConfirmContainer = new WebMarkupContainer("galleryRemoveImageConfirmContainer"); - removeConfirmContainer.setOutputMarkupId(true); - removeConfirmContainer.setOutputMarkupPlaceholderTag(true); - - Label removeConfirmLabel = new Label("removePictureConfirmLabel", - new ResourceModel("pictures.removepicture.confirm")); - removeConfirmContainer.add(removeConfirmLabel); - - AjaxFallbackButton removeConfirmButton = createRemoveConfirmButton( - userId, image, (int) galleryPageIndex, formFeedback, - imageEditForm); - //removeConfirmButton.add(new FocusOnLoadBehaviour()); - removeConfirmContainer.add(removeConfirmButton); - - AjaxFallbackButton removeCancelButton = createRemoveCancelButton(imageEditForm); - removeConfirmContainer.add(removeCancelButton); - - removeConfirmContainer.setVisible(false); - imageEditForm.add(removeConfirmContainer); - - setProfileImageConfirmContainer = new WebMarkupContainer("gallerySetProfileImageConfirmContainer"); - setProfileImageConfirmContainer.setOutputMarkupId(true); - setProfileImageConfirmContainer.setOutputMarkupPlaceholderTag(true); - - Label setProfileImageConfirmLabel = new Label("setProfileImageConfirmLabel", - new ResourceModel("pictures.setprofileimage.confirm")); - setProfileImageConfirmContainer.add(setProfileImageConfirmLabel); - - - AjaxFallbackButton setProfileImageConfirmButton = createSetProfileImageConfirmButton( - userId, image, (int) galleryPageIndex, formFeedback, - imageEditForm); - - //setProfileImageConfirmButton.add(new FocusOnLoadBehaviour()); - setProfileImageConfirmContainer.add(setProfileImageConfirmButton); - - AjaxFallbackButton setProfileImageCancelButton = createSetProfileImageCancelButton(imageEditForm); - setProfileImageConfirmContainer.add(setProfileImageCancelButton); - - setProfileImageConfirmContainer.setVisible(false); - imageEditForm.add(setProfileImageConfirmContainer); - - add(new GalleryImageRenderer("galleryImageMainRenderer", image - .getMainResource())); - } - - private AjaxFallbackButton createRemoveCancelButton(Form imageEditForm) { - AjaxFallbackButton removeCancelButton = new AjaxFallbackButton( - "galleryRemoveImageCancelButton", new ResourceModel( - "button.cancel"), imageEditForm) { - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(target -> { - target.appendJavaScript("$('#" + removeConfirmContainer.getMarkupId() + "').hide();"); - imageOptionsContainer.setVisible(true); - target.add(imageOptionsContainer); - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - - }; - return removeCancelButton; - } - - private AjaxFallbackButton createRemoveConfirmButton( - final String userId, - final GalleryImage image, final int galleryPageIndex, - final Label formFeedback, Form imageEditForm) { - AjaxFallbackButton removeConfirmButton = new AjaxFallbackButton( - "galleryRemoveImageConfirmButton", new ResourceModel( - "button.gallery.remove.confirm"), imageEditForm) { - - @Override - protected void onSubmit(Optional targetOptional) { - if (imageLogic.removeGalleryImage(userId, image.getId())) { - setResponsePage(new MyPictures(galleryPageIndex)); - } else { - targetOptional.ifPresent(target -> { - // user alert - formFeedback.setDefaultModel(new ResourceModel("error.gallery.remove.failed")); - formFeedback.add(new AttributeModifier("class", new Model("alertMessage"))); - target.add(formFeedback); - }); - } - } - }; - return removeConfirmButton; - } - - private AjaxFallbackButton createRemovePictureButton(Form imageEditForm) { - AjaxFallbackButton removePictureButton = new AjaxFallbackButton( - "galleryImageRemoveButton", new ResourceModel( - "button.gallery.remove"), imageEditForm) { - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(target -> { - imageOptionsContainer.setVisible(false); - target.appendJavaScript("$('#" + imageOptionsContainer.getMarkupId() + "').hide();"); - - removeConfirmContainer.setVisible(true); - target.add(removeConfirmContainer); - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - - }; - return removePictureButton; - } - - private AjaxFallbackButton createSetProfileImageCancelButton(Form imageEditForm) { - AjaxFallbackButton removeCancelButton = new AjaxFallbackButton( - "gallerySetProfileImageCancelButton", new ResourceModel( - "button.cancel"), imageEditForm) { - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(target -> { - target.appendJavaScript("$('#" - + setProfileImageConfirmContainer.getMarkupId() + "').hide();"); - - imageOptionsContainer.setVisible(true); - target.add(imageOptionsContainer); - - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - - }; - return removeCancelButton; - } - - private AjaxFallbackButton createSetProfileImageButton(Form imageEditForm) { - AjaxFallbackButton setProfileImageButton = new AjaxFallbackButton( - "gallerySetProfileImageButton", new ResourceModel( - "button.gallery.setprofile"), imageEditForm) { - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(target -> { - imageOptionsContainer.setVisible(false); - - target.appendJavaScript("$('#" - + imageOptionsContainer.getMarkupId() + "').hide();"); - - setProfileImageConfirmContainer.setVisible(true); - target.add(setProfileImageConfirmContainer); - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - - }; - return setProfileImageButton; - } - - private AjaxFallbackButton createSetProfileImageConfirmButton( - final String userId, - final GalleryImage image, final int galleryPageIndex, - final Label formFeedback, Form imageEditForm) { - - AjaxFallbackButton setProfileImageButton = new AjaxFallbackButton( - "gallerySetProfileImageConfirmButton", new ResourceModel( - "button.gallery.setprofile.confirm"), imageEditForm) { - - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - if (imageLogic.setUploadedProfileImage( - userId, - sakaiProxy.getResource( - image.getMainResource()).getBytes(), "", "")) { - - sakaiProxy.postEvent( - ProfileConstants.EVENT_PROFILE_IMAGE_CHANGE_UPLOAD, - "/profile/" + userId, true); - - if (true == sakaiProxy.isWallEnabledGlobally()) { - wallLogic - .addNewEventToWall( - ProfileConstants.EVENT_PROFILE_IMAGE_CHANGE_UPLOAD, - sakaiProxy.getCurrentUserId()); - } - - if (sakaiProxy.isSuperUserAndProxiedToUser( - userId)) { - setResponsePage(new MyProfile(userId)); - } else { - setResponsePage(new MyProfile()); - } - - } else { - targetOptional.ifPresent(target -> { - // user alert - formFeedback.setDefaultModel(new ResourceModel( - "error.gallery.setprofile.failed")); - formFeedback.add(new AttributeModifier("class", - new Model("alertMessage"))); - - target.add(formFeedback); - }); - } - } - }; - return setProfileImageButton; - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/KudosPanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/KudosPanel.html deleted file mode 100644 index 6682172f482c..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/KudosPanel.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - -
    [Kudos]
    -
    - -
    - - [rating] - -
    - -
    - -
    - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/KudosPanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/KudosPanel.java deleted file mode 100644 index dc4fbbc393f0..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/KudosPanel.java +++ /dev/null @@ -1,107 +0,0 @@ -/** - * 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.tool.pages.panels; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.image.ContextImage; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.util.ProfileConstants; - -@Slf4j -public class KudosPanel extends Panel { - - private static final long serialVersionUID = 1L; - - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - - public KudosPanel(String id, final String ownerUserId, final String viewingUserId, final int score) { - super(id); - - log.debug("KudosPanel()"); - - //heading - Label heading = new Label("heading"); - - if(viewingUserId.equals(ownerUserId)) { - heading.setDefaultModel(new ResourceModel("heading.widget.my.kudos")); - } else { - String displayName = sakaiProxy.getUserDisplayName(ownerUserId); - heading.setDefaultModel(new StringResourceModel("heading.widget.view.kudos").setParameters(displayName)); - } - add(heading); - - //score - add(new Label("kudosRating", String.valueOf(score))); - - String img = getImage(score); - - //images - add(new ContextImage("kudosImgLeft", img)); - add(new ContextImage("kudosImgRight", img)); - - } - - private String getImage(int score) { - - if(score >= 8) { - return ProfileConstants.AWARD_GOLD_IMG; - } - - if(score == 7) { - return ProfileConstants.AWARD_SILVER_IMG; - } - if(score >= 5) { - return ProfileConstants.AWARD_BRONZE_IMG; - } - return ProfileConstants.AWARD_NORMAL_IMG; - - } - - - - /* - private String getImage(BigDecimal score) { - - BigDecimal fifty = new BigDecimal(50); - BigDecimal seventy = new BigDecimal(70); - BigDecimal ninety = new BigDecimal(90); - - - if(score.compareTo(ninety) >= 0) { - return ProfileConstants.AWARD_GOLD_IMG; - } - if(score.compareTo(seventy) >= 0) { - return ProfileConstants.AWARD_SILVER_IMG; - } - if(score.compareTo(fifty) >= 0) { - return ProfileConstants.AWARD_BRONZE_IMG; - } - return ProfileConstants.AWARD_NORMAL_IMG; - } - */ - - - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageThreadsView.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageThreadsView.html deleted file mode 100644 index 36490136136b..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageThreadsView.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - -
    [no messages]
    - -
    [dataview navigator]
    - -
    - -
    - unread notice - - - - - - - - - - -
    - - - - - [name] - [04 January at 10:36] - - [subject] - [truncated message goes here] -
    - -
    - -
    - - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageThreadsView.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageThreadsView.java deleted file mode 100644 index 2cc61efe0f84..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageThreadsView.java +++ /dev/null @@ -1,195 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.DataView; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.model.MessageParticipant; -import org.sakaiproject.profile2.model.MessageThread; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.dataproviders.MessageThreadsDataProvider; -import org.sakaiproject.profile2.tool.pages.MyMessages; -import org.sakaiproject.profile2.tool.pages.ViewProfile; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class MessageThreadsView extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - protected SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - protected ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - protected ProfileMessagingLogic messagingLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - protected ProfilePrivacyLogic privacyLogic; - - public MessageThreadsView(final String id) { - super(id); - - log.debug("MessageThreads()"); - - //get current user - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - - //heading - /* - Label heading = new Label("messageThreadListHeading", new ResourceModel("heading.messages")); - add(heading); - */ - - //no messages label - Label noMessagesLabel = new Label("noMessagesLabel"); - noMessagesLabel.setOutputMarkupPlaceholderTag(true); - add(noMessagesLabel); - - //container which wraps list - final WebMarkupContainer messageThreadListContainer = new WebMarkupContainer("messageThreadListContainer"); - messageThreadListContainer.setOutputMarkupId(true); - - //get our list of messages - final MessageThreadsDataProvider provider = new MessageThreadsDataProvider(currentUserUuid); - int numMessages = (int) provider.size(); - - //message list - DataView messageThreadList = new DataView("messageThreadList", provider) { - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(final Item item) { - - final MessageThread thread = (MessageThread)item.getDefaultModelObject(); - Message message = thread.getMostRecentMessage(); - String messageFromUuid = message.getFrom(); - - //photo link - AjaxLink photoLink = new AjaxLink("photoLink", new Model(messageFromUuid)) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - setResponsePage(new ViewProfile(getModelObject())); - } - - }; - - //photo - ProfileImage messagePhoto = new ProfileImage("messagePhoto", new Model(messageFromUuid)); - messagePhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - photoLink.add(messagePhoto); - item.add(photoLink); - - //name link - AjaxLink messageFromLink = new AjaxLink("messageFromLink", new Model(messageFromUuid)) { - private static final long serialVersionUID = 1L; - @Override - public void onClick(AjaxRequestTarget target) { - setResponsePage(new ViewProfile(getModelObject())); - } - - }; - messageFromLink.add(new Label("messageFromName", new Model(sakaiProxy.getUserDisplayName(messageFromUuid)))); - item.add(messageFromLink); - - //date - item.add(new Label("messageDate", ProfileUtils.convertDateToString(message.getDatePosted(), ProfileConstants.MESSAGE_DISPLAY_DATE_FORMAT))); - - //subject link - AjaxLink messageSubjectLink = new AjaxLink("messageSubjectLink", new Model(thread)) { - private static final long serialVersionUID = 1L; - @Override - public void onClick(AjaxRequestTarget target) { - //load messageview panel - //setResponsePage(new MyMessageView(id, currentUserUuid, getModelObject().getId(), getModelObject().getSubject())); - - //load MyMessages with some params that will then load a diff tab panel and show this message panel. - setResponsePage(new MyMessages(thread.getId())); - - - } - - }; - messageSubjectLink.add(new Label("messageSubject", new Model(thread.getSubject()))); - item.add(messageSubjectLink); - - //message body - item.add(new Label("messageBody", new Model(StringUtils.abbreviate(message.getMessage(), ProfileConstants.MESSAGE_PREVIEW_MAX_LENGTH)))); - - //unread notice for accessibility, off unless its new. - Label messageUnreadNotice = new Label("messageUnreadNotice", new ResourceModel("accessibility.messages.unread")); - messageUnreadNotice.setVisible(false); - item.add(messageUnreadNotice); - - item.add(new AttributeAppender("class", new Model("unread-message"))); - - - - - - item.setOutputMarkupId(true); - } - - }; - messageThreadList.setOutputMarkupId(true); - messageThreadList.setItemsPerPage(ProfileConstants.MAX_MESSAGES_PER_PAGE); - messageThreadListContainer.add(messageThreadList); - add(messageThreadListContainer); - - //pager - AjaxPagingNavigator pager = new AjaxPagingNavigator("navigator", messageThreadList); - add(pager); - - //initially, if no message threads to show, hide container and pager, set and show label - if(numMessages == 0) { - messageThreadListContainer.setVisible(false); - pager.setVisible(false); - - noMessagesLabel.setDefaultModel(new ResourceModel("text.messages.none")); - noMessagesLabel.setVisible(true); - } - - //also, if num less than num required for pager, hide it - if(numMessages <= ProfileConstants.MAX_MESSAGES_PER_PAGE) { - pager.setVisible(false); - } - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageView.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageView.html deleted file mode 100644 index 19bdb89d2716..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageView.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - -
    -
    [thread subject]
    -
    - -
    - -
    - - - - - - -
    - - - - -
    - [name] - [04 January at 10:36] -
    - -
    [message goes here]
    -
    -
    - -
    - -
    - [reply] - -
    - -
    -
    - -
    [formFeedback]
    - - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageView.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageView.java deleted file mode 100644 index 6f28f85c8f97..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MessageView.java +++ /dev/null @@ -1,339 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.RestartResponseException; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.behavior.AttributeAppender; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.DataView; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.request.mapper.parameter.PageParameters; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.model.MessageParticipant; -import org.sakaiproject.profile2.model.MessageThread; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.dataproviders.MessagesDataProvider; -import org.sakaiproject.profile2.tool.models.StringModel; -import org.sakaiproject.profile2.tool.pages.MyMessages; -import org.sakaiproject.profile2.tool.pages.ViewProfile; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class MessageView extends Panel { - - private static final long serialVersionUID = 1L; - - private DataView messageList = null; - private WebMarkupContainer messageListContainer = null; - private boolean lastUnreadSet = false; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - protected SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - protected ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - protected ProfileMessagingLogic messagingLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - protected ProfilePrivacyLogic privacyLogic; - - /** - * Constructor for an incoming link with a threadId as part of the PageParameters - * @param parameters - */ - public MessageView(final String id, PageParameters parameters) { - super(id); - log.debug("MyMessageView(" + parameters.toString() +")"); - - MessageThread thread = messagingLogic.getMessageThread(parameters.get("thread").toString()); - - //check user is a thread participant - String currentUserUuid = sakaiProxy.getCurrentUserId(); - if(!messagingLogic.isThreadParticipant(thread.getId(), currentUserUuid)) { - //this would only ever happen if the user has access to the other user's workspace because the link is a direct link to their site - //so they won't even reach this part if they don't have access - so it would need to be a very special case. - log.error("MyMessageView: user " + currentUserUuid + " attempted to access restricted thread: " + thread.getId()); - throw new RestartResponseException(new MyMessages()); - } - - renderMyMessagesView(sakaiProxy.getCurrentUserId(), thread.getId(), thread.getSubject()); - } - - /** - * Constructor for normal viewing - * @param currentUserUuid - * @param threadId - */ - public MessageView(final String id, final String currentUserUuid, final String threadId) { - super(id); - log.debug("MyMessageView(" + currentUserUuid + ", " + threadId + ")"); - - //get subject - String threadSubject = messagingLogic.getThreadSubject(threadId); - - renderMyMessagesView(currentUserUuid, threadId, threadSubject); - } - - - /** - * Does the actual rendering of the page - * @param currentUserUuid - * @param threadId - * @param threadSubject - */ - private void renderMyMessagesView(final String currentUserUuid, final String threadId, final String threadSubject) { - - //details container - WebMarkupContainer messageDetailsContainer = new WebMarkupContainer("messageDetailsContainer"); - messageDetailsContainer.setOutputMarkupId(true); - - //thread subject - Label threadSubjectLabel = new Label("threadSubject", new Model(threadSubject)); - messageDetailsContainer.add(threadSubjectLabel); - - add(messageDetailsContainer); - - //list container - messageListContainer = new WebMarkupContainer("messageListContainer"); - messageListContainer.setOutputMarkupId(true); - - //get our list of messages - final MessagesDataProvider provider = new MessagesDataProvider(threadId); - - - messageList = new DataView("messageList", provider) { - private static final long serialVersionUID = 1L; - - protected void populateItem(final Item item) { - - final Message message = (Message)item.getDefaultModelObject(); - final String messageFromUuid = message.getFrom(); - - //we need to know if this message has been read or not so we can style it accordingly - //we only need this if we didn't send the message - MessageParticipant participant = null; - - boolean messageOwner = false; - if(StringUtils.equals(messageFromUuid, currentUserUuid)) { - messageOwner = true; - } - if(!messageOwner) { - participant = messagingLogic.getMessageParticipant(message.getId(), currentUserUuid); - } - - //prefs and privacy - ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(messageFromUuid); - ProfilePrivacy privacy = privacyLogic.getPrivacyRecordForUser(messageFromUuid); - - //photo link - AjaxLink photoLink = new AjaxLink("photoLink", new Model(messageFromUuid)) { - private static final long serialVersionUID = 1L; - public void onClick(AjaxRequestTarget target) { - setResponsePage(new ViewProfile(getModelObject())); - } - - }; - - //photo - /* disabled for now - ProfileImage messagePhoto = new ProfileImage("messagePhoto", new Model(messageFromUuid)); - messagePhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - photoLink.add(messagePhoto); - */ - item.add(photoLink); - - //name link - AjaxLink messageFromLink = new AjaxLink("messageFromLink", new Model(messageFromUuid)) { - private static final long serialVersionUID = 1L; - public void onClick(AjaxRequestTarget target) { - setResponsePage(new ViewProfile(getModelObject())); - } - - }; - messageFromLink.add(new Label("messageFromName", new Model(sakaiProxy.getUserDisplayName(messageFromUuid)))); - item.add(messageFromLink); - - //date - item.add(new Label("messageDate", ProfileUtils.convertDateToString(message.getDatePosted(), ProfileConstants.MESSAGE_DISPLAY_DATE_FORMAT))); - - //message body - item.add(new Label("messageBody", new Model(message.getMessage()))); - - //highlight if new, then mark it as read - if(!messageOwner && !participant.isRead()) { - item.add(new AttributeAppender("class", new Model("unread-message"), " ")); - messagingLogic.toggleMessageRead(participant, true); - - //set param for first unread message in the thread - if(!lastUnreadSet) { - lastUnreadSet=true; - item.add(new AttributeModifier("rel", new Model("lastUnread"))); - } - - } - - item.setOutputMarkupId(true); - - } - - }; - messageList.setOutputMarkupId(true); - messageListContainer.add(messageList); - add(messageListContainer); - - - //reply form - StringModel stringModel = new StringModel(); - Form replyForm = new Form("replyForm", new Model(stringModel)); - - //form feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - add(formFeedback); - - //reply field - replyForm.add(new Label("replyLabel", new ResourceModel("message.reply"))); - final TextArea replyField = new TextArea("replyField", new PropertyModel(stringModel, "string")); - replyField.setRequired(true); - replyField.setOutputMarkupId(true); - replyForm.add(replyField); - - //reply button - IndicatingAjaxButton replyButton = new IndicatingAjaxButton("replyButton", replyForm) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - - StringModel stringModel = replyForm.getModelObject(); - String reply = stringModel.getString(); - - //create a direct link to view this message thread - //String messageLink = sakaiProxy.getDirectUrlToUserProfile(newMessage.getTo(), urlFor(MyMessageView.class, new PageParameters("thread=" + threadId)).toString()); - - //send it, get Message back so we can add it to the list - Message message = messagingLogic.replyToThread(threadId, reply, currentUserUuid); - if(message != null) { - //clear this field - replyField.setModelObject(null); - target.add(replyField); - - //create new item and add it to the list - //do we need to register this with the listview? - Component item = buildItem(message); - target.prependJavaScript(String.format( - "var item=document.createElement('%s');item.id='%s';Wicket.$('%s').appendChild(item);", - "tr", item.getMarkupId(), messageListContainer.getMarkupId())); - target.add(item); - - //repaint the list of messages in this thread - //target.addComponent(messageListContainer); - - //resize - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - - } - - @Override - protected void onError(AjaxRequestTarget target) { - - //validate - if(!replyField.isValid()) { - formFeedback.setDefaultModel(new ResourceModel("error.message.required.body")); - } - formFeedback.add(new AttributeModifier("class", new Model("alertMessage"))); - target.add(formFeedback); - } - }; - replyForm.add(replyButton); - replyButton.setModel(new ResourceModel("button.message.send")); - - add(replyForm); - - - - - } - - //build a single item in the list so we can add it to the end - private Component buildItem(Message message){ - WebMarkupContainer item = new WebMarkupContainer(messageList.newChildId()); - item.setOutputMarkupId(true); - messageList.add(item); - - ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(message.getFrom()); - - //photo and link - item.add(new AjaxLink("photoLink", new Model(message.getFrom())) { - private static final long serialVersionUID = 1L; - public void onClick(AjaxRequestTarget target) { - setResponsePage(new ViewProfile(getModelObject())); - } - - }); - - /* disabled for now - //image - ProfileImage messagePhoto = new ProfileImage("messagePhoto", new Model(message.getFrom())); - messagePhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - item.add(messagePhoto); - */ - - //name link - item.add(new AjaxLink("messageFromLink", new Model(message.getFrom())) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - setResponsePage(new ViewProfile(getModelObject())); - } - }.add(new Label("messageFromName", new Model(sakaiProxy.getUserDisplayName(message.getFrom()))))); - - //date - item.add(new Label("messageDate", ProfileUtils.convertDateToString(message.getDatePosted(), ProfileConstants.MESSAGE_DISPLAY_DATE_FORMAT))); - - //message body - item.add(new Label("messageBody", new Model(message.getMessage()))); - - return item; - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessDisplay.html deleted file mode 100644 index 222137e6e6de..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessDisplay.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - -
    -
    - [Business Information] -
    - - - - edit - - -
    - No fields - - - - - - - -
    [businessBiographyLabel][businessBiography]
    - - - - - - - - -
    [companyProfilesLabel]
    [companyProfiles]
    -
    -
    - -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessDisplay.java deleted file mode 100644 index 1fa20092912f..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessDisplay.java +++ /dev/null @@ -1,159 +0,0 @@ -/** - * 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.tool.pages.panels; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.extensions.ajax.markup.html.tabs.AjaxTabbedPanel; -import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; -import org.apache.wicket.extensions.markup.html.tabs.ITab; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.CompanyProfile; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.extern.slf4j.Slf4j; - -/** - * Panel for displaying business profile data. - */ -@Slf4j -public class MyBusinessDisplay extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - public MyBusinessDisplay(final String id, final UserProfile userProfile) { - super(id); - - log.debug("MyBusinessDisplay()"); - - setDefaultModel(new Model("businessDisplayModel")); - - int visibleFieldCount = 0; - - add(new Label("heading", new ResourceModel("heading.business"))); - - visibleFieldCount = addBusinessBiography(userProfile, visibleFieldCount); - - visibleFieldCount = addCompanyProfiles(userProfile, visibleFieldCount); - - addEditButton(id, userProfile); - - // no fields message - Label noFieldsMessage = new Label("noFieldsMessage", new ResourceModel("text.no.fields")); - add(noFieldsMessage); - if (visibleFieldCount > 0) { - noFieldsMessage.setVisible(false); - } - } - - private int addBusinessBiography(final UserProfile userProfile, int visibleFieldCount) { - - WebMarkupContainer businessBiographyContainer = new WebMarkupContainer("businessBiographyContainer"); - businessBiographyContainer.add(new Label("businessBiographyLabel", new ResourceModel("profile.business.bio"))); - businessBiographyContainer.add(new Label("businessBiography", ProfileUtils.processHtml(userProfile.getBusinessBiography())) - .setEscapeModelStrings(false)); - add(businessBiographyContainer); - - if (StringUtils.isBlank(userProfile.getBusinessBiography())) { - businessBiographyContainer.setVisible(false); - } else { - visibleFieldCount++; - } - return visibleFieldCount; - } - - private int addCompanyProfiles(final UserProfile userProfile, - int visibleFieldCount) { - - WebMarkupContainer companyProfilesContainer = new WebMarkupContainer("companyProfilesContainer"); - - companyProfilesContainer.add(new Label("companyProfilesLabel", - new ResourceModel("profile.business.company.profiles"))); - - List tabs = new ArrayList(); - - if (null != userProfile.getCompanyProfiles()) { - - for (final CompanyProfile companyProfile : userProfile.getCompanyProfiles()) { - - tabs.add(new AbstractTab(new ResourceModel("profile.business.company.profile")) { - - private static final long serialVersionUID = 1L; - - @Override - public Panel getPanel(String panelId) { - - return new CompanyProfileDisplay(panelId, companyProfile); - } - - }); - } - } - - companyProfilesContainer.add(new AjaxTabbedPanel("companyProfiles", tabs)); - add(companyProfilesContainer); - - if (0 == tabs.size()) { - companyProfilesContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - return visibleFieldCount; - } - - private void addEditButton(final String id, final UserProfile userProfile) { - AjaxFallbackLink editButton = new AjaxFallbackLink("editButton") { - @Override - public void onClick(Optional targetOptional) { - Component newPanel = new MyBusinessEdit(id, userProfile); - newPanel.setOutputMarkupId(true); - MyBusinessDisplay.this.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - // resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - }; - editButton.add(new Label("editButtonLabel", new ResourceModel("button.edit"))); - editButton.add(new AttributeModifier("aria-label", new ResourceModel("accessibility.edit.business"))); - editButton.setOutputMarkupId(true); - - if (userProfile.isLocked() && !sakaiProxy.isSuperUser()) { - editButton.setVisible(false); - } - - add(editButton); - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessEdit.html deleted file mode 100644 index f6f6aab9e902..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessEdit.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - - - -
    -
    [Business - Information]
    - -
    - -
    - -
    [You are - editing {other person}'s profile]
    - -
    [formFeedback]
    - - - - - - - -
    [businessBiographyLabel - - -
    - - - - - - - - -
    [companyProfilesLabel]
    [companyProfiles]
    - -
    - - - -
    - -
    -
    -
    - - -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessEdit.java deleted file mode 100644 index 416644d15b47..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyBusinessEdit.java +++ /dev/null @@ -1,403 +0,0 @@ -/** - * 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.tool.pages.panels; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.extensions.ajax.markup.html.tabs.AjaxTabbedPanel; -import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; -import org.apache.wicket.extensions.markup.html.tabs.ITab; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.api.common.edu.person.SakaiPerson; -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.CompanyProfile; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileConstants; - -/** - * Panel for displaying and editing business profile data. - */ -@Slf4j -public class MyBusinessEdit extends Panel { - - private static final long serialVersionUID = 1L; - private AjaxTabbedPanel companyProfileTabs; - private List companyProfilesToAdd = null; - private List companyProfilesToRemove = null; - private enum TabDisplay { START, END } - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") - private ProfileLogic profileLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - public MyBusinessEdit(final String id, final UserProfile userProfile) { - this(id, userProfile, new ArrayList(), - new ArrayList(), TabDisplay.START); - } - - public MyBusinessEdit(final String id, final UserProfile userProfile, - List companyProfilesToAdd, - List companyProfilesToRemove, - TabDisplay tabDisplay) { - - super(id); - - log.debug("MyBusinessEdit()"); - - this.companyProfilesToAdd = companyProfilesToAdd; - this.companyProfilesToRemove = companyProfilesToRemove; - - // heading - add(new Label("heading", new ResourceModel("heading.business.edit"))); - - // setup form - Form form = new Form<>("form", new Model<>(userProfile)); - form.setOutputMarkupId(true); - - // form submit feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - form.add(formFeedback); - - // add warning message if superUser and not editing own profile - Label editWarning = new Label("editWarning"); - editWarning.setVisible(false); - if (sakaiProxy.isSuperUserAndProxiedToUser( - userProfile.getUserUuid())) { - editWarning.setDefaultModel(new StringResourceModel( - "text.edit.other.warning").setParameters(userProfile.getDisplayName())); - editWarning.setEscapeModelStrings(false); - editWarning.setVisible(true); - } - form.add(editWarning); - - // business biography - WebMarkupContainer businessBiographyContainer = new WebMarkupContainer( - "businessBiographyContainer"); - businessBiographyContainer.add(new Label("businessBiographyLabel", - new ResourceModel("profile.business.bio"))); - TextArea businessBiography = new TextArea<>( - "businessBiography", new PropertyModel(userProfile, - "businessBiography")); - businessBiography.setMarkupId("businessbioinput"); - businessBiography.setOutputMarkupId(true); - //businessBiography.setEditorConfig(CKEditorConfig.createCkConfig()); - businessBiographyContainer.add(businessBiography); - form.add(businessBiographyContainer); - - // company profiles - WebMarkupContainer companyProfileEditsContainer = createCompanyProfileEditsContainer(userProfile, tabDisplay); - form.add(companyProfileEditsContainer); - - AjaxFallbackButton addCompanyProfileButton = createAddCompanyProfileButton( - id, userProfile, form, formFeedback); - form.add(addCompanyProfileButton); - - AjaxFallbackButton removeCompanyProfileButton = createRemoveCompanyProfileButton( - id, userProfile, form); - form.add(removeCompanyProfileButton); - - AjaxFallbackButton submitButton = createSaveChangesButton(id, - userProfile, form, formFeedback); - //submitButton.add(new CKEditorTextArea.CKEditorAjaxSubmitModifier()); - form.add(submitButton); - - AjaxFallbackButton cancelButton = createCancelChangesButton(id, - userProfile, form); - form.add(cancelButton); - - add(form); - } - - private AjaxFallbackButton createCancelChangesButton(final String id, - final UserProfile userProfile, Form form) { - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", - new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - // undo any changes in progress - for (CompanyProfile profile : companyProfilesToAdd) { - userProfile.removeCompanyProfile(profile); - } - - for (CompanyProfile profile : companyProfilesToRemove) { - userProfile.addCompanyProfile(profile); - } - - Component newPanel = new MyBusinessDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - MyBusinessEdit.this.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - - } - }; - cancelButton.setDefaultFormProcessing(false); - return cancelButton; - } - - private AjaxFallbackButton createSaveChangesButton(final String id, - final UserProfile userProfile, Form form, final Label formFeedback) { - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", - new ResourceModel("button.save.changes"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - if (save(form)) { - - // post update event - sakaiProxy.postEvent( - ProfileConstants.EVENT_PROFILE_BUSINESS_UPDATE, - "/profile/" + userProfile.getUserUuid(), true); - - //post to wall if enabled - if (true == sakaiProxy.isWallEnabledGlobally() && false == sakaiProxy.isSuperUserAndProxiedToUser(userProfile.getUserUuid())) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_BUSINESS_UPDATE, sakaiProxy.getCurrentUserId()); - } - - // repaint panel - Component newPanel = new MyBusinessDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - MyBusinessEdit.this.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - // resize iframe - target - .appendJavaScript("setMainFrameHeight(window.name);"); - }); - - } else { - targetOptional.ifPresent(target -> { - formFeedback.setDefaultModel(new ResourceModel( - "error.profile.save.business.failed")); - formFeedback.add(new AttributeModifier("class", - new Model("save-failed-error"))); - target.add(formFeedback); - }); - } - } - }; - return submitButton; - } - - private AjaxFallbackButton createRemoveCompanyProfileButton( - final String id, final UserProfile userProfile, Form form) { - AjaxFallbackButton removeCompanyProfileButton = new AjaxFallbackButton( - "removeCompanyProfileButton", new ResourceModel( - "button.business.remove.profile"), form) { - - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - // if there's nothing to remove - if (-1 == companyProfileTabs.getSelectedTab()) { - return; - } - - CompanyProfile companyProfileToRemove = userProfile - .getCompanyProfiles().get( - companyProfileTabs.getSelectedTab()); - - userProfile.removeCompanyProfile(companyProfileToRemove); - - // this check is in case it's been added but never saved - if (companyProfilesToAdd.contains(companyProfileToRemove)) { - companyProfilesToAdd.remove(companyProfileToRemove); - } else { - companyProfilesToRemove.add(companyProfileToRemove); - } - - Component newPanel = new MyBusinessEdit(id, userProfile, - companyProfilesToAdd, companyProfilesToRemove, - TabDisplay.START); - - newPanel.setOutputMarkupId(true); - MyBusinessEdit.this.replaceWith(newPanel); - - targetOptional.ifPresent(target -> { - target.add(newPanel); - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - }; - return removeCompanyProfileButton; - } - - private AjaxFallbackButton createAddCompanyProfileButton(final String id, - final UserProfile userProfile, Form form, final Label formFeedback) { - AjaxFallbackButton addCompanyProfileButton = new AjaxFallbackButton( - "addCompanyProfileButton", new ResourceModel( - "button.business.add.profile"), form) { - - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - CompanyProfile companyProfileToAdd = new CompanyProfile( - userProfile.getUserUuid(), "", "", ""); - companyProfilesToAdd.add(companyProfileToAdd); - userProfile.addCompanyProfile(companyProfileToAdd); - - Component newPanel = new MyBusinessEdit(id, userProfile, - companyProfilesToAdd, companyProfilesToRemove, - TabDisplay.END); - newPanel.setOutputMarkupId(true); - MyBusinessEdit.this.replaceWith(newPanel); - - targetOptional.ifPresent(target -> { - target.add(newPanel); - // resize iframe - target - .prependJavaScript("setMainFrameHeight(window.name);"); - }); - } - }; - return addCompanyProfileButton; - } - - // creates the company profile edit container - private WebMarkupContainer createCompanyProfileEditsContainer( - final UserProfile userProfile, TabDisplay tabDisplay) { - - WebMarkupContainer companyProfilesContainer = new WebMarkupContainer( - "companyProfilesContainer"); - - companyProfilesContainer.add(new Label("companyProfilesLabel", - new ResourceModel("profile.business.company.profiles"))); - - List tabs = new ArrayList(); - if (null != userProfile.getCompanyProfiles()) { - - for (final CompanyProfile companyProfile : userProfile - .getCompanyProfiles()) { - - tabs.add(new AbstractTab(new ResourceModel("profile.business.company.profile")) { - - private static final long serialVersionUID = 1L; - - @Override - public Panel getPanel(String panelId) { - - return new CompanyProfileEdit(panelId, companyProfile); - } - - }); - } - } - - companyProfileTabs = new AjaxTabbedPanel("companyProfiles", tabs); - companyProfilesContainer.add(companyProfileTabs); - - if (tabs.size() > 0) { - switch (tabDisplay) { - case START: - companyProfileTabs.setSelectedTab(0); - break; - case END: - companyProfileTabs.setSelectedTab(tabs.size() - 1); - } - } else { - companyProfilesContainer.setVisible(false); - } - - return companyProfilesContainer; - } - - // called when the form is to be saved - private boolean save(Form form) { - - // get the backing model - UserProfile userProfile = (UserProfile) form.getModelObject(); - - String userId = userProfile.getUserUuid(); - SakaiPerson sakaiPerson = sakaiProxy.getSakaiPerson(userId); - - sakaiPerson.setBusinessBiography(userProfile.getBusinessBiography()); - - // add new company profiles - for (CompanyProfile companyProfile : companyProfilesToAdd) { - if (!profileLogic.addNewCompanyProfile(companyProfile)) { - - log.info("Couldn't add CompanyProfile for: " + userId); - return false; - } - } - - // save company profiles - for (CompanyProfile companyProfile : userProfile.getCompanyProfiles()) { - - if (!profileLogic.updateCompanyProfile(companyProfile)) { - - log.info("Couldn't save CompanyProfile for: " + userId); - return false; - } - } - - // remove any company profile marked for deletion - for (CompanyProfile companyProfile : companyProfilesToRemove) { - - if (!profileLogic.removeCompanyProfile(userId, - companyProfile.getId())) { - - log.info("Couldn't delete CompanyProfile for: " + userId); - return false; - } - } - - // update SakaiPerson - if (profileLogic.saveUserProfile(sakaiPerson)) { - log.info("Saved SakaiPerson for: " + userId); - return true; - } else { - log.info("Couldn't save SakaiPerson for: " + userId); - return false; - } - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.html index e3e2222a35dc..7cc6097f9e86 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.html @@ -47,35 +47,12 @@ [email] - - - [homepageLabel] - [homepage] - - - - - [workphoneLabel] - [workphone] - - - - - [homephoneLabel] - [workphone] - - [mobilephoneLabel] [mobilephone] - - - [facsimileLabel] - [facsimile] -
    diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.java index 07287b75ee62..3ffe09d172f1 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactDisplay.java @@ -50,11 +50,7 @@ public MyContactDisplay(final String id, final UserProfile userProfile) { //get info from userProfile since we need to validate it and turn things off if not set. String email = userProfile.getEmail(); - String homepage = userProfile.getHomepage(); - String workphone = userProfile.getWorkphone(); - String homephone = userProfile.getHomephone(); String mobilephone = userProfile.getMobilephone(); - String facsimile = userProfile.getFacsimile(); //heading add(new Label("heading", new ResourceModel("heading.contact"))); @@ -70,39 +66,6 @@ public MyContactDisplay(final String id, final UserProfile userProfile) { visibleFieldCount++; } - //homepage - WebMarkupContainer homepageContainer = new WebMarkupContainer("homepageContainer"); - homepageContainer.add(new Label("homepageLabel", new ResourceModel("profile.homepage"))); - homepageContainer.add(new ExternalLink("homepage", homepage, homepage)); - add(homepageContainer); - if(StringUtils.isBlank(homepage)) { - homepageContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //work phone - WebMarkupContainer workphoneContainer = new WebMarkupContainer("workphoneContainer"); - workphoneContainer.add(new Label("workphoneLabel", new ResourceModel("profile.phone.work"))); - workphoneContainer.add(new Label("workphone", workphone)); - add(workphoneContainer); - if(StringUtils.isBlank(workphone)) { - workphoneContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //home phone - WebMarkupContainer homephoneContainer = new WebMarkupContainer("homephoneContainer"); - homephoneContainer.add(new Label("homephoneLabel", new ResourceModel("profile.phone.home"))); - homephoneContainer.add(new Label("homephone", homephone)); - add(homephoneContainer); - if(StringUtils.isBlank(homephone)) { - homephoneContainer.setVisible(false); - } else { - visibleFieldCount++; - } - //mobile phone WebMarkupContainer mobilephoneContainer = new WebMarkupContainer("mobilephoneContainer"); mobilephoneContainer.add(new Label("mobilephoneLabel", new ResourceModel("profile.phone.mobile"))); @@ -114,17 +77,6 @@ public MyContactDisplay(final String id, final UserProfile userProfile) { visibleFieldCount++; } - //facsimile - WebMarkupContainer facsimileContainer = new WebMarkupContainer("facsimileContainer"); - facsimileContainer.add(new Label("facsimileLabel", new ResourceModel("profile.phone.facsimile"))); - facsimileContainer.add(new Label("facsimile", facsimile)); - add(facsimileContainer); - if(StringUtils.isBlank(facsimile)) { - facsimileContainer.setVisible(false); - } else { - visibleFieldCount++; - } - //edit button AjaxFallbackLink editButton = new AjaxFallbackLink("editButton") { @Override diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.html index a06f6fa15c04..2fe2b1c91a4a 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.html @@ -54,36 +54,6 @@ - - - [homepageLabel] - - - - [homepageFeedback] - - - - - - [workphoneLabel] - - - - [workphoneFeedback] - - - - - - [homephoneLabel] - - - - [homephoneFeedback] - - - [mobilephoneLabel] @@ -94,17 +64,6 @@ - - - [facsimileLabel] - - - - [facsimileFeedback] - - - -
    diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.java index 1d348499975d..f301feb590d0 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyContactEdit.java @@ -39,7 +39,6 @@ import org.apache.wicket.validation.validator.UrlValidator; import org.sakaiproject.api.common.edu.person.SakaiPerson; import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; import org.sakaiproject.profile2.logic.SakaiProxy; import org.sakaiproject.profile2.model.UserProfile; import org.sakaiproject.profile2.tool.components.ComponentVisualErrorBehaviour; @@ -60,9 +59,6 @@ public class MyContactEdit extends Panel { @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") private SakaiProxy sakaiProxy; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") private ProfileLogic profileLogic; @@ -137,72 +133,6 @@ public MyContactEdit(final String id, final UserProfile userProfile) { email.add(new ComponentVisualErrorBehaviour("blur", emailFeedback)); form.add(emailContainer); - //homepage - WebMarkupContainer homepageContainer = new WebMarkupContainer("homepageContainer"); - homepageContainer.add(new Label("homepageLabel", new ResourceModel("profile.homepage"))); - final TextField homepage = new TextField("homepage", new PropertyModel(userProfile, "homepage")) { - - private static final long serialVersionUID = 1L; - - // add http:// if missing - @Override - public void convertInput() { - String input = getInput(); - - if (StringUtils.isNotBlank(input) && !(input.startsWith("http://") || input.startsWith("https://"))) { - setConvertedInput("http://" + input); - } else { - setConvertedInput(StringUtils.isBlank(input) ? null : input); - } - } - }; - homepage.setMarkupId("homepageinput"); - homepage.setOutputMarkupId(true); - homepage.add(new UrlValidator()); - homepageContainer.add(homepage); - - //homepage feedback - final FeedbackLabel homepageFeedback = new FeedbackLabel("homepageFeedback", homepage); - homepageFeedback.setMarkupId("homepageFeedback"); - homepageFeedback.setOutputMarkupId(true); - homepageContainer.add(homepageFeedback); - homepage.add(new ComponentVisualErrorBehaviour("blur", homepageFeedback)); - form.add(homepageContainer); - - //workphone - WebMarkupContainer workphoneContainer = new WebMarkupContainer("workphoneContainer"); - workphoneContainer.add(new Label("workphoneLabel", new ResourceModel("profile.phone.work"))); - final TextField workphone = new TextField<>("workphone", new PropertyModel<>(userProfile, "workphone")); - workphone.setMarkupId("workphoneinput"); - workphone.setOutputMarkupId(true); - workphone.add(new PhoneNumberValidator()); - workphoneContainer.add(workphone); - - //workphone feedback - final FeedbackLabel workphoneFeedback = new FeedbackLabel("workphoneFeedback", workphone); - workphoneFeedback.setMarkupId("workphoneFeedback"); - workphoneFeedback.setOutputMarkupId(true); - workphoneContainer.add(workphoneFeedback); - workphone.add(new ComponentVisualErrorBehaviour("blur", workphoneFeedback)); - form.add(workphoneContainer); - - //homephone - WebMarkupContainer homephoneContainer = new WebMarkupContainer("homephoneContainer"); - homephoneContainer.add(new Label("homephoneLabel", new ResourceModel("profile.phone.home"))); - final TextField homephone = new TextField<>("homephone", new PropertyModel<>(userProfile, "homephone")); - homephone.setMarkupId("homephoneinput"); - homephone.setOutputMarkupId(true); - homephone.add(new PhoneNumberValidator()); - homephoneContainer.add(homephone); - - //homephone feedback - final FeedbackLabel homephoneFeedback = new FeedbackLabel("homephoneFeedback", homephone); - homephoneFeedback.setMarkupId("homephoneFeedback"); - homephoneFeedback.setOutputMarkupId(true); - homephoneContainer.add(homephoneFeedback); - homephone.add(new ComponentVisualErrorBehaviour("blur", homephoneFeedback)); - form.add(homephoneContainer); - //mobilephone WebMarkupContainer mobilephoneContainer = new WebMarkupContainer("mobilephoneContainer"); mobilephoneContainer.add(new Label("mobilephoneLabel", new ResourceModel("profile.phone.mobile"))); @@ -220,23 +150,6 @@ public void convertInput() { mobilephone.add(new ComponentVisualErrorBehaviour("blur", mobilephoneFeedback)); form.add(mobilephoneContainer); - //facsimile - WebMarkupContainer facsimileContainer = new WebMarkupContainer("facsimileContainer"); - facsimileContainer.add(new Label("facsimileLabel", new ResourceModel("profile.phone.facsimile"))); - final TextField facsimile = new TextField<>("facsimile", new PropertyModel<>(userProfile, "facsimile")); - facsimile.setMarkupId("facsimileinput"); - facsimile.setOutputMarkupId(true); - facsimile.add(new PhoneNumberValidator()); - facsimileContainer.add(facsimile); - - //facsimile feedback - final FeedbackLabel facsimileFeedback = new FeedbackLabel("facsimileFeedback", facsimile); - facsimileFeedback.setMarkupId("facsimileFeedback"); - facsimileFeedback.setOutputMarkupId(true); - facsimileContainer.add(facsimileFeedback); - facsimile.add(new ComponentVisualErrorBehaviour("blur", facsimileFeedback)); - form.add(facsimileContainer); - //submit button AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.save.changes"), form) { @Override @@ -247,11 +160,6 @@ protected void onSubmit(Optional targetOptional) { //post update event sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_CONTACT_UPDATE, "/profile/"+userId, true); - //post to wall if enabled - if (sakaiProxy.isWallEnabledGlobally() && !sakaiProxy.isSuperUserAndProxiedToUser(userId)) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_CONTACT_UPDATE, sakaiProxy.getCurrentUserId()); - } - //repaint panel Component newPanel = new MyContactDisplay(id, userProfile); newPanel.setOutputMarkupId(true); @@ -287,52 +195,16 @@ protected void onError(Optional targetOptional) { target.add(email); target.add(emailFeedback); } - if (!homepage.isValid()) { - homepage.add(new AttributeAppender("class", new Model("invalid"), " ")); - homepageFeedback.setDefaultModel(new ResourceModel("UrlValidator")); - target.add(homepage); - target.add(homepageFeedback); - } - if (!facsimile.isValid()) { - facsimile.add(new AttributeAppender("class", new Model("invalid"), " ")); - facsimileFeedback.setDefaultModel(new ResourceModel("PhoneNumberValidator")); - target.add(facsimile); - target.add(facsimileFeedback); - } - - if (!workphone.isValid()) { - workphone.add(new AttributeAppender("class", new Model("invalid"), " ")); - workphoneFeedback.setDefaultModel(new ResourceModel("PhoneNumberValidator")); - target.add(workphone); - target.add(workphoneFeedback); - } - if (!homephone.isValid()) { - homephone.add(new AttributeAppender("class", new Model("invalid"), " ")); - homephoneFeedback.setDefaultModel(new ResourceModel("PhoneNumberValidator")); - target.add(homephone); - target.add(homephoneFeedback); - } if (!mobilephone.isValid()) { mobilephone.add(new AttributeAppender("class", new Model("invalid"), " ")); mobilephoneFeedback.setDefaultModel(new ResourceModel("PhoneNumberValidator")); target.add(mobilephone); target.add(mobilephoneFeedback); } - if (!facsimile.isValid()) { - facsimile.add(new AttributeAppender("class", new Model("invalid"), " ")); - facsimileFeedback.setDefaultModel(new ResourceModel("PhoneNumberValidator")); - target.add(facsimile); - target.add(facsimileFeedback); - } }); - } - - - }; form.add(submitButton); - //cancel button AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { @@ -354,10 +226,8 @@ protected void onSubmit(Optional targetOptional) { cancelButton.setDefaultFormProcessing(false); form.add(cancelButton); - //add form to page add(form); - } //called when the form is to be saved @@ -374,12 +244,7 @@ private boolean save(Form form) { //this WILL fail if there is no sakaiPerson for the user however this should have been caught already //as a new Sakaiperson for a user is created in MyProfile if they don't have one. - //sakaiPerson.setMail(userProfile.getEmail()); //email - sakaiPerson.setLabeledURI(userProfile.getHomepage()); //homepage - sakaiPerson.setTelephoneNumber(userProfile.getWorkphone()); //workphone - sakaiPerson.setHomePhone(userProfile.getHomephone()); //homephone sakaiPerson.setMobile(userProfile.getMobilephone()); //mobilephone - sakaiPerson.setFacsimileTelephoneNumber(userProfile.getFacsimile()); //facsimile if(profileLogic.saveUserProfile(sakaiPerson)) { log.info("Saved SakaiPerson for: {}", userId); @@ -395,5 +260,4 @@ private boolean save(Form form) { return false; } } - } diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.html index eb7b674f2d12..dcde97807722 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.html @@ -41,27 +41,10 @@ No fields - - - - - - + + + + @@ -69,12 +52,6 @@ - - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.java index d0daa67fad51..7cc3e9aff40d 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoDisplay.java @@ -15,9 +15,6 @@ */ package org.sakaiproject.profile2.tool.pages.panels; - - -import java.util.Date; import java.util.Optional; import org.apache.commons.lang3.StringUtils; @@ -30,10 +27,10 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; + +import org.sakaiproject.component.api.ServerConfigurationService; import org.sakaiproject.profile2.logic.SakaiProxy; import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.profile2.util.ProfileUtils; import lombok.extern.slf4j.Slf4j; @@ -49,8 +46,8 @@ public class MyInfoDisplay extends Panel { @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") private SakaiProxy sakaiProxy; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; + @SpringBean(name="org.sakaiproject.component.api.ServerConfigurationService") + private ServerConfigurationService serverConfigurationService; public MyInfoDisplay(final String id, final UserProfile userProfile) { super(id); @@ -65,76 +62,12 @@ public MyInfoDisplay(final String id, final UserProfile userProfile) { //get info from userProfile since we need to validate it and turn things off if not set. //otherwise we could just use a propertymodel - /* - String firstName = userProfile.getFirstName(); - String middleName = userProfile.getMiddleName(); - String lastName = userProfile.getLastName(); - */ String nickname = userProfile.getNickname(); String personalSummary = userProfile.getPersonalSummary(); - Date dateOfBirth = userProfile.getDateOfBirth(); - if(dateOfBirth != null) { - - //full value contains year regardless of privacy settings - // Passing null as the format parameter forces a user locale based format - birthday = ProfileUtils.convertDateToString(dateOfBirth, null); - - //get privacy on display of birthday year and format accordingly - //note that this particular method doesn't need the second userId param but we send for completeness - if(privacyLogic.isBirthYearVisible(userId)) { - birthdayDisplay = birthday; - } else { - birthdayDisplay = ProfileUtils.convertDateToString(dateOfBirth, ProfileConstants.DEFAULT_DATE_FORMAT_HIDE_YEAR); - } - - //set both values as they are used differently - userProfile.setBirthdayDisplay(birthdayDisplay); - userProfile.setBirthday(birthday); - } - //heading add(new Label("heading", new ResourceModel("heading.basic"))); - //firstName - /* - WebMarkupContainer firstNameContainer = new WebMarkupContainer("firstNameContainer"); - firstNameContainer.add(new Label("firstNameLabel", new ResourceModel("profile.name.first"))); - firstNameContainer.add(new Label("firstName", firstName)); - add(firstNameContainer); - if(StringUtils.isBlank(firstName)) { - firstNameContainer.setVisible(false); - } else { - visibleFieldCount++; - } - */ - - //middleName - /* - WebMarkupContainer middleNameContainer = new WebMarkupContainer("middleNameContainer"); - middleNameContainer.add(new Label("middleNameLabel", new ResourceModel("profile.name.middle"))); - middleNameContainer.add(new Label("middleName", middleName)); - add(middleNameContainer); - if(StringUtils.isBlank(middleName)) { - middleNameContainer.setVisible(false); - } else { - visibleFieldCount++; - } - */ - - //lastName - /* - WebMarkupContainer lastNameContainer = new WebMarkupContainer("lastNameContainer"); - lastNameContainer.add(new Label("lastNameLabel", new ResourceModel("profile.name.last"))); - lastNameContainer.add(new Label("lastName", lastName)); - add(lastNameContainer); - if(StringUtils.isBlank(lastName)) { - lastNameContainer.setVisible(false); - } else { - visibleFieldCount++; - } - */ - //nickname WebMarkupContainer nicknameContainer = new WebMarkupContainer("nicknameContainer"); nicknameContainer.add(new Label("nicknameLabel", new ResourceModel("profile.nickname"))); @@ -146,13 +79,13 @@ public MyInfoDisplay(final String id, final UserProfile userProfile) { visibleFieldCount++; } - //birthday - WebMarkupContainer birthdayContainer = new WebMarkupContainer("birthdayContainer"); - birthdayContainer.add(new Label("birthdayLabel", new ResourceModel("profile.birthday"))); - birthdayContainer.add(new Label("birthday", birthdayDisplay)); - add(birthdayContainer); - if(StringUtils.isBlank(birthdayDisplay)) { - birthdayContainer.setVisible(false); + WebMarkupContainer pronounsContainer = new WebMarkupContainer("pronounsContainer"); + pronounsContainer.add(new Label("pronounsLabel", new ResourceModel("profile.pronouns"))); + pronounsContainer.add(new Label("pronouns", ProfileUtils.processHtml(userProfile.getPronouns())).setEscapeModelStrings(false)); + pronounsContainer.setVisible(serverConfigurationService.getBoolean("profile2.profile.pronouns.enabled", true)); + add(pronounsContainer); + if (StringUtils.isBlank(userProfile.getPronouns())) { + pronounsContainer.setVisible(false); } else { visibleFieldCount++; } diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.html index 2e1ebdcee68e..c083b7be25c8 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.html @@ -26,7 +26,6 @@ -
    [Basic Information]
    @@ -41,36 +40,6 @@
    [pronounsLabel][pronouns]
    [nickname]
    [birthdayLabel][birthday]
    [personalSummaryLabel]
    - - - - - - - - - @@ -79,17 +48,20 @@ - - - - - - + + + + + @@ -117,44 +89,13 @@ - - - - - + diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.java index 2098efec22bc..b77a5ee2552c 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInfoEdit.java @@ -16,7 +16,10 @@ package org.sakaiproject.profile2.tool.pages.panels; import java.util.Date; +import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; import org.apache.wicket.AttributeModifier; @@ -25,8 +28,10 @@ import org.apache.wicket.ajax.attributes.AjaxCallListener; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; +import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.HiddenField; import org.apache.wicket.markup.html.form.TextArea; @@ -37,17 +42,18 @@ import org.apache.wicket.model.ResourceModel; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; + import org.sakaiproject.api.common.edu.person.SakaiPerson; +import org.sakaiproject.component.api.ServerConfigurationService; import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; import org.sakaiproject.profile2.logic.SakaiProxy; import org.sakaiproject.profile2.model.UserProfile; import org.sakaiproject.profile2.tool.components.IconWithToolTip; import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.profile2.util.ProfileUtils; +import org.sakaiproject.util.ResourceLoader; import lombok.extern.slf4j.Slf4j; -import org.sakaiproject.user.api.User; @Slf4j public class MyInfoEdit extends Panel { @@ -57,28 +63,21 @@ public class MyInfoEdit extends Panel { @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") private SakaiProxy sakaiProxy; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") private ProfileLogic profileLogic; + + @SpringBean(name="org.sakaiproject.component.api.ServerConfigurationService") + private ServerConfigurationService serverConfigurationService; public MyInfoEdit(final String id, final UserProfile userProfile) { super(id); log.debug("MyInfoEdit()"); - - //this panel final Component thisPanel = this; - //get userId final String userId = userProfile.getUserUuid(); - - //updates back to Account for some fields allowed? - //boolean updateAllowed = sakaiProxy.isAccountUpdateAllowed(userId); - //heading add(new Label("heading", new ResourceModel("heading.basic.edit"))); @@ -109,26 +108,45 @@ public MyInfoEdit(final String id, final UserProfile userProfile) { nickname.setOutputMarkupId(true); nicknameContainer.add(nickname); form.add(nicknameContainer); - - //birthday - WebMarkupContainer birthdayContainer = new WebMarkupContainer("birthdayContainer"); - birthdayContainer.add(new Label("birthdayLabel", new ResourceModel("profile.birthday"))); - TextField birthday = new TextField<>("birthday", new PropertyModel<>(userProfile, "birthday")); - if (userProfile.getDateOfBirth() != null) { - String birthdayString = ProfileUtils.convertDateToString(userProfile.getDateOfBirth(), ProfileConstants.DEFAULT_DATE_FORMAT); - userProfile.setFormattedBirthday(birthdayString); - } - HiddenField birthdayAltField = new HiddenField<>("birthdayAltField", new PropertyModel<>(userProfile, "formattedBirthday")); - birthday.setMarkupId("birthdayinput"); - birthday.setOutputMarkupId(true); - birthdayAltField.setMarkupId("birthdayAltField"); - birthdayAltField.setOutputMarkupId(true); - birthdayContainer.add(birthday); - birthdayContainer.add(birthdayAltField); - //tooltip - birthdayContainer.add(new IconWithToolTip("birthdayToolTip", ProfileConstants.INFO_ICON, new ResourceModel("text.profile.birthyear.tooltip"))); - form.add(birthdayContainer); + ResourceLoader messages = new ResourceLoader("ProfileApplication"); + + List pronounOptions + = Stream.of(messages.getString("profile.pronouns.options").split(",")).map(String::trim) + .collect(Collectors.toList()); + + pronounOptions.add(messages.getString("profile.pronouns.usemyname")); + String enterMyOwn = messages.getString("profile.pronouns.entermyown"); + pronounOptions.add(enterMyOwn); + pronounOptions.add(messages.getString("profile.pronouns.prefernottosay")); + String pronounsUnknown = messages.getString("profile.pronouns.unknown"); + pronounOptions.add(pronounsUnknown); + boolean ownEntered = false; + if (pronounOptions.contains(userProfile.getPronouns())) { + userProfile.setPronounsSelected(userProfile.getPronouns()); + } else if (StringUtils.isNotBlank(userProfile.getPronouns())) { + userProfile.setPronounsInput(userProfile.getPronouns()); + userProfile.setPronounsSelected(enterMyOwn); + ownEntered = true; + } else { + userProfile.setPronounsSelected(pronounsUnknown); + } + + WebMarkupContainer pronounsContainer = new WebMarkupContainer("pronounsContainer"); + pronounsContainer.add(new Label("pronounsLabel", new ResourceModel("profile.pronouns"))); + DropDownChoice pronounsSelect = new DropDownChoice<>("pronounsSelect", new PropertyModel<>(userProfile, "pronounsSelected"), pronounOptions); + pronounsSelect.setOutputMarkupId(true); + pronounsSelect.add(new AttributeAppender("data-entermyown", new Model(enterMyOwn))); + pronounsContainer.add(pronounsSelect); + TextField pronouns = new TextField<>("pronounsInput", new PropertyModel<>(userProfile, "pronounsInput")); + pronouns.setOutputMarkupId(true); + if (ownEntered) { + pronouns.add(new AttributeAppender("style", new Model("display: inline !important;"))); + } + pronounsContainer.add(pronouns); + pronounsContainer.setVisible(serverConfigurationService.getBoolean("profile2.profile.pronouns.enabled", true)); + form.add(pronounsContainer); + //personal summary WebMarkupContainer personalSummaryContainer = new WebMarkupContainer("personalSummaryContainer"); personalSummaryContainer.add(new Label("personalSummaryLabel", new ResourceModel("profile.summary"))); @@ -150,11 +168,6 @@ protected void onSubmit(Optional targetOptional) { //post update event sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_INFO_UPDATE, "/profile/"+userId, true); - //post to wall if enabled - if (sakaiProxy.isWallEnabledGlobally() && !sakaiProxy.isSuperUserAndProxiedToUser(userId)) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_INFO_UPDATE, sakaiProxy.getCurrentUserId()); - } - //repaint panel Component newPanel = new MyInfoDisplay(id, userProfile); newPanel.setOutputMarkupId(true); @@ -189,7 +202,6 @@ public CharSequence getBeforeHandler(Component component) { }; submitButton.setModel(new ResourceModel("button.save.changes")); form.add(submitButton); - //cancel button AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { @@ -212,22 +224,12 @@ protected void onSubmit(Optional targetOptional) { cancelButton.setDefaultFormProcessing(false); form.add(cancelButton); - //feedback stuff - make this a class and instance it with diff params - //WebMarkupContainer formFeedback = new WebMarkupContainer("formFeedback"); - //formFeedback.add(new Label("feedbackMsg", "some message")); - //formFeedback.add(new AjaxIndicator("feedbackImg")); - //form.add(formFeedback); - - - //add form to page add(form); - } //called when the form is to be saved private boolean save(Form form) { - //get the backing model UserProfile userProfile = (UserProfile) form.getModelObject(); @@ -246,16 +248,15 @@ private boolean save(Form form) { String tNickname = ProfileUtils.truncate(userProfile.getNickname(), 255, false); userProfile.setNickname(tNickname); //update form model sakaiPerson.setNickname(tNickname); - - if(StringUtils.isNotBlank(userProfile.getBirthday())) { - Date convertedDate = ProfileUtils.convertStringToDate(userProfile.getFormattedBirthday(), ProfileConstants.DEFAULT_DATE_FORMAT); - userProfile.setDateOfBirth(convertedDate); //set in userProfile which backs the profile - sakaiPerson.setDateOfBirth(convertedDate); //set into sakaiPerson to be persisted to DB - } else { - userProfile.setDateOfBirth(null); //clear both fields - sakaiPerson.setDateOfBirth(null); - } + String pronounsInput = userProfile.getPronounsInput(); + if (StringUtils.isNotBlank(pronounsInput)) { + sakaiPerson.setPronouns(pronounsInput); + } else { + sakaiPerson.setPronouns(userProfile.getPronounsSelected()); + } + userProfile.setPronouns(sakaiPerson.getPronouns()); + //PRFL-467 store as given, and process when it is retrieved. sakaiPerson.setNotes(userProfile.getPersonalSummary()); diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsDisplay.html deleted file mode 100644 index 48cdce57f0c2..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsDisplay.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - -
    -
    - [Personal Information] -
    - - - - edit - - -
    - - No fields - -
    [nicknameLabel]
    [birthdayLabel] - - - [birthdayToolTip] - -
    [pronounsLabel] + + + + +
    - - - - - - - - - - - - - - - - - - - - - - - -
    [booksLabel][favouriteBooks]
    [tvLabel][favouriteTvShows]
    [moviesLabel][favouriteMovies]
    [quotesLabel][favouriteQuotes]
    -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsDisplay.java deleted file mode 100644 index a5b6f3cc0fe7..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsDisplay.java +++ /dev/null @@ -1,144 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.UserProfile; - -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -@Slf4j -public class MyInterestsDisplay extends Panel { - - private static final long serialVersionUID = 1L; - private int visibleFieldCount = 0; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - public MyInterestsDisplay(final String id, final UserProfile userProfile) { - super(id); - - //this panel stuff - final Component thisPanel = this; - - //get userProfile from userProfileModel - //UserProfile userProfile = (UserProfile) this.getModelObject(); - - //get info from userProfile since we need to validate it and turn things off if not set. - //otherwise we could just use a propertymodel - - // favourites and other - String favouriteBooks = userProfile.getFavouriteBooks(); - String favouriteTvShows = userProfile.getFavouriteTvShows(); - String favouriteMovies = userProfile.getFavouriteMovies(); - String favouriteQuotes = userProfile.getFavouriteQuotes(); - - //heading - add(new Label("heading", new ResourceModel("heading.interests"))); - - //favourite books - WebMarkupContainer booksContainer = new WebMarkupContainer("booksContainer"); - booksContainer.add(new Label("booksLabel", new ResourceModel("profile.favourite.books"))); - booksContainer.add(new Label("favouriteBooks", favouriteBooks)); - add(booksContainer); - if(StringUtils.isBlank(favouriteBooks)) { - booksContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //favourite tv shows - WebMarkupContainer tvContainer = new WebMarkupContainer("tvContainer"); - tvContainer.add(new Label("tvLabel", new ResourceModel("profile.favourite.tv"))); - tvContainer.add(new Label("favouriteTvShows", favouriteTvShows)); - add(tvContainer); - if(StringUtils.isBlank(favouriteTvShows)) { - tvContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //favourite movies - WebMarkupContainer moviesContainer = new WebMarkupContainer("moviesContainer"); - moviesContainer.add(new Label("moviesLabel", new ResourceModel("profile.favourite.movies"))); - moviesContainer.add(new Label("favouriteMovies", favouriteMovies)); - add(moviesContainer); - if(StringUtils.isBlank(favouriteMovies)) { - moviesContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //favourite quotes - WebMarkupContainer quotesContainer = new WebMarkupContainer("quotesContainer"); - quotesContainer.add(new Label("quotesLabel", new ResourceModel("profile.favourite.quotes"))); - quotesContainer.add(new Label("favouriteQuotes", favouriteQuotes)); - add(quotesContainer); - if(StringUtils.isBlank(favouriteQuotes)) { - quotesContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //edit button -AjaxFallbackLink editButton = new AjaxFallbackLink("editButton") { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick(Optional targetOptional) { - Component newPanel = new MyInterestsEdit(id, userProfile); - newPanel.setOutputMarkupId(true); - thisPanel.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } -}; - - editButton.add(new Label("editButtonLabel", new ResourceModel("button.edit"))); - editButton.add(new AttributeModifier("aria-label", new ResourceModel("accessibility.edit.personal"))); - editButton.setOutputMarkupId(true); - - if(userProfile.isLocked() && !sakaiProxy.isSuperUser()) { - editButton.setVisible(false); - } - - add(editButton); - - //no fields message - Label noFieldsMessage = new Label("noFieldsMessage", new ResourceModel("text.no.fields")); - add(noFieldsMessage); - if(visibleFieldCount > 0) { - noFieldsMessage.setVisible(false); - } - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsEdit.html deleted file mode 100644 index c46762bba357..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsEdit.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - -
    -
    [Personal Information]
    - -
    - -
    - -
    [You are editing {other person}'s profile]
    - -
    [formFeedback]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [booksLabel] - - -
    [tvLabel] - - -
    [moviesLabel] - - -
    [quotesLabel] - - -
    - -
    - - -
    - -
    -
    -
    - - -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsEdit.java deleted file mode 100644 index 4357fa3fcfaf..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyInterestsEdit.java +++ /dev/null @@ -1,235 +0,0 @@ -/** - * 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.tool.pages.panels; - - -import java.util.Optional; -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.api.common.edu.person.SakaiPerson; -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileConstants; - -@Slf4j -public class MyInterestsEdit extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") - private ProfileLogic profileLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - public MyInterestsEdit(final String id, final UserProfile userProfile) { - super(id); - - log.debug("MyInterestsEdit()"); - - //this panel - final Component thisPanel = this; - - //get userId - final String userId = userProfile.getUserUuid(); - - //heading - add(new Label("heading", new ResourceModel("heading.interests.edit"))); - - //setup form - Form form = new Form("form", new Model(userProfile)); - form.setOutputMarkupId(true); - - //form submit feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - form.add(formFeedback); - - //add warning message if superUser and not editing own profile - Label editWarning = new Label("editWarning"); - editWarning.setVisible(false); - if(sakaiProxy.isSuperUserAndProxiedToUser(userId)) { - editWarning.setDefaultModel(new StringResourceModel("text.edit.other.warning").setParameters(userProfile.getDisplayName())); - editWarning.setEscapeModelStrings(false); - editWarning.setVisible(true); - } - form.add(editWarning); - - //We don't need to get the info from userProfile, we load it into the form with a property model - //just make sure that the form element id's match those in the model - - //favourite books - WebMarkupContainer booksContainer = new WebMarkupContainer("booksContainer"); - booksContainer.add(new Label("booksLabel", new ResourceModel("profile.favourite.books"))); - TextArea favouriteBooks = new TextArea<>("favouriteBooks", new PropertyModel<>(userProfile, "favouriteBooks")); - favouriteBooks.setMarkupId("favouritebooksinput"); - favouriteBooks.setOutputMarkupId(true); - booksContainer.add(favouriteBooks); - form.add(booksContainer); - - //favourite tv shows - WebMarkupContainer tvContainer = new WebMarkupContainer("tvContainer"); - tvContainer.add(new Label("tvLabel", new ResourceModel("profile.favourite.tv"))); - TextArea favouriteTvShows = new TextArea<>("favouriteTvShows", new PropertyModel<>(userProfile, "favouriteTvShows")); - favouriteTvShows.setMarkupId("favouritetvinput"); - favouriteTvShows.setOutputMarkupId(true); - tvContainer.add(favouriteTvShows); - form.add(tvContainer); - - //favourite movies - WebMarkupContainer moviesContainer = new WebMarkupContainer("moviesContainer"); - moviesContainer.add(new Label("moviesLabel", new ResourceModel("profile.favourite.movies"))); - TextArea favouriteMovies = new TextArea<>("favouriteMovies", new PropertyModel<>(userProfile, "favouriteMovies")); - favouriteMovies.setMarkupId("favouritemoviesinput"); - favouriteMovies.setOutputMarkupId(true); - moviesContainer.add(favouriteMovies); - form.add(moviesContainer); - - //favourite quotes - WebMarkupContainer quotesContainer = new WebMarkupContainer("quotesContainer"); - quotesContainer.add(new Label("quotesLabel", new ResourceModel("profile.favourite.quotes"))); - TextArea favouriteQuotes = new TextArea<>("favouriteQuotes", new PropertyModel<>(userProfile, "favouriteQuotes")); - favouriteQuotes.setMarkupId("favouritequotesinput"); - favouriteQuotes.setOutputMarkupId(true); - quotesContainer.add(favouriteQuotes); - form.add(quotesContainer); - - //submit button - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.save.changes"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - //save() form, show message, then load display panel - if(save(form)) { - - //post update event - sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_INTERESTS_UPDATE, "/profile/"+userId, true); - - //post to wall if enabled - if (sakaiProxy.isWallEnabledGlobally() && !sakaiProxy.isSuperUserAndProxiedToUser(userId)) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_INTERESTS_UPDATE, sakaiProxy.getCurrentUserId()); - } - - //repaint panel - Component newPanel = new MyInterestsDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - thisPanel.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - - } else { - //String js = "alert('Failed to save information. Contact your system administrator.');"; - //target.prependJavascript(js); - targetOptional.ifPresent(target -> { - formFeedback.setDefaultModel(new ResourceModel("error.profile.save.interests.failed")); - formFeedback.add(new AttributeModifier("class", new Model("save-failed-error"))); - target.add(formFeedback); - }); - } - } - - //@Override - //protected IAjaxCallDecorator getAjaxCallDecorator() { - // return CKEditorTextArea.getAjaxCallDecoratedToUpdateElementForAllEditorsOnPage(); - //} - }; - form.add(submitButton); - - - //cancel button - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - Component newPanel = new MyInterestsDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - thisPanel.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - //need a scrollTo action here, to scroll down the page to the section - }); - - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - //feedback stuff - make this a class and insance it with diff params - //WebMarkupContainer formFeedback = new WebMarkupContainer("formFeedback"); - //formFeedback.add(new Label("feedbackMsg", "some message")); - //formFeedback.add(new AjaxIndicator("feedbackImg")); - //form.add(formFeedback); - - - - //add form to page - add(form); - - } - - //called when the form is to be saved - private boolean save(Form form) { - - //get the backing model - UserProfile userProfile = (UserProfile) form.getModelObject(); - - //get userId from the UserProfile (because admin could be editing), then get existing SakaiPerson for that userId - String userId = userProfile.getUserUuid(); - SakaiPerson sakaiPerson = sakaiProxy.getSakaiPerson(userId); - - //get values and set into SakaiPerson - sakaiPerson.setFavouriteBooks(userProfile.getFavouriteBooks()); - sakaiPerson.setFavouriteTvShows(userProfile.getFavouriteTvShows()); - sakaiPerson.setFavouriteMovies(userProfile.getFavouriteMovies()); - sakaiPerson.setFavouriteQuotes(userProfile.getFavouriteQuotes()); - - //update SakaiPerson - if(profileLogic.saveUserProfile(sakaiPerson)) { - log.info("Saved SakaiPerson for: {}", userId); - return true; - } else { - log.info("Couldn't save SakaiPerson for: {}", userId); - return false; - } - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.html index ea9e31556a96..e81f63305ef6 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.html @@ -21,10 +21,6 @@ No fields - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.java index 500b652da85e..e475fad1340c 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationDisplay.java @@ -66,7 +66,6 @@ public MyNamePronunciationDisplay(final String id, final UserProfile userProfile //heading add(new Label("heading", new ResourceModel("heading.name.pronunciation"))); - addPronouns(); addPhoneticPronunciation(); addNameRecord(); @@ -98,19 +97,6 @@ public void onClick(Optional targetOptional) { } } - private void addPronouns() { - - WebMarkupContainer pronounsContainer = new WebMarkupContainer("pronounsContainer"); - pronounsContainer.add(new Label("pronounsLabel", new ResourceModel("profile.pronouns"))); - pronounsContainer.add(new Label("pronouns", ProfileUtils.processHtml(userProfile.getPronouns())).setEscapeModelStrings(false)); - pronounsContainer.setVisible(serverConfigurationService.getBoolean("profile2.profile.pronouns.enabled", true)); - add(pronounsContainer); - - if (StringUtils.isBlank(userProfile.getPronouns())) pronounsContainer.setVisible(false); - else visibleFieldCount++; - } - - private void addPhoneticPronunciation() { WebMarkupContainer phoneticPronunciationContainer = new WebMarkupContainer("phoneticPronunciationContainer"); diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.html index a0d70cc30efa..09b50b0dafb9 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.html @@ -15,20 +15,6 @@

    [pronounsLabel][pronouns]
    [phoneticPronunciationLabel] [phoneticPronunciation]
    - - - - - @@ -266,7 +252,6 @@ }); } - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.java index 8dd44f4d2b5d..f31b636d21fe 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyNamePronunciationEdit.java @@ -17,10 +17,7 @@ import java.nio.charset.StandardCharsets; import java.util.Base64; -import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; -import java.util.stream.Stream; import lombok.extern.slf4j.Slf4j; @@ -34,11 +31,9 @@ import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.DropDownChoice; import org.apache.wicket.markup.html.form.HiddenField; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.link.ExternalLink; @@ -54,11 +49,9 @@ import org.sakaiproject.component.api.ServerConfigurationService; import org.sakaiproject.entity.api.Entity; import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; import org.sakaiproject.profile2.logic.SakaiProxy; import org.sakaiproject.profile2.model.UserProfile; import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.util.ResourceLoader; @Slf4j public class MyNamePronunciationEdit extends Panel { @@ -66,9 +59,6 @@ public class MyNamePronunciationEdit extends Panel { @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") private SakaiProxy sakaiProxy; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") private ProfileLogic profileLogic; @@ -110,44 +100,6 @@ public MyNamePronunciationEdit(final String id, final UserProfile userProfile) { } form.add(editWarning); - ResourceLoader messages = new ResourceLoader("ProfileApplication"); - - List pronounOptions - = Stream.of(messages.getString("profile.pronouns.options").split(",")).map(String::trim) - .collect(Collectors.toList()); - - pronounOptions.add(messages.getString("profile.pronouns.usemyname")); - String enterMyOwn = messages.getString("profile.pronouns.entermyown"); - pronounOptions.add(enterMyOwn); - pronounOptions.add(messages.getString("profile.pronouns.prefernottosay")); - String pronounsUnknown = messages.getString("profile.pronouns.unknown"); - pronounOptions.add(pronounsUnknown); - boolean ownEntered = false; - if (pronounOptions.contains(userProfile.getPronouns())) { - userProfile.setPronounsSelected(userProfile.getPronouns()); - } else if (StringUtils.isNotBlank(userProfile.getPronouns())) { - userProfile.setPronounsInput(userProfile.getPronouns()); - userProfile.setPronounsSelected(enterMyOwn); - ownEntered = true; - } else { - userProfile.setPronounsSelected(pronounsUnknown); - } - - WebMarkupContainer pronounsContainer = new WebMarkupContainer("pronounsContainer"); - pronounsContainer.add(new Label("pronounsLabel", new ResourceModel("profile.pronouns"))); - DropDownChoice pronounsSelect = new DropDownChoice<>("pronounsSelect", new PropertyModel<>(userProfile, "pronounsSelected"), pronounOptions); - pronounsSelect.setOutputMarkupId(true); - pronounsSelect.add(new AttributeAppender("data-entermyown", new Model(enterMyOwn))); - pronounsContainer.add(pronounsSelect); - TextField pronouns = new TextField<>("pronounsInput", new PropertyModel<>(userProfile, "pronounsInput")); - pronouns.setOutputMarkupId(true); - if (ownEntered) { - pronouns.add(new AttributeAppender("style", new Model("display: inline;"))); - } - pronounsContainer.add(pronouns); - pronounsContainer.setVisible(serverConfigurationService.getBoolean("profile2.profile.pronouns.enabled", true)); - form.add(pronounsContainer); - //phoneticPronunciation WebMarkupContainer phoneticContainer = new WebMarkupContainer("phoneticContainer"); phoneticContainer.add(new Label("phoneticLabel", new ResourceModel("profile.phonetic"))); @@ -241,11 +193,6 @@ protected void onSubmit(Optional targetOptional) { //post update event sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_NAME_PRONUN_UPDATE, "/profile/"+userId, true); - //post to wall if enabled - if (sakaiProxy.isWallEnabledGlobally() && !sakaiProxy.isSuperUserAndProxiedToUser(userId)) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_NAME_PRONUN_UPDATE, sakaiProxy.getCurrentUserId()); - } - //repaint panel Component newPanel = new MyNamePronunciationDisplay(id, userProfile); newPanel.setOutputMarkupId(true); @@ -306,14 +253,6 @@ private boolean save(Form form) { String userId = userProfile.getUserUuid(); SakaiPerson sakaiPerson = sakaiProxy.getSakaiPerson(userId); - String pronounsInput = userProfile.getPronounsInput(); - if (StringUtils.isNotBlank(pronounsInput)) { - sakaiPerson.setPronouns(pronounsInput); - } else { - sakaiPerson.setPronouns(userProfile.getPronounsSelected()); - } - userProfile.setPronouns(sakaiPerson.getPronouns()); - sakaiPerson.setPhoneticPronunciation(userProfile.getPhoneticPronunciation()); if (audioBase64.getDefaultModelObject() != null) { String audioStr = audioBase64.getDefaultModelObject().toString().split(",")[1]; diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.html index 8b1c9f57d9c9..ae5edd434517 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.html @@ -26,23 +26,17 @@ +

    [myDisplayName]

    [myInfo panel]
    [myNamePronunciation panel]
    [myContact panel]
    - -
    [myStaff panel]
    -
    [myBusiness panel]
    - -
    [myStudent panel]
    [mySocialNetworking panel]
    - -
    [myInterests panel]
    - \ No newline at end of file + diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.java index 49cb3fe7b81e..0401025fd09f 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyProfilePanel.java @@ -15,8 +15,11 @@ */ package org.sakaiproject.profile2.tool.pages.panels; +import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.panel.EmptyPanel; import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.model.ResourceModel; + import org.sakaiproject.profile2.model.MyProfilePanelState; import org.sakaiproject.profile2.model.UserProfile; @@ -31,6 +34,8 @@ public MyProfilePanel(String id, UserProfile userProfile, MyProfilePanelState panelState) { super(id); + + add(new Label("myDisplayName", new ResourceModel(userProfile.getDisplayName()))); //info panel - load the display version by default Panel myInfoDisplay = new MyInfoDisplay("myInfo", userProfile); @@ -52,36 +57,6 @@ public MyProfilePanel(String id, UserProfile userProfile, myContactDisplay.setOutputMarkupId(true); add(myContactDisplay); - //university staff panel - load the display version by default - Panel myStaffDisplay; - if (panelState.showStaffDisplay) { - myStaffDisplay = new MyStaffDisplay("myStaff", userProfile); - myStaffDisplay.setOutputMarkupId(true); - } else { - myStaffDisplay = new EmptyPanel("myStaff"); - } - add(myStaffDisplay); - - //business panel - load the display version by default - Panel myBusinessDisplay; - if (panelState.showBusinessDisplay) { - myBusinessDisplay = new MyBusinessDisplay("myBusiness", userProfile); - myBusinessDisplay.setOutputMarkupId(true); - } else { - myBusinessDisplay = new EmptyPanel("myBusiness"); - } - add(myBusinessDisplay); - - //student panel - Panel myStudentDisplay; - if (panelState.showStudentDisplay) { - myStudentDisplay = new MyStudentDisplay("myStudent", userProfile); - myStudentDisplay.setOutputMarkupId(true); - } else { - myStudentDisplay = new EmptyPanel("myStudent"); - } - add(myStudentDisplay); - //social networking panel Panel mySocialNetworkingDisplay; if (panelState.showSocialNetworkingDisplay) { @@ -91,16 +66,6 @@ public MyProfilePanel(String id, UserProfile userProfile, mySocialNetworkingDisplay = new EmptyPanel("mySocialNetworking"); } add(mySocialNetworkingDisplay); - - //interests panel - load the display version by default - Panel myInterestsDisplay; - if (panelState.showInterestsDisplay) { - myInterestsDisplay = new MyInterestsDisplay("myInterests", userProfile); - myInterestsDisplay.setOutputMarkupId(true); - } else { - myInterestsDisplay = new EmptyPanel("myInterests"); - } - add(myInterestsDisplay); } } diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.html index 1c9f9e6cbc04..ee6ffd73da9f 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.html @@ -40,7 +40,6 @@
    [pronounsLabel] - - - - -
    [phoneticLabel]
    - - - - - - - -
    [facebookLabel] @@ -48,7 +47,6 @@
    [linkedinLabel] @@ -56,7 +54,6 @@
    [instagramlabel] @@ -64,11 +61,6 @@
    [skypeLabel][skypeLink]
    diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.java index c3ab70a49b53..f607dd29a37a 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingDisplay.java @@ -56,7 +56,6 @@ public MySocialNetworkingDisplay(final String id, final UserProfile userProfile) String facebookUrl = userProfile.getSocialInfo().getFacebookUrl(); String linkedinUrl = userProfile.getSocialInfo().getLinkedinUrl(); String instagramUrl = userProfile.getSocialInfo().getInstagramUrl(); - String skypeUsername = userProfile.getSocialInfo().getSkypeUsername(); int visibleFieldCount = 0; @@ -93,17 +92,6 @@ public MySocialNetworkingDisplay(final String id, final UserProfile userProfile) visibleFieldCount++; } - //skypeme (no URL, as we don't want user skyping themselves) - WebMarkupContainer skypeContainer = new WebMarkupContainer("skypeContainer"); - skypeContainer.add(new Label("skypeLabel", new ResourceModel("profile.socialnetworking.skype"))); - skypeContainer.add(new Label("skypeLink", skypeUsername)); - add(skypeContainer); - if (StringUtils.isBlank(skypeUsername)) { - skypeContainer.setVisible(false); - } else { - visibleFieldCount++; - } - //edit button AjaxFallbackLink editButton = new AjaxFallbackLink<>("editButton") { @Override diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingEdit.html index 56a3f350b5c0..b45d69b4f0e8 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingEdit.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MySocialNetworkingEdit.html @@ -75,14 +75,6 @@ [instagramUrlFeedback] - - - [facebookLabel] - - - - -
    skypeUsername = new TextField<>("skypeUsername", new PropertyModel<>(userProfile, "socialInfo.skypeUsername")); - skypeUsername.setMarkupId("skypeusernameinput"); - skypeUsername.setOutputMarkupId(true); - skypeContainer.add(skypeUsername); - form.add(skypeContainer); - //submit button AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.save.changes"), form) { private static final long serialVersionUID = 1L; @@ -192,11 +179,6 @@ protected void onSubmit(Optional targetOptional) { // post update event sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_SOCIAL_NETWORKING_UPDATE,"/profile/" + userProfile.getUserUuid(), true); - //post to wall if enabled - if (true == sakaiProxy.isWallEnabledGlobally() && false == sakaiProxy.isSuperUserAndProxiedToUser(userProfile.getUserUuid())) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_SOCIAL_NETWORKING_UPDATE, sakaiProxy.getCurrentUserId()); - } - // repaint panel Component newPanel = new MySocialNetworkingDisplay(id, userProfile); newPanel.setOutputMarkupId(true); @@ -294,14 +276,11 @@ private boolean save(Form form) { String tFacebook = ProfileUtils.truncate(userProfile.getSocialInfo().getFacebookUrl(), 255, false); String tLinkedin = ProfileUtils.truncate(userProfile.getSocialInfo().getLinkedinUrl(), 255, false); String tInstagram = ProfileUtils.truncate(userProfile.getSocialInfo().getInstagramUrl(), 255, false); - String tSkype = ProfileUtils.truncate(userProfile.getSocialInfo().getSkypeUsername(), 255, false); socialNetworkingInfo.setFacebookUrl(tFacebook); socialNetworkingInfo.setLinkedinUrl(tLinkedin); socialNetworkingInfo.setInstagramUrl(tInstagram); - socialNetworkingInfo.setSkypeUsername(tSkype); return profileLogic.saveSocialNetworkingInfo(socialNetworkingInfo); - } } diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffDisplay.html deleted file mode 100644 index f6f84f2a79bf..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffDisplay.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - -
    -
    - [University Staff] -
    - - - - edit - - -
    - - No fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [positionLabel][position]
    [departmentLabel][department]
    [schoolLabel][school]
    [roomLabel][room]
    [staffProfileLabel][staffProfile]
    [universityProfileUrlLabel][universityProfileUrl]
    [academicProfileUrlLabel][academicProfileUrl]
    [publicationsLabel][publications]
    -
    -
    - -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffDisplay.java deleted file mode 100644 index bd87ee035b91..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffDisplay.java +++ /dev/null @@ -1,184 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.ExternalLink; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -@Slf4j -public class MyStaffDisplay extends Panel { - - private static final long serialVersionUID = 1L; - private int visibleFieldCount = 0; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - public MyStaffDisplay(final String id, final UserProfile userProfile) { - super(id); - - //this panel stuff - final Component thisPanel = this; - - //get info from userProfile - String department = userProfile.getDepartment(); - String position = userProfile.getPosition(); - String school = userProfile.getSchool(); - String room = userProfile.getRoom(); - String staffProfile = userProfile.getStaffProfile(); - String universityProfileUrl = userProfile.getUniversityProfileUrl(); - String academicProfileUrl = userProfile.getAcademicProfileUrl(); - String publications = userProfile.getPublications(); - - //heading - add(new Label("heading", new ResourceModel("heading.staff"))); - - //department - WebMarkupContainer departmentContainer = new WebMarkupContainer("departmentContainer"); - departmentContainer.add(new Label("departmentLabel", new ResourceModel("profile.department"))); - departmentContainer.add(new Label("department", department)); - add(departmentContainer); - if(StringUtils.isBlank(department)) { - departmentContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //position - WebMarkupContainer positionContainer = new WebMarkupContainer("positionContainer"); - positionContainer.add(new Label("positionLabel", new ResourceModel("profile.position"))); - positionContainer.add(new Label("position", position)); - add(positionContainer); - if(StringUtils.isBlank(position)) { - positionContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //school - WebMarkupContainer schoolContainer = new WebMarkupContainer("schoolContainer"); - schoolContainer.add(new Label("schoolLabel", new ResourceModel("profile.school"))); - schoolContainer.add(new Label("school", school)); - add(schoolContainer); - if(StringUtils.isBlank(school)) { - schoolContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //room - WebMarkupContainer roomContainer = new WebMarkupContainer("roomContainer"); - roomContainer.add(new Label("roomLabel", new ResourceModel("profile.room"))); - roomContainer.add(new Label("room", room)); - add(roomContainer); - if(StringUtils.isBlank(room)) { - roomContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //staff profile - WebMarkupContainer staffProfileContainer = new WebMarkupContainer("staffProfileContainer"); - staffProfileContainer.add(new Label("staffProfileLabel", new ResourceModel("profile.staffprofile"))); - staffProfileContainer.add(new Label("staffProfile", ProfileUtils.processHtml(staffProfile)).setEscapeModelStrings(false)); - add(staffProfileContainer); - if(StringUtils.isBlank(staffProfile)) { - staffProfileContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //university profile URL - WebMarkupContainer universityProfileUrlContainer = new WebMarkupContainer("universityProfileUrlContainer"); - universityProfileUrlContainer.add(new Label("universityProfileUrlLabel", new ResourceModel("profile.universityprofileurl"))); - universityProfileUrlContainer.add(new ExternalLink("universityProfileUrl", universityProfileUrl, universityProfileUrl)); - add(universityProfileUrlContainer); - if(StringUtils.isBlank(universityProfileUrl)) { - universityProfileUrlContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //academic/research profile URL - WebMarkupContainer academicProfileUrlContainer = new WebMarkupContainer("academicProfileUrlContainer"); - academicProfileUrlContainer.add(new Label("academicProfileUrlLabel", new ResourceModel("profile.academicprofileurl"))); - academicProfileUrlContainer.add(new ExternalLink("academicProfileUrl", academicProfileUrl, academicProfileUrl)); - add(academicProfileUrlContainer); - if(StringUtils.isBlank(academicProfileUrl)) { - academicProfileUrlContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //publications - WebMarkupContainer publicationsContainer = new WebMarkupContainer("publicationsContainer"); - publicationsContainer.add(new Label("publicationsLabel", new ResourceModel("profile.publications"))); - publicationsContainer.add(new Label("publications", ProfileUtils.processHtml(publications)).setEscapeModelStrings(false)); - add(publicationsContainer); - if(StringUtils.isBlank(publications)) { - publicationsContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //edit button - AjaxFallbackLink editButton = new AjaxFallbackLink("editButton") { - @Override - public void onClick(Optional targetOptional) { - Component newPanel = new MyStaffEdit(id, userProfile); - newPanel.setOutputMarkupId(true); - thisPanel.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - }; - editButton.add(new Label("editButtonLabel", new ResourceModel("button.edit"))); - editButton.add(new AttributeModifier("aria-label", new ResourceModel("accessibility.edit.staff"))); - editButton.setOutputMarkupId(true); - - if(userProfile.isLocked() && !sakaiProxy.isSuperUser()) { - editButton.setVisible(false); - } - - add(editButton); - - //no fields message - Label noFieldsMessage = new Label("noFieldsMessage", new ResourceModel("text.no.fields")); - add(noFieldsMessage); - if(visibleFieldCount > 0) { - noFieldsMessage.setVisible(false); - } - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffEdit.html deleted file mode 100644 index 21a6fb4a330e..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffEdit.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - - - - - - -
    -
    [University Staff]
    - -
    - -
    - -
    [You are editing {other person}'s profile]
    - -
    [formFeedback]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [positionLabel] - - -
    [departmentLabel] - - -
    [schoolLabel] - - -
    [roomLabel] - - -
    [staffProfileLabel] - - - -
    [universityProfileUrlLabel] - - - [universityProfileUrlFeedback] -
    [academicProfileUrlLabel] - - - [academicProfileUrlFeedback] -
    [publicationsLabel] - - - -
    - -
    - - -
    - -
    -
    -
    - - -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffEdit.java deleted file mode 100644 index c04f46d03e66..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStaffEdit.java +++ /dev/null @@ -1,344 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.attributes.AjaxCallListener; -import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.apache.wicket.validation.validator.UrlValidator; -import org.sakaiproject.api.common.edu.person.SakaiPerson; -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.tool.components.ComponentVisualErrorBehaviour; -import org.sakaiproject.profile2.tool.components.FeedbackLabel; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.extern.slf4j.Slf4j; - -import java.util.Optional; - -@Slf4j -public class MyStaffEdit extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") - private ProfileLogic profileLogic; - - public MyStaffEdit(final String id, final UserProfile userProfile) { - super(id); - - log.debug("MyStaffEdit()"); - - //this panel - final Component thisPanel = this; - - //get userId - final String userId = userProfile.getUserUuid(); - - //heading - add(new Label("heading", new ResourceModel("heading.staff.edit"))); - - //setup form - Form form = new Form<>("form", new Model<>(userProfile)); - form.setOutputMarkupId(true); - - //form submit feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - form.add(formFeedback); - - //add warning message if superUser and not editing own profile - Label editWarning = new Label("editWarning"); - editWarning.setVisible(false); - if(sakaiProxy.isSuperUserAndProxiedToUser(userId)) { - editWarning.setDefaultModel(new StringResourceModel("text.edit.other.warning").setParameters(userProfile.getDisplayName())); - editWarning.setEscapeModelStrings(false); - editWarning.setVisible(true); - } - form.add(editWarning); - - - //We don't need to get the info from userProfile, we load it into the form with a property model - //just make sure that the form element id's match those in the model - - //position - WebMarkupContainer positionContainer = new WebMarkupContainer("positionContainer"); - positionContainer.add(new Label("positionLabel", new ResourceModel("profile.position"))); - TextField position = new TextField<>("position", new PropertyModel<>(userProfile, "position")); - position.setMarkupId("positioninput"); - position.setOutputMarkupId(true); - positionContainer.add(position); - form.add(positionContainer); - - //department - WebMarkupContainer departmentContainer = new WebMarkupContainer("departmentContainer"); - departmentContainer.add(new Label("departmentLabel", new ResourceModel("profile.department"))); - TextField department = new TextField<>("department", new PropertyModel<>(userProfile, "department")); - department.setMarkupId("departmentinput"); - department.setOutputMarkupId(true); - departmentContainer.add(department); - form.add(departmentContainer); - - //school - WebMarkupContainer schoolContainer = new WebMarkupContainer("schoolContainer"); - schoolContainer.add(new Label("schoolLabel", new ResourceModel("profile.school"))); - TextField school = new TextField<>("school", new PropertyModel<>(userProfile, "school")); - school.setMarkupId("schoolinput"); - school.setOutputMarkupId(true); - schoolContainer.add(school); - form.add(schoolContainer); - - //room - WebMarkupContainer roomContainer = new WebMarkupContainer("roomContainer"); - roomContainer.add(new Label("roomLabel", new ResourceModel("profile.room"))); - TextField room = new TextField<>("room", new PropertyModel<>(userProfile, "room")); - room.setMarkupId("roominput"); - room.setOutputMarkupId(true); - roomContainer.add(room); - form.add(roomContainer); - - //staffprofile - WebMarkupContainer staffProfileContainer = new WebMarkupContainer("staffProfileContainer"); - staffProfileContainer.add(new Label("staffProfileLabel", new ResourceModel("profile.staffprofile"))); - TextArea staffProfile = new TextArea<>("staffProfile", new PropertyModel<>(userProfile, "staffProfile")); - staffProfile.setMarkupId("staffprofileinput"); - staffProfile.setOutputMarkupId(true); - staffProfileContainer.add(staffProfile); - form.add(staffProfileContainer); - - //university profile URL - WebMarkupContainer universityProfileUrlContainer = new WebMarkupContainer("universityProfileUrlContainer"); - universityProfileUrlContainer.add(new Label("universityProfileUrlLabel", new ResourceModel("profile.universityprofileurl"))); - TextField universityProfileUrl = new TextField<>("universityProfileUrl", new PropertyModel<>(userProfile, "universityProfileUrl")) { - private static final long serialVersionUID = 1L; - - // add http:// if missing - @Override - public void convertInput() { - String input = getInput(); - - if (StringUtils.isNotBlank(input) - && !(input.startsWith("http://") || input - .startsWith("https://"))) { - setConvertedInput("http://" + input); - } else { - setConvertedInput(StringUtils.isBlank(input) ? null : input); - } - } - }; - universityProfileUrl.setMarkupId("universityprofileurlinput"); - universityProfileUrl.setOutputMarkupId(true); - universityProfileUrl.add(new UrlValidator()); - universityProfileUrlContainer.add(universityProfileUrl); - - final FeedbackLabel universityProfileUrlFeedback = new FeedbackLabel( - "universityProfileUrlFeedback", universityProfileUrl); - universityProfileUrlFeedback.setMarkupId("universityProfileUrlFeedback"); - universityProfileUrlFeedback.setOutputMarkupId(true); - universityProfileUrlContainer.add(universityProfileUrlFeedback); - universityProfileUrl.add(new ComponentVisualErrorBehaviour("blur", - universityProfileUrlFeedback)); - - form.add(universityProfileUrlContainer); - - //academic/research profile URL - WebMarkupContainer academicProfileUrlContainer = new WebMarkupContainer("academicProfileUrlContainer"); - academicProfileUrlContainer.add(new Label("academicProfileUrlLabel", new ResourceModel("profile.academicprofileurl"))); - TextField academicProfileUrl = new TextField("academicProfileUrl", new PropertyModel(userProfile, "academicProfileUrl")) { - private static final long serialVersionUID = 1L; - - // add http:// if missing - @Override - public void convertInput() { - String input = getInput(); - - if (StringUtils.isNotBlank(input) - && !(input.startsWith("http://") || input - .startsWith("https://"))) { - setConvertedInput("http://" + input); - } else { - setConvertedInput(StringUtils.isBlank(input) ? null : input); - } - } - }; - academicProfileUrl.setMarkupId("academicprofileurlinput"); - academicProfileUrl.setOutputMarkupId(true); - academicProfileUrl.add(new UrlValidator()); - academicProfileUrlContainer.add(academicProfileUrl); - - final FeedbackLabel academicProfileUrlFeedback = new FeedbackLabel( - "academicProfileUrlFeedback", academicProfileUrl); - academicProfileUrlFeedback.setMarkupId("academicProfileUrlFeedback"); - academicProfileUrlFeedback.setOutputMarkupId(true); - academicProfileUrlContainer.add(academicProfileUrlFeedback); - academicProfileUrl.add(new ComponentVisualErrorBehaviour("blur", - academicProfileUrlFeedback)); - - form.add(academicProfileUrlContainer); - - //publications - WebMarkupContainer publicationsContainer = new WebMarkupContainer("publicationsContainer"); - publicationsContainer.add(new Label("publicationsLabel", new ResourceModel("profile.publications"))); - TextArea publications = new TextArea<>("publications", new PropertyModel<>(userProfile, "publications")); - publications.setMarkupId("publicationsinput"); - publications.setOutputMarkupId(true); - publicationsContainer.add(publications); - - form.add(publicationsContainer); - - //submit button - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.save.changes"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - //save() form, show message, then load display panel - if(save(form)) { - - //post update event - sakaiProxy.postEvent(ProfileConstants.EVENT_PROFILE_STAFF_UPDATE, "/profile/"+userId, true); - - //post to wall if enabled - if (sakaiProxy.isWallEnabledGlobally() && !sakaiProxy.isSuperUserAndProxiedToUser(userProfile.getUserUuid())) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_STAFF_UPDATE, sakaiProxy.getCurrentUserId()); - } - - //repaint panel - Component newPanel = new MyStaffDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - thisPanel.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - - } else { - //String js = "alert('Failed to save information. Contact your system administrator.');"; - //target.prependJavascript(js); - targetOptional.ifPresent(target -> { - formFeedback.setDefaultModel(new ResourceModel("error.profile.save.academic.failed")); - formFeedback.add(new AttributeModifier("class", new Model("save-failed-error"))); - target.add(formFeedback); - }); - } - } - - protected void updateAjaxAttributes(AjaxRequestAttributes attributes){ - super.updateAjaxAttributes(attributes); - AjaxCallListener myAjaxCallListener = new AjaxCallListener() { - @Override - public CharSequence getBeforeHandler(Component component) { - return "doUpdateCK()"; - } - }; - attributes.getAjaxCallListeners().add(myAjaxCallListener); - } - - }; - form.add(submitButton); - - - //cancel button - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - Component newPanel = new MyStaffDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - thisPanel.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - //need a scrollTo action here, to scroll down the page to the section - }); - - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - //add form to page - add(form); - - } - - //called when the form is to be saved - private boolean save(Form form) { - - //get the backing model - UserProfile userProfile = (UserProfile) form.getModelObject(); - - //get userId from the UserProfile (because admin could be editing), then get existing SakaiPerson for that userId - - String userId = userProfile.getUserUuid(); - SakaiPerson sakaiPerson = sakaiProxy.getSakaiPerson(userId); - - String tDepartment = ProfileUtils.truncate(userProfile.getDepartment(), 255, false); - String tPosition = ProfileUtils.truncate(userProfile.getPosition(), 255, false); - String tSchool = ProfileUtils.truncate(userProfile.getSchool(), 255, false); - String tRoom = ProfileUtils.truncate(userProfile.getRoom(), 255, false); - - //get values and set into SakaiPerson - sakaiPerson.setOrganizationalUnit(tDepartment); - sakaiPerson.setTitle(tPosition); - sakaiPerson.setCampus(tSchool); - sakaiPerson.setRoomNumber(tRoom); - sakaiPerson.setStaffProfile(userProfile.getStaffProfile()); - sakaiPerson.setUniversityProfileUrl(userProfile.getUniversityProfileUrl()); - sakaiPerson.setAcademicProfileUrl(userProfile.getAcademicProfileUrl()); - - //PRFL-467 store as given, and process when it is retrieved. - sakaiPerson.setPublications(userProfile.getPublications()); - - //update SakaiPerson - if(profileLogic.saveUserProfile(sakaiPerson)) { - log.info("Saved SakaiPerson for: {}", userId); - return true; - } else { - log.info("Couldn't save SakaiPerson for: {}", userId); - return false; - } - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStatusPanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStatusPanel.html deleted file mode 100644 index 8d2b206d20ea..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStatusPanel.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - - -
    - [profileName]  - [status here] - -
    -
    -
    - - -
    -

    - -

    - -
    -
    -
    - - - - -
    - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStatusPanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStatusPanel.java deleted file mode 100644 index 9d411efc804e..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStatusPanel.java +++ /dev/null @@ -1,223 +0,0 @@ -/** - * 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.tool.pages.panels; - - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.ajax.AjaxEventBehavior; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Button; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileExternalIntegrationLogic; -import org.sakaiproject.profile2.logic.ProfileMessagingLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfileStatusLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.tool.components.ProfileStatusRenderer; -import org.sakaiproject.profile2.tool.models.StringModel; -import org.sakaiproject.profile2.util.ProfileConstants; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class MyStatusPanel extends Panel { - - private static final long serialVersionUID = 1L; - - private ProfileStatusRenderer status; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileStatusLogic") - private ProfileStatusLogic statusLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - private ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileMessagingLogic") - private ProfileMessagingLogic messagingLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileExternalIntegrationLogic") - protected ProfileExternalIntegrationLogic externalIntegrationLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - protected ProfileWallLogic wallLogic; - - //get default text that fills the textField - String clearStatus = new ResourceModel("accessibility.profile.status.clear", "Say something").getObject().toString(); - String defaultStatus = new ResourceModel("text.no.status", "Say something").getObject().toString(); - String accessibilityStatus = new ResourceModel("accessibility.profile.status.input", "Enter your current status").getObject().toString(); - - public MyStatusPanel(String id, UserProfile userProfile) { - super(id); - - log.debug("MyStatusPanel()"); - - //get info - final String displayName = userProfile.getDisplayName(); - final String userId = userProfile.getUserUuid(); - - //if superUser and proxied, can't update - boolean editable = !sakaiProxy.isSuperUserAndProxiedToUser(userId); - - //name - Label profileName = new Label("profileName", displayName); - add(profileName); - - //status component - status = new ProfileStatusRenderer("status", userId, null, "tiny") { - @Override - public boolean isVisible(){ - return this.hasStatusSet() && sakaiProxy.isProfileStatusEnabled(); - } - }; - status.setOutputMarkupId(true); - add(status); - - //clear link - Button clearBtn = new Button("clearBtn"); - clearBtn.add(new AjaxEventBehavior("click") { - @Override - protected void onEvent(AjaxRequestTarget target) { - //clear status, hide and repaint - boolean isCleared = statusLogic.clearUserStatus(userId); - status.setHasStatusSet(!isCleared); - if(isCleared) { - status.setVisible(false); //hide status - clearBtn.setVisible(false); //hide clear link - target.add(status); - target.add(clearBtn); - } - } - }); - clearBtn.setOutputMarkupId(true); - clearBtn.setOutputMarkupPlaceholderTag(true); - clearBtn.add(new Label("clearLabel",new ResourceModel("link.status.clear"))); - clearBtn.add(new AttributeModifier("title", clearStatus)); - clearBtn.add(new AttributeModifier("aria-label", clearStatus)); - clearBtn.setVisible(status.hasStatusSet()); - - add(clearBtn); - - WebMarkupContainer statusFormContainer = new WebMarkupContainer("statusFormContainer") { - @Override - public boolean isVisible(){ - return sakaiProxy.isProfileStatusEnabled(); - } - }; - - - //setup SimpleText object to back the single form field - StringModel stringModel = new StringModel(); - - //status form - Form form = new Form("form", new Model(stringModel)); - form.setOutputMarkupId(true); - - //status field - final TextField statusField = new TextField<>("message", new PropertyModel<>(stringModel, "string")); - statusField.setMarkupId("messageinput"); - statusField.setOutputMarkupId(true); - statusField.add(new AttributeModifier("placeholder", defaultStatus)); - statusField.add(new AttributeModifier("title", accessibilityStatus)); - statusField.add(new AttributeModifier("aria-label", accessibilityStatus)); - form.add(statusField); - - //submit button - IndicatingAjaxButton submitButton = new IndicatingAjaxButton("submit", form) { - - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - - //get the backing model - StringModel stringModel = (StringModel) form.getModelObject(); - - //get userId from sakaiProxy - String userId = sakaiProxy.getCurrentUserId(); - - //get the status. if its the default text, do not update, although we should clear the model - String statusMessage = StringUtils.trim(stringModel.getString()); - if(StringUtils.isBlank(statusMessage) || StringUtils.equals(statusMessage, defaultStatus)) { - log.warn("Status for userId: {} was not updated because they didn't enter anything.", userId); - return; - } - - //save status from userProfile - if(statusLogic.setUserStatus(userId, statusMessage)) { - log.info("Saved status for: {}", userId); - - //post update event - sakaiProxy.postEvent(ProfileConstants.EVENT_STATUS_UPDATE, "/profile/"+userId, true); - - // post to walls if wall enabled - if (sakaiProxy.isWallEnabledGlobally()) { - wallLogic.addNewStatusToWall(statusMessage, sakaiProxy.getCurrentUserId()); - } - - //repaint status component - ProfileStatusRenderer newStatus = new ProfileStatusRenderer("status", userId, null, "tiny"); - newStatus.setOutputMarkupId(true); - status.replaceWith(newStatus); - newStatus.setVisible(true); - - //also show the clear link - clearBtn.setVisible(true); - - if(target != null) { - target.add(newStatus); - target.add(clearBtn); - status=newStatus; //update reference - } - - } else { - log.error("Couldn't save status for: {}", userId); - String js = "alert('Failed to save status. If the problem persists, contact your system administrator.');"; - target.prependJavaScript(js); - } - - } - }; - submitButton.setModel(new ResourceModel("button.sayit")); - form.add(submitButton); - - //add form to container - statusFormContainer.add(form); - - //if not editable, hide the entire form - if(!editable) { - statusFormContainer.setVisible(false); - } - - - add(statusFormContainer); - - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentDisplay.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentDisplay.html deleted file mode 100644 index 400c4c634b7b..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentDisplay.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - -
    -
    - [Student Information] -
    - - - - edit - - -
    - No fields - - - - - - - - - - - - - -
    [courseLabel][course]
    [subjectsLabel][subjects]
    -
    -
    - -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentDisplay.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentDisplay.java deleted file mode 100644 index 629f04b1531c..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentDisplay.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxFallbackLink; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.UserProfile; - -import java.util.Optional; - -public class MyStudentDisplay extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - public MyStudentDisplay(final String id, final UserProfile userProfile) { - - super(id); - - //heading - add(new Label("heading", new ResourceModel("heading.student"))); - - String course = userProfile.getCourse(); - String subjects = userProfile.getSubjects(); - - int visibleFieldCount = 0; - - //course - WebMarkupContainer courseContainer = new WebMarkupContainer("courseContainer"); - courseContainer.add(new Label("courseLabel", new ResourceModel("profile.course"))); - courseContainer.add(new Label("course", course)); - add(courseContainer); - if(StringUtils.isBlank(course)) { - courseContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //subjects - WebMarkupContainer subjectsContainer = new WebMarkupContainer("subjectsContainer"); - subjectsContainer.add(new Label("subjectsLabel", new ResourceModel("profile.subjects"))); - subjectsContainer.add(new Label("subjects", subjects)); - add(subjectsContainer); - if(StringUtils.isBlank(subjects)) { - subjectsContainer.setVisible(false); - } else { - visibleFieldCount++; - } - - //edit button - AjaxFallbackLink editButton = new AjaxFallbackLink("editButton") { - @Override - public void onClick(Optional targetOptional) { - Component newPanel = new MyStudentEdit(id, userProfile); - newPanel.setOutputMarkupId(true); - MyStudentDisplay.this.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - }); - } - }; - editButton.add(new Label("editButtonLabel", new ResourceModel("button.edit"))); - editButton.add(new AttributeModifier("aria-label", new ResourceModel("accessibility.edit.student"))); - editButton.setOutputMarkupId(true); - - if(userProfile.isLocked() && !sakaiProxy.isSuperUser()) { - editButton.setVisible(false); - } - - add(editButton); - - //no fields message - Label noFieldsMessage = new Label("noFieldsMessage", new ResourceModel("text.no.fields")); - add(noFieldsMessage); - if(visibleFieldCount > 0) { - noFieldsMessage.setVisible(false); - } - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentEdit.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentEdit.html deleted file mode 100644 index 94ab2f4ae221..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentEdit.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - -
    -
    [Business - Information]
    - -
    - -
    - -
    [You are - editing {other person}'s profile]
    - -
    [formFeedback]
    - - - - - - - - - - - - - - - -
    [courseLabel] - - -
    [subjectsLabel] - - -
    - -
    - -
    -
    -
    -
    - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentEdit.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentEdit.java deleted file mode 100644 index 12423613f46d..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyStudentEdit.java +++ /dev/null @@ -1,193 +0,0 @@ -/** - * 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.tool.pages.panels; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.Component; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.api.common.edu.person.SakaiPerson; -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileConstants; - -import java.util.Optional; - -@Slf4j -public class MyStudentEdit extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") - private ProfileLogic profileLogic; - - public MyStudentEdit(final String id, final UserProfile userProfile) { - - super(id); - - //heading - add(new Label("heading", new ResourceModel("heading.student.edit"))); - - //setup form - Form form = new Form("form", new Model(userProfile)); - form.setOutputMarkupId(true); - - //form submit feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - form.add(formFeedback); - - //add warning message if superUser and not editing own profile - Label editWarning = new Label("editWarning"); - editWarning.setVisible(false); - if(sakaiProxy.isSuperUserAndProxiedToUser(userProfile.getUserUuid())) { - editWarning.setDefaultModel(new StringResourceModel("text.edit.other.warning").setParameters(userProfile.getDisplayName())); - editWarning.setEscapeModelStrings(false); - editWarning.setVisible(true); - } - form.add(editWarning); - - //course - WebMarkupContainer courseContainer = new WebMarkupContainer("courseContainer"); - courseContainer.add(new Label("courseLabel", new ResourceModel("profile.course"))); - TextField course = new TextField<>("course", new PropertyModel<>(userProfile, "course")); - course.setMarkupId("courseinput"); - course.setOutputMarkupId(true); - courseContainer.add(course); - form.add(courseContainer); - - //subjects - WebMarkupContainer subjectsContainer = new WebMarkupContainer("subjectsContainer"); - subjectsContainer.add(new Label("subjectsLabel", new ResourceModel("profile.subjects"))); - TextField subjects = new TextField<>("subjects", new PropertyModel<>(userProfile, "subjects")); - subjects.setMarkupId("subjectsinput"); - subjects.setOutputMarkupId(true); - subjectsContainer.add(subjects); - form.add(subjectsContainer); - - //submit button - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.save.changes"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - // save() form, show message, then load display panel - if (save(form)) { - - // post update event - sakaiProxy.postEvent( - ProfileConstants.EVENT_PROFILE_STUDENT_UPDATE, - "/profile/" + userProfile.getUserUuid(), true); - - //post to wall if enabled - if (true == sakaiProxy.isWallEnabledGlobally() && false == sakaiProxy.isSuperUserAndProxiedToUser(userProfile.getUserUuid())) { - wallLogic.addNewEventToWall(ProfileConstants.EVENT_PROFILE_STUDENT_UPDATE, sakaiProxy.getCurrentUserId()); - } - - // repaint panel - Component newPanel = new MyStudentDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - MyStudentEdit.this.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - // resize iframe - target - .appendJavaScript("setMainFrameHeight(window.name);"); - }); - - } else { - // String js = - // "alert('Failed to save information. Contact your system administrator.');"; - // target.prependJavascript(js); - - targetOptional.ifPresent(target -> { - formFeedback.setDefaultModel(new ResourceModel( - "error.profile.save.academic.failed")); - formFeedback.add(new AttributeModifier("class", - new Model("save-failed-error"))); - target.add(formFeedback); - }); - } - } - }; - form.add(submitButton); - - - //cancel button - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - Component newPanel = new MyStudentDisplay(id, userProfile); - newPanel.setOutputMarkupId(true); - MyStudentEdit.this.replaceWith(newPanel); - targetOptional.ifPresent(target -> { - target.add(newPanel); - //resize iframe - target.appendJavaScript("setMainFrameHeight(window.name);"); - //need a scrollTo action here, to scroll down the page to the section - }); - - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - //add form to page - add(form); - } - - private boolean save(Form form) { - - //get the backing model - UserProfile userProfile = (UserProfile) form.getModelObject(); - - SakaiPerson sakaiPerson = sakaiProxy.getSakaiPerson(userProfile.getUserUuid()); - sakaiPerson.setEducationCourse(userProfile.getCourse()); - sakaiPerson.setEducationSubjects(userProfile.getSubjects()); - - //update SakaiPerson - if(profileLogic.saveUserProfile(sakaiPerson)) { - log.info("Saved SakaiPerson for: {}", userProfile.getUserUuid()); - return true; - } else { - log.info("Couldn't save SakaiPerson for: {}", userProfile.getUserUuid()); - return false; - } - - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyWallPanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyWallPanel.html deleted file mode 100644 index ae64b13c361e..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyWallPanel.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - -
    - [wallInformationMessage] - -
    - -
    [formFeedback]
    - -
    - -
    - - - -
    - -
    - -
    -
    [wall dataview navigator]
    -
    -
    -
    -
    -
    -
    - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyWallPanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyWallPanel.java deleted file mode 100644 index 66272c771e93..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/MyWallPanel.java +++ /dev/null @@ -1,247 +0,0 @@ -/** - * 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.tool.pages.panels; - -import java.util.Date; - -import lombok.extern.slf4j.Slf4j; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.RestartResponseException; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.feedback.FeedbackMessage; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.DataView; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; - -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.tool.components.ErrorLevelsFeedbackMessageFilter; -import org.sakaiproject.profile2.tool.dataproviders.WallItemDataProvider; -import org.sakaiproject.profile2.tool.pages.MyProfile; -import org.sakaiproject.profile2.util.ProfileConstants; - -/** - * Container for viewing user's own wall. - * - * @author d.b.robinson@lancaster.ac.uk - */ -@Slf4j -public class MyWallPanel extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - /** - * Creates a new instance of MyWallPanel. - * - * This method is used when a super user is viewing the profile of another - * user. - */ - public MyWallPanel(String panelId, String userUuid) { - - super(panelId); - - // double check for super user - if (!sakaiProxy.isSuperUser()) { - log.error("MyWallPanel: user {} attempted to access MyWallPanel for {}. Redirecting...", sakaiProxy.getCurrentUserId(), userUuid); - - throw new RestartResponseException(new MyProfile()); - } - - renderWallPanel(userUuid); - } - - /** - * Creates a new instance of MyWallPanel. - */ - public MyWallPanel(String panelId) { - - super(panelId); - - renderWallPanel(sakaiProxy.getCurrentUserId()); - } - - private void renderWallPanel(final String userUuid) { - - setOutputMarkupId(true); - - // container which wraps list - final WebMarkupContainer wallItemsContainer = new WebMarkupContainer( - "wallItemsContainer"); - - wallItemsContainer.setOutputMarkupId(true); - add(wallItemsContainer); - - WallItem wallItem = new WallItem(); - wallItem.setUserUuid(userUuid); - // always post to my wall as current user, to ensure super users cannot - // make posts as other users - wallItem.setCreatorUuid(sakaiProxy.getCurrentUserId()); - wallItem.setType(ProfileConstants.WALL_ITEM_TYPE_POST); - - // form for posting to my wall - Form form = new Form("myWallPostForm", - new Model(wallItem)); - form.setOutputMarkupId(true); - add(form); - - // form submit feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - form.add(formFeedback); - - final FeedbackPanel feedback = new FeedbackPanel("feedback"); - feedback.setOutputMarkupId(true); - form.add(feedback); - - int[] filteredErrorLevels = new int[] { FeedbackMessage.ERROR }; - feedback.setFilter(new ErrorLevelsFeedbackMessageFilter( - filteredErrorLevels)); - - // container for posting to my wall - WebMarkupContainer myWallPostContainer = new WebMarkupContainer( - "myWallPostContainer"); - final TextArea myWallPost = new TextArea<>("myWallPost",new PropertyModel(wallItem, "text")); - myWallPost.setMarkupId("wallpostinput"); - myWallPost.setOutputMarkupId(true); - - myWallPostContainer.add(myWallPost); - - form.add(myWallPostContainer); - - IndicatingAjaxButton submitButton = new IndicatingAjaxButton( - "myWallPostSubmit", form) { - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unchecked") - @Override - protected void onSubmit(AjaxRequestTarget target) { - - if (myWallPost.getValue().equals("")) { - formFeedback.setDefaultModel(new ResourceModel( - "error.wall.post.empty")); - formFeedback.add(new AttributeModifier("class", - new Model("alertMessage"))); - target.add(formFeedback); - return; - } - - if (!save(form, userUuid)) { - formFeedback.setDefaultModel(new ResourceModel( - "error.wall.post.failed")); - formFeedback.add(new AttributeModifier("class", - new Model("alertMessage"))); - target.add(formFeedback); - } else { - - replaceSelf(target, userUuid); - } - } - - //@Override - //protected IAjaxCallDecorator getAjaxCallDecorator() { - // return CKEditorTextArea.getAjaxCallDecoratedToUpdateElementForAllEditorsOnPage(); - //} - }; - submitButton.setModel(new ResourceModel("button.wall.post")); - myWallPostContainer.add(submitButton); - - WallItemDataProvider provider = new WallItemDataProvider(userUuid); - - // if no wall items, display a message - if (0 == provider.size()) { - add(new Label("wallInformationMessage", new ResourceModel( - "text.wall.no.items"))); - } else { - // blank label when there are items to display - add(new Label("wallInformationMessage")); - } - - final DataView wallItemsDataView = new DataView( - "wallItems", provider) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(Item item) { - - WallItem wallItem = (WallItem) item.getDefaultModelObject(); - - // pass reference to MyWallPanel for updating when posts are removed - item - .add(new WallItemPanel("wallItemPanel", userUuid, - wallItem, MyWallPanel.this)); - } - }; - - wallItemsDataView.setOutputMarkupId(true); - - if (provider.size() <= ProfileConstants.MAX_WALL_ITEMS_PER_PAGE) { - wallItemsContainer.add(new AjaxPagingNavigator("navigator", wallItemsDataView).setVisible(false)); - } else { - wallItemsContainer.add(new AjaxPagingNavigator("navigator", wallItemsDataView)); - } - - wallItemsDataView.setItemsPerPage(ProfileConstants.MAX_WALL_ITEMS_PER_PAGE); - - wallItemsContainer.add(wallItemsDataView); - } - - // called when form is saved - @SuppressWarnings("unchecked") - private boolean save(Form form, String userUuid) { - - WallItem wallItem = (WallItem) form.getModelObject(); - wallItem.setDate(new Date()); - - return wallLogic.postWallItemToWall(userUuid, wallItem); - } - - // this is used to replace the panel so the paging is updated - protected void replaceSelf(AjaxRequestTarget target, String userUuid) { - MyWallPanel newPanel; - if (sakaiProxy.isSuperUser()) { - newPanel= new MyWallPanel(MyWallPanel.this.getId(), userUuid); - } else { - newPanel= new MyWallPanel(MyWallPanel.this.getId()); - } - newPanel.setOutputMarkupId(true); - MyWallPanel.this.replaceWith(newPanel); - if (null != target) { - target.add(newPanel); - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/RequestedFriends.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/RequestedFriends.html deleted file mode 100644 index 1df5cc3e47c3..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/RequestedFriends.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - -

    - [Friend requests - ] - [36] -

    - -
    - -
    - - - - -
    - [name] - [status] -
    - -
    -
    summary
    -
    -
    - -
    -
    - - -
    - - - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/RequestedFriends.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/RequestedFriends.java deleted file mode 100644 index 4531b93dfa6b..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/RequestedFriends.java +++ /dev/null @@ -1,359 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.ExternalLink; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.link.PopupSettings; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.DataView; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.Person; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.components.ProfileStatusRenderer; -import org.sakaiproject.profile2.tool.dataproviders.RequestedFriendsDataProvider; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.tool.pages.MyFriends; -import org.sakaiproject.profile2.tool.pages.ViewFriends; -import org.sakaiproject.profile2.tool.pages.ViewProfile; -import org.sakaiproject.profile2.tool.pages.windows.ConfirmFriend; -import org.sakaiproject.profile2.tool.pages.windows.IgnoreFriend; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class RequestedFriends extends Panel { - - private static final long serialVersionUID = 1L; - private Integer numRequestedFriends = 0; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - protected ProfilePrivacyLogic privacyLogic; - - public RequestedFriends(final String id, final String userUuid) { - super(id); - - log.debug("RequestedFriends()"); - - final String currentUserUuid = sakaiProxy.getCurrentUserId(); - - //setup model to store the actions in the modal windows - final FriendAction friendActionModel = new FriendAction(); - - //get our list of friend requests as an IDataProvider - RequestedFriendsDataProvider provider = new RequestedFriendsDataProvider(userUuid); - - //init number of requests - numRequestedFriends = (int) provider.size(); - - //model so we can update the number of requests - IModel numRequestedFriendsModel = new Model() { - private static final long serialVersionUID = 1L; - - public Integer getObject() { - return numRequestedFriends; - } - }; - - //heading - final WebMarkupContainer requestedFriendsHeading = new WebMarkupContainer("requestedFriendsHeading"); - requestedFriendsHeading.add(new Label("requestedFriendsLabel", new ResourceModel("heading.friend.requests"))); - requestedFriendsHeading.add(new Label("requestedFriendsNumber", numRequestedFriendsModel)); - requestedFriendsHeading.setOutputMarkupId(true); - add(requestedFriendsHeading); - - //container which wraps list - final WebMarkupContainer requestedFriendsContainer = new WebMarkupContainer("requestedFriendsContainer"); - requestedFriendsContainer.setOutputMarkupId(true); - - //connection window - final ModalWindow connectionWindow = new ModalWindow("connectionWindow"); - - //search results - DataView requestedFriendsDataView = new DataView("connections", provider) { - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(final Item item) { - - Person person = (Person)item.getDefaultModelObject(); - final String personUuid = person.getUuid(); - - //get name - String displayName = person.getDisplayName(); - - //get other objects - ProfilePrivacy privacy = person.getPrivacy(); - ProfilePreferences prefs = person.getPreferences(); - - //image wrapper, links to profile - Link friendItem = new Link("connectionPhotoWrap", new Model(personUuid)) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - }; - - //image - ProfileImage connectionPhoto = new ProfileImage("connectionPhoto", new Model(personUuid)); - connectionPhoto.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - friendItem.add(connectionPhoto); - - item.add(friendItem); - - //name and link to profile - Link profileLink = new Link("connectionLink", new Model(personUuid)) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - }; - profileLink.add(new Label("connectionName", displayName)); - item.add(profileLink); - - //status component - ProfileStatusRenderer status = new ProfileStatusRenderer("connectionStatus", person, "connection-status-msg", "connection-status-date"); - status.setOutputMarkupId(true); - item.add(status); - - //CONFIRM FRIEND LINK AND WINDOW - - WebMarkupContainer c1 = new WebMarkupContainer("confirmConnectionContainer"); - c1.setOutputMarkupId(true); - - final AjaxLink confirmConnectionLink = new AjaxLink("confirmConnectionLink", new Model(personUuid)) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - - //get this item, and set content for modalwindow - String personUuid = getModelObject(); - connectionWindow.setContent(new ConfirmFriend(connectionWindow.getContentId(), connectionWindow, friendActionModel, userUuid, personUuid)); - - //modalwindow handler - connectionWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { - private static final long serialVersionUID = 1L; - - @Override - public void onClose(AjaxRequestTarget target){ - if(friendActionModel.isConfirmed()) { - - //decrement number of requests - numRequestedFriends--; - - //remove friend item from display - target.appendJavaScript("$('#" + item.getMarkupId() + "').slideUp();"); - - //update label - target.add(requestedFriendsHeading); - - //get parent panel and repaint ConfirmedFriends panel via helper method in MyFriends - findParent(MyFriends.class).updateConfirmedFriends(target, userUuid); - - //if none left, hide everything - if(numRequestedFriends==0) { - target.appendJavaScript("$('#" + requestedFriendsHeading.getMarkupId() + "').fadeOut();"); - target.appendJavaScript("$('#" + requestedFriendsContainer.getMarkupId() + "').fadeOut();"); - } - } - } - }); - - connectionWindow.show(target); - target.appendJavaScript("fixWindowVertical();"); - } - }; - //ContextImage confirmConnectionIcon = new ContextImage("confirmConnectionIcon",new Model(ProfileConstants.ACCEPT_IMG)); - //confirmConnectionLink.add(confirmConnectionIcon); - confirmConnectionLink.add(new AttributeModifier("title", new ResourceModel("link.title.confirmfriend"))); - confirmConnectionLink.add(new AttributeModifier("alt", new StringResourceModel("accessibility.connection.confirm").setParameters(displayName))); - confirmConnectionLink.add(new Label("confirmConnectionLabel", new ResourceModel("link.friend.confirm")).setOutputMarkupId(true)); - c1.add(confirmConnectionLink); - item.add(c1); - - //IGNORE FRIEND LINK AND WINDOW - - WebMarkupContainer c2 = new WebMarkupContainer("ignoreConnectionContainer"); - c2.setOutputMarkupId(true); - - final AjaxLink ignoreConnectionLink = new AjaxLink("ignoreConnectionLink", new Model(personUuid)) { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - - //get this item, and set content for modalwindow - String personUuid = getModelObject(); - connectionWindow.setContent(new IgnoreFriend(connectionWindow.getContentId(), connectionWindow, friendActionModel, userUuid, personUuid)); - - //modalwindow handler - connectionWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() { - private static final long serialVersionUID = 1L; - - @Override - public void onClose(AjaxRequestTarget target){ - if(friendActionModel.isIgnored()) { - - //decrement number of requests - numRequestedFriends--; - - //remove friend item from display - target.appendJavaScript("$('#" + item.getMarkupId() + "').slideUp();"); - - //update label - target.add(requestedFriendsHeading); - - //if none left, hide everything - if(numRequestedFriends==0) { - target.appendJavaScript("$('#" + requestedFriendsHeading.getMarkupId() + "').fadeOut();"); - target.appendJavaScript("$('#" + requestedFriendsContainer.getMarkupId() + "').fadeOut();"); - } - } - } - }); - - connectionWindow.show(target); - target.appendJavaScript("fixWindowVertical();"); - } - }; - //ContextImage ignoreConnectionIcon = new ContextImage("ignoreConnectionIcon",new Model(ProfileConstants.CANCEL_IMG)); - //ignoreConnectionLink.add(ignoreConnectionIcon); - ignoreConnectionLink.add(new AttributeModifier("title", new ResourceModel("link.title.ignorefriend"))); - ignoreConnectionLink.add(new AttributeModifier("alt", new StringResourceModel("accessibility.connection.ignore").setParameters(displayName))); - ignoreConnectionLink.add(new Label("ignoreConnectionLabel", new ResourceModel("link.friend.ignore")).setOutputMarkupId(true)); - c2.add(ignoreConnectionLink); - item.add(c2); - - WebMarkupContainer c3 = new WebMarkupContainer("viewFriendsContainer"); - c3.setOutputMarkupId(true); - - final AjaxLink viewFriendsLink = new AjaxLink("viewFriendsLink") { - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - // always ViewFriends because a user isn't connected to himself - setResponsePage(new ViewFriends(personUuid)); - } - }; - final Label viewFriendsLabel = new Label("viewFriendsLabel", new ResourceModel("link.view.friends")); - viewFriendsLink.add(viewFriendsLabel); - - //hide if not allowed - if(!privacyLogic.isActionAllowed(userUuid, currentUserUuid, PrivacyType.PRIVACY_OPTION_MYFRIENDS)) { - viewFriendsLink.setEnabled(false); - c3.setVisible(false); - } - viewFriendsLink.setOutputMarkupId(true); - c3.add(viewFriendsLink); - item.add(c3); - - WebMarkupContainer c4 = new WebMarkupContainer("emailContainer"); - c4.setOutputMarkupId(true); - - ExternalLink emailLink = new ExternalLink("emailLink", - "mailto:" + person.getProfile().getEmail(), - new ResourceModel("profile.email").getObject()); - - c4.add(emailLink); - - // friend=false - if (StringUtils.isBlank(person.getProfile().getEmail()) || - false == privacyLogic.isActionAllowed( - person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_CONTACTINFO)) { - - c4.setVisible(false); - } - item.add(c4); - - WebMarkupContainer c5 = new WebMarkupContainer("websiteContainer"); - c5.setOutputMarkupId(true); - - // TODO home page, university profile URL or academic/research URL (see PRFL-35) - ExternalLink websiteLink = new ExternalLink("websiteLink", person.getProfile() - .getHomepage(), new ResourceModel( - "profile.homepage").getObject()).setPopupSettings(new PopupSettings()); - - c5.add(websiteLink); - - // friend=false - if (StringUtils.isBlank(person.getProfile().getHomepage()) || - false == privacyLogic.isActionAllowed( - person.getUuid(), currentUserUuid, PrivacyType.PRIVACY_OPTION_CONTACTINFO)) { - - c5.setVisible(false); - } - item.add(c5); - - // not a friend yet, so friend=false - if (true == privacyLogic.isActionAllowed( - person.getUuid(), sakaiProxy.getCurrentUserId(), PrivacyType.PRIVACY_OPTION_BASICINFO)) { - - item.add(new Label("connectionSummary", - StringUtils.abbreviate(ProfileUtils.stripHtml( - person.getProfile().getPersonalSummary()), 200))); - } else { - item.add(new Label("connectionSummary", "")); - } - - item.setOutputMarkupId(true); - } - - }; - requestedFriendsDataView.setOutputMarkupId(true); - requestedFriendsContainer.add(requestedFriendsDataView); - - //add results container - add(requestedFriendsContainer); - - //add window - add(connectionWindow); - - //initially, if no requests, hide everything - if(numRequestedFriends == 0) { - this.setVisible(false); - } - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewBusiness.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewBusiness.html deleted file mode 100644 index a7778bfad287..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewBusiness.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - -
    -
    [Business Information] -
    -
    - - - - - - -
    [departmentLabel][department]
    - - - - - - - -
    [companyProfilesLabel]
    [companyProfiles]
    -
    -
    -
    - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewBusiness.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewBusiness.java deleted file mode 100644 index 6b8ff3fc9e86..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewBusiness.java +++ /dev/null @@ -1,121 +0,0 @@ -/** - * 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.tool.pages.panels; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.wicket.extensions.ajax.markup.html.tabs.AjaxTabbedPanel; -import org.apache.wicket.extensions.markup.html.tabs.AbstractTab; -import org.apache.wicket.extensions.markup.html.tabs.ITab; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.api.common.edu.person.SakaiPerson; -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.model.CompanyProfile; - -/** - * Panel for displaying business profile information. - */ -public class ViewBusiness extends Panel { - - private static final long serialVersionUID = 1L; - private int visibleFieldCount_business = 0; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") - private ProfileLogic profileLogic; - - public ViewBusiness(String id, String userUuid, SakaiPerson sakaiPerson, - boolean isBusinessInfoAllowed) { - - super(id); - - WebMarkupContainer businessInfoContainer = new WebMarkupContainer( - "mainSectionContainer_business"); - businessInfoContainer.setOutputMarkupId(true); - businessInfoContainer.add(new Label("mainSectionHeading_business", - new ResourceModel("heading.business"))); - add(businessInfoContainer); - - WebMarkupContainer businessBiographyContainer = new WebMarkupContainer( - "businessBiographyContainer"); - - businessBiographyContainer.add(new Label("businessBiographyLabel", - new ResourceModel("profile.business.bio"))); - businessBiographyContainer.add(new Label("businessBiography", - sakaiPerson.getBusinessBiography())); - - businessInfoContainer.add(businessBiographyContainer); - - if (StringUtils.isBlank(sakaiPerson.getBusinessBiography())) { - businessBiographyContainer.setVisible(false); - } else { - visibleFieldCount_business++; - } - - WebMarkupContainer companyProfilesContainer = new WebMarkupContainer( - "companyProfilesContainer"); - - companyProfilesContainer.add(new Label("companyProfilesLabel", - new ResourceModel("profile.business.company.profiles"))); - - List companyProfiles = profileLogic.getCompanyProfiles(userUuid); - - List tabs = new ArrayList(); - if (null != companyProfiles) { - - for (final CompanyProfile companyProfile : companyProfiles) { - - visibleFieldCount_business++; - - tabs.add(new AbstractTab(new ResourceModel( - "profile.business.company.profile")) { - - private static final long serialVersionUID = 1L; - - @Override - public Panel getPanel(String panelId) { - - return new CompanyProfileDisplay(panelId, - companyProfile); - } - - }); - } - } - - companyProfilesContainer.add(new AjaxTabbedPanel("companyProfiles", tabs)); - businessInfoContainer.add(companyProfilesContainer); - - if (0 == tabs.size()) { - companyProfilesContainer.setVisible(false); - } - - // if nothing/not allowed, hide whole panel - if (visibleFieldCount_business == 0 || !isBusinessInfoAllowed) { - businessInfoContainer.setVisible(false); - } - } - - public int getVisibleFieldCount() { - - return visibleFieldCount_business; - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.html index 4241b1bf3f84..a69b67fd0bfe 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.html +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.html @@ -44,12 +44,6 @@ [nickname] - - - [birthdayLabel] - [birthday] - - [personalSummaryLabel] @@ -74,122 +68,11 @@ [email] - - - [homepageLabel] - [homepage] - - - - - [workphoneLabel] - [workphone] - - - - - [homephoneLabel] - [workphone] - - [mobilephoneLabel] [mobilephone] - - - - [facsimileLabel] - [facsimile] - - - -
    - - - - -
    -
    - [University Staff] -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [positionLabel][position]
    [departmentLabel][department]
    [schoolLabel][school]
    [roomLabel][room]
    [staffProfileLabel][staffProfile]
    [universityProfileUrlLabel][universityProfileUrl]
    [academicProfileUrlLabel][academicProfileUrl]
    [publicationsLabel][publications]
    -
    -
    - - -
    - - -
    -
    - [Student Information] -
    -
    - - - - - - - - - - - - -
    [courseLabel][course]
    [subjectsLabel][subjects]
    @@ -221,52 +104,10 @@ [instagramLink] - - - [skypeLabel] - [skypeLink] - -
    - - -
    -
    - [Personal Information] -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    [booksLabel][favouriteBooks]
    [tvLabel][favouriteTvShows]
    [moviesLabel][favouriteMovies]
    [quotesLabel][favouriteQuotes]
    -
    -
    diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.java index 4e3547b69415..b0f4399285cc 100644 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.java +++ b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewProfilePanel.java @@ -25,15 +25,12 @@ import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.ResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; + import org.sakaiproject.api.common.edu.person.SakaiPerson; import org.sakaiproject.profile2.exception.ProfilePrototypeNotDefinedException; import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ProfilePrivacy; import org.sakaiproject.profile2.model.SocialNetworkingInfo; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.profile2.util.ProfileUtils; import lombok.extern.slf4j.Slf4j; @@ -52,11 +49,7 @@ public class ViewProfilePanel extends Panel { @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") protected ProfileLogic profileLogic; - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - protected ProfilePrivacyLogic privacyLogic; - - public ViewProfilePanel(String id, final String userUuid, final String currentUserId, - ProfilePrivacy privacy, boolean friend) { + public ViewProfilePanel(final String id, final String userUuid, final String currentUserId) { super(id); @@ -77,15 +70,7 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs //holds number of profile containers that are visible int visibleContainerCount = 0; - - boolean isBasicInfoAllowed = privacyLogic.isActionAllowed(userUuid,currentUserId, PrivacyType.PRIVACY_OPTION_BASICINFO); - boolean isContactInfoAllowed = privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_CONTACTINFO); - boolean isBusinessInfoAllowed = privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_BUSINESSINFO); - boolean isPersonalInfoAllowed = privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_PERSONALINFO); - boolean isStaffInfoAllowed = privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_STAFFINFO); - boolean isStudentInfoAllowed = privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_STUDENTINFO); - boolean isSocialNetworkingInfoAllowed = privacyLogic.isActionAllowed(userUuid, currentUserId, PrivacyType.PRIVACY_OPTION_SOCIALINFO); - + /* BASIC INFO */ WebMarkupContainer basicInfoContainer = new WebMarkupContainer("mainSectionContainer_basic"); basicInfoContainer.setOutputMarkupId(true); @@ -94,45 +79,22 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs String nickname = sakaiPerson.getNickname(); String personalSummary = sakaiPerson.getNotes(); - Date dateOfBirth = sakaiPerson.getDateOfBirth(); - String birthday = ""; - int visibleFieldCount_basic = 0; - - if(dateOfBirth != null) { - - if(privacyLogic.isBirthYearVisible(userUuid)) { - birthday = ProfileUtils.convertDateToString(dateOfBirth, null); - } else { - birthday = ProfileUtils.convertDateToString(dateOfBirth, ProfileConstants.DEFAULT_DATE_FORMAT_HIDE_YEAR, true); - } - } - //heading basicInfoContainer.add(new Label("mainSectionHeading_basic", new ResourceModel("heading.basic"))); + + int visibleFieldCount_basic = 0; //nickname WebMarkupContainer nicknameContainer = new WebMarkupContainer("nicknameContainer"); nicknameContainer.add(new Label("nicknameLabel", new ResourceModel("profile.nickname"))); nicknameContainer.add(new Label("nickname", nickname)); basicInfoContainer.add(nicknameContainer); - if(StringUtils.isBlank(nickname)) { - nickname=""; //for the 'add friend' link + if (StringUtils.isBlank(nickname)) { nicknameContainer.setVisible(false); } else { visibleFieldCount_basic++; } - //birthday - WebMarkupContainer birthdayContainer = new WebMarkupContainer("birthdayContainer"); - birthdayContainer.add(new Label("birthdayLabel", new ResourceModel("profile.birthday"))); - birthdayContainer.add(new Label("birthday", birthday)); - basicInfoContainer.add(birthdayContainer); - if(StringUtils.isBlank(birthday)) { - birthdayContainer.setVisible(false); - } else { - visibleFieldCount_basic++; - } - //personal summary WebMarkupContainer personalSummaryContainer = new WebMarkupContainer("personalSummaryContainer"); personalSummaryContainer.add(new Label("personalSummaryLabel", new ResourceModel("profile.summary"))); @@ -147,7 +109,7 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs add(basicInfoContainer); //if nothing/not allowed, hide whole panel - if(visibleFieldCount_basic == 0 || !isBasicInfoAllowed) { + if(visibleFieldCount_basic == 0) { basicInfoContainer.setVisible(false); } else { visibleContainerCount++; @@ -159,11 +121,7 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs //get info String email = sakaiProxy.getUserEmail(userUuid); //must come from SakaiProxy - String homepage = sakaiPerson.getLabeledURI(); - String workphone = sakaiPerson.getTelephoneNumber(); - String homephone = sakaiPerson.getHomePhone(); String mobilephone = sakaiPerson.getMobile(); - String facsimile = sakaiPerson.getFacsimileTelephoneNumber(); int visibleFieldCount_contact = 0; @@ -181,39 +139,6 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs visibleFieldCount_contact++; } - //homepage - WebMarkupContainer homepageContainer = new WebMarkupContainer("homepageContainer"); - homepageContainer.add(new Label("homepageLabel", new ResourceModel("profile.homepage"))); - homepageContainer.add(new ExternalLink("homepage", homepage, homepage)); - contactInfoContainer.add(homepageContainer); - if(StringUtils.isBlank(homepage)) { - homepageContainer.setVisible(false); - } else { - visibleFieldCount_contact++; - } - - //work phone - WebMarkupContainer workphoneContainer = new WebMarkupContainer("workphoneContainer"); - workphoneContainer.add(new Label("workphoneLabel", new ResourceModel("profile.phone.work"))); - workphoneContainer.add(new Label("workphone", workphone)); - contactInfoContainer.add(workphoneContainer); - if(StringUtils.isBlank(workphone)) { - workphoneContainer.setVisible(false); - } else { - visibleFieldCount_contact++; - } - - //home phone - WebMarkupContainer homephoneContainer = new WebMarkupContainer("homephoneContainer"); - homephoneContainer.add(new Label("homephoneLabel", new ResourceModel("profile.phone.home"))); - homephoneContainer.add(new Label("homephone", homephone)); - contactInfoContainer.add(homephoneContainer); - if(StringUtils.isBlank(homephone)) { - homephoneContainer.setVisible(false); - } else { - visibleFieldCount_contact++; - } - //mobile phone WebMarkupContainer mobilephoneContainer = new WebMarkupContainer("mobilephoneContainer"); mobilephoneContainer.add(new Label("mobilephoneLabel", new ResourceModel("profile.phone.mobile"))); @@ -225,203 +150,15 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs visibleFieldCount_contact++; } - //facsimile - WebMarkupContainer facsimileContainer = new WebMarkupContainer("facsimileContainer"); - facsimileContainer.add(new Label("facsimileLabel", new ResourceModel("profile.phone.facsimile"))); - facsimileContainer.add(new Label("facsimile", facsimile)); - contactInfoContainer.add(facsimileContainer); - if(StringUtils.isBlank(facsimile)) { - facsimileContainer.setVisible(false); - } else { - visibleFieldCount_contact++; - } - add(contactInfoContainer); //if nothing/not allowed, hide whole panel - if(visibleFieldCount_contact == 0 || !isContactInfoAllowed) { + if(visibleFieldCount_contact == 0) { contactInfoContainer.setVisible(false); } else { visibleContainerCount++; } - - /* STAFF INFO */ - WebMarkupContainer staffInfoContainer = new WebMarkupContainer("mainSectionContainer_staff"); - staffInfoContainer.setOutputMarkupId(true); - - //get info - String department = sakaiPerson.getOrganizationalUnit(); - String position = sakaiPerson.getTitle(); - String school = sakaiPerson.getCampus(); - String room = sakaiPerson.getRoomNumber(); - String staffProfile = sakaiPerson.getStaffProfile(); - String universityProfileUrl = sakaiPerson.getUniversityProfileUrl(); - String academicProfileUrl = sakaiPerson.getAcademicProfileUrl(); - String publications = sakaiPerson.getPublications(); - - int visibleFieldCount_staff = 0; - - //heading - staffInfoContainer.add(new Label("mainSectionHeading_staff", new ResourceModel("heading.staff"))); - - //department - WebMarkupContainer departmentContainer = new WebMarkupContainer("departmentContainer"); - departmentContainer.add(new Label("departmentLabel", new ResourceModel("profile.department"))); - departmentContainer.add(new Label("department", department)); - staffInfoContainer.add(departmentContainer); - if(StringUtils.isBlank(department)) { - departmentContainer.setVisible(false); - } else { - visibleFieldCount_staff++; - } - - //position - WebMarkupContainer positionContainer = new WebMarkupContainer("positionContainer"); - positionContainer.add(new Label("positionLabel", new ResourceModel("profile.position"))); - positionContainer.add(new Label("position", position)); - staffInfoContainer.add(positionContainer); - if(StringUtils.isBlank(position)) { - positionContainer.setVisible(false); - } else { - visibleFieldCount_staff++; - } - - //school - WebMarkupContainer schoolContainer = new WebMarkupContainer("schoolContainer"); - schoolContainer.add(new Label("schoolLabel", new ResourceModel("profile.school"))); - schoolContainer.add(new Label("school", school)); - staffInfoContainer.add(schoolContainer); - if(StringUtils.isBlank(school)) { - schoolContainer.setVisible(false); - } else { - visibleFieldCount_staff++; - } - - //room - WebMarkupContainer roomContainer = new WebMarkupContainer("roomContainer"); - roomContainer.add(new Label("roomLabel", new ResourceModel("profile.room"))); - roomContainer.add(new Label("room", room)); - staffInfoContainer.add(roomContainer); - if(StringUtils.isBlank(room)) { - roomContainer.setVisible(false); - } else { - visibleFieldCount_staff++; - } - - //staff profile - WebMarkupContainer staffProfileContainer = new WebMarkupContainer("staffProfileContainer"); - staffProfileContainer.add(new Label("staffProfileLabel", new ResourceModel("profile.staffprofile"))); - staffProfileContainer.add(new Label("staffProfile", staffProfile)); - staffInfoContainer.add(staffProfileContainer); - if(StringUtils.isBlank(staffProfile)) { - staffProfileContainer.setVisible(false); - } else { - visibleFieldCount_staff++; - } - - //university profile URL - WebMarkupContainer universityProfileUrlContainer = new WebMarkupContainer("universityProfileUrlContainer"); - universityProfileUrlContainer.add(new Label("universityProfileUrlLabel", new ResourceModel("profile.universityprofileurl"))); - universityProfileUrlContainer.add(new ExternalLink("universityProfileUrl", universityProfileUrl, universityProfileUrl)); - staffInfoContainer.add(universityProfileUrlContainer); - if(StringUtils.isBlank(universityProfileUrl)) { - universityProfileUrlContainer.setVisible(false); - } else { - visibleFieldCount_contact++; - } - - //academic/research profile URL - WebMarkupContainer academicProfileUrlContainer = new WebMarkupContainer("academicProfileUrlContainer"); - academicProfileUrlContainer.add(new Label("academicProfileUrlLabel", new ResourceModel("profile.academicprofileurl"))); - academicProfileUrlContainer.add(new ExternalLink("academicProfileUrl", academicProfileUrl, academicProfileUrl)); - staffInfoContainer.add(academicProfileUrlContainer); - if(StringUtils.isBlank(academicProfileUrl)) { - academicProfileUrlContainer.setVisible(false); - } else { - visibleFieldCount_contact++; - } - - //publications - WebMarkupContainer publicationsContainer = new WebMarkupContainer("publicationsContainer"); - publicationsContainer.add(new Label("publicationsLabel", new ResourceModel("profile.publications"))); - publicationsContainer.add(new Label("publications", ProfileUtils.processHtml(publications)).setEscapeModelStrings(false)); - staffInfoContainer.add(publicationsContainer); - if(StringUtils.isBlank(publications)) { - publicationsContainer.setVisible(false); - } else { - visibleFieldCount_staff++; - } - - add(staffInfoContainer); - - //if nothing/not allowed, hide whole panel - if(visibleFieldCount_staff == 0 || !isStaffInfoAllowed) { - staffInfoContainer.setVisible(false); - } else { - visibleContainerCount++; - } - - /* BUSINESS INFO (OPTIONAL) */ - if (sakaiProxy.isBusinessProfileEnabled()) { - ViewBusiness businessPanel = new ViewBusiness("viewBusiness", - userUuid, sakaiPerson, isBusinessInfoAllowed); - - if (0 == businessPanel.getVisibleFieldCount() || !isBusinessInfoAllowed) { - businessPanel.setVisible(false); - } else { - visibleContainerCount++; - } - add(businessPanel); - - } else { - Panel businessPanel = new EmptyPanel("viewBusiness"); - add(businessPanel); - } - - /* STUDENT INFO*/ - WebMarkupContainer studentInfoContainer = new WebMarkupContainer("mainSectionContainer_student"); - studentInfoContainer.setOutputMarkupId(true); - - String course = sakaiPerson.getEducationCourse(); - String subjects = sakaiPerson.getEducationSubjects(); - - int visibleFieldCount_student = 0; - - //heading - studentInfoContainer.add(new Label("mainSectionHeading_student", new ResourceModel("heading.student"))); - - //course - WebMarkupContainer courseContainer = new WebMarkupContainer("courseContainer"); - courseContainer.add(new Label("courseLabel", new ResourceModel("profile.course"))); - courseContainer.add(new Label("course", course)); - studentInfoContainer.add(courseContainer); - if(StringUtils.isBlank(course)) { - courseContainer.setVisible(false); - } else { - visibleFieldCount_student++; - } - - //subjects - WebMarkupContainer subjectsContainer = new WebMarkupContainer("subjectsContainer"); - subjectsContainer.add(new Label("subjectsLabel", new ResourceModel("profile.subjects"))); - subjectsContainer.add(new Label("subjects", subjects)); - studentInfoContainer.add(subjectsContainer); - if(StringUtils.isBlank(subjects)) { - subjectsContainer.setVisible(false); - } else { - visibleFieldCount_student++; - } - - add(studentInfoContainer); - - //if nothing/not allowed, hide whole panel - if(visibleFieldCount_student == 0 || !isStudentInfoAllowed) { - studentInfoContainer.setVisible(false); - } else { - visibleContainerCount++; - } - /* SOCIAL NETWORKING */ WebMarkupContainer socialNetworkingInfoContainer = new WebMarkupContainer("mainSectionContainer_socialNetworking"); socialNetworkingInfoContainer.setOutputMarkupId(true); @@ -436,8 +173,7 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs String facebookUsername = socialNetworkingInfo.getFacebookUrl(); String linkedinUsername = socialNetworkingInfo.getLinkedinUrl(); String instagramUsername = socialNetworkingInfo.getInstagramUrl(); - String skypeUsername = socialNetworkingInfo.getSkypeUsername(); - + int visibleFieldCount_socialNetworking = 0; //facebook @@ -473,96 +209,15 @@ public ViewProfilePanel(String id, final String userUuid, final String currentUs visibleFieldCount_socialNetworking++; } - //skypeme - WebMarkupContainer skypeContainer = new WebMarkupContainer("skypeContainer"); - skypeContainer.add(new Label("skypeLabel", new ResourceModel("profile.socialnetworking.skype"))); - skypeContainer.add(new ExternalLink("skypeLink", ProfileUtils.getSkypeMeURL(skypeUsername), new ResourceModel("profile.socialnetworking.skype.link").getObject())); - socialNetworkingInfoContainer.add(skypeContainer); - if(StringUtils.isBlank(skypeUsername)) { - skypeContainer.setVisible(false); - } else { - visibleFieldCount_socialNetworking++; - } - add(socialNetworkingInfoContainer); //if nothing/not allowed, hide whole panel - if(visibleFieldCount_socialNetworking == 0 || !isSocialNetworkingInfoAllowed) { + if(visibleFieldCount_socialNetworking == 0) { socialNetworkingInfoContainer.setVisible(false); } else { visibleContainerCount++; } - /* PERSONAL INFO */ - WebMarkupContainer personalInfoContainer = new WebMarkupContainer("mainSectionContainer_personal"); - personalInfoContainer.setOutputMarkupId(true); - - //setup info - - // favourites and other - String favouriteBooks = sakaiPerson.getFavouriteBooks(); - String favouriteTvShows = sakaiPerson.getFavouriteTvShows(); - String favouriteMovies = sakaiPerson.getFavouriteMovies(); - String favouriteQuotes = sakaiPerson.getFavouriteQuotes(); - - int visibleFieldCount_personal = 0; - - //heading - personalInfoContainer.add(new Label("mainSectionHeading_personal", new ResourceModel("heading.interests"))); - - //favourite books - WebMarkupContainer booksContainer = new WebMarkupContainer("booksContainer"); - booksContainer.add(new Label("booksLabel", new ResourceModel("profile.favourite.books"))); - booksContainer.add(new Label("favouriteBooks", favouriteBooks)); - personalInfoContainer.add(booksContainer); - if(StringUtils.isBlank(favouriteBooks)) { - booksContainer.setVisible(false); - } else { - visibleFieldCount_personal++; - } - - //favourite tv shows - WebMarkupContainer tvContainer = new WebMarkupContainer("tvContainer"); - tvContainer.add(new Label("tvLabel", new ResourceModel("profile.favourite.tv"))); - tvContainer.add(new Label("favouriteTvShows", favouriteTvShows)); - personalInfoContainer.add(tvContainer); - if(StringUtils.isBlank(favouriteTvShows)) { - tvContainer.setVisible(false); - } else { - visibleFieldCount_personal++; - } - - //favourite movies - WebMarkupContainer moviesContainer = new WebMarkupContainer("moviesContainer"); - moviesContainer.add(new Label("moviesLabel", new ResourceModel("profile.favourite.movies"))); - moviesContainer.add(new Label("favouriteMovies", favouriteMovies)); - personalInfoContainer.add(moviesContainer); - if(StringUtils.isBlank(favouriteMovies)) { - moviesContainer.setVisible(false); - } else { - visibleFieldCount_personal++; - } - - //favourite quotes - WebMarkupContainer quotesContainer = new WebMarkupContainer("quotesContainer"); - quotesContainer.add(new Label("quotesLabel", new ResourceModel("profile.favourite.quotes"))); - quotesContainer.add(new Label("favouriteQuotes", favouriteQuotes)); - personalInfoContainer.add(quotesContainer); - if(StringUtils.isBlank(favouriteQuotes)) { - quotesContainer.setVisible(false); - } else { - visibleFieldCount_personal++; - } - - add(personalInfoContainer); - - //if nothing/not allowed, hide whole panel - if(visibleFieldCount_personal == 0 || !isPersonalInfoAllowed) { - personalInfoContainer.setVisible(false); - } else { - visibleContainerCount++; - } - /* NO INFO VISIBLE MESSAGE (hide if some visible) */ Label noContainersVisible = new Label ("noContainersVisible", new ResourceModel("text.view.profile.nothing")); noContainersVisible.setOutputMarkupId(true); diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewWallPanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewWallPanel.html deleted file mode 100644 index 30427ce4d486..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewWallPanel.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - -
    - - [wallInformationMessage] - -
    - -
    [formFeedback]
    - -
    - -
    - - -
    - -
    - -
    -
    [wall dataview navigator]
    -
    -
    -
    -
    -
    - -
    - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewWallPanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewWallPanel.java deleted file mode 100644 index a944be2fe91c..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/ViewWallPanel.java +++ /dev/null @@ -1,225 +0,0 @@ -/** - * 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.tool.pages.panels; - -import java.util.Date; -import java.util.Optional; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.feedback.FeedbackMessage; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.markup.repeater.Item; -import org.apache.wicket.markup.repeater.data.DataView; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.PropertyModel; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.tool.components.ErrorLevelsFeedbackMessageFilter; -import org.sakaiproject.profile2.tool.dataproviders.WallItemDataProvider; -import org.sakaiproject.profile2.types.PrivacyType; -import org.sakaiproject.profile2.util.ProfileConstants; - - -/** - * Container for viewing the wall of someone else. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class ViewWallPanel extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - public ViewWallPanel(String panelId, final String userUuid) { - - super(panelId); - - setOutputMarkupId(true); - - final String currentUserId = sakaiProxy.getCurrentUserId(); - - // container which wraps list - final WebMarkupContainer wallItemsContainer = new WebMarkupContainer( - "wallItemsContainer"); - - wallItemsContainer.setOutputMarkupId(true); - add(wallItemsContainer); - - WallItem wallItem = new WallItem(); - wallItem.setUserUuid(userUuid); - // always post to my wall as current user, to ensure super users cannot - // make posts as other users - wallItem.setCreatorUuid(sakaiProxy.getCurrentUserId()); - wallItem.setType(ProfileConstants.WALL_ITEM_TYPE_POST); - - // form for posting to my wall - Form form = new Form("viewWallPostForm", new Model(wallItem)); - form.setOutputMarkupId(true); - add(form); - - if (!privacyLogic.isActionAllowed(userUuid, sakaiProxy.getCurrentUserId(), PrivacyType.PRIVACY_OPTION_MYWALL)) { - form.setEnabled(false); - form.setVisible(false); - } - - // form submit feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - form.add(formFeedback); - - final FeedbackPanel feedback = new FeedbackPanel("feedback"); - feedback.setOutputMarkupId(true); - form.add(feedback); - - int[] filteredErrorLevels = new int[]{FeedbackMessage.ERROR}; - feedback.setFilter(new ErrorLevelsFeedbackMessageFilter(filteredErrorLevels)); - - // container for posting to my wall - WebMarkupContainer viewWallPostContainer = new WebMarkupContainer("viewWallPostContainer"); - final TextArea myWallPost = new TextArea<>("viewWallPost", new PropertyModel(wallItem, "text")); - - viewWallPostContainer.add(myWallPost); - - form.add(viewWallPostContainer); - - IndicatingAjaxButton submitButton = new IndicatingAjaxButton("viewWallPostSubmit", form) { - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unchecked") - @Override - protected void onSubmit(AjaxRequestTarget target) { - - if (myWallPost.getValue().isEmpty()) { - formFeedback.setDefaultModel(new ResourceModel( - "error.wall.post.empty")); - formFeedback.add(new AttributeModifier("class", - new Model("alertMessage"))); - target.add(formFeedback); - return; - } - - if (!save(form, userUuid)) { - formFeedback.setDefaultModel(new ResourceModel("error.wall.post.failed")); - formFeedback.add(new AttributeModifier("class", new Model("alertMessage"))); - target.add(formFeedback); - } else { - ViewWallPanel newPanel = new ViewWallPanel(ViewWallPanel.this.getId(), userUuid); - newPanel.setOutputMarkupId(true); - ViewWallPanel.this.replaceWith(newPanel); - if (null != target) { - target.add(newPanel); - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - } - } - - //@Override - //protected IAjaxCallDecorator getAjaxCallDecorator() { - // return CKEditorTextArea.getAjaxCallDecoratedToUpdateElementForAllEditorsOnPage(); - //} - }; - submitButton.setModel(new ResourceModel("button.wall.post")); - viewWallPostContainer.add(submitButton); - - // note: privacy check is handled by the logic component - WallItemDataProvider provider = new WallItemDataProvider(userUuid); - - // if no wall items, display a message - if (0 == provider.size()) { - if (privacyLogic.isActionAllowed(userUuid, currentUserId,PrivacyType.PRIVACY_OPTION_MYWALL)) { - - // this user has no items on their wall - add(new Label("wallInformationMessage", - new StringResourceModel("text.view.wall.nothing").setParameters(sakaiProxy.getUserDisplayName(userUuid))).setEscapeModelStrings(false)); - } else { - // wall privacy is set to connections - add(new Label("wallInformationMessage", - new StringResourceModel("text.view.wall.restricted").setParameters(sakaiProxy.getUserDisplayName(userUuid))).setEscapeModelStrings(false)); - } - } else { - // blank label when there are items to display - add(new Label("wallInformationMessage")); - } - - DataView wallItemsDataView = new DataView( - "wallItems", provider) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(Item item) { - - WallItem wallItem = (WallItem) item.getDefaultModelObject(); - item.add(new WallItemPanel("wallItemPanel", userUuid, wallItem)); - - if (ProfileConstants.WALL_ITEM_TYPE_STATUS == wallItem.getType()) { - // only show if a super user or non-super user is permitted - if (!sakaiProxy.isSuperUser() && !privacyLogic.isActionAllowed(wallItem.getCreatorUuid(), currentUserId, PrivacyType.PRIVACY_OPTION_MYSTATUS)) { - - item.setVisible(false); - } - } - } - }; - - wallItemsDataView.setOutputMarkupId(true); - - if (provider.size() <= ProfileConstants.MAX_WALL_ITEMS_PER_PAGE) { - wallItemsContainer.add(new AjaxPagingNavigator("navigator", wallItemsDataView).setVisible(false)); - } else { - wallItemsContainer.add(new AjaxPagingNavigator("navigator", wallItemsDataView)); - } - - wallItemsDataView.setItemsPerPage(ProfileConstants.MAX_WALL_ITEMS_PER_PAGE); - - wallItemsContainer.add(wallItemsDataView); - } - - // called when form is saved - @SuppressWarnings("unchecked") - private boolean save(Form form, String userUuid) { - - WallItem wallItem = (WallItem) form.getModelObject(); - wallItem.setDate(new Date()); - - return wallLogic.postWallItemToWall(userUuid, wallItem); - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemCommentPanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemCommentPanel.html deleted file mode 100644 index e522bb0e2b0a..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemCommentPanel.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - -
    -
    - -
    -
    - -
    - [wall comment creator name] -
    [wall comment text]
    -
    [wall comment date]
    -
    - -
    - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemCommentPanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemCommentPanel.java deleted file mode 100644 index 1b61c469efed..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemCommentPanel.java +++ /dev/null @@ -1,91 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.WallItemComment; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.pages.ViewProfile; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -/** - * Wall comment container. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class WallItemCommentPanel extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - protected SakaiProxy sakaiProxy; - - public WallItemCommentPanel(String id, WallItemComment comment) { - super(id); - - setOutputMarkupId(true); - - // image wrapper, links to profile - Link wallItemPhoto = new Link("wallItemPhotoWrap", - new Model(comment.getCreatorUuid())) { - - private static final long serialVersionUID = 1L; - - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - }; - - // image - ProfileImage photo = new ProfileImage("wallItemPhoto", new Model(comment.getCreatorUuid())); - photo.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - wallItemPhoto.add(photo); - - add(wallItemPhoto); - - // name and link to profile - Link wallItemProfileLink = new Link( - "wallItemProfileLink", new Model(comment - .getCreatorUuid())) { - - private static final long serialVersionUID = 1L; - - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - - }; - wallItemProfileLink.add(new Label("wallItemCommentName", sakaiProxy - .getUserDisplayName(comment.getCreatorUuid()))); - add(wallItemProfileLink); - - // content of the comment - add(new Label("wallItemCommentText", new ResourceModel(comment.getText()))); - - add(new Label("wallItemCommentDate", ProfileUtils.convertDateToString(comment - .getDate(), ProfileConstants.WALL_DISPLAY_DATE_FORMAT))); - } -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPanel.html deleted file mode 100644 index 8c6b945906b3..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPanel.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - -
    -
    - -
    -
    - -
    - [wall item creator name] -
    [wall item text]
    -
    -
    - - -
    -
    [wall item date]
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPanel.java deleted file mode 100644 index 8cc4aa00533c..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPanel.java +++ /dev/null @@ -1,219 +0,0 @@ -/** - * 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.tool.pages.panels; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.AjaxLink; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.link.Link; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.markup.html.list.ListView; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.model.WallItemComment; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.models.WallAction; -import org.sakaiproject.profile2.tool.pages.ViewProfile; -import org.sakaiproject.profile2.tool.pages.windows.RemoveWallItem; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.profile2.util.ProfileUtils; - -/** - * Wall item container. - * - * TODO may make different WallItemPanel types for different wall item types. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class WallItemPanel extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - protected SakaiProxy sakaiProxy; - - /** - * Creates a new instance of WallItemPanel. - * - * @param id - * @param userUuid the id of the user whose wall this item panel is on. - * @param wallItem - */ - public WallItemPanel(String id, final String userUuid, final WallItem wallItem) { - this (id, userUuid, wallItem, null); - } - - /** - * Creates a new instance of WallItemPanel. - * - * @param id - * @param userUuid the id of the user whose wall this item panel is on. - * @param wallItem - * @param myWallPanel a reference to my wall panel for repainting. - */ - public WallItemPanel(String id, final String userUuid, final WallItem wallItem, final MyWallPanel myWallPanel) { - super(id); - - setOutputMarkupId(true); - - // image wrapper, links to profile - Link wallItemPhoto = new Link("wallItemPhotoWrap", - new Model(wallItem.getCreatorUuid())) { - - private static final long serialVersionUID = 1L; - - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - }; - - // image - ProfileImage photo = new ProfileImage("wallItemPhoto", new Model(wallItem.getCreatorUuid())); - photo.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - wallItemPhoto.add(photo); - - add(wallItemPhoto); - - // name and link to profile - Link wallItemProfileLink = new Link( - "wallItemProfileLink", new Model(wallItem - .getCreatorUuid())) { - - private static final long serialVersionUID = 1L; - - public void onClick() { - setResponsePage(new ViewProfile(getModelObject())); - } - - }; - wallItemProfileLink.add(new Label("wallItemName", sakaiProxy - .getUserDisplayName(wallItem.getCreatorUuid()))); - add(wallItemProfileLink); - - add(new Label("wallItemDate", ProfileUtils.convertDateToString(wallItem - .getDate(), ProfileConstants.WALL_DISPLAY_DATE_FORMAT))); - - // ACTIONS - - final ModalWindow wallItemActionWindow = new ModalWindow("wallItemActionWindow"); - add(wallItemActionWindow); - - final WallAction wallAction = new WallAction(); - // delete link - final AjaxLink removeItemLink = new AjaxLink( - "removeWallItemLink", new Model(wallItem)) { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - - wallItemActionWindow.setContent(new RemoveWallItem(wallItemActionWindow.getContentId(), - wallItemActionWindow, wallAction, userUuid, this.getModelObject())); - - wallItemActionWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback(){ - - private static final long serialVersionUID = 1L; - - @Override - public void onClose(AjaxRequestTarget target) { - if (wallAction.isItemRemoved()) { - myWallPanel.replaceSelf(target, userUuid); - } - } - }); - - wallItemActionWindow.show(target); - target.appendJavaScript("fixWindowVertical();"); - } - }; - - removeItemLink.add(new Label("removeWallItemLabel", new ResourceModel("link.wall.item.remove"))); - removeItemLink.add(new AttributeModifier("title", new ResourceModel("link.title.wall.remove"))); - - // not visible when viewing another user's wall - if (false == sakaiProxy.getCurrentUserId().equals(userUuid)) { - removeItemLink.setVisible(false); - } - - add(removeItemLink); - - // panel for posting a comment that slides up/down - final WallItemPostCommentPanel postCommentPanel = new WallItemPostCommentPanel("wallItemPostCommentPanel", userUuid, wallItem, this, myWallPanel); - postCommentPanel.setOutputMarkupPlaceholderTag(true); - postCommentPanel.setVisible(false); - add(postCommentPanel); - - final AjaxLink commentItemLink = new AjaxLink( - "commentWallItemLink", new Model(wallItem)) { - - private static final long serialVersionUID = 1L; - - @Override - public void onClick(AjaxRequestTarget target) { - - postCommentPanel.setVisible(true); - target.add(postCommentPanel); - target.appendJavaScript("$('#" + postCommentPanel.getMarkupId() + "').slideDown();"); - } - }; - - commentItemLink.add(new Label("commentWallItemLabel", new ResourceModel("link.wall.item.comment"))); - commentItemLink.add(new AttributeModifier("title", new StringResourceModel("link.title.wall.comment").setParameters(sakaiProxy.getUserDisplayName(wallItem.getCreatorUuid())))); - - add(commentItemLink); - - if (ProfileConstants.WALL_ITEM_TYPE_EVENT == wallItem.getType()) { - add(new Label("wallItemText", new ResourceModel(wallItem.getText()))); - - } else if (ProfileConstants.WALL_ITEM_TYPE_POST == wallItem.getType()) { - add(new Label("wallItemText", ProfileUtils.processHtml(wallItem - .getText())).setEscapeModelStrings(false)); - - } else if (ProfileConstants.WALL_ITEM_TYPE_STATUS == wallItem.getType()) { - add(new Label("wallItemText", wallItem.getText())); - - } - - // COMMENTS - - ListView wallItemCommentsListView = new ListView( - "wallItemComments", wallItem.getComments()) { - - private static final long serialVersionUID = 1L; - - @Override - protected void populateItem(ListItem item) { - - WallItemComment comment = (WallItemComment) item.getDefaultModelObject(); - - item.add(new WallItemCommentPanel("wallItemCommentPanel", comment)); - } - - }; - wallItemCommentsListView.setOutputMarkupId(true); - add(wallItemCommentsListView); - - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPostCommentPanel.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPostCommentPanel.html deleted file mode 100644 index 4ae1947d88fb..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPostCommentPanel.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - -
    -
    [formFeedback]
    -
    -
    -
    -
    - - -
    -
    -
    - -
    - - - - \ No newline at end of file diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPostCommentPanel.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPostCommentPanel.java deleted file mode 100644 index 9baabdb1c212..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/panels/WallItemPostCommentPanel.java +++ /dev/null @@ -1,154 +0,0 @@ -/** - * 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.tool.pages.panels; - -import java.util.Date; -import java.util.Optional; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.markup.html.WebMarkupContainer; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.model.WallItemComment; - -/** - * Panel for commenting on a wall item. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class WallItemPostCommentPanel extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - protected SakaiProxy sakaiProxy; - - public WallItemPostCommentPanel(String id, final String userUuid, - final WallItem wallItem, final WallItemPanel wallItemPanel, - final MyWallPanel myWallPanel) { - - super(id); - - String commentString = ""; - IModel commentModel = new Model(commentString); - Form form = new Form("form", commentModel); - form.setOutputMarkupId(true); - add(form); - - // form submit feedback - final Label formFeedback = new Label("formFeedback"); - formFeedback.setOutputMarkupPlaceholderTag(true); - form.add(formFeedback); - - WebMarkupContainer commentContainer = new WebMarkupContainer("commentContainer"); - final TextArea commentTextArea = new TextArea("comment", commentModel); - - commentContainer.add(commentTextArea); - - form.add(commentContainer); - - IndicatingAjaxButton submitButton = new IndicatingAjaxButton("submit", new ResourceModel("button.wall.comment"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) { - - // don't allow empty posts - if (null == form.getModelObject()) { - formFeedback.setVisible(true); - formFeedback.setDefaultModel(new ResourceModel( - "error.wall.comment.empty")); - formFeedback.add(new AttributeModifier("class", - new Model("alertMessage"))); - target.add(formFeedback); - return; - } - - // create and add comment to wall item - WallItemComment wallItemComment = new WallItemComment(); - // always post as current user - wallItemComment.setCreatorUuid(sakaiProxy.getCurrentUserId()); - wallItemComment.setDate(new Date()); - wallItemComment.setText(form.getModelObject().toString()); - wallItemComment.setWallItem(wallItem); - wallItem.addComment(wallItemComment); - - // update wall item - if (!wallLogic.addNewCommentToWallItem(wallItemComment)) { - formFeedback.setVisible(true); - formFeedback.setDefaultModel(new ResourceModel( - "error.wall.comment.failed")); - formFeedback.add(new AttributeModifier("class", - new Model("alertMessage"))); - target.add(formFeedback); - return; - } - - // replace wall item panel now comment has been added - WallItemPanel newPanel = new WallItemPanel(wallItemPanel.getId(), userUuid, wallItem, myWallPanel); - newPanel.setOutputMarkupId(true); - wallItemPanel.replaceWith(newPanel); - if (null != target) { - target.add(newPanel); - target.appendJavaScript("setMainFrameHeight(window.name);"); - } - } - }; - //submitButton.add(new FocusOnLoadBehaviour()); - - AttributeModifier accessibilityLabel = new AttributeModifier( - "title", new StringResourceModel("accessibility.wall.comment").setParameters(sakaiProxy.getUserDisplayName(wallItem.getCreatorUuid()))); - - submitButton.add(accessibilityLabel); - form.add(submitButton); - - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - commentTextArea.clearInput(); - formFeedback.setVisible(false); - targetOptional.ifPresent(target -> { - target.appendJavaScript("$('#" + WallItemPostCommentPanel.this.getMarkupId() + "').slideUp();"); - }); - } - }; - - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - } - -} diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/AddFriend.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/AddFriend.html deleted file mode 100644 index e93c2f92167c..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/AddFriend.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - -
    - -
    -
    [text]
    -
    -
    - - -
    -
    -
    -
    -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/AddFriend.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/AddFriend.java deleted file mode 100644 index ba06fb0d2a25..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/AddFriend.java +++ /dev/null @@ -1,181 +0,0 @@ -/** - * 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.tool.pages.windows; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.util.api.FormattedText; - -import java.util.Optional; - - -public class AddFriend extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - private ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name="org.sakaiproject.util.api.FormattedText") - private FormattedText formattedText; - - /* - * userX is the current user - * userY is the user to add - */ - - public AddFriend(String id, final ModalWindow window, final FriendAction friendActionModel, final String userX, final String userY){ - super(id); - - //get friendName - final String friendName = formattedText.processFormattedText(sakaiProxy.getUserDisplayName(userY), new StringBuffer()); - - //window setup - window.setTitle(new StringResourceModel("title.friend.add").setParameters(friendName)); - window.setInitialHeight(150); - window.setInitialWidth(500); - window.setResizable(false); - - //prefs and privacy - ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(userY); - ProfilePrivacy privacy = privacyLogic.getPrivacyRecordForUser(userY); - - //image - ProfileImage image = new ProfileImage("image", new Model(userY)); - image.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - add(image); - - //text - final Label text = new Label("text", new StringResourceModel("text.friend.add").setParameters(friendName)); - text.setEscapeModelStrings(false); - text.setOutputMarkupId(true); - add(text); - - //setup form - Form form = new Form("form"); - form.setOutputMarkupId(true); - - //submit button - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.friend.add"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - /* double checking */ - targetOptional.ifPresent(target -> { - //friend? - if (connectionsLogic.isUserXFriendOfUserY(userX, userY)) { - text.setDefaultModel(new StringResourceModel("error.friend.already.confirmed").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - - //has a friend request already been made to this person? - if (connectionsLogic.isFriendRequestPending(userX, userY)) { - text.setDefaultModel(new StringResourceModel("error.friend.already.pending").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - - //has a friend request been made from this person to the current user? - if (connectionsLogic.isFriendRequestPending(userY, userX)) { - text.setDefaultModel(new StringResourceModel("error.friend.already.pending").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - - //if ok, request friend - if (connectionsLogic.requestFriend(userX, userY)) { - friendActionModel.setRequested(true); - window.close(target); - } else { - text.setDefaultModel(new StringResourceModel("error.friend.add.failed").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - }); - } - }; - //submitButton.add(new FocusOnLoadBehaviour()); - submitButton.add(new AttributeModifier("title", new StringResourceModel("accessibility.connection.add").setParameters(friendName))); - form.add(submitButton); - - - //cancel button - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(target -> { - friendActionModel.setRequested(false); - window.close(target); - }); - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - //add form - add(form); - } - - - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/ConfirmFriend.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/ConfirmFriend.html deleted file mode 100644 index ee6f1374f8bb..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/ConfirmFriend.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - -
    - -
    -
    [text]
    -
    -
    - - -
    -
    -
    -
    -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/ConfirmFriend.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/ConfirmFriend.java deleted file mode 100644 index 44c3ab41064f..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/ConfirmFriend.java +++ /dev/null @@ -1,162 +0,0 @@ -/** - * 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.tool.pages.windows; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.util.api.FormattedText; - -import java.util.Optional; - -public class ConfirmFriend extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - private ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name="org.sakaiproject.util.api.FormattedText") - private FormattedText formattedText; - - /* - * userX is the current user - * userY is the user who's friend request we are accepting - */ - - public ConfirmFriend(String id, final ModalWindow window, final FriendAction friendActionModel, final String userX, final String userY){ - super(id); - - //get friendName - final String friendName = formattedText.processFormattedText(sakaiProxy.getUserDisplayName(userY), new StringBuffer()); - - //window setup - window.setTitle(new StringResourceModel("title.friend.confirm").setParameters(friendName)); - window.setInitialHeight(150); - window.setInitialWidth(500); - window.setResizable(false); - - //prefs and privacy - ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(userY); - ProfilePrivacy privacy = privacyLogic.getPrivacyRecordForUser(userY); - - //image - ProfileImage image = new ProfileImage("image", new Model(userY)); - image.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - add(image); - - //text - final Label text = new Label("text", new StringResourceModel("text.friend.confirm").setParameters(friendName)); - text.setEscapeModelStrings(false); - text.setOutputMarkupId(true); - add(text); - - //setup form - Form form = new Form("form"); - form.setOutputMarkupId(true); - - //submit button - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.friend.confirm"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - /* double checking */ - targetOptional.ifPresent(target -> { - //must exist a pending friend request FROM userY to userX in order to confirm it - boolean friendRequestFromThisPerson = connectionsLogic.isFriendRequestPending(userY, userX); - - if (!friendRequestFromThisPerson) { - text.setDefaultModel(new StringResourceModel("error.friend.not.pending.confirm").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - - //if ok, request friend - if (connectionsLogic.confirmFriendRequest(userY, userX)) { - friendActionModel.setConfirmed(true); - window.close(target); - } else { - text.setDefaultModel(new StringResourceModel("error.friend.confirm.failed").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - }); - } - }; - //submitButton.add(new FocusOnLoadBehaviour()); - submitButton.add(new AttributeModifier("title", new StringResourceModel("accessibility.connection.confirm").setParameters(friendName))); - form.add(submitButton); - - - //cancel button - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(target -> { - friendActionModel.setConfirmed(false); - window.close(target); - }); - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - //add form - add(form); - - } - - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/IgnoreFriend.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/IgnoreFriend.html deleted file mode 100644 index 25e0a86bc7b5..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/IgnoreFriend.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - -
    - -
    -
    [text]
    -
    -
    - - -
    -
    -
    -
    -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/IgnoreFriend.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/IgnoreFriend.java deleted file mode 100644 index ab5c4ee0bbe5..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/IgnoreFriend.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * 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.tool.pages.windows; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.util.api.FormattedText; - -import java.util.Optional; - -public class IgnoreFriend extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - private ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name="org.sakaiproject.util.api.FormattedText") - private FormattedText formattedText; - - /* - * userX is the current user - * userY is the user who's request we are ignoring - */ - - public IgnoreFriend(String id, final ModalWindow window, final FriendAction friendActionModel, final String userX, final String userY){ - super(id); - - //get friendName - final String friendName = formattedText.processFormattedText(sakaiProxy.getUserDisplayName(userY), new StringBuffer()); - - //window setup - window.setTitle(new ResourceModel("title.friend.ignore")); - window.setInitialHeight(150); - window.setInitialWidth(500); - window.setResizable(false); - - //prefs and privacy - ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(userY); - ProfilePrivacy privacy = privacyLogic.getPrivacyRecordForUser(userY); - - //image - ProfileImage image = new ProfileImage("image", new Model(userY)); - image.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - add(image); - - //text - final Label text = new Label("text", new StringResourceModel("text.friend.ignore").setParameters(friendName)); - text.setEscapeModelStrings(false); - text.setOutputMarkupId(true); - add(text); - - //setup form - Form form = new Form("form"); - form.setOutputMarkupId(true); - - //submit button - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.friend.ignore"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - /* double checking */ - targetOptional.ifPresent(target -> { - - //must exist a pending friend request FROM userY to userX in order to ignore it - boolean friendRequestFromThisPerson = connectionsLogic.isFriendRequestPending(userY, userX); - - if (!friendRequestFromThisPerson) { - text.setDefaultModel(new StringResourceModel("error.friend.not.pending.ignore").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - - - //if ok, ignore friend request - if (connectionsLogic.ignoreFriendRequest(userY, userX)) { - friendActionModel.setIgnored(true); - - //post event - sakaiProxy.postEvent(ProfileConstants.EVENT_FRIEND_IGNORE, "/profile/" + userY, true); - - window.close(target); - } else { - text.setDefaultModel(new StringResourceModel("error.friend.ignore.failed").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - }); - - } - }; - //submitButton.add(new FocusOnLoadBehaviour()); - submitButton.add(new AttributeModifier("title", new StringResourceModel("accessibility.connection.ignore").setParameters(friendName))); - form.add(submitButton); - - - //cancel button - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - friendActionModel.setIgnored(false); - targetOptional.ifPresent(window::close); - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - //add form - add(form); - - } - - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/QuickMessageTo.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/QuickMessageTo.html deleted file mode 100644 index 11162351d570..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/QuickMessageTo.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - -
    [toLabel][toContent]
    [subjectLabel]
    [messageLabel]
    -
    - -
    -
    -
    -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/QuickMessageTo.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/QuickMessageTo.java deleted file mode 100644 index a1e1224d4964..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/QuickMessageTo.java +++ /dev/null @@ -1,108 +0,0 @@ -/** - * 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.tool.pages.windows; - -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.form.TextArea; -import org.apache.wicket.markup.html.form.TextField; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.Message; -import org.sakaiproject.profile2.tool.models.NewMessageModel; - -/** - * ModalWindow panel used when we know who we want to send the message to, ie when link is clicked from a user's profile or connection list - * Doesn't contain the AutoComplete Field as we already know who it is. - */ -public class QuickMessageTo extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileLogic") - private ProfileLogic profileLogic; - - - public QuickMessageTo(String id, final ModalWindow window, final String uuidTo){ - super(id); - - //window setup - window.setTitle(new ResourceModel("title.message.compose")); - //window.setInitialHeight(150); - //window.setInitialWidth(500); - window.setResizable(false); - - //current userId - final String userId = sakaiProxy.getCurrentUserId(); - - //setup model - NewMessageModel messageHelper = new NewMessageModel(); - messageHelper.setTo(uuidTo); - messageHelper.setFrom(userId); - - //setup form - Form form = new Form("form"); - - //to label - form.add(new Label("toLabel", new ResourceModel("message.to"))); - //to label - form.add(new Label("toContent", new Model(sakaiProxy.getUserDisplayName(uuidTo)))); - - - //subject - form.add(new Label("subjectLabel", new ResourceModel("message.subject"))); - TextField subjectField = new TextField("subjectField"); - form.add(subjectField); - - //body - form.add(new Label("messageLabel", new ResourceModel("message.message"))); - final TextArea messageField = new TextArea("messageField"); - messageField.setRequired(true); - form.add(messageField); - - //send button - IndicatingAjaxButton sendButton = new IndicatingAjaxButton("sendButton", form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(AjaxRequestTarget target) {} - - @Override - protected void onError(AjaxRequestTarget target) {} - }; - form.add(sendButton); - sendButton.setModel(new ResourceModel("button.message.send")); - - add(form); - - - - } - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveFriend.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveFriend.html deleted file mode 100644 index ee6f1374f8bb..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveFriend.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - -
    - -
    -
    [text]
    -
    -
    - - -
    -
    -
    -
    -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveFriend.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveFriend.java deleted file mode 100644 index 6f8951c9892b..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveFriend.java +++ /dev/null @@ -1,168 +0,0 @@ -/** - * 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.tool.pages.windows; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.models.FriendAction; -import org.sakaiproject.profile2.util.ProfileConstants; -import org.sakaiproject.util.api.FormattedText; - -import java.util.Optional; - -public class RemoveFriend extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - private SakaiProxy sakaiProxy; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - private ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileConnectionsLogic") - private ProfileConnectionsLogic connectionsLogic; - - @SpringBean(name="org.sakaiproject.util.api.FormattedText") - private FormattedText formattedText; - - /* - * userX is the current user - * userY is the user to remove - */ - - public RemoveFriend(String id, final ModalWindow window, final FriendAction friendActionModel, final String userX, final String userY){ - super(id); - - //get friendName - final String friendName = formattedText.processFormattedText(sakaiProxy.getUserDisplayName(userY), new StringBuffer()); - - //window setup - window.setTitle(new ResourceModel("title.friend.remove")); - window.setInitialHeight(150); - window.setInitialWidth(500); - window.setResizable(false); - - //prefs and privacy - ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(userY); - ProfilePrivacy privacy = privacyLogic.getPrivacyRecordForUser(userY); - - //image - ProfileImage image = new ProfileImage("image", new Model(userY)); - image.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - add(image); - - //text - final Label text = new Label("text", new StringResourceModel("text.friend.remove").setParameters(friendName)); - text.setEscapeModelStrings(false); - text.setOutputMarkupId(true); - add(text); - - //setup form - Form form = new Form("form"); - form.setOutputMarkupId(true); - - //submit button - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.friend.remove"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - /* double checking */ - targetOptional.ifPresent(target -> { - //must be friend in order to remove them - boolean friend = connectionsLogic.isUserXFriendOfUserY(userX, userY); - - if (!friend) { - text.setDefaultModel(new StringResourceModel("error.friend.not.friend").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - - - //if ok, remove friend - if (connectionsLogic.removeFriend(userX, userY)) { - friendActionModel.setRemoved(true); - - //post event - sakaiProxy.postEvent(ProfileConstants.EVENT_FRIEND_REMOVE, "/profile/" + userY, true); - - window.close(target); - } else { - text.setDefaultModel(new StringResourceModel("error.friend.remove.failed").setParameters(friendName)); - this.setEnabled(false); - this.add(new AttributeModifier("class", new Model("disabled"))); - target.add(text); - target.add(this); - return; - } - }); - - } - }; - //submitButton.add(new FocusOnLoadBehaviour()); - submitButton.add(new AttributeModifier("title", new StringResourceModel("accessibility.connection.remove").setParameters(friendName))); - form.add(submitButton); - - - //cancel button - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(target -> { - friendActionModel.setRemoved(false); - window.close(target); - }); - } - }; - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - //add form - add(form); - - } - - -} - - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveWallItem.html b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveWallItem.html deleted file mode 100644 index 0aad1800c55e..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveWallItem.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - -
    - -
    -
    [text]
    -
    -
    - - -
    -
    -
    -
    -
    - - diff --git a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveWallItem.java b/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveWallItem.java deleted file mode 100644 index c3cc68980bb1..000000000000 --- a/profile2/tool/src/java/org/sakaiproject/profile2/tool/pages/windows/RemoveWallItem.java +++ /dev/null @@ -1,136 +0,0 @@ -/** - * 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.tool.pages.windows; - -import org.apache.wicket.AttributeModifier; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.ajax.markup.html.form.AjaxFallbackButton; -import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; -import org.apache.wicket.markup.html.basic.Label; -import org.apache.wicket.markup.html.form.Form; -import org.apache.wicket.markup.html.panel.Panel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.model.StringResourceModel; -import org.apache.wicket.spring.injection.annot.SpringBean; -import org.sakaiproject.profile2.logic.ProfilePreferencesLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.logic.ProfileWallLogic; -import org.sakaiproject.profile2.logic.SakaiProxy; -import org.sakaiproject.profile2.model.ProfilePreferences; -import org.sakaiproject.profile2.model.ProfilePrivacy; -import org.sakaiproject.profile2.model.WallItem; -import org.sakaiproject.profile2.tool.components.ProfileImage; -import org.sakaiproject.profile2.tool.models.WallAction; -import org.sakaiproject.profile2.util.ProfileConstants; - -import java.util.Optional; - -/** - * Confirmation dialog for removing wall item. - * - * @author d.b.robinson@lancaster.ac.uk - */ -public class RemoveWallItem extends Panel { - - private static final long serialVersionUID = 1L; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfileWallLogic") - private ProfileWallLogic wallLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePreferencesLogic") - private ProfilePreferencesLogic preferencesLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.ProfilePrivacyLogic") - private ProfilePrivacyLogic privacyLogic; - - @SpringBean(name="org.sakaiproject.profile2.logic.SakaiProxy") - protected SakaiProxy sakaiProxy; - - public RemoveWallItem(String id, final ModalWindow window, final WallAction wallAction, - final String userUuid, final WallItem wallItem) { - - super(id); - - window.setTitle(new ResourceModel("title.wall.remove")); - window.setInitialHeight(150); - window.setInitialWidth(500); - window.setResizable(false); - - // add profile image of wall post creator - ProfilePreferences prefs = preferencesLogic.getPreferencesRecordForUser(wallItem.getCreatorUuid()); - ProfilePrivacy privacy = privacyLogic.getPrivacyRecordForUser(wallItem.getCreatorUuid()); - - ProfileImage image = new ProfileImage("image", new Model(wallItem.getCreatorUuid())); - image.setSize(ProfileConstants.PROFILE_IMAGE_THUMBNAIL); - add(image); - - final Label text; - if (!wallItem.getCreatorUuid().equals(userUuid)) { - text = new Label("text", new StringResourceModel( - "text.wall.remove.other").setParameters(sakaiProxy.getUserDisplayName(wallItem.getCreatorUuid()))); - } else { - text = new Label("text", new StringResourceModel("text.wall.remove.mine")); - } - text.setEscapeModelStrings(false); - text.setOutputMarkupId(true); - add(text); - - Form form = new Form("form"); - form.setOutputMarkupId(true); - - AjaxFallbackButton submitButton = new AjaxFallbackButton("submit", new ResourceModel("button.wall.remove"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - - wallAction.setItemRemoved(wallLogic.removeWallItemFromWall(wallItem)); - - targetOptional.ifPresent(window::close); - } - }; - //submitButton.add(new FocusOnLoadBehaviour()); - - final AttributeModifier accessibilityLabel; - if (false == wallItem.getCreatorUuid().equals(userUuid)) { - accessibilityLabel = new AttributeModifier( - "title", new StringResourceModel("accessibility.wall.remove.other")); - } else { - accessibilityLabel = new AttributeModifier( - "title", new StringResourceModel("accessibility.wall.remove.mine")); - } - submitButton.add(accessibilityLabel); - form.add(submitButton); - - AjaxFallbackButton cancelButton = new AjaxFallbackButton("cancel", new ResourceModel("button.cancel"), form) { - private static final long serialVersionUID = 1L; - - @Override - protected void onSubmit(Optional targetOptional) { - targetOptional.ifPresent(window::close); - } - }; - - cancelButton.setDefaultFormProcessing(false); - form.add(cancelButton); - - add(form); - } -} diff --git a/profile2/tool/src/webapp/WEB-INF/applicationContext.xml b/profile2/tool/src/webapp/WEB-INF/applicationContext.xml index 6a294dda2eaf..4bdb3e36a6e1 100644 --- a/profile2/tool/src/webapp/WEB-INF/applicationContext.xml +++ b/profile2/tool/src/webapp/WEB-INF/applicationContext.xml @@ -10,12 +10,9 @@ - - - @@ -24,18 +21,6 @@ - - - - - - - - - - diff --git a/profile2/tool/src/webapp/javascript/pronunciation.js b/profile2/tool/src/webapp/javascript/info.js similarity index 77% rename from profile2/tool/src/webapp/javascript/pronunciation.js rename to profile2/tool/src/webapp/javascript/info.js index 72892fe8b758..d293a0999121 100644 --- a/profile2/tool/src/webapp/javascript/pronunciation.js +++ b/profile2/tool/src/webapp/javascript/info.js @@ -14,14 +14,12 @@ * limitations under the License. */ -const pronounsSelect = document.getElementById("pronouns-select"); +document.getElementById("pronouns-select")?.addEventListener("change", e => { -pronounsSelect && pronounsSelect.addEventListener("change", function (e) { - - const text = pronounsSelect.options[e.target.value].text; + const text = e.target.options[e.target.value].text; const pronounsInput = document.getElementById("pronouns-input"); - if (text === pronounsSelect.dataset.entermyown) { + if (text === e.target.dataset.entermyown) { pronounsInput.classList.remove("d-none"); } else { pronounsInput.classList.add("d-none"); diff --git a/roster2/tool/src/java/org/sakaiproject/roster/api/RosterMember.java b/roster2/tool/src/java/org/sakaiproject/roster/api/RosterMember.java index 257c5da1fa84..166ecf56f296 100644 --- a/roster2/tool/src/java/org/sakaiproject/roster/api/RosterMember.java +++ b/roster2/tool/src/java/org/sakaiproject/roster/api/RosterMember.java @@ -73,7 +73,6 @@ public class RosterMember { private List additionalNotes; private Map groups = new HashMap<>(); private Map userProperties = new HashMap<>(); - private int connectionStatus; // connection status to the current user private int totalSiteVisits; private String lastVisitTime; private boolean instructor; diff --git a/roster2/tool/src/java/org/sakaiproject/roster/impl/SakaiProxyImpl.java b/roster2/tool/src/java/org/sakaiproject/roster/impl/SakaiProxyImpl.java index 4791b5ca08e7..419201d1b5be 100644 --- a/roster2/tool/src/java/org/sakaiproject/roster/impl/SakaiProxyImpl.java +++ b/roster2/tool/src/java/org/sakaiproject/roster/impl/SakaiProxyImpl.java @@ -91,10 +91,7 @@ import org.sakaiproject.memory.api.Cache; import org.sakaiproject.memory.api.MemoryService; import org.sakaiproject.memory.api.SimpleConfiguration; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; import org.sakaiproject.profile2.logic.ProfileLogic; -import org.sakaiproject.profile2.logic.ProfilePrivacyLogic; -import org.sakaiproject.profile2.types.PrivacyType; import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.roster.api.RosterEnrollment; import org.sakaiproject.roster.api.RosterFunctions; @@ -150,8 +147,6 @@ public class SakaiProxyImpl implements SakaiProxy, Observer { @Resource private PrivacyManager privacyManager; @Resource private MemoryService memoryService; @Resource private ProfileLogic profileLogic; - @Resource private ProfilePrivacyLogic profilePrivacyLogic; - @Resource private ProfileConnectionsLogic connectionsLogic; @Resource private SakaiPersonManager sakaiPersonManager; @Resource private SecurityService securityService; @Resource private ServerConfigurationService serverConfigurationService; @@ -628,6 +623,7 @@ private List filterMembers(Site site, String currentUserId, List userMap, Collection userMap, Collection g.getMember(userId) != null).forEach(g -> rosterMember.addGroup(g.getId(), g.getTitle())); - if (connectionsLogic != null) { - rosterMember.setConnectionStatus(connectionsLogic - .getConnectionStatus(getCurrentUserId(), userId)); - } - return rosterMember; } @@ -1252,9 +1237,11 @@ public Boolean getViewUserNamePronunciation() { @Override public String getProfileToolLink(String otherUserId) { + System.out.println(otherUserId); + try { Site site = siteService.getSite(siteService.getUserSiteId(getCurrentUserId())); - Optional.ofNullable(site.getToolForCommonId("sakai.profile2")).map(tc -> { + return Optional.ofNullable(site.getToolForCommonId("sakai.profile2")).map(tc -> { return site.getUrl() + "/tool/" + tc.getId() + (StringUtils.isNotBlank(otherUserId) ? "/viewprofile/" + otherUserId : ""); diff --git a/webapi/src/main/java/org/sakaiproject/webapi/beans/ProfileRestBean.java b/webapi/src/main/java/org/sakaiproject/webapi/beans/ProfileRestBean.java index 1b8516a9b261..b7746f510dc3 100644 --- a/webapi/src/main/java/org/sakaiproject/webapi/beans/ProfileRestBean.java +++ b/webapi/src/main/java/org/sakaiproject/webapi/beans/ProfileRestBean.java @@ -23,6 +23,4 @@ public class ProfileRestBean { public String profileUrl; public boolean hasPronunciationRecording; public String studentNumber; - public int connectionStatus; - public boolean connectionsEnabled; } diff --git a/webapi/src/main/java/org/sakaiproject/webapi/controllers/CardGameController.java b/webapi/src/main/java/org/sakaiproject/webapi/controllers/CardGameController.java index 7a4563c13676..dbeae7974f7f 100644 --- a/webapi/src/main/java/org/sakaiproject/webapi/controllers/CardGameController.java +++ b/webapi/src/main/java/org/sakaiproject/webapi/controllers/CardGameController.java @@ -342,7 +342,7 @@ private Boolean hasDefaultImage(String userId, String siteId, boolean official) if (official) { profileImage = profileImageLogic.getOfficialProfileImage(userId, siteId); } else { - profileImage = profileImageLogic.getProfileImage(userId, null, null, ProfileConstants.PROFILE_IMAGE_MAIN, siteId); + profileImage = profileImageLogic.getProfileImage(userId, null, ProfileConstants.PROFILE_IMAGE_MAIN, siteId); } return profileImage.isDefault() || profileImage.isInitials(); diff --git a/webapi/src/main/java/org/sakaiproject/webapi/controllers/ProfileController.java b/webapi/src/main/java/org/sakaiproject/webapi/controllers/ProfileController.java index c46cb12ae8f9..a58ebc5830c0 100644 --- a/webapi/src/main/java/org/sakaiproject/webapi/controllers/ProfileController.java +++ b/webapi/src/main/java/org/sakaiproject/webapi/controllers/ProfileController.java @@ -14,11 +14,9 @@ package org.sakaiproject.webapi.controllers; import org.sakaiproject.component.api.ServerConfigurationService; -import org.sakaiproject.profile2.logic.ProfileConnectionsLogic; import org.sakaiproject.profile2.logic.ProfileLinkLogic; import org.sakaiproject.profile2.logic.ProfileLogic; import org.sakaiproject.profile2.model.UserProfile; -import org.sakaiproject.profile2.util.ProfileConstants; import org.sakaiproject.user.api.CandidateDetailProvider; import org.sakaiproject.user.api.User; import org.sakaiproject.user.api.UserDirectoryService; @@ -46,7 +44,6 @@ public class ProfileController extends AbstractSakaiApiController { @Autowired(required = false) private CandidateDetailProvider candidateDetailProvider; - @Autowired private ProfileConnectionsLogic profileConnectionsLogic; @Autowired private ProfileLinkLogic profileLinkLogic; @Autowired private ProfileLogic profileLogic; @Autowired private UserDirectoryService userDirectoryService; @@ -75,8 +72,6 @@ public ResponseEntity getUserProfile(@PathVariable String userI bean.pronunciation = userProfile.getPhoneticPronunciation(); bean.profileUrl = profileLinkLogic.getInternalDirectUrlToUserProfile(userId); bean.hasPronunciationRecording = profileLogic.getUserNamePronunciation(userId) != null; - bean.connectionsEnabled = serverConfigurationService.getBoolean("profile2.connections.enabled", true); - bean.connectionStatus = profileConnectionsLogic.getConnectionStatus(currentUserId, userId); if (candidateDetailProvider != null) { try { diff --git a/webcomponents/tool/src/main/frontend/packages/sakai-profile/src/SakaiProfile.js b/webcomponents/tool/src/main/frontend/packages/sakai-profile/src/SakaiProfile.js index 72a6a304e389..ee295cb9852d 100644 --- a/webcomponents/tool/src/main/frontend/packages/sakai-profile/src/SakaiProfile.js +++ b/webcomponents/tool/src/main/frontend/packages/sakai-profile/src/SakaiProfile.js @@ -1,7 +1,5 @@ import { css, html, nothing } from "lit"; import { SakaiShadowElement } from "@sakai-ui/sakai-element"; -import { confirmConnection, ignoreConnection, removeConnection, requestConnection } from "./sakai-connection-utils.js"; -import { getUserId } from "@sakai-ui/sakai-portal-utils"; import "@sakai-ui/sakai-pronunciation-player/sakai-pronunciation-player.js"; /** @@ -50,50 +48,6 @@ export class SakaiProfile extends SakaiShadowElement { this.shadowRoot.getElementById("pronunciation-player").play(); } - _requestConnection() { - - requestConnection(this.userId) - .then(() => { - - this._profile.connectionStatus = 1; - this.requestUpdate(); - }) - .catch(error => console.error(error)); - } - - _confirmConnection() { - - confirmConnection(this.userId) - .then(() => { - - this._profile.connectionStatus = 3; - this.requestUpdate(); - }) - .catch(error => console.error(error)); - } - - _removeConnection() { - - removeConnection(this.userId) - .then(() => { - - this._profile.connectionStatus = 0; - this.requestUpdate(); - }) - .catch(error => console.error(error)); - } - - _ignoreConnection() { - - ignoreConnection(this.userId) - .then(() => { - - this._profile.connectionStatus = 0; - this.requestUpdate(); - }) - .catch(error => console.error(error)); - } - shouldUpdate() { return this._i18n; } @@ -138,33 +92,6 @@ export class SakaiProfile extends SakaiShadowElement { ${this._profile.url ? html` ` : nothing} - - ${this._profile.connectionsEnabled && getUserId() !== this.userId ? html` - -
    ${this._i18n.connection}
    - - ${this._profile.connectionStatus === 0 ? html` -
    - -
    - ` : nothing} - ${this._profile.connectionStatus === 1 ? html` -
    ${this._i18n.connection_requested}
    - ` : nothing} - ${this._profile.connectionStatus === 2 ? html` -
    - -
    -
    - -
    - ` : nothing} - ${this._profile.connectionStatus === 3 ? html` -
    - -
    - ` : nothing} - ` : nothing} `; diff --git a/webcomponents/tool/src/main/frontend/packages/sakai-profile/src/sakai-connection-utils.js b/webcomponents/tool/src/main/frontend/packages/sakai-profile/src/sakai-connection-utils.js deleted file mode 100644 index b5e54f98fd8f..000000000000 --- a/webcomponents/tool/src/main/frontend/packages/sakai-profile/src/sakai-connection-utils.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - */ - -import { getUserId } from "@sakai-ui/sakai-portal-utils"; - -const fetchIt = (url, errorMessage) => { - - return fetch(url, { cache: "no-cache" }) - .then(r => { - - if (r.ok) { - return r.text(); - } - - throw new Error(errorMessage + url); - }); -}; - -export const requestConnection = friendId => { - - const url = `/direct/profile/${getUserId()}/requestFriend?friendId=${friendId}`; - return fetchIt(url, "Network error while requesting connection at "); -}; - -export const confirmConnection = friendId => { - - const url = `/direct/profile/${getUserId()}/confirmFriendRequest?friendId=${friendId}`; - return fetchIt(url, "Network error while confirming connection at "); -}; - -export const removeConnection = friendId => { - - const url = `/direct/profile/${getUserId()}/removeFriend?friendId=${friendId}`; - return fetchIt(url, "Network error while removing connection at "); -}; - -export const ignoreConnection = friendId => { - - const url = `/direct/profile/${getUserId()}/ignoreFriendRequest?friendId=${friendId}`; - return fetchIt(url, "Network error while ignoring connection at "); -};