| <?xml version="1.0" encoding="utf-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache 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.apache.org/licenses/LICENSE-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. |
| |
| --> |
| <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" |
| xmlns:s="library://ns.adobe.com/flex/spark" |
| xmlns:mx="library://ns.adobe.com/flex/mx" |
| xmlns:ns="http://ak33m.com/mxml" |
| xmlns:fc="com.flexcapacitor.utils.*" |
| xmlns:controls="com.flexcapacitor.controls.*" |
| |
| minWidth="800" |
| minHeight="600" |
| |
| applicationComplete="applicationCompleteHandler(event)" |
| > |
| |
| |
| <fx:Script> |
| <![CDATA[ |
| import com.flexcapacitor.services.WPService; |
| import com.flexcapacitor.services.WPServiceEvent; |
| |
| import flash.net.FileReference; |
| import flash.net.URLLoader; |
| import flash.net.URLLoaderDataFormat; |
| import flash.net.URLRequest; |
| import flash.net.URLRequestMethod; |
| import flash.net.URLVariables; |
| import flash.net.navigateToURL; |
| import flash.utils.getTimer; |
| |
| import mx.collections.ItemResponder; |
| import mx.events.FlexEvent; |
| import mx.rpc.AsyncToken; |
| import mx.utils.ObjectUtil; |
| |
| import spark.events.IndexChangeEvent; |
| import spark.events.TextOperationEvent; |
| |
| import ru.inspirit.net.MultipartURLLoader; |
| import ru.inspirit.net.events.MultipartURLLoaderEvent; |
| |
| public var host:String = ""; |
| |
| [Bindable] |
| public var urlregexp:String = "^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$"; |
| [Bindable] |
| public var endpointregexp:String = "/[A-Za-z0-9-_%&\?\/.=]"; |
| |
| public var time:int; |
| |
| [Bindable] |
| public var currentUserID:int; |
| |
| private var uploadPending:Boolean; |
| private var updatePending:Boolean; |
| private var updateCreatePost:Boolean; |
| |
| public var uploadRequest:URLRequest; |
| |
| private var fileToUpload:FileReference; |
| |
| private var multipartURLLoader:MultipartURLLoader; |
| |
| private var testTextFileByteArray:ByteArray; |
| |
| private var testBitmap:BitmapData; |
| |
| private var testBitmapJPEGByteArray:ByteArray; |
| |
| public var service:WPService; |
| |
| /** |
| * Login user |
| * */ |
| public function loginUser():void { |
| log("Login user"); |
| service.loginUser(usernameInput.text, passwordInput.text); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Logout user |
| * */ |
| public function logoutUser():void { |
| log("Logout user"); |
| service.logoutUser(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Register user |
| * */ |
| public function registerUser():void { |
| log("Register user"); |
| service.registerUser(newUsernameInput.text, emailInput.text); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Register site |
| * */ |
| public function registerSite():void { |
| log("Register site"); |
| service.registerSite(newSiteNameInput.text, newSiteTitleInput.text, newSiteIsPublicCheckbox.selected); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Register user and site |
| * */ |
| public function registerUserAndSite():void { |
| log("Register user and site"); |
| service.registerUserAndSite(newSiteUsernameInput.text, newSiteEmailInput.text, newSiteNameInput.text, newSiteTitleInput.text, newSiteIsPublicCheckbox.selected); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Is multisite |
| * */ |
| public function isMultiSite():void { |
| log("Is Multisite"); |
| service.isMultiSite(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Get current site |
| * */ |
| public function getCurrentSite():void { |
| log("Get current site"); |
| service.getCurrentSite(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| /** |
| * Is subdomain installed |
| * */ |
| public function isSubDomainInstalled():void { |
| log("Is subdomain installed"); |
| service.isSubDomainInstall(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Is main site |
| * */ |
| public function isMainSite():void { |
| log("Is main site"); |
| service.isMainSite(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Lost password |
| * */ |
| public function lostPassword():void { |
| log("Lost password"); |
| service.lostPassword(lostPasswordInput.text); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Reset password |
| * */ |
| public function resetPassword():void { |
| service.resetPassword(keyInput.text, resetUsernameInput.text, password1Input.text, password2Input.text); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Get JSON API plugin info |
| * */ |
| public function getAPIInfo():void { |
| service.getAPIInfo(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| public function updateTimeMatrixField(call:String, response:Boolean = false, portal:* = null, dimension:int = 3):void { |
| !response ? log() :-(1); |
| |
| if (!response) { |
| time = getTimer(); |
| timeLabel.text = "Requesting... " + call; |
| } |
| else { |
| var currentTime:int = getTimer(); |
| var timeLabelValue:String = "Time: " + String(currentTime-time) + "ms"; |
| timeLabel.text = timeLabelValue; |
| } |
| } |
| |
| /** |
| * Update post |
| * */ |
| public function updatePost(currentToken:String = null):void { |
| var object:URLVariables = new URLVariables(); |
| object.id = idLabel.text; |
| object.status = statusDropdownList.selectedItem as String; |
| object.nonce = currentToken; |
| object.title = titleInput.text; |
| object.content = contentTextArea.text; |
| |
| service.addEventListener(WPServiceEvent.RESULT, onUpdateResultHandler); |
| service.addEventListener(WPServiceEvent.FAULT, onUpdateFaultHandler); |
| service.parameters = object; |
| service.updatePost(); |
| |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| |
| } |
| |
| /** |
| * Calls create post |
| * */ |
| public function createPost(currentToken:String = null):void { |
| |
| var object:URLVariables = new URLVariables(); |
| object.nonce = currentToken; |
| object.title = "New Post at " + new Date().toTimeString(); |
| object.slug = slugLabel.text; |
| object.post_slug = slugLabel.text; |
| object.content = contentTextArea.text; |
| object.dev = 1; |
| object.categories = "project"; |
| |
| service.parameters = object; |
| service.addEventListener(WPServiceEvent.RESULT, onCreatePostResult); |
| service.addEventListener(WPServiceEvent.FAULT, onCreatePostFault); |
| service.createPost(); |
| |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Select a file for upload |
| * */ |
| public function selectFileToUpload():void { |
| |
| fileToUpload = new FileReference(); |
| fileToUpload.browse(); |
| fileToUpload.addEventListener(Event.SELECT, fileSelected); |
| } |
| |
| |
| |
| /* |
| var data1:ByteArray = new ByteArray(); |
| data1.writeUTFBytes("This is a test text file"); |
| data1.position = 0; |
| |
| var bmp:BitmapData = new BitmapData(1000, 1000, false, 0x000000); |
| bmp.perlinNoise(100, 80, 6, Math.floor(Math.random() * 10), false, true, 1); |
| |
| var j_encoder:JPGEncoder = new JPGEncoder(90); |
| |
| var img:ByteArray = j_encoder.encode(bmp); |
| |
| var ml:MultipartURLLoader = new MultipartURLLoader(); |
| ml.dataFormat = URLLoaderDataFormat.VARIABLES; |
| |
| ml.addEventListener(Event.COMPLETE, onReady); |
| ml.addEventListener(MultipartURLLoaderEvent.DATA_PREPARE_PROGRESS, onWrite); |
| ml.addEventListener(MultipartURLLoaderEvent.DATA_PREPARE_COMPLETE, onWriteEnd); |
| |
| function addDifferentFields(){ |
| ml.addVariable('test', 'test variable'); |
| ml.addFile(data1, 'text.txt', 'Filedata', 'text/plain'); |
| ml.addFile(img, 'img.png', 'Filedata2'); |
| } |
| |
| function addMultiplyFiledata(){ |
| ml.addVariable('test', 'test variable'); |
| ml.addFile(data1, 'test1.txt', 'Filedata[]', 'text/plain'); |
| ml.addFile(img, 'img.png', 'Filedata[]'); |
| } |
| |
| upload_btn.addEventListener(MouseEvent.CLICK, uploadData); |
| async_ch.addEventListener(Event.CHANGE, onAsyncChange); |
| |
| function onAsyncChange(e:Event){ |
| if(async_ch.selected){ |
| upload_btn.label = 'Prepare'; |
| } else { |
| upload_btn.label = 'Upload'; |
| } |
| } |
| |
| function uploadData(e:MouseEvent){ |
| |
| //addMultiplyFiledata(); |
| if(async_ch.selected && !ml.PREPARED){ |
| addDifferentFields(); |
| ml.load('test.php', true); |
| upload_btn.enabled = false; |
| } else if(async_ch.selected && ml.PREPARED){ |
| ml.startLoad(); |
| } else if(!async_ch.selected){ |
| addDifferentFields(); |
| ml.load('test.php'); |
| } |
| } |
| |
| function onReady(e:Event){ |
| _txt.text = 'DATA UPLOADED'; |
| // |
| // You can access loader returned data: |
| var loader:URLLoader = MultipartURLLoader(e.currentTarget).loader; |
| var data:URLVariables = new URLVariables( loader.data ); |
| // |
| _txt.appendText('\nSERVER RESPONSE: ' + data.result); |
| } |
| |
| function onWriteEnd(e:MultipartURLLoaderEvent):void { |
| _txt.appendText('\nDATA PREPARE COMPLETE'); |
| upload_btn.label = 'Upload'; |
| upload_btn.enabled = true; |
| } |
| |
| function onWrite(e:MultipartURLLoaderEvent):void { |
| _txt.text = 'Prepare data: ' + e.bytesTotal + '/' + e.bytesWritten; |
| } |
| |
| |
| */ |
| |
| |
| /** |
| * Upload attachment second attempt |
| * */ |
| public function uploadAttachment(currentToken:String = null):void { |
| var object:URLVariables = new URLVariables(); |
| object.nonce = currentToken; |
| object.title = "New Post at " + new Date().toTimeString(); |
| object.slug = slugLabel.text; |
| object.post_slug = slugLabel.text; |
| object.content = contentTextArea.text; |
| object.dev = 1; |
| object.categories = "project"; |
| |
| service.parameters = object; |
| |
| if (fileToUpload && fileToUpload.data) { |
| multipartURLLoader.addFile(fileToUpload.data, fileToUpload.name, 'attachment'); |
| multipartURLLoader.load(url, asyncCheckbox.selected); |
| service.uploadAttachment(); |
| } |
| else { |
| //multipartURLLoader.addFile(testBitmapJPEGByteArray, 'img.png', 'attachment'); |
| log("Add media file"); |
| } |
| |
| |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| |
| |
| |
| return; |
| |
| |
| log("Upload attachment"); |
| //var url:String = postsURLInput.text + "?json=update_post&controller=posts&method=update_post&dev=1"; |
| var url:String = domainInput.text + "?json=posts/update_post"; |
| var params:URLVariables; |
| |
| destinationURL.text = url; |
| |
| multipartURLLoader.dataFormat = URLLoaderDataFormat.VARIABLES; |
| |
| multipartURLLoader.addEventListener(Event.COMPLETE, onReady); |
| multipartURLLoader.addEventListener(MultipartURLLoaderEvent.DATA_PREPARE_PROGRESS, onWrite); |
| multipartURLLoader.addEventListener(MultipartURLLoaderEvent.DATA_PREPARE_COMPLETE, onWriteEnd); |
| |
| |
| multipartURLLoader.addVariable("id", idLabel.text); |
| multipartURLLoader.addVariable("nonce", currentToken); |
| //multipartURLLoader.addFile(testTextFileByteArray, 'text.txt', 'Filedata', 'text/plain'); |
| //multipartURLLoader.addFile(testBitmapJPEGByteArray, 'img.png', 'Filedata2'); |
| |
| if (fileToUpload && fileToUpload.data) { |
| multipartURLLoader.addFile(fileToUpload.data, fileToUpload.name, 'attachment'); |
| multipartURLLoader.load(url, asyncCheckbox.selected); |
| } |
| else { |
| //multipartURLLoader.addFile(testBitmapJPEGByteArray, 'img.png', 'attachment'); |
| log("Add media file"); |
| } |
| |
| //multipartURLLoader.addVariable('test', 'test variable'); |
| //multipartURLLoader.addFile(data1, 'test1.txt', 'Filedata[]', 'text/plain'); |
| //multipartURLLoader.addFile(img, 'img.png', 'Filedata[]'); |
| |
| |
| |
| log(); |
| time = getTimer(); |
| uploadPending = false; |
| |
| |
| |
| } |
| |
| |
| /* |
| public function addDifferentFields(){ |
| multipartURLLoader.addVariable('test', 'test variable'); |
| multipartURLLoader.addFile(data1, 'text.txt', 'Filedata', 'text/plain'); |
| multipartURLLoader.addFile(img, 'img.png', 'Filedata2'); |
| } |
| |
| public function addMultiplyFiledata(){ |
| multipartURLLoader.addVariable('test', 'test variable'); |
| multipartURLLoader.addFile(data1, 'test1.txt', 'Filedata[]', 'text/plain'); |
| multipartURLLoader.addFile(img, 'img.png', 'Filedata[]'); |
| }*/ |
| |
| |
| /** |
| * Upload async checkbox change |
| * */ |
| public function onAsyncChange(e:Event):void { |
| if(asyncCheckbox.selected){ |
| //upload_btn.label = 'Prepare'; |
| } else { |
| //upload_btn.label = 'Upload'; |
| } |
| } |
| |
| /** |
| * Upload data test |
| * */ |
| public function uploadData(e:MouseEvent):void { |
| |
| //addMultiplyFiledata(); |
| if(asyncCheckbox.selected && !multipartURLLoader.PREPARED){ |
| //addDifferentFields(); |
| multipartURLLoader.load('test.php', true); |
| //upload_btn.enabled = false; |
| } else if(asyncCheckbox.selected && multipartURLLoader.PREPARED){ |
| multipartURLLoader.startLoad(); |
| } else if(!asyncCheckbox.selected){ |
| //addDifferentFields(); |
| multipartURLLoader.load('test.php'); |
| } |
| } |
| |
| /** |
| * On upload complete ready |
| * */ |
| public function onReady(e:Event):void { |
| log("Upload complete"); |
| //resultTextArea.text = 'DATA UPLOADED'; |
| |
| // You can access loader returned data: |
| var loader:URLLoader = MultipartURLLoader(e.currentTarget).loader; |
| var data:URLVariables = new URLVariables( loader.data ); |
| var result:String = (loader.data as String).toString(); |
| var item:Object = loader.data; |
| |
| var currentTime:int = getTimer(); |
| var timeLabelValue:String = "Time: " + String(currentTime-time) + "ms"; |
| |
| |
| try { |
| item = JSON.parse(loader.data); |
| timeLabelValue += ". Parse time: " + String(getTimer()- currentTime) + "ms"; |
| log(ObjectUtil.toString(item)); |
| } |
| catch (e:Error) { |
| // Error #1132: Invalid JSON parse input. |
| log("ERROR:" + e.message); |
| return; |
| } |
| |
| if (item && item.post) { |
| updatePostForm(item); |
| } |
| |
| log(ObjectUtil.toString(item)); |
| |
| //resultTextArea.text = ObjectUtil.toString(data); |
| } |
| |
| /** |
| * On write end |
| * */ |
| public function onWriteEnd(e:MultipartURLLoaderEvent):void { |
| resultsTextArea.appendText('\nDATA PREPARE COMPLETE'); |
| //upload_btn.label = 'Upload'; |
| //upload_btn.enabled = true; |
| } |
| |
| /** |
| * On write start |
| * */ |
| public function onWrite(e:MultipartURLLoaderEvent):void { |
| log('Prepare data: ' + e.bytesTotal + '/' + e.bytesWritten); |
| } |
| |
| /** |
| * Upload attachment first attempt |
| * |
| * Doesn't work because login cookies are not sent |
| * by file.upload call. |
| * */ |
| public function uploadAttachmentFirstAttempt(currentToken:String = null):void { |
| log("Upload attachment"); |
| //var url:String = postsURLInput.text + "?json=update_post&controller=posts&method=update_post&dev=1"; |
| var url:String = domainInput.text + "?json=posts/update_post"; |
| var params:URLVariables; |
| |
| destinationURL.text = url; |
| |
| uploadRequest = new URLRequest(); |
| uploadRequest.url = url; |
| params = new URLVariables(); |
| params.id = idLabel.text; |
| params.nonce = currentToken; |
| params.title = titleInput.text + new Date().seconds; |
| uploadRequest.data = params; |
| uploadRequest.method = URLRequestMethod.POST; |
| |
| fileToUpload.addEventListener(ProgressEvent.PROGRESS , onUploadProgress); |
| fileToUpload.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, onUploadComplete); |
| fileToUpload.addEventListener(IOErrorEvent.IO_ERROR, onUploadFileError); |
| fileToUpload.upload(uploadRequest, "attachment"); |
| fileToUpload.data==null ? log("select a file") : 0; |
| |
| log(); |
| time = getTimer(); |
| uploadPending = false; |
| } |
| |
| |
| /** |
| * Get attachments |
| * */ |
| public function getAttachments():void { |
| //var url:String = domainInput.text + attachmentsQueryInput.text; |
| |
| service.getAttachments(); |
| service.addEventListener(WPServiceEvent.RESULT, onGetAttachmentsHandler); |
| service.addEventListener(WPServiceEvent.FAULT, onGetAttachmentsFaultHandler); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| |
| } |
| |
| /** |
| * Get list of posts |
| * */ |
| public function getPosts():void { |
| //var url:String = domainInput.text + postsQueryInput.text; |
| service.getPosts(); |
| service.addEventListener(WPServiceEvent.RESULT, onGetPostsHandler); |
| service.addEventListener(WPServiceEvent.FAULT, onGetPostsFaultHandler); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Search list of posts |
| * */ |
| public function searchPosts():void { |
| var url:String = domainInput.text + searchQueryInput.text; |
| service.getPosts(); |
| service.addEventListener(WPServiceEvent.RESULT, onGetPostsHandler); |
| service.addEventListener(WPServiceEvent.FAULT, onGetPostsFaultHandler); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Is user logged in |
| * */ |
| public function isUserLoggedIn():void { |
| service.isUserLoggedIn(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Get logged in user |
| * */ |
| public function getLoggedInUser():void { |
| service.getLoggedInUser(); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Get list of projects |
| * */ |
| public function getProjects():void { |
| //var url:String = domainInput.text + getProjectsQueryInput.text; |
| service.getProjects(); |
| service.addEventListener(WPServiceEvent.RESULT, onGetPostsHandler); |
| service.addEventListener(WPServiceEvent.FAULT, onGetPostsFaultHandler); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Submit url just as it is |
| * */ |
| public function submitURL():void { |
| var url:String = destinationURL.text; |
| service.sendURL(url); |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Get list of categories |
| * */ |
| public function getCategories():void { |
| service.getCategories(); |
| //service.addEventListener(WPServiceEvent.RESULT, onGenericResult); |
| //service.addEventListener(WPServiceEvent.FAULT, onGenericFault); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Get category |
| * */ |
| public function getCategory():void { |
| service.getCategory(getCategoryInput.text, getCategoryParentInput.text as int); |
| //service.addEventListener(WPServiceEvent.RESULT, onGenericResult); |
| //service.addEventListener(WPServiceEvent.FAULT, onGenericFault); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| /** |
| * Create category |
| * */ |
| public function createCategory():void { |
| service.createCategory(createCategoryInput.text, createCategoryParentInput.text as int); |
| //service.addEventListener(WPServiceEvent.RESULT, onGenericResult); |
| //service.addEventListener(WPServiceEvent.FAULT, onGenericFault); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| |
| /** |
| * Get posts by user |
| * */ |
| public function getPostsByUser():void { |
| if (postsByAuthorQueryInput.text!="") { |
| service.getPostsByUser(postsByAuthorQueryInput.text as int); |
| service.addEventListener(WPServiceEvent.RESULT, onGenericResult); |
| service.addEventListener(WPServiceEvent.FAULT, onGenericFault); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| else { |
| log("Please enter a user ID"); |
| } |
| } |
| |
| |
| /** |
| * Get posts by current author |
| * */ |
| public function getPostsByCurrentAuthor():void { |
| |
| if (currentUserID==-1) { |
| log("Login to continue"); |
| } |
| service.getPostsByUser(currentUserID); |
| service.addEventListener(WPServiceEvent.RESULT, onGenericResult); |
| service.addEventListener(WPServiceEvent.FAULT, onGenericFault); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| } |
| |
| |
| /** |
| * Get Post |
| * */ |
| public function getPost(requireLogin:Boolean = false):void { |
| service.getPostById(query_txt.text); |
| service.addEventListener(WPServiceEvent.RESULT, onGetPostResult); |
| service.addEventListener(WPServiceEvent.FAULT, onGetPostFault); |
| destinationURL.text = service.url; |
| updateTimeMatrixField(service.call); |
| |
| } |
| |
| /** |
| * This is using the WordPress XMLRPC |
| * */ |
| public function login (requireLogin:Boolean = true):void { |
| // This is the rpc call. Because the xmlrpc service used in this example |
| // has functions with dots (.) in them the call function is used |
| // if there was no dot the call could be blogapi.getUserInfo () |
| var token:AsyncToken; |
| |
| if (requireLogin) { |
| //token = blogapi.call(call_txt.text, "", user_txt.text, password_txt.text); |
| } |
| else { |
| //token = blogapi.call(call_txt.text, ""); |
| } |
| |
| var tresponder:ItemResponder = new ItemResponder(this.showUserInfo, this.onFault); |
| |
| token.addResponder(tresponder); |
| } |
| |
| //---------------------------------- |
| // |
| // HANDLERS |
| // |
| //---------------------------------- |
| |
| public function showUserInfo(event:WPServiceEvent, token:Object = null):void { |
| log("User: "+event.data.nickname + "User info result"); |
| } |
| |
| public function onFault (event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + " " + event.faultCode); |
| } |
| |
| /** |
| * On generic result result |
| * */ |
| public function onGenericResult(event:WPServiceEvent, token:Object = null):void { |
| var result:String = event.text as String; |
| var object:Object; |
| log(result); |
| |
| var currentTime:int = getTimer(); |
| var timeLabelValue:String = "Time: " + String(currentTime-time) + "ms"; |
| |
| try { |
| object = JSON.parse(result); |
| timeLabelValue += ". Parse time: " + String(getTimer()- currentTime) + "ms"; |
| log(ObjectUtil.toString(object)); |
| } |
| catch (e:Error) { |
| // Error #1132: Invalid JSON parse input. |
| //resultTextArea.text = "ERROR:" + e.message; |
| log("ERROR:" + e.message); |
| log(e.message + "\n" + result); |
| |
| } |
| |
| timeLabel.text = timeLabelValue; |
| //resultTextArea.text = "User: "+event.result,"User info result"; |
| } |
| |
| /** |
| * On get post result |
| * */ |
| public function onGetPostResult (event:WPServiceEvent, token:Object = null):void { |
| service.removeEventListener(WPServiceEvent.RESULT, onGetPostResult); |
| service.removeEventListener(WPServiceEvent.FAULT, onGetPostFault); |
| updateTimeMatrixField(null, true); |
| } |
| |
| /** |
| * On get post fault |
| * */ |
| public function onGetPostFault (event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + "\n" + event.faultCode); |
| service.removeEventListener(WPServiceEvent.RESULT, onGetPostResult); |
| service.removeEventListener(WPServiceEvent.FAULT, onGetPostFault); |
| updateTimeMatrixField(null, true); |
| } |
| |
| /** |
| * On generic post fault |
| * */ |
| public function onGenericFault (event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + "\n" + event.faultCode); |
| } |
| |
| /** |
| * On update result handler |
| * */ |
| public function onUpdateResultHandler (event:WPServiceEvent, token:Object = null):void { |
| var result:String = event.text as String; |
| var object:Object; |
| log(result); |
| |
| log("Update result handler"); |
| |
| service.removeEventListener(WPServiceEvent.RESULT, onUpdateResultHandler); |
| service.removeEventListener(WPServiceEvent.FAULT, onUpdateFaultHandler); |
| |
| var currentTime:int = getTimer(); |
| var timeLabelValue:String = "Time: " + String(currentTime-time) + "ms"; |
| |
| try { |
| object = JSON.parse(result); |
| timeLabelValue += ". Parse time: " + String(getTimer()- currentTime) + "ms"; |
| log(ObjectUtil.toString(object)); |
| } |
| catch (e:Error) { |
| // Error #1132: Invalid JSON parse input. |
| log("ERROR:" + e.message); |
| log("ERROR:" + e.message); |
| return; |
| } |
| |
| timeLabel.text = timeLabelValue; |
| |
| if (object && object.post) { |
| titleInput.text = object.post.title; |
| contentTextArea.text = object.post.content; |
| //statusLabel.text = object.post.status; |
| } |
| |
| if (object && object.status=="error") { |
| if (object.error.indexOf("edit_post")!=-1) { |
| //resultTextArea.text = "ERROR:" + object.error; |
| } |
| else if (object.error.indexOf("get_nonce")!=-1) { |
| //resultTextArea.text = "ERROR:" + object.error; |
| } |
| else { |
| //resultTextArea.text = "ERROR:" + object.error; |
| } |
| } |
| |
| if (object && object.count) { |
| //resultTextArea.text = "May not have saved"; |
| } |
| |
| //resultTextArea.text = "User: "+event.result,"User info result"; |
| } |
| |
| |
| /** |
| * On Get Info result handler |
| * */ |
| public function onGetInfoResult(event:WPServiceEvent):void { |
| var result:String = event.text as String; |
| var object:Object; |
| log(result); |
| |
| var currentTime:int = getTimer(); |
| var timeLabelValue:String = "Time: " + String(currentTime-time) + "ms"; |
| |
| try { |
| object = JSON.parse(result); |
| timeLabelValue += ". Parse time: " + String(getTimer()- currentTime) + "ms"; |
| log(ObjectUtil.toString(object)); |
| } |
| catch (e:Error) { |
| // Error #1132: Invalid JSON parse input. |
| log("ERROR:" + e.message); |
| return; |
| } |
| |
| timeLabel.text = timeLabelValue; |
| |
| if (object && object.posts) { |
| |
| } |
| |
| //resultTextArea.text = "User: "+event.result,"User info result"; |
| } |
| |
| /** |
| * On get info fault |
| * */ |
| public function onGetInfoFault(event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + " " + event.faultCode); |
| } |
| |
| /** |
| * On Create Post result |
| * */ |
| public function onCreatePostResult(event:WPServiceEvent):void { |
| var result:String = event.text as String; |
| var object:Object; |
| log(result); |
| log("Creating post result handler"); |
| |
| var currentTime:int = getTimer(); |
| var timeLabelValue:String = "Time: " + String(currentTime-time) + "ms"; |
| |
| try { |
| object = JSON.parse(result); |
| timeLabelValue += ". Parse time: " + String(getTimer()- currentTime) + "ms"; |
| log(ObjectUtil.toString(object)); |
| |
| if (object && object.post) { |
| updatePostForm(object.post); |
| } |
| } |
| catch (e:Error) { |
| // Error #1132: Invalid JSON parse input. |
| log("ERROR:" + e.message); |
| log("ERROR:" + e.message); |
| return; |
| } |
| |
| timeLabel.text = timeLabelValue; |
| |
| service.removeEventListener(WPServiceEvent.RESULT, onCreatePostResult); |
| service.removeEventListener(WPServiceEvent.FAULT, onCreatePostFault); |
| |
| //resultTextArea.text = "User: "+event.result,"User info result"; |
| } |
| |
| /** |
| * On Create post fault |
| * */ |
| public function onCreatePostFault(event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + " " + event.faultCode); |
| service.removeEventListener(WPServiceEvent.RESULT, onCreatePostResult); |
| service.removeEventListener(WPServiceEvent.FAULT, onCreatePostFault); |
| } |
| |
| /** |
| * On get attachments |
| * */ |
| public function onGetAttachmentsHandler(event:WPServiceEvent):void { |
| log(service.results); |
| service.removeEventListener(WPServiceEvent.RESULT, onGetAttachmentsHandler); |
| service.removeEventListener(WPServiceEvent.FAULT, onGetAttachmentsFaultHandler); |
| updateTimeMatrixField(null, true); |
| |
| if (service.data) { |
| attachmentsCollection.source = service.data as Array; |
| } |
| |
| attachmentsList.selectedIndex = -1; |
| |
| } |
| |
| /** |
| * On get posts fault |
| * */ |
| public function onGetPostsFaultHandler(event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + " "+ event.faultCode); |
| } |
| |
| |
| /** |
| * On Get Posts Result |
| * */ |
| public function onGetPostsHandler(event:WPServiceEvent):void { |
| var result:String = event.text as String; |
| var object:Object; |
| log(result); |
| |
| var currentTime:int = getTimer(); |
| var timeLabelValue:String = "Time: " + String(currentTime-time) + "ms"; |
| |
| try { |
| object = JSON.parse(result); |
| timeLabelValue += ". Parse time: " + String(getTimer()- currentTime) + "ms"; |
| log(ObjectUtil.toString(object)); |
| } |
| catch (e:Error) { |
| // Error #1132: Invalid JSON parse input. |
| log("ERROR:" + e.message); |
| log(e.message + "\n" + result); |
| //return; |
| } |
| |
| timeLabel.text = timeLabelValue; |
| |
| if (object && object is Object && object.posts) { |
| postsCollection.source = object.posts; |
| postsCountLabel.text = "" + object.count + " of " + object.count_total; |
| postsCountLabel.text += ". Pages: " + object.pages; |
| } |
| |
| postsList.selectedIndex = -1; |
| |
| //resultTextArea.text = "User: "+event.result,"User info result"; |
| } |
| |
| /** |
| * On get attachments fault |
| * */ |
| public function onGetAttachmentsFaultHandler(event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + " " + event.faultCode); |
| service.removeEventListener(WPServiceEvent.RESULT, onGetAttachmentsHandler); |
| service.removeEventListener(WPServiceEvent.FAULT, onGetAttachmentsFaultHandler); |
| } |
| |
| /** |
| * On Update fault |
| * */ |
| public function onUpdateFaultHandler (event:WPServiceEvent, token:Object=null):void { |
| log(Object(event.faultEvent).faultString + " " + event.faultCode); |
| service.removeEventListener(WPServiceEvent.RESULT, onUpdateResultHandler); |
| service.removeEventListener(WPServiceEvent.FAULT, onUpdateFaultHandler); |
| } |
| |
| /** |
| * Posts list change handler |
| * */ |
| protected function postsList_changeHandler(event:IndexChangeEvent):void {
|
| var item:Object = postsList.selectedItem; |
| log(ObjectUtil.toString(item)); |
| updatePostForm(item);
|
| } |
| |
| /** |
| * Update form with post item |
| * */ |
| protected function updatePostForm(item:Object):void { |
| // log("Update form with selected post"); |
| |
| if (item) { |
| authorLabel.text = item.author.name; |
| titleInput.text = item.title; |
| contentTextArea.text = item.content; |
| typeLabel.text = item.type; |
| dateLabel.text = item.date; |
| modifiedDateLabel.text = item.modified; |
| //statusLabel.text = item.status; |
| urlLabel.text = item.url; |
| //commentCountLabel.text = item.comment_count; |
| idLabel.text = item.id; |
| slugLabel.text = item.slug; |
| |
| attachmentsCollection.source = item.attachments; |
| categoriesCollection.source = item.categories; |
| commentsCollection.source = item.comments; |
| tagsCollection.source = item.tags; |
| |
| statusDropdownList.selectedItem = item.status; |
| attachmentPreview.source = null; |
| |
| var fields:Array = []; |
| |
| for (var property:String in item.custom_fields) { |
| fields.push({label:property,data:item.custom_fields[property]}); |
| } |
| |
| customFieldsCollection.source = fields; |
| } |
| |
| attachmentsList.selectedIndex = -1;
|
| categoriesList.selectedIndex = -1;
|
| commentsList.selectedIndex = -1;
|
| customFieldsList.selectedIndex = -1;
|
| tagsList.selectedIndex = -1;
|
| } |
| |
| /** |
| * Attachment change handler |
| * */ |
| protected function attachmentsList_changeHandler(event:IndexChangeEvent):void {
|
| var item:Object = attachmentsList.selectedItem; |
| var mimeType:String; |
| log(ObjectUtil.toString(item)); |
| |
| if (item) { |
| mimeType = item.mime_type; |
| |
| if (mimeType=="image/png" || |
| mimeType=="image/jpg" || |
| mimeType=="image/jpeg") { |
| attachmentPreview.source = item.url; |
| } |
| }
|
| } |
| |
| /** |
| * Categories list change handler |
| * */ |
| protected function categoriesList_changeHandler(event:IndexChangeEvent):void { |
| var item:Object = categoriesList.selectedItem;
|
| log(ObjectUtil.toString(item));
|
| } |
| |
| /** |
| * Tags list change handler |
| * */ |
| protected function tagsList_changeHandler(event:IndexChangeEvent):void { |
| var item:Object = tagsList.selectedItem;
|
| log(ObjectUtil.toString(item));
|
| }
|
| |
| /** |
| * Custom fields list change handler |
| * */ |
| protected function customFieldsList_changeHandler(event:IndexChangeEvent):void { |
| var item:Object = customFieldsList.selectedItem;
|
| log(ObjectUtil.toString(item));
|
| } |
| |
| /** |
| * File upload progress |
| * */ |
| protected function onUploadProgress(event:ProgressEvent):void {
|
| log("Upload progress");
|
| } |
| |
| /** |
| * File upload complete |
| * */
|
| protected function onUploadComplete(event:DataEvent):void { |
| log("Upload complete"); |
| var item:Object = event.text; |
| log(ObjectUtil.toString(item));
|
| }
|
| |
| /** |
| * File upload error |
| * */ |
| protected function onUploadFileError(event:IOErrorEvent):void { |
| log("Upload file error");
|
|
|
| } |
| |
| /** |
| * File selected |
| * */ |
| protected function fileSelected(event:Event):void {
|
| var byteArray:ByteArray = fileToUpload.data; |
| |
| fileToUpload.load(); |
| } |
| |
| protected function applicationCompleteHandler(event:FlexEvent):void {
|
| // create WPService |
| |
| service = new WPService(); |
| service.host = domainInput.text; |
| service.site = siteInput.text; |
| service.permalinkPath = permalinkPathInput.text; |
| service.addEventListener(WPServiceEvent.RESULT, onWPServiceResult, false, 0, true); |
| service.addEventListener(WPServiceEvent.FAULT, onWPServiceFault, false, 0, true); |
| |
| service.getLoggedInUser(); |
| |
| // example of a text file |
| testTextFileByteArray = new ByteArray(); |
| testTextFileByteArray.writeUTFBytes("This is a test text file"); |
| testTextFileByteArray.position = 0; |
| |
| // example of a bitmap image |
| testBitmap = new BitmapData(1000, 1000, false, 0x000000); |
| testBitmap.perlinNoise(100, 80, 6, Math.floor(Math.random() * 10), false, true, 1); |
| /* |
| var j_encoder:JPEGEncoder = new JPEGEncoder(90); |
| testBitmapJPEGByteArray = j_encoder.encode(testBitmap); |
| */ |
| multipartURLLoader = new MultipartURLLoader(); |
| |
| //ExternalInterface.call("Radiate.getInstance"); |
| ExternalInterface.call("Radiate.instance.setFlashInstance", ExternalInterface.objectID); |
| ExternalInterface.addCallback("notLoggedIn", notLoggedIn); |
| ExternalInterface.addCallback("notOnServer", notOnServer); |
| } |
| |
| /** |
| * Not logged in |
| * */ |
| public function notLoggedIn():void { |
| log("Not logged in. To save your work on the server you must register and then login."); |
| } |
| |
| /** |
| * Not on same server |
| * */ |
| public function notOnServer():void { |
| log("Not running on the same server. This must be run on the same server."); |
| } |
| /** |
| * |
| * */ |
| protected function onWPServiceResult(event:WPServiceEvent):void {
|
| |
| if (event.data) { |
| log(ObjectUtil.toString(event.data)); |
| } |
| else { |
| log(event.text); |
| } |
| |
| if (service.call==WPServiceEvent.IS_USER_LOGGED_IN || |
| service.call==WPServiceEvent.GET_LOGGED_IN_USER || |
| service.call==WPServiceEvent.LOGIN_USER || |
| service.call==WPServiceEvent.LOGOUT_USER) { |
| |
| if (event.data) { |
| userIcon.source = event.data.avatar; |
| userNameLabel.text = event.data.displayName; |
| |
| } |
| |
| if (service.updateSitePathOnLogin) { |
| siteInput.text = service.site; |
| } |
| |
| } |
| |
| updateTimeMatrixField(service.call, true); |
| } |
| |
| /** |
| * |
| * */ |
| protected function onWPServiceFault(event:WPServiceEvent):void {
|
| log(event.faultCode); |
| |
| updateTimeMatrixField(service.call, true); |
| } |
| /* |
| protected function onGetLoggedInHandler(event:WPServiceEvent):void {
|
|
|
| } |
| |
| protected function onGetLoggedInFaultHandler(event:WPServiceEvent):void {
|
|
|
| }*/ |
| |
| protected function postsURLInput_changeHandler(event:TextOperationEvent):void {
|
| host = domainInput.text; |
| service.host = host;
|
| } |
| |
| protected function destinationURL_enterHandler(event:FlexEvent):void {
|
| submitURL();
|
| } |
| |
| protected function permalinkCheckbox_changeHandler(event:Event):void {
|
| service.usePermalinks = permalinkCheckbox.selected;
|
| } |
| |
| protected function permalinkPathInput_changeHandler(event:TextOperationEvent):void { |
| service.permalinkPath = permalinkPathInput.text;
|
| } |
| |
| protected function siteInput_changeHandler(event:TextOperationEvent):void {
|
| service.site = siteInput.text;
|
| } |
| |
| public function log(value:String = ""):void { |
| resultsTextArea.text = value; |
| } |
| |
| protected function visitBlogLabel_clickHandler(event:MouseEvent):void { |
| var url:String = service.host + service.site;
|
| navigateToURL(new URLRequest(url), "_blank");
|
| } |
| |
| protected function redirectToUserSiteCheckbox_changeHandler(event:Event):void {
|
| service.updateSitePathOnLogin = redirectToUserSiteCheckbox.selected;
|
| } |
| |
| ]]> |
| </fx:Script> |
| |
| <fx:Declarations> |
| <!-- test user |
| http://www.radii8.com/blog |
| /xmlrpc.php |
| --> |
| |
| |
| <!-- RPC Object --> |
| <!-- ADD to the project to get this to run |
| /as3rpclib/bin/as3rpclib-sdk4.9.1.swc--> |
| <!--<ns:XMLRPCObject id="blogapi" |
| destination="{endpoint_txt.text}" |
| endpoint="{rooturl_txt.text}"/>--> |
| |
| |
| |
| <!-- JSON RPC Object --> |
| <s:HTTPService id="jsonAPI" /> |
| |
| <s:HTTPService id="jsonGetAttachmentsAPI" /> |
| |
| <s:HTTPService id="jsonGenericAPI" /> |
| |
| <s:ArrayCollection id="postsCollection" /> |
| <s:ArrayCollection id="attachmentsCollection" /> |
| <s:ArrayCollection id="commentsCollection" /> |
| <s:ArrayCollection id="categoriesCollection" /> |
| <s:ArrayCollection id="customFieldsCollection" /> |
| <s:ArrayCollection id="tagsCollection" /> |
| <s:ArrayCollection id="statusCollection"> |
| <s:source> |
| <fx:String>draft</fx:String> |
| <fx:String>publish</fx:String> |
| </s:source> |
| </s:ArrayCollection> |
| |
| <!-- Validation --> |
| <mx:RegExpValidator id="regExpV" |
| expression="{urlregexp}" |
| flags="g" |
| noMatchError="Please enter a valid URL" |
| property="text" |
| source="{rooturl_txt}"/> |
| |
| <mx:RegExpValidator id="endpointregExpV" |
| expression="{endpointregexp}" |
| flags="g" |
| noMatchError="Please enter a valid endpoint. It MUST start with a /" |
| property="text" |
| source="{this.endpoint_txt}"/> |
| |
| <fc:MiniInspector showDisplayObjectOutlines="true"/> |
| </fx:Declarations> |
| |
| |
| <!-- User Interface - XMLRPC example--> |
| <mx:Panel width="380" left="0" top="20" visible="false"> |
| <mx:Form x="0" y="0" width="350" > |
| <mx:FormHeading label="Blog Login" textAlign="left" /> |
| <mx:FormItem label="Root URL"> |
| <mx:TextInput id="rooturl_txt" text="http://www.radii8.com/blog"/> |
| </mx:FormItem> |
| <mx:FormItem label="Xmlrpc endpoint"> |
| <mx:TextInput id="endpoint_txt" text="/xmlrpc.php"/> |
| </mx:FormItem> |
| <mx:FormItem label="Call"> |
| <mx:TextInput id="call_txt" text="wp.getProfile"/> |
| </mx:FormItem> |
| <mx:FormItem label="Username"> |
| <mx:TextInput id="user_txt" text="remote"/> |
| </mx:FormItem> |
| <mx:FormItem label="Password"> |
| <mx:TextInput id="password_txt" displayAsPassword="true" text="H8C53JKaD0LDhEIp"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <mx:Button id="send_btn" label="Send" click="login();"/> |
| <mx:Button id="send_btn2" label="Send without Login" click="login(false);"/> |
| </mx:FormItem> |
| </mx:Form> |
| </mx:Panel> |
| |
| <!-- User Interface --> |
| <s:VGroup id="containerVGRoup" left="20" top="70" width="100%" bottom="60" right="20"> |
| <s:HGroup gap="16" width="100%" height="100%"> |
| |
| <!-- POSTS --> |
| <mx:Panel left="20" top="40" height="{containerVGRoup.height}" verticalScrollPolicy="on"> |
| <mx:Form x="0" y="0" width="350" height="100%"> |
| |
| <mx:FormHeading label="REGISTER" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="newUsernameInput" |
| text="" |
| prompt="Username" |
| width="100%"/> |
| <s:TextInput id="emailInput" |
| text="" |
| prompt="EMail" |
| width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="registerButton" label="Register" click="registerUser();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="REGISTER SITE" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="newSiteUsernameInput" |
| text="" |
| prompt="Username" |
| width="100%"/> |
| <s:TextInput id="newSiteEmailInput" |
| text="" |
| prompt="EMail" |
| width="100%"/> |
| <s:TextInput id="newSiteNameInput" |
| text="" |
| prompt="Site name" |
| width="100%"/> |
| <s:TextInput id="newSiteTitleInput" |
| text="" |
| prompt="Site Title" |
| width="100%"/> |
| <s:CheckBox id="newSiteIsPublicCheckbox" |
| label="Is Public" |
| width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:HGroup> |
| <s:Button id="registerUserAndSiteButton" label="Register User and Site" click="registerUserAndSite();"/> |
| <s:Button id="registerSiteButton" label="Register Site" click="registerSite();"/> |
| </s:HGroup> |
| <s:TileGroup > |
| <s:Button id="isMultiSiteButton" label="Is Multi Site" click="isMultiSite();"/> |
| <s:Button id="isMainSiteButton" label="Is Main Site" click="isMainSite();"/> |
| <s:Button id="getCurrrentSiteButton" label="Get Current Site" click="getCurrentSite()"/> |
| <s:Button id="isSubDomainInstallButton" label="Is Sub Domain Install" click="isSubDomainInstalled()"/> |
| </s:TileGroup> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="LOGIN" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="usernameInput" |
| text="remote" |
| prompt="Username" |
| width="100%"/> |
| <s:TextInput id="passwordInput" |
| text="iwtlVqJ251RTWha976Pa" |
| displayAsPassword="true" |
| prompt="Password" |
| width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="loginButton" label="Login" click="loginUser();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="LOGOUT" textAlign="left"/> |
| <mx:FormItem> |
| <s:Button id="logoutButton" label="Logout" click="logoutUser();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="LOST PASSWORD" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="lostPasswordInput" |
| text="" |
| prompt="Username or email" |
| width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="lostPasswordButton" label="Lost Password" click="lostPassword();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="RESET PASSWORD" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="resetUsernameInput" |
| text="" |
| prompt="Username" |
| width="100%"/> |
| <s:TextInput id="keyInput" |
| text="" |
| prompt="Key" |
| width="100%"/> |
| <s:TextInput id="password1Input" |
| text="" |
| displayAsPassword="true" |
| prompt="Password" |
| width="100%"/> |
| <s:TextInput id="password2Input" |
| text="" |
| displayAsPassword="true" |
| prompt="Confirm password" |
| width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="resetPasswordButton" label="Reset Password" click="resetPassword();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET LOGGED IN USER" textAlign="left"/> |
| <mx:FormItem> |
| <s:Button id="getLoggedInUserButton" label="Get Logged In User" click="getLoggedInUser();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="IS USER LOGGED IN" textAlign="left"/> |
| <mx:FormItem> |
| <s:Button id="isUserLoggedInButton" label="Is User Logged In" click="isUserLoggedIn();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET INFO" textAlign="left"/> |
| <mx:FormItem> |
| <s:Button id="getInfoButton" label="Get Info" click="getAPIInfo();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET CATEGORIES" textAlign="left"/> |
| <mx:FormItem> |
| <s:Button id="getCategoriesButton" label="Get Categories" click="getCategories()"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET CATEGORY" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="getCategoryInput" text="" prompt="Name" width="100%"/> |
| <s:TextInput id="getCategoryParentInput" text="0" prompt="Parent" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getCategoryButton" label="Get Category" click="getCategory();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="CREATE CATEGORY" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="createCategoryInput" text="" prompt="Name" width="100%"/> |
| <s:TextInput id="createCategoryParentInput" text="0" prompt="Parent" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="createCategoryButton" label="Create Category" click="createCategory();"/> |
| </mx:FormItem> |
| |
| <s:Group width="100%"> |
| <controls:HorizontalLine /> |
| </s:Group> |
| |
| |
| <mx:FormHeading label="GET PROJECTS" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="getProjectsQueryInput" text="?json=projects/get_projects&status=any" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getProjectsButton" label="Get Projects" click="getProjects();"/> |
| </mx:FormItem> |
| |
| |
| <mx:FormHeading label="SEARCH" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="searchQueryInput" text="?json=get_search_results&search=" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getSearchButton" label="Search" click="searchPosts();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="CREATE POST API" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="query2_txt" text="?json=create_post" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="createPostButton" label="Create Post" click="createPost();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET ATTACHMENTS" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="attachmentsQueryInput" text="?json=attachments/get_attachments&parent=0" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getAttachmentsButton" label="Get Attachments" click="getAttachments();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET POST" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="query_txt" text="?json=get_post&id=212" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getPostButton" label="Get Post" click="getPost();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET POSTS" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="postsQueryInput" text="?json=get_posts&count=6" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getPostsButton" label="Get Posts" click="getPosts();"/> |
| </mx:FormItem> |
| |
| |
| <mx:FormHeading label="GET POSTS BY AUTHOR" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="postsByAuthorQueryInput" text="?json=get_author_posts&id=1" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getPostsByAuthorButton" label="Get Posts By User" click="getPostsByUser();"/> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="GET POSTS BY CURRENT AUTHOR" textAlign="left"/> |
| <mx:FormItem label="" width="100%"> |
| <s:TextInput id="postsByCurrentAuthorQueryInput" text="?json=get_current_author" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="getPostsByCurrentAuthorButton" label="Get Posts by Current Author" click="getPostsByCurrentAuthor();"/> |
| </mx:FormItem> |
| </mx:Form> |
| </mx:Panel> |
| |
| |
| |
| <mx:Panel height="100%" width="100%" layout="vertical" |
| paddingLeft="10" paddingTop="10" paddingBottom="10" paddingRight="10"> |
| |
| <mx:Form width="100%" height="100%"> |
| |
| <mx:FormHeading label="RESPONSE" textAlign="left"/> |
| <mx:FormItem label="" width="100%" height="100%"> |
| <s:TextArea id="resultsTextArea" |
| prompt="Response data" |
| width="100%" |
| height="100%"/> |
| <s:HGroup width="100%"> |
| <s:Label id="timeLabel"/> |
| <s:Spacer width="100%"/> |
| <s:Button label="Clear" click="log('')"/> |
| </s:HGroup> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="POSTS" textAlign="left"/> |
| <mx:FormItem label="" width="100%" height="50%"> |
| <s:List id="postsList" width="100%" height="160" |
| dataProvider="{postsCollection}" |
| labelField="title" |
| change="postsList_changeHandler(event)"/> |
| <s:Label id="postsCountLabel" /> |
| </mx:FormItem> |
| </mx:Form> |
| |
| |
| </mx:Panel> |
| |
| <mx:Panel height="100%" layout="horizontal" width="100%"> |
| <mx:Form x="0" y="0" width="100%" height="100%"> |
| <mx:FormHeading label="POST" textAlign="left"/> |
| <mx:FormItem label="Title" width="100%"> |
| <s:TextInput id="titleInput" text="" width="100%"/> |
| </mx:FormItem> |
| <mx:FormItem label="Content" width="100%"> |
| <s:TextArea id="contentTextArea" text="" width="100%" heightInLines="5"/> |
| </mx:FormItem> |
| <mx:FormItem label="Status" width="100%"> |
| <s:DropDownList id="statusDropdownList" |
| dataProvider="{statusCollection}"/> |
| </mx:FormItem> |
| <mx:FormItem label="Author" width="100%"> |
| <s:Label id="authorLabel" /> |
| </mx:FormItem> |
| <mx:FormItem label="ID" width="100%"> |
| <s:Label id="idLabel" /> |
| </mx:FormItem> |
| <mx:FormItem label="Type" width="100%"> |
| <s:Label id="typeLabel" /> |
| </mx:FormItem> |
| <mx:FormItem label="URL" width="100%"> |
| <s:Label id="urlLabel" /> |
| </mx:FormItem> |
| <mx:FormItem label="Date" width="100%"> |
| <s:Label id="dateLabel" /> |
| </mx:FormItem> |
| <mx:FormItem label="Modified" width="100%"> |
| <s:Label id="modifiedDateLabel" /> |
| </mx:FormItem> |
| <!--<mx:FormItem label="Comment Count" width="100%"> |
| <s:Label id="commentCountLabel" /> |
| </mx:FormItem>--> |
| <mx:FormItem label="Slug" width="100%"> |
| <s:Label id="slugLabel" /> |
| </mx:FormItem> |
| <mx:FormItem label="Token" width="100%"> |
| <s:Label id="updateTokenLabel" /> |
| </mx:FormItem> |
| <mx:FormItem> |
| <s:Button id="updateButton" label="Update" click="updatePost();"/> |
| <s:Button id="addMediaButton" label="Add Media" click="selectFileToUpload();"/> |
| <s:HGroup> |
| <s:Button id="uploadAttachmentButton" label="Upload" click="uploadAttachment()"/> |
| <s:CheckBox id="asyncCheckbox" label="Asynchronous" change="onAsyncChange(event)" /> |
| </s:HGroup> |
| </mx:FormItem> |
| </mx:Form> |
| |
| <mx:Form x="0" y="0" width="100%"> |
| <mx:FormHeading label=" " textAlign="left"/> |
| <mx:FormHeading label="Categories" width="100%"/> |
| <mx:FormItem label="" width="100%"> |
| <s:List id="categoriesList" |
| height="46" |
| dataProvider="{categoriesCollection}" |
| minWidth="100" |
| width="100%" |
| labelField="title" |
| change="categoriesList_changeHandler(event)" |
| /> |
| </mx:FormItem> |
| <mx:FormHeading label="Tags" width="100%"/> |
| <mx:FormItem label="" width="100%"> |
| <s:List id="tagsList" |
| width="100%" |
| minWidth="100" |
| height="44" |
| dataProvider="{tagsCollection}" |
| labelField="title" |
| change="tagsList_changeHandler(event)" |
| /> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="Custom" width="100%"/> |
| <mx:FormItem label="" width="100%"> |
| <s:List id="customFieldsList" |
| width="100%" |
| minWidth="100" |
| height="44" |
| dataProvider="{customFieldsCollection}" |
| change="customFieldsList_changeHandler(event)" |
| /> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="Comments" width="100%"/> |
| <mx:FormItem label="" width="100%"> |
| <s:List id="commentsList" |
| width="100%" |
| minWidth="100" |
| height="44" |
| dataProvider="{commentsCollection}" |
| labelField="content" |
| /> |
| </mx:FormItem> |
| |
| <mx:FormHeading label="Attachments" width="100%"/> |
| <mx:FormItem label="" width="100%"> |
| <s:List id="attachmentsList" |
| width="150" |
| minWidth="100" |
| height="80" |
| dataProvider="{attachmentsCollection}" |
| labelField="title" |
| change="attachmentsList_changeHandler(event)" |
| /> |
| <s:Image id="attachmentPreview" |
| width="150" |
| height="100" |
| showErrorSkin="true" |
| smooth="true" |
| enableLoadingState="true" |
| /> |
| </mx:FormItem> |
| |
| </mx:Form> |
| </mx:Panel> |
| |
| </s:HGroup> |
| </s:VGroup> |
| |
| <s:HGroup top="10" left="20" |
| right="20" |
| width="100%" verticalAlign="middle"> |
| <s:Label text="Host URL:"/> |
| <s:TextInput id="domainInput" |
| text="http://www.radii8.com" |
| prompt="http://www.domain.com" |
| minWidth="220" |
| change="postsURLInput_changeHandler(event)"/> |
| <s:TextInput id="siteInput" |
| text="/r8m/" |
| minWidth="10" |
| prompt="/blog/" |
| change="siteInput_changeHandler(event)" |
| /> |
| <s:TextInput id="permalinkPathInput" |
| text="api/" |
| prompt="api/" |
| minWidth="10" |
| enabled="{permalinkCheckbox.selected}" |
| change="permalinkPathInput_changeHandler(event)"/> |
| <s:CheckBox id="permalinkCheckbox" label="Permalink" |
| change="permalinkCheckbox_changeHandler(event)"/> |
| <s:CheckBox id="redirectToUserSiteCheckbox" label="Redirect After Login" |
| change="redirectToUserSiteCheckbox_changeHandler(event)"/> |
| <controls:Link id="visitBlogLabel4" text="Visit blog" click="visitBlogLabel_clickHandler(event)"/> |
| <s:Spacer width="100%"/> |
| <s:Label id="userNameLabel" /> |
| <s:Image id="userIcon" width="24" height="24"/> |
| </s:HGroup> |
| |
| <s:HGroup top="40" left="20" |
| right="20" |
| width="100%" verticalAlign="middle"> |
| <s:Label text="URL:"/> |
| <s:TextInput id="destinationURL" |
| prompt="Submitted URL" |
| width="100%" |
| enter="submitURL();" |
| /> |
| |
| <s:Button id="submitURLButton" label="Submit" click="submitURL();"/> |
| </s:HGroup> |
| |
| |
| |
| </s:Application> |