Заметки (notes: get, add, edit, delete и др.)

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Заметки (notes: get, add, edit, delete и др.)

Сообщение Александр »

Заметки (notes: get, add, edit, delete и др.)
ActionScript 3.0 (Adobe Flash CS4)

Приложение получает заметки пользователей, создает новые замети, редактирует, удаляет, создает новые комментарии, редактирует и удаляет их.

Для работы с методами ВКонтакте API используется измененная мною библиотека VkApi. Находится в архиве с исходником.


Описание используемых методов

notes.get
Возвращает список заметок, созданных пользователем.

notes.getById
Возвращает заметку, по её id.
nid - id запрашиваемой заметки.

notes.getFriendsNotes
Возвращает список заметок, друзей пользователя.

notes.add
Создает новую заметку у текущего пользователя.
title - заголовок заметки.
text - текст заметки.

notes.edit
Редактирует заметку текущего пользователя.
title - заголовок заметки.
text - текст заметки.

notes.delete
Удаляет заметку текущего пользователя.
nid - id удаляемой заметки.

notes.getComments
Возращает список комментариев к заметке.
nid - id заметки комментарии которой нужно вернуть.

notes.createComment
Добавляет новый комментарий к заметке.
nid - id заметки в которой нужно создать комментарий.
message - текст комментария (минимальная длина - 2 символа).

notes.editComment
Редактирует указанный комментарий у заметки.
сid - id комментария, котороый нужно отредактировать.
message - новый текст комментария (минимальная длина - 2 символа).

notes.deleteComment
Удаляет комментарий.
сid - id комментария, котороый нужно удалить.

notes.restoreComment
Восстанавливает удалённый комментарий.
сid - id комментария, котороый нужно восстановить.


В уроке не использованы все возможные способы работы с заметками. Например, параметры count, offset, privacy и comment_privacy в этом уроке не используются, но вы можете использовать их с этой библиотекой. Для чего нужны эти параметры - читайте в полном описании методов на сайте вконтакте.
В коде урока нет обработок ошибок, возвращаемых сервером.


Создание приложения

1. Добавляем на сцену:
Текстовые поля с именами:
- uid_tf (поле ввода id пользователя, заметки которого будем получать)
- nid_tf (поле ввода id заметки)
- title_tf (поле ввода заголовка заметки)
- text_tf (поле ввода текста заметки)
- message_tf (поле ввода текста комментария)
- cid_tf (поле ввода id комментария)
- result_tf (поле с результатами)

Кнопки с именами:
- get_btn
- getById_btn
- getFriendsNotes_btn
- add_btn
- edit_btn
- delete_btn
- getComments_btn
- createComment_btn
- editComment_btn
- deleteComment_btn
- restoreComment_btn


2. Создаём Main.as и пишем код:

Код: Выделить всё

/* http://flapps.ru/forum/ - форум о создании флеш приложений на основе ВКонтакте API */package {    import flash.net.*;    import flash.display.*;    import flash.events.*;    import flash.text.*;    import vk.VkApiNode;     public class Main extends Sprite {        private var api_id:Number=1727522;// ID приложения        private var api_secret:String="1gqE8m34rb";// секретный ключ        private var api:VkApiNode;        private var server_url;        private var viewer_id;        private var url_loader:URLLoader;        private var url_request:URLRequest;        private var query:String;        private var wrapper:Object;         public function Main():void {            this.addEventListener( Event.ADDED_TO_STAGE, onAddedToStage );        }         public function onAddedToStage(e: Event):void {            wrapper=Object(parent.parent);            // получаем api_settings из FlashVars            var flags=wrapper.application.parameters.api_settings;            // проверяем доступ к заметкам пользователя            if (Boolean(flags&2048)) {                // доступ разрешен                viewer_id=wrapper.application.parameters.viewer_id;                // определяем адрес сервиса API (vkontakte.ru или vk.com)                server_url=wrapper.application.parameters.api_url+'?';                                // заполняем текстовые поля                uid_tf.text=viewer_id;                title_tf.text='Создание приложений вконтакте';                text_tf.text='Я скачал исходник приложения на сайте http://flapps.ru';                message_tf.text='Я скачал исходник приложения на сайте http://flapps.ru';                                // добавляем действия кнопкам                get_btn.addEventListener(MouseEvent.CLICK, get_btnClick);                getById_btn.addEventListener(MouseEvent.CLICK, getById_btnClick);                getFriendsNotes_btn.addEventListener(MouseEvent.CLICK, getFriendsNotes_btnClick);                add_btn.addEventListener(MouseEvent.CLICK, add_btnClick);                edit_btn.addEventListener(MouseEvent.CLICK, edit_btnClick);                delete_btn.addEventListener(MouseEvent.CLICK, delete_btnClick);                getComments_btn.addEventListener(MouseEvent.CLICK, getComments_btnClick);                createComment_btn.addEventListener(MouseEvent.CLICK, createComment_btnClick);                editComment_btn.addEventListener(MouseEvent.CLICK, editComment_btnClick);                deleteComment_btn.addEventListener(MouseEvent.CLICK, deleteComment_btnClick);                restoreComment_btn.addEventListener(MouseEvent.CLICK, restoreComment_btnClick);                                // для работы с API                api=new VkApiNode(viewer_id,api_id,api_secret,false,'XML','2.0',server_url);            } else {                // доступа нет                // вызываем окно с настройками приложения (доступ к заметкам пользователя)                wrapper.external.showSettingsBox(2048);                // ПРИМЕЧАНИЕ! После вызова этого окна, логично использовать событие контейнера "onSettingsChanged".                // Но этот урок не по использованию контейнера, поэтому придется просто обновить страницу.                result_tf.text = 'Обновите страницу с приложением';            }        }         // получаем заметки пользователя        public function get_btnClick(e: MouseEvent):void {            var uid=int(uid_tf.text);// id пользователя            query=api.getNotes(uid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,notesGiven);            url_loader.load(url_request);        }         // заметки получены        public function notesGiven(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='Всего: '+response.count+'\n';            for each (var item in response.note) {                result_tf.appendText('nid: ' + item.nid + '\ntitle: ' +item.title + '\ntext: ' +item.text + '\ndate: ' +item.date + '\n\n');            }        }         // получаем заметку по id        public function getById_btnClick(e: MouseEvent):void {            var nid=int(nid_tf.text);// id заметки            query=api.getNoteById(nid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteByIdGiven);            url_loader.load(url_request);        }         // заметка получена        public function noteByIdGiven(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='id: '+response..id+'\ntitle: '+response..title+'\ntext: '+response..text+'\ndate: '+response..date+'\nuser_id: '+response..user_id;        }         // получаем заметки друзей        public function getFriendsNotes_btnClick(e: MouseEvent):void {            query=api.getFriendsNotes();            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,friendsNotesGiven);            url_loader.load(url_request);        }         // заметки друзей получены        public function friendsNotesGiven(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='Всего: '+response.count+'\n';            for each (var item in response.note) {                result_tf.appendText(item.first_name + ' ' + item.last_name + '\nnid: ' + item.id + '\ntitle: ' +item.title + '\ntext: ' +item.text + '\ndate: ' +item.date + '\n\n');            }        }         // создаем новую заметку        public function add_btnClick(e: MouseEvent):void {            var n_title=title_tf.text;// заголовок заметки            var n_text=text_tf.text;// текст заметки            query=api.addNote(n_title,n_text);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteAdded);            url_loader.load(url_request);        }         // заметка создана        public function noteAdded(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='nid: '+response.nid;        }         // редактируем заметку        public function edit_btnClick(e: MouseEvent):void {            var nid=nid_tf.text;// id заметки            var n_title=title_tf.text;// заголовок заметки            var n_text=text_tf.text;// текст заметки            query=api.editNote(nid,n_title,n_text);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteEdited);            url_loader.load(url_request);        }         // заметка изменена        public function noteEdited(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text=response[0];        }         // удаляем заметку        public function delete_btnClick(e: MouseEvent):void {            var nid=nid_tf.text;// id заметки            query=api.deleteNote(nid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteDeleted);            url_loader.load(url_request);        }         // заметка удалена        public function noteDeleted(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text=response[0];        }         // получаем список комментариев к заметке        public function getComments_btnClick(e: MouseEvent):void {            var nid=nid_tf.text;// id заметки            query=api.getNoteComments(nid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteCommentsGiven);            url_loader.load(url_request);        }         // комментарии получены        public function noteCommentsGiven(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='Всего: '+response.count+'\n';            for each (var item in response.comment) {                result_tf.appendText('id: ' + item.id + '\nmessage: ' +item.message + '\ndate: ' +item.date + '\n\n');            }        }         // добавляем комментарий к заметке        public function createComment_btnClick(e: MouseEvent):void {            var nid=nid_tf.text;// id заметки            var n_message=message_tf.text;// текст комментария            query=api.createNoteComment(nid,n_message);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteCommentCreated);            url_loader.load(url_request);        }         // комментарий добавлен        public function noteCommentCreated(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text='cid: '+response[0];        }         // изменяем текст комментария к заметке        public function editComment_btnClick(e: MouseEvent):void {            var cid=cid_tf.text;// id комментария            var n_message=message_tf.text;// текст комментария            query=api.editNoteComment(cid,n_message);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteCommentEdited);            url_loader.load(url_request);        }         // комментарий изменен        public function noteCommentEdited(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text=response[0];        }         // удаляем комментарий у заметки        public function deleteComment_btnClick(e: MouseEvent):void {            var cid=cid_tf.text;// id комментария            query=api.deleteNoteComment(cid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteCommentDeleted);            url_loader.load(url_request);        }         // комментарий удален        public function noteCommentDeleted(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text=response[0];        }          // восстанавливаем комментарий у заметки        public function restoreComment_btnClick(e: MouseEvent):void {            var cid=cid_tf.text;// id комментария            query=api.restoreNoteComment(cid);            url_request=new URLRequest(query);            url_loader=new URLLoader  ;            url_loader.addEventListener(Event.COMPLETE,noteCommentRestoreed);            url_loader.load(url_request);        }         // комментарий восстановлен        public function noteCommentRestoreed(event:Event):void {            var response:XML=new XML(url_loader.data);            result_tf.text=response[0];        }    }}
Заменяем api_id и api_secret на свои данные.


3. Подключаем Main.as к fla
Если не знаете как, то посмотрите как это было сделано в этом уроке http://flapps.ru/forum/topic3.html


4. Загружаем приложение в контакт
Редактирование -> Настройки -> Обновление SWF-приложения -> Обзор -> Начать загрузку.

- Если приложение выключено, то включаем
Редактирование -> Настройки -> Состояние -> Приложение включено и видно всем.

- Если выключен контейнер, то включаем
Редактирование -> Настройки -> Flash-контейнер -> Без отступов и элементов управления.


5. Всё готово!

Исходник http://flapps.ru/example/notes.rar
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Заметки (notes: get, add, edit и др.)

Сообщение 112 »

круто спасибо это мне скоро очень понадобиться))))
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение revizor »

а как выполнить работу не по вводу ида вручную а автоматов того кто просматривает
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение 112 »

определяи виевер ид
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение Александр »

revizor
Вот эти строчки именно это и делают

Код: Выделить всё

viewer_id=wrapper.application.parameters.viewer_id; uid_tf.text=viewer_id;
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение revizor »

Код: Выделить всё

viewer_id=wrapper.application.parameters.viewer_id;  
а если так то будет считывать ид просматривающего ?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение Александр »

revizor
так считывается id просматривающего, если приложение с использованием контейнера.
Аватара пользователя
revizor
FL Team
FL Team
Сообщения: 1034
Зарегистрирован: 18 ноя 2009, 20:22

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение revizor »

спасибо Александр )
herotic
Сообщения: 33
Зарегистрирован: 25 май 2010, 23:36

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение herotic »

Скажите, пожалуйста, в чем может быть проблема, если полоса загрузки доходит до конца и стоит?
Twist4
FL Team
FL Team
Сообщения: 165
Зарегистрирован: 13 окт 2009, 19:40

Re: Заметки (notes: get, add, edit, delete и др.)

Сообщение Twist4 »

Александр, а если я хочу, что бы приложение получало, редактировало, создавало заметки только одной группы, допустим club1111. Возможно ли это вообще? И как этого добиться?

Заранее огромное спасибо =)
Ответить