📄 account.mxml
字号:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:account="com.flexShowcase.components.account.*"
xmlns:panels="com.flexShowcase.panels.*"
xmlns:remote="com.flexShowcase.net.remote.*"
left="0"
right="0"
top="0"
bottom="0"
backgroundColor="#E5E5E5"
borderColor="#FFFFFF"
borderStyle="solid"
borderThickness="2"
horizontalScrollPolicy="off"
verticalScrollPolicy="off"
clipContent="false"
creationComplete="creationCompleteHandler(event)">
<mx:Script>
<![CDATA[
//////////////////////////////////////////////////
//import
import com.flexShowcase.data.Project;
import com.flexShowcase.data.Screenshot;
import com.flexShowcase.data.Tag;
import com.flexShowcase.data.User;
import com.flexShowcase.events.AccountEvent;
import com.flexShowcase.events.MailEvent;
import com.flexShowcase.events.ProjectEvent;
import com.flexShowcase.events.UserEvent;
import com.flexShowcase.net.remote.FlexShowcaseServiceConfig;
import com.flexShowcase.net.remote.parsers.ProjectParser;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.EffectEvent;
import mx.events.ListEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
//////////////////////////////////////////////////
//getter/setter variables
private var _user:User;
//////////////////////////////////////////////////
//public variables
[Bindable] public var tags:ArrayCollection;
[Bindable] public var technologies:ArrayCollection;
[Bindable] public var industries:ArrayCollection;
[Bindable] public var flexShowcaseServiceConfig:FlexShowcaseServiceConfig;
//////////////////////////////////////////////////
//private variables
[Bindable] private var projects:ArrayCollection;
[Bindable] private var selectedProject:Project;
[Bindable] private var projectChanged:Boolean;
[Bindable] private var readyToSave:Boolean;
private var lastSelectedIndex:uint;
private var nextSelectedIndex:uint;
///////////////////////////////////////////////////////////////////////////////
//getter/setter functions
[Bindable]
public function set user(value:User):void {
_user = value;
userHandler();
}
public function get user():User {
return _user;
}
private function userHandler():void {
projects = user.projects;
user.addEventListener(UserEvent.CHANGE, userChangeHandler);
user.addEventListener(UserEvent.PROJECTS_LOADED, userProjectsLoadedHandler);
}
//////////////////////////////////////////////////
//initialization
private function creationCompleteHandler(event:Event):void {
projectChanged = false;
readyToSave = false;
projectInfoTab.addEventListener(AccountEvent.CHANGED, changedHandler);
industriesTab.addEventListener(AccountEvent.CHANGED, changedHandler);
technologiesTab.addEventListener(AccountEvent.CHANGED, changedHandler);
tagsTab.addEventListener(AccountEvent.CHANGED, changedHandler);
screenshotsTab.addEventListener(AccountEvent.ADD_SCREENSHOT, screenshotsTabAddScreenshotHandler);
screenshotsTab.addEventListener(AccountEvent.DELETE_SCREENSHOT, screenshotsTabDeleteScreenshotHandler);
screenshotsTab.addEventListener(AccountEvent.MARK_AS_DEFAULT_SCREENSHOT, screenshotsTabMarkAsDefaultScreenshotHandler);
addScreenshotPanel.addEventListener(ProjectEvent.RELOAD, projectReloadEventHandler);
addSubmissionPanel.addEventListener(ProjectEvent.ADD, projectAddEventHandler);
}
//////////////////////////////////////////////////
//public functions
public function show():void {
if (user.firstName == "" || user.firstName == null) {
profilePanel.show();
}
}
//////////////////////////////////////////////////
//private functions
private function updateSelection():void {
selectedProject = projectsDataGrid.selectedItem as Project;
refresh();
projectChanged = false;
readyToSave = false;
lastSelectedIndex = projectsDataGrid.selectedIndex;
}
private function selectPreviousProject():void {
projectsDataGrid.selectedIndex = lastSelectedIndex;
}
private function reset():void {
selectedProject = null;
projectChanged = false;
readyToSave = false;
projectInfoTab.reset();
selectFirstProject();
refresh();
}
private function selectFirstProject():void {
if (projects != null) {
if (projects.length > 0) {
projectsDataGrid.selectedIndex = 0;
selectedProject = projects.getItemAt(0) as Project;
}
}
}
private function refresh():void {
if (selectedProject != null) {
industriesTab.selectTags();
technologiesTab.selectTags();
screenshotsTab.refresh();
}
}
private function projectIsValid():Boolean {
return projectInfoTab.projectFormIsValid;
}
private function save():void {
if (projectIsValid() == true) {
var projectDetails:Project = projectInfoTab.getProjectData();
selectedProject.name = projectDetails.name;
selectedProject.description = projectDetails.description;
selectedProject.url = projectDetails.url;
selectedProject.clientName = projectDetails.clientName;
selectedProject.clientEmail = projectDetails.clientEmail;
selectedProject.clientURL = projectDetails.clientURL;
selectedProject.developerName = projectDetails.developerName;
selectedProject.developerEmail = projectDetails.developerEmail;
selectedProject.developerURL = projectDetails.developerURL;
selectedProject.creatorUserID = user.id;
selectedProject.creatorUserName = user.username;
selectedProject.industries = industriesTab.getTags();
selectedProject.technologies = technologiesTab.getTags();
saveProject(selectedProject);
} else {
Alert.buttonHeight = 31;
Alert.show("The project information in the currently selected project is not valid and has not been saved.\n\nPlease check your form and try again.", "Caution");
}
}
private function saveProject(project:Project):void {
var data:Object = new Object();
data.nid = project.id;
data.type = "showcase_entry";
data.title = project.name;
data.teaser = "";
data.body = project.description;
data.field_website = new Array({value:project.url});
data.field_client_name = new Array({value:project.clientName});
data.field_client_url = new Array({value:project.clientURL});
data.field_client_email = new Array({value:project.clientEmail});
data.field_developer_name = new Array({value:project.developerName});
data.field_developer_url = new Array({value:project.developerURL});
data.field_developer_email = new Array({value:project.developerEmail});
data.status = "0";
data.userid = user.id;
data.name = user.username;
data.taxonomy = new Array();
data.taxonomy["tags"] = {3:tagsTab.getTags()};
var technologyIDs:Array = new Array();
for (var i:uint = 0; i < project.technologies.length; ++i) {
var technologyTag:Tag = project.technologies[i];
technologyIDs.push(technologyTag.id);
}
var industryIDs:Array = new Array();
for (var j:uint = 0; j < project.industries.length; ++j) {
var industryTag:Tag = project.industries[j];
industryIDs.push(industryTag.id);
}
data.taxonomy["technology"] = technologyIDs;
data.taxonomy["industry"] = industryIDs;
nodeService.node.save.addEventListener(ResultEvent.RESULT, nodeServiceSaveResultHandler);
nodeService.node.save.addEventListener(FaultEvent.FAULT, nodeServiceSaveFaultHandler);
nodeService.node.save(data);
projectChanged = false;
readyToSave = false;
}
private function noSaveAndContinue():void {
updateSelection();
}
private function cancelNoContinue():void {
selectPreviousProject();
}
private function logout():void {
if (projectChanged == false) {
dispatchLogoutEvent();
} else {
Alert.buttonHeight = 31;
Alert.show("The project information in the currently selected project has changed.\n\nDo you want to save the changes?", "Caution", Alert.YES | Alert.NO | Alert.CANCEL, null, logoutSaveAlertHandler, null, Alert.CANCEL);
}
}
private function logoutSaveAndContinue():void {
if (projectIsValid() == true) {
save();
dispatchLogoutEvent();
} else {
Alert.buttonHeight = 31;
Alert.show("The project information in the currently selected project is not valid and has not been saved.\n\nPlease check your form and try again.", "Caution");
}
}
private function loadProject(project:Project):void {
nodeService.node.load.addEventListener(ResultEvent.RESULT, nodeServiceLoadResultHandler);
nodeService.node.load.addEventListener(ResultEvent.RESULT, nodeServiceLoadFaultHandler);
nodeService.node.load(project.id);
}
private function parseUserProject(projectData:Object):void {
var updatedProject:Project = ProjectParser.parse(projectData, flexShowcaseServiceConfig.showcaseURL);
var matchingProject:Project;
for each (var project:Project in projects) {
if (updatedProject.id == project.id) {
matchingProject = project;
break;
}
}
matchingProject.id = updatedProject.id;
matchingProject.name = updatedProject.name;
matchingProject.description = updatedProject.description;
matchingProject.url = updatedProject.url;
matchingProject.clientName = updatedProject.clientName;
matchingProject.clientEmail = updatedProject.clientEmail;
matchingProject.clientURL = updatedProject.clientURL;
matchingProject.developerName = updatedProject.developerName;
matchingProject.developerEmail = updatedProject.developerEmail;
matchingProject.developerURL = updatedProject.developerURL;
matchingProject.images = updatedProject.images;
matchingProject.thumbnail = updatedProject.thumbnail;
matchingProject.displayImage = updatedProject.displayImage;
matchingProject.tags = updatedProject.tags;
matchingProject.industries = updatedProject.industries;
matchingProject.technologies = updatedProject.technologies;
matchingProject.views = updatedProject.views;
matchingProject.rating = updatedProject.rating;
matchingProject.numberOfComments = updatedProject.numberOfComments;
matchingProject.published = updatedProject.published;
matchingProject.showcaseProject = updatedProject.showcaseProject;
matchingProject.featuredProject = updatedProject.featuredProject;
matchingProject.creatorUserID = updatedProject.creatorUserID;
matchingProject.creatorUserName = updatedProject.creatorUserName;
matchingProject.createdDate = updatedProject.createdDate;
matchingProject.lastModifiedDate = updatedProject.lastModifiedDate;
matchingProject.viewed = updatedProject.viewed;
matchingProject.voted = updatedProject.voted;
}
private function deleteScreenshot(screenshot:Screenshot):void {
generalOperationsService.flexdotorg.deleteScreenshot.addEventListener(ResultEvent.RESULT, deleteScreenshotResultHandler);
generalOperationsService.flexdotorg.deleteScreenshot.addEventListener(FaultEvent.FAULT, deleteScreenshotFaultHandler);
generalOperationsService.flexdotorg.deleteScreenshot(screenshot.projectID, screenshot.id);
}
private function markAsDefaultScreenshot(screenshot:Screenshot):void {
generalOperationsService.flexdotorg.setDefaultScreenshot.addEventListener(ResultEvent.RESULT, setDefaultScreenshotResultHandler);
generalOperationsService.flexdotorg.setDefaultScreenshot.addEventListener(FaultEvent.FAULT, setDefaultScreenshotFaultHandler);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -