You need to sign in to do that
Don't have an account?
Nidhi Malhotra
Custom My Profile Page
Hi All the experts out there! I need your help with the following code.
I am trying to replicate the custom My Profile Visual force page. I am using the standard Visual force page and controller that was available in the instance.
I modified it and commented certain lines. After commenting certain lines I found that the Command buttons are not functioning properly.
The reason I commented some pageblock section tags and all is that I want this page to be custom. I will add other header and logos using HTML. I also want only certain fields to be editable. That is the reason I have commented certain lines.
But after doing so, the command buttons itself does not function. Or when I try to click it, I am not even able to click it.
Can anyone please help me to fix this? All that I want is that this page to be functional with few fields but no standard salesforce styling inside that. If everything is in wile background also that is also great. I even want to retain the change password function. Also the change password page should not have standard salesforce syling.
Please help me to fix this issue.
Regards,
Nidhi
Apex Page ~~~~~~~~~~~~~~~~~~~~~~~
<apex:page id="portalUserProfilePage" controller="CustomMyProfilePageController" showHeader="false" title="{!$Label.site.my_profile_page}">
<!-- <apex:composition template="{!$Site.Template}"> -->
<html>
<body>
<!-- <apex:define name="body"> -->
<apex:form id="theForm">
<apex:outputPanel style="padding:50px 50px 50px 50px" id="userDetail" rendered="{!isEdit}">
<!-- <apex:pageBlock title="{!$Label.site.my_profile}" id="editUserDetail" rendered="{!isEdit}"> -->
<apex:pageMessages />
<!-- <apex:pageBlockButtons id="editButtons" location="top"> -->
<apex:commandButton id="save" value="{!$Label.site.save}" action="{!save}" rerender="userDetail"/>
<apex:commandButton id="cancel" value="{!$Label.site.cancel}" action="{!cancel}" rerender="userDetail" immediate="true"/>
<!-- </apex:pageBlockButtons> -->
<apex:pageBlockSection id="editUserSection" columns="1" title="{!$Label.site.user_information}">
<apex:inputField id="editusername" value="{!user.username}"/>
<apex:inputField id="edittimezone" value="{!user.timezonesidkey}"/>
<apex:inputField id="editlocale" value="{!user.localesidkey}"/>
<apex:inputField id="editlanguage" value="{!user.languagelocalekey}"/>
<apex:inputField id="editcommunityNickname" value="{!user.communityNickname}"/>
</apex:pageBlockSection>
<apex:pageBlockSection id="editContactSection" columns="2" title="{!$Label.site.contact_information}">
<apex:inputField id="editfirstName" value="{!user.firstName}"/>
<apex:inputField id="editemail" value="{!user.email}"/>
<apex:inputField id="editlastName" value="{!user.lastName}"/>
<apex:inputField id="editphone" value="{!user.phone}"/>
<apex:inputField id="edittitle" value="{!user.title}"/>
<apex:inputField id="editextension" value="{!user.extension}"/>
<apex:pageBlockSectionItem />
<apex:inputField id="editfax" value="{!user.fax}"/>
<apex:pageBlockSectionItem />
<apex:inputField id="editmobile" value="{!user.mobilephone}"/>
</apex:pageBlockSection>
<apex:pageBlockSection id="editAddressInformation" columns="1" title="{!$Label.site.address_information}">
<apex:inputField id="editstreet" value="{!user.street}"/>
<apex:inputField id="editcity" value="{!user.city}"/>
<apex:inputField id="editstate" value="{!user.state}"/>
<apex:inputField id="editpostalcode" value="{!user.postalcode}"/>
<apex:inputField id="editcountry" value="{!user.country}"/>
</apex:pageBlockSection>
<!-- </apex:pageBlock> -->
</apex:outputPanel>
<apex:outputPanel style="padding:50px 50px 50px 50px" id="userDetails" rendered="{!!isEdit}">
<!-- <apex:pageBlock title="{!$Label.site.my_profile}" id="viewUserDetail" rendered="{!!isEdit}"> -->
<!-- <apex:pageBlockButtons id="detailButtons" location="top"> -->
<apex:commandButton id="edit" value="{!$Label.site.edit}" action="{!edit}" rerender="userDetail"/>
<apex:commandButton id="changePassword" value="{!$Label.site.change_password}" action="{!changePassword}"/>
<!-- </apex:pageBlockButtons> -->
<!-- <apex:pageBlockSection id="viewUserSection" columns="2" title="{!$Label.site.user_information}"> -->
<!-- <apex:outputField id="detailusername" value="{!user.username}"/>
<apex:outputField id="detailtimezone" value="{!user.timezonesidkey}"/>
<apex:outputField id="detaillocale" value="{!user.localesidkey}"/>
<apex:outputField id="detaillanguage" value="{!user.languagelocalekey}"/>
<apex:outputField id="detailcommunityNickname" value="{!user.communityNickname}"/> -->
<!-- </apex:pageBlockSection> -->
<!-- <apex:pageBlockSection id="viewContactSection" columns="2" title="{!$Label.site.contact_information}"> -->
<b>Email : </b> <apex:outputField id="detailemail" value="{!user.email}"/> <br/>
<b>Name : </b><apex:outputField id="detailfirstName" value="{!user.firstName}"/> <br/>
<!-- <b></b><apex:outputField id="detaillastName" value="{!user.lastName}"/> -->
<b>Title : </b><apex:outputField id="detailtitle" value="{!user.title}"/> <br/>
<!-- <apex:outputField id="detailphone" value="{!user.phone}"/>
<apex:outputField id="detailstreet" value="{!user.street}"/>
<apex:outputField id="detailcity" value="{!user.city}"/>
<apex:outputField id="detailstate" value="{!user.state}"/>
<apex:outputField id="detailpostalcode" value="{!user.postalcode}"/>
<apex:outputField id="detailcountry" value="{!user.country}"/>
<apex:outputField id="detailextension" value="{!user.extension}"/>
<apex:outputField id="detailfax" value="{!user.fax}"/>
<apex:outputField id="detailmobile" value="{!user.mobilephone}"/> -->
<!--</apex:pageBlockSection> -->
<!-- </apex:pageBlock> -->
</apex:outputPanel>
</apex:form>
<!-- </apex:define> -->
</body>
</html>
<!-- </apex:composition> -->
</apex:page>
Controller ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
/**
* An apex class that keeps updates of a portal user in sync with its corresponding contact.
Guest users are never able to access this page.
*/
public with sharing class CustomMyProfilePageController {
private User user;
private boolean isEdit = false;
public User getUser() {
return user;
}
public CustomMyProfilePageController() {
user = [SELECT id, email, username, usertype, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, country, postalcode, state, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
// guest users should never be able to access this page
if (user.usertype == 'GUEST') {
throw new NoAccessException();
}
}
public Boolean getIsEdit() {
return isEdit;
}
public void edit() {
isEdit=true;
}
public void save() {
if (user.contact != null) {
setContactFields(user.contact, user);
}
try {
update user;
if (user.contact != null) {
update user.contact;
}
isEdit=false;
} catch(DmlException e) {
ApexPages.addMessages(e);
}
}
public PageReference changePassword() {
return Page.ChangePassword;
}
public void cancel() {
isEdit=false;
user = [SELECT id, email, username, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, country, postalcode, state, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
}
public static void setContactFields(Contact c, User u) {
c.title = u.title;
c.firstname = u.firstname;
c.lastname = u.lastname;
c.email = u.email;
c.phone = u.phone;
c.mobilephone = u.mobilephone;
c.fax = u.fax;
c.mailingstreet = u.street;
c.mailingcity = u.city;
c.mailingstate = u.state;
c.mailingpostalcode = u.postalcode;
c.mailingcountry = u.country;
}
}
I am trying to replicate the custom My Profile Visual force page. I am using the standard Visual force page and controller that was available in the instance.
I modified it and commented certain lines. After commenting certain lines I found that the Command buttons are not functioning properly.
The reason I commented some pageblock section tags and all is that I want this page to be custom. I will add other header and logos using HTML. I also want only certain fields to be editable. That is the reason I have commented certain lines.
But after doing so, the command buttons itself does not function. Or when I try to click it, I am not even able to click it.
Can anyone please help me to fix this? All that I want is that this page to be functional with few fields but no standard salesforce styling inside that. If everything is in wile background also that is also great. I even want to retain the change password function. Also the change password page should not have standard salesforce syling.
Please help me to fix this issue.
Regards,
Nidhi
Apex Page ~~~~~~~~~~~~~~~~~~~~~~~
<apex:page id="portalUserProfilePage" controller="CustomMyProfilePageController" showHeader="false" title="{!$Label.site.my_profile_page}">
<!-- <apex:composition template="{!$Site.Template}"> -->
<html>
<body>
<!-- <apex:define name="body"> -->
<apex:form id="theForm">
<apex:outputPanel style="padding:50px 50px 50px 50px" id="userDetail" rendered="{!isEdit}">
<!-- <apex:pageBlock title="{!$Label.site.my_profile}" id="editUserDetail" rendered="{!isEdit}"> -->
<apex:pageMessages />
<!-- <apex:pageBlockButtons id="editButtons" location="top"> -->
<apex:commandButton id="save" value="{!$Label.site.save}" action="{!save}" rerender="userDetail"/>
<apex:commandButton id="cancel" value="{!$Label.site.cancel}" action="{!cancel}" rerender="userDetail" immediate="true"/>
<!-- </apex:pageBlockButtons> -->
<apex:pageBlockSection id="editUserSection" columns="1" title="{!$Label.site.user_information}">
<apex:inputField id="editusername" value="{!user.username}"/>
<apex:inputField id="edittimezone" value="{!user.timezonesidkey}"/>
<apex:inputField id="editlocale" value="{!user.localesidkey}"/>
<apex:inputField id="editlanguage" value="{!user.languagelocalekey}"/>
<apex:inputField id="editcommunityNickname" value="{!user.communityNickname}"/>
</apex:pageBlockSection>
<apex:pageBlockSection id="editContactSection" columns="2" title="{!$Label.site.contact_information}">
<apex:inputField id="editfirstName" value="{!user.firstName}"/>
<apex:inputField id="editemail" value="{!user.email}"/>
<apex:inputField id="editlastName" value="{!user.lastName}"/>
<apex:inputField id="editphone" value="{!user.phone}"/>
<apex:inputField id="edittitle" value="{!user.title}"/>
<apex:inputField id="editextension" value="{!user.extension}"/>
<apex:pageBlockSectionItem />
<apex:inputField id="editfax" value="{!user.fax}"/>
<apex:pageBlockSectionItem />
<apex:inputField id="editmobile" value="{!user.mobilephone}"/>
</apex:pageBlockSection>
<apex:pageBlockSection id="editAddressInformation" columns="1" title="{!$Label.site.address_information}">
<apex:inputField id="editstreet" value="{!user.street}"/>
<apex:inputField id="editcity" value="{!user.city}"/>
<apex:inputField id="editstate" value="{!user.state}"/>
<apex:inputField id="editpostalcode" value="{!user.postalcode}"/>
<apex:inputField id="editcountry" value="{!user.country}"/>
</apex:pageBlockSection>
<!-- </apex:pageBlock> -->
</apex:outputPanel>
<apex:outputPanel style="padding:50px 50px 50px 50px" id="userDetails" rendered="{!!isEdit}">
<!-- <apex:pageBlock title="{!$Label.site.my_profile}" id="viewUserDetail" rendered="{!!isEdit}"> -->
<!-- <apex:pageBlockButtons id="detailButtons" location="top"> -->
<apex:commandButton id="edit" value="{!$Label.site.edit}" action="{!edit}" rerender="userDetail"/>
<apex:commandButton id="changePassword" value="{!$Label.site.change_password}" action="{!changePassword}"/>
<!-- </apex:pageBlockButtons> -->
<!-- <apex:pageBlockSection id="viewUserSection" columns="2" title="{!$Label.site.user_information}"> -->
<!-- <apex:outputField id="detailusername" value="{!user.username}"/>
<apex:outputField id="detailtimezone" value="{!user.timezonesidkey}"/>
<apex:outputField id="detaillocale" value="{!user.localesidkey}"/>
<apex:outputField id="detaillanguage" value="{!user.languagelocalekey}"/>
<apex:outputField id="detailcommunityNickname" value="{!user.communityNickname}"/> -->
<!-- </apex:pageBlockSection> -->
<!-- <apex:pageBlockSection id="viewContactSection" columns="2" title="{!$Label.site.contact_information}"> -->
<b>Email : </b> <apex:outputField id="detailemail" value="{!user.email}"/> <br/>
<b>Name : </b><apex:outputField id="detailfirstName" value="{!user.firstName}"/> <br/>
<!-- <b></b><apex:outputField id="detaillastName" value="{!user.lastName}"/> -->
<b>Title : </b><apex:outputField id="detailtitle" value="{!user.title}"/> <br/>
<!-- <apex:outputField id="detailphone" value="{!user.phone}"/>
<apex:outputField id="detailstreet" value="{!user.street}"/>
<apex:outputField id="detailcity" value="{!user.city}"/>
<apex:outputField id="detailstate" value="{!user.state}"/>
<apex:outputField id="detailpostalcode" value="{!user.postalcode}"/>
<apex:outputField id="detailcountry" value="{!user.country}"/>
<apex:outputField id="detailextension" value="{!user.extension}"/>
<apex:outputField id="detailfax" value="{!user.fax}"/>
<apex:outputField id="detailmobile" value="{!user.mobilephone}"/> -->
<!--</apex:pageBlockSection> -->
<!-- </apex:pageBlock> -->
</apex:outputPanel>
</apex:form>
<!-- </apex:define> -->
</body>
</html>
<!-- </apex:composition> -->
</apex:page>
Controller ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
/**
* An apex class that keeps updates of a portal user in sync with its corresponding contact.
Guest users are never able to access this page.
*/
public with sharing class CustomMyProfilePageController {
private User user;
private boolean isEdit = false;
public User getUser() {
return user;
}
public CustomMyProfilePageController() {
user = [SELECT id, email, username, usertype, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, country, postalcode, state, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
// guest users should never be able to access this page
if (user.usertype == 'GUEST') {
throw new NoAccessException();
}
}
public Boolean getIsEdit() {
return isEdit;
}
public void edit() {
isEdit=true;
}
public void save() {
if (user.contact != null) {
setContactFields(user.contact, user);
}
try {
update user;
if (user.contact != null) {
update user.contact;
}
isEdit=false;
} catch(DmlException e) {
ApexPages.addMessages(e);
}
}
public PageReference changePassword() {
return Page.ChangePassword;
}
public void cancel() {
isEdit=false;
user = [SELECT id, email, username, communitynickname, timezonesidkey, languagelocalekey, firstname, lastname, phone, title,
street, city, country, postalcode, state, localesidkey, mobilephone, extension, fax, contact.email
FROM User
WHERE id = :UserInfo.getUserId()];
}
public static void setContactFields(Contact c, User u) {
c.title = u.title;
c.firstname = u.firstname;
c.lastname = u.lastname;
c.email = u.email;
c.phone = u.phone;
c.mobilephone = u.mobilephone;
c.fax = u.fax;
c.mailingstreet = u.street;
c.mailingcity = u.city;
c.mailingstate = u.state;
c.mailingpostalcode = u.postalcode;
c.mailingcountry = u.country;
}
}