⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 account.mxml

📁 flex 实现的一个showcase 喜欢flex的朋友可以
💻 MXML
📖 第 1 页 / 共 2 页
字号:
<?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 + -