[Isocial-svn] SF.net SVN: isocial: [209]
Status: Pre-Alpha
Brought to you by:
aguidrevitch
From: <agu...@us...> - 2008-05-15 19:05:14
|
Revision: 209 http://isocial.svn.sourceforge.net/isocial/?rev=209&view=rev Author: aguidrevitch Date: 2008-05-15 12:05:14 -0700 (Thu, 15 May 2008) Log Message: ----------- instant messengers profile support added Modified Paths: -------------- app/controllers/profile_controller.php app/installers/user_installer.php app/models/user.php app/views/profile/contact.tpl timesheet/aguidrevitch.txt Modified: app/controllers/profile_controller.php =================================================================== --- app/controllers/profile_controller.php 2008-05-15 19:04:44 UTC (rev 208) +++ app/controllers/profile_controller.php 2008-05-15 19:05:14 UTC (rev 209) @@ -48,7 +48,9 @@ function contact () { $this->contact_profile = $this->current_user->contact_profile->load(); - $this->imcontact_profile = $this->current_user->contact_profile->load(); + $this->im_profiles = $this->current_user->im_profile->load(); + + //var_dump($this->im_profiles); if ($this->Request->isPost() && !empty($this->params['contact_profile'])) { $this->contact_profile->setAttributes($this->params['contact_profile']); if ($this->contact_profile->save()) { @@ -57,6 +59,31 @@ $this->current_user->save(); } // saving IM info + if (!empty($this->params['im']) && is_array($this->params['im'])) { + if (!empty($this->params['delete_im'])) { + foreach ($this->params['delete_im'] as $id) { + $im_profile = $this->current_user->im_profile->find($id); + $im_profile->destroy(); + } + } + foreach ($this->params['im'] as $im) { + if ($im['im_id'] && $im['im_type']) { + unset($im_profile); + + if ($im['id']) { + $im_profile = $this->current_user->im_profile->find($im['id']); + } + + if (empty($im_profile) || $im_profile == false) { + $im_profile = $this->current_user->im_profile->build(); + } + + $im_profile->setAttributes($im); + $im_profile->save(); + } + } + } + $this->redirectTo(array('action' => 'contact')); } } Modified: app/installers/user_installer.php =================================================================== --- app/installers/user_installer.php 2008-05-15 19:04:44 UTC (rev 208) +++ app/installers/user_installer.php 2008-05-15 19:05:14 UTC (rev 209) @@ -187,34 +187,8 @@ INDEX user_idx (user_id) ) ENGINE=InnoDB"); - $this->execute( - "CREATE TABLE `ims` ( - `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, - `name` char(100) NOT NULL DEFAULT '' - ) ENGINE=InnoDB"); - - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'ICQ')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'Mail.ru Agent')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'Skype')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'Windows Live')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'Google Talk')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'Yahoo')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'AIM')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'Jabber')"); - $this->execute("INSERT INTO ims (id, name) VALUES (0, 'Gadu-Gadu')"); $this->execute( - "CREATE TABLE `im_profiles` ( - `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, - `user_id` int(11) NOT NULL, - `im_id` int(11), - `value` varchar(50), - FOREIGN KEY (user_id) REFERENCES users(id), - FOREIGN KEY (im_id) REFERENCES ims(id), - INDEX user_idx (user_id) - ) ENGINE=InnoDB"); - - $this->execute( "CREATE TABLE `contact_profiles` ( `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `user_id` int(11) NOT NULL, @@ -236,14 +210,21 @@ INDEX user_idx (user_id) ) ENGINE=InnoDB"); + $this->execute( + "CREATE TABLE `im_profiles` ( + `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `im_id` varchar(50), + `im_type` varchar(50), + FOREIGN KEY (user_id) REFERENCES users(id), + INDEX user_idx (user_id) + ) ENGINE=InnoDB"); } function down_1() { - $this->dropTable('contact_profiles'); $this->dropTable('im_profiles'); - $this->dropTable('ims'); - $this->dropTable('email_profiles'); + $this->dropTable('contact_profiles'); $this->dropTable('basic_profiles'); // triggers should be dropped automatically // http://dev.mysql.com/doc/refman/5.1/en/drop-trigger.html Modified: app/models/user.php =================================================================== --- app/models/user.php 2008-05-15 19:04:44 UTC (rev 208) +++ app/models/user.php 2008-05-15 19:05:14 UTC (rev 209) @@ -10,6 +10,8 @@ 'order' => 'created_at desc', 'foreign_key' => 'recipient_id', 'conditions' => 'is_recipient_del = 0'), + 'im_profiles' => array('class_name' => 'ImProfile', + 'foreign_key' => 'user_id'), ); var $has_one = array('BasicProfile', 'ContactProfile'); Modified: app/views/profile/contact.tpl =================================================================== --- app/views/profile/contact.tpl 2008-05-15 19:04:44 UTC (rev 208) +++ app/views/profile/contact.tpl 2008-05-15 19:05:14 UTC (rev 209) @@ -24,17 +24,62 @@ <label>_{IM Screen Name(s)}:</label> <div class="formcol"> <div class="middle"> - <?= $form_helper->text_field('contact_profile', 'im', array('class' => 'mediumtextinput') )?> - <select class="imselect"> - <option>AIM</option> - <option>Google talk</option> - <option>Skype</option> - <option>Windows Live</option> - <option>Yahoo</option> - <option>Gadu-Gadu</option> - <option>ICQ</option> - </select> - </div> + <div id="im" class="im" style="display: none"> + <input type="hidden"> + <input type="text" class="mediumtextinput"> + <select class="imselect"> + <option>AIM</option> + <option>Google talk</option> + <option>Skype</option> + <option>Windows Live</option> + <option>Yahoo</option> + <option>Gadu-Gadu</option> + <option>ICQ</option> + </select> + <div class="delete"></div> + <div class="clearfix"></div> + </div> + </div> + <script text="textjavascript"> + var imcount = 0; + + function add_im ( id, im_id, im_type) { + + if (imcount >= 10) + return; + + var im = Element.extend($('im').cloneNode(true)); + + im.childElements()[0].writeAttribute('name', 'im['+imcount+'][id]'); + im.childElements()[1].writeAttribute('name', 'im['+imcount+'][im_id]'); + im.childElements()[2].writeAttribute('name', 'im['+imcount+'][im_type]'); + + im.childElements()[0].setValue(id); + im.childElements()[1].setValue(im_id); + im.childElements()[2].setValue(im_type); + im.childElements()[3].observe("click", function (event) { + if (imcount > 1) { + if (id) + $(im.parentNode).insert(new Element('input', { type: 'hidden', name: 'delete_im[]', value: id })); + im.remove(); + imcount--; + } + }); + + $($('im').parentNode).insert(im); + im.show(); + + imcount++; + } + <? + if (!empty($im_profiles)) { + foreach ($im_profiles as $im) { + echo "add_im('" . $im->id . "', '" . addslashes($im->im_id) . "', '" . addslashes($im->im_type) . "');\n"; + } + } + ?> + add_im(); + </script> <div class="third"> <?= $access_field_helper->access_field('contact_profile', 'im_access', array('title' => 'Instant Messenger')); ?> </div> @@ -44,7 +89,7 @@ <label></label> <div class="formcol"> <div class="middle"> - <a href="#">Add another screen name</a> + <a href="#" onclick='add_im()'>Add another screen name</a> </div> </div> </div> Modified: timesheet/aguidrevitch.txt =================================================================== --- timesheet/aguidrevitch.txt 2008-05-15 19:04:44 UTC (rev 208) +++ timesheet/aguidrevitch.txt 2008-05-15 19:05:14 UTC (rev 209) @@ -7,3 +7,6 @@ 2008-05-13,10:10,13:10,main,RT:1,"rewriting dialogs" 2008-05-13,13:10,13:30,main,RT:1,"helping dimos with models" 2008-05-13,14:20,17:30,main,RT:1,"improving city selector" +2008-05-13,20:40,21:20,main,RT:1,"fixing IE6 compatibility issues for dialog, minor fixes to city dialog" +2008-05-14,19:10,22:00,main,RT:1,"instant messagers profile" +2008-05-15,20:40,22:10,main,RT:1,"instant messagers profile implemented" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |