summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Copley <zach@controlyourself.ca>2009-01-06 15:57:38 -0500
committerZach Copley <zach@controlyourself.ca>2009-01-06 15:57:38 -0500
commit4bb522c3faa23a738c1a47440759aff741925d78 (patch)
treecfef803e5628c6678ffc61796117d1b4637b4290
parent5e061d2060702516328a723ad6c9577eb0aa782d (diff)
trac750 better settings tab workflow
darcs-hash:20090106205738-7b5ce-e80f73130a1f699e8d33f31c63cf90ee259b72cd.gz
-rw-r--r--_darcs/inventory4
-rw-r--r--_darcs/patches/20090106205738-7b5ce-e80f73130a1f699e8d33f31c63cf90ee259b72cd.gzbin0 -> 436 bytes
-rw-r--r--_darcs/pristine/actions/facebookhome.php2
-rw-r--r--_darcs/pristine/actions/facebooksettings.php8
-rw-r--r--_darcs/pristine/lib/facebookaction.php2
-rw-r--r--_darcs/tentative_pristine304
-rw-r--r--actions/facebookhome.php2
-rw-r--r--actions/facebooksettings.php8
-rw-r--r--lib/facebookaction.php2
9 files changed, 36 insertions, 296 deletions
diff --git a/_darcs/inventory b/_darcs/inventory
index 22b47336e..70a030e46 100644
--- a/_darcs/inventory
+++ b/_darcs/inventory
@@ -126,4 +126,6 @@ csarven@controlyourself.ca**20081210025922]
[Actually crop your avatar when hitting 'crop' button on profile
Zach Copley <zach@controlyourself.ca>**20081212043018]
[Some fixups of patches not already migrated to trunk to bring inline with PEAR coding stds
-Zach Copley <zach@controlyourself.ca>**20081225144601] \ No newline at end of file
+Zach Copley <zach@controlyourself.ca>**20081225144601]
+[trac750 better settings tab workflow
+Zach Copley <zach@controlyourself.ca>**20090106205738] \ No newline at end of file
diff --git a/_darcs/patches/20090106205738-7b5ce-e80f73130a1f699e8d33f31c63cf90ee259b72cd.gz b/_darcs/patches/20090106205738-7b5ce-e80f73130a1f699e8d33f31c63cf90ee259b72cd.gz
new file mode 100644
index 000000000..74db175f1
--- /dev/null
+++ b/_darcs/patches/20090106205738-7b5ce-e80f73130a1f699e8d33f31c63cf90ee259b72cd.gz
Binary files differ
diff --git a/_darcs/pristine/actions/facebookhome.php b/_darcs/pristine/actions/facebookhome.php
index 069ea5e75..6206fb6c2 100644
--- a/_darcs/pristine/actions/facebookhome.php
+++ b/_darcs/pristine/actions/facebookhome.php
@@ -75,7 +75,7 @@ class FacebookhomeAction extends FacebookAction
$flink_id = $flink->insert();
if ($flink_id) {
- echo '<fb:success message="You can now use the Identi.ca from Facebook!" />';
+ echo '<fb:success message="You can now use Identi.ca from Facebook!" />';
}
$this->show_home($facebook, $fbuid, $user);
diff --git a/_darcs/pristine/actions/facebooksettings.php b/_darcs/pristine/actions/facebooksettings.php
index 469bcfc45..d28b1aa5c 100644
--- a/_darcs/pristine/actions/facebooksettings.php
+++ b/_darcs/pristine/actions/facebooksettings.php
@@ -69,10 +69,12 @@ class FacebooksettingsAction extends FacebookAction
$fbml = '<fb:if-section-not-added section="profile">'
.'<h2>Add an Identi.ca box to my profile</h2>'
- .'<fb:add-section-button section="profile"/>'
+ .'<p><fb:add-section-button section="profile"/></p>'
.'</fb:if-section-not-added>';
- $fbml .= '<fb:prompt-permission perms="status_update"><h2>Allow Identi.ca to update my Facebook status</h2></fb:prompt-permission>';
+ $fbml .= '<p><fb:prompt-permission perms="status_update"><h2>Allow Identi.ca to update my Facebook status</h2></fb:prompt-permission></p>';
+
+ if ($facebook->api_client->users_hasAppPermission('status_update')) {
$fbml .= '<form method="post" id="facebook_settings">'
.'<h2>Sync preferences</h2>'
@@ -101,6 +103,8 @@ class FacebooksettingsAction extends FacebookAction
.'</p>'
.'</form>';
+ }
+
echo $fbml;
$this->show_footer();
diff --git a/_darcs/pristine/lib/facebookaction.php b/_darcs/pristine/lib/facebookaction.php
index 7fa097587..9230bad59 100644
--- a/_darcs/pristine/lib/facebookaction.php
+++ b/_darcs/pristine/lib/facebookaction.php
@@ -72,7 +72,7 @@ class FacebookAction extends Action
}
</style>';
- $html = Facebookaction::Aender_notice($notice);
+ $html = Facebookaction::render_notice($notice);
$fbml = "<fb:wide>$style $html</fb:wide>";
diff --git a/_darcs/tentative_pristine b/_darcs/tentative_pristine
index 04a3f84cd..66a843163 100644
--- a/_darcs/tentative_pristine
+++ b/_darcs/tentative_pristine
@@ -1,287 +1,17 @@
-hunk ./actions/profilesettings.php 57
-- if ($this->arg('save')) {
-- $this->save_profile();
-- } else if ($this->arg('upload')) {
-- $this->upload_avatar();
-- } else if ($this->arg('changepass')) {
-- $this->change_password();
-- }
-+ if ($this->arg('save')) {
-+ $this->save_profile();
-+ } else if ($this->arg('upload')) {
-+ $this->upload_avatar();
-+ } else if ($this->arg('crop')) {
-+ $this->crop_avatar();
-+ } else if ($this->arg('changepass')) {
-+ $this->change_password();
-+ } else {
-+ $this->show_form(_('Unexpected form submission.'));
-+ }
-hunk ./actions/profilesettings.php 77
-- common_element_start('form', array('method' => 'POST',
-- 'id' => 'profilesettings',
-- 'action' =>
-- common_local_url('profilesettings')));
-- common_hidden('token', common_session_token());
--
-- # too much common patterns here... abstractable?
--
-- common_input('nickname', _('Nickname'),
-- ($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname,
-- _('1-64 lowercase letters or numbers, no punctuation or spaces'));
-- common_input('fullname', _('Full name'),
-- ($this->arg('fullname')) ? $this->arg('fullname') : $profile->fullname);
-- common_input('homepage', _('Homepage'),
-- ($this->arg('homepage')) ? $this->arg('homepage') : $profile->homepage,
-- _('URL of your homepage, blog, or profile on another site'));
-- common_textarea('bio', _('Bio'),
-- ($this->arg('bio')) ? $this->arg('bio') : $profile->bio,
-- _('Describe yourself and your interests in 140 chars'));
-- common_input('location', _('Location'),
-- ($this->arg('location')) ? $this->arg('location') : $profile->location,
-- _('Where you are, like "City, State (or Region), Country"'));
-- common_input('tags', _('Tags'),
-- ($this->arg('tags')) ? $this->arg('tags') : implode(' ', $user->getSelfTags()),
-- _('Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated'));
-+ common_element_start('form', array('method' => 'POST',
-+ 'id' => 'profilesettings',
-+ 'action' => common_local_url('profilesettings')));
-+ common_hidden('token', common_session_token());
-+
-+ # too much common patterns here... abstractable?
-+
-+ common_input('nickname', _('Nickname'),
-+ ($this->arg('nickname')) ? $this->arg('nickname') : $profile->nickname,
-+ _('1-64 lowercase letters or numbers, no punctuation or spaces'));
-+ common_input('fullname', _('Full name'),
-+ ($this->arg('fullname')) ? $this->arg('fullname') : $profile->fullname);
-+ common_input('homepage', _('Homepage'),
-+ ($this->arg('homepage')) ? $this->arg('homepage') : $profile->homepage,
-+ _('URL of your homepage, blog, or profile on another site'));
-+ common_textarea('bio', _('Bio'),
-+ ($this->arg('bio')) ? $this->arg('bio') : $profile->bio,
-+ _('Describe yourself and your interests in 140 chars'));
-+ common_input('location', _('Location'),
-+ ($this->arg('location')) ? $this->arg('location') : $profile->location,
-+ _('Where you are, like "City, State (or Region), Country"'));
-+ common_input('tags', _('Tags'),
-+ ($this->arg('tags')) ? $this->arg('tags') : implode(' ', $user->getSelfTags()),
-+ _('Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated'));
-hunk ./actions/profilesettings.php 118
--
-hunk ./actions/profilesettings.php 142
-- if ($original) {
-- common_element('img', array('src' => $original->url,
-- 'class' => 'avatar original',
-- 'width' => $original->width,
-- 'height' => $original->height,
-- 'alt' => $user->nickname));
-- }
-+ if ($original) {
-+ common_element_start('div', array('id'=>'avatar_original', 'class'=>'avatar_view'));
-+ common_element('h3', null, _("Original:"));
-+ common_element_start('div', array('id'=>'avatar_original_view'));
-+ common_element('img', array('src' => $original->url,
-+ 'class' => 'avatar original',
-+ 'width' => $original->width,
-+ 'height' => $original->height,
-+ 'alt' => $user->nickname));
-+ common_element_end('div');
-+ common_element_end('div');
-+ }
-hunk ./actions/profilesettings.php 157
-- if ($avatar) {
-- common_element('img', array('src' => $avatar->url,
-- 'class' => 'avatar profile',
-- 'width' => AVATAR_PROFILE_SIZE,
-- 'height' => AVATAR_PROFILE_SIZE,
-- 'alt' => $user->nickname));
-- }
-+ if ($avatar) {
-+ common_element_start('div', array('id'=>'avatar_preview', 'class'=>'avatar_view'));
-+ common_element('h3', null, _("Preview:"));
-+ common_element_start('div', array('id'=>'avatar_preview_view'));
-+ common_element('img', array('src' => $original->url,//$avatar->url,
-+ 'class' => 'avatar profile',
-+ 'width' => AVATAR_PROFILE_SIZE,
-+ 'height' => AVATAR_PROFILE_SIZE,
-+ 'alt' => $user->nickname));
-+ common_element_end('div');
-+ common_element_end('div');
-hunk ./actions/profilesettings.php 169
-+ foreach(array('avatar_crop_x', 'avatar_crop_y', 'avatar_crop_w', 'avatar_crop_h') as $crop_info) {
-+ common_element('input', array('name' => $crop_info,
-+ 'type' => 'hidden',
-+ 'id' => $crop_info));
-+ }
-+ common_submit('crop', _('Crop'));
-+ }
-hunk ./actions/profilesettings.php 184
--
-hunk ./actions/profilesettings.php 410
-- @unlink($_FILES['avatarfile']['tmp_name']);
-- }
-+ @unlink($_FILES['avatarfile']['tmp_name']);
-+ }
-+
-+ function crop_avatar() {
-+
-+ $user = common_current_user();
-+ $profile = $user->getProfile();
-+
-+ $x = $this->arg('avatar_crop_x');
-+ $y = $this->arg('avatar_crop_y');
-+ $w = $this->arg('avatar_crop_w');
-+ $h = $this->arg('avatar_crop_h');
-+
-+ if ($profile->crop_avatars($x, $y, $w, $h)) {
-+ $this->show_form(_('Avatar updated.'), true);
-+ } else {
-+ $this->show_form(_('Failed updating avatar.'));
-+ }
-+ }
-hunk ./classes/Avatar.php 82
-- function to_image() {
-- $filepath = common_avatar_path($this->filename);
-- if ($this->mediatype == 'image/gif') {
-- return imagecreatefromgif($filepath);
-- } else if ($this->mediatype == 'image/jpeg') {
-- return imagecreatefromjpeg($filepath);
-- } else if ($this->mediatype == 'image/png') {
-- return imagecreatefrompng($filepath);
-- } else {
-- return NULL;
-- }
-- }
--
-- function &pkeyGet($kv) {
-- return Memcached_DataObject::pkeyGet('Avatar', $kv);
-- }
-+ function scale_and_crop($size, $x, $y, $w, $h)
-+ {
-+
-+ $image_s = imagecreatetruecolor($size, $size);
-+ $image_a = $this->to_image();
-+
-+ # Retain alpha channel info if possible for .pngs
-+ $background = imagecolorallocate($image_s, 0, 0, 0);
-+ ImageColorTransparent($image_s, $background);
-+ imagealphablending($image_s, false);
-+
-+ imagecopyresized($image_s, $image_a, 0, 0, $x, $y, $size, $size, $w, $h);
-+
-+ $ext = ($this->mediattype == 'image/jpeg') ? ".jpeg" : ".png";
-+
-+ $filename = common_avatar_filename($this->profile_id, $ext, $size, common_timestamp());
-+
-+ if ($this->mediatype == 'image/jpeg') {
-+ imagejpeg($image_s, common_avatar_path($filename));
-+ } else {
-+ imagepng($image_s, common_avatar_path($filename));
-+ }
-+
-+ $cropped = DB_DataObject::factory('avatar');
-+ $cropped->profile_id = $this->profile_id;
-+ $cropped->width = $size;
-+ $cropped->height = $size;
-+ $cropped->original = false;
-+ $cropped->mediatype = ($this->mediattype == 'image/jpeg') ? 'image/jpeg' : 'image/png';
-+ $cropped->filename = $filename;
-+ $cropped->url = common_avatar_url($filename);
-+ $cropped->created = DB_DataObject_Cast::dateTime(); # current time
-+
-+ if ($cropped->insert()) {
-+ return $cropped;
-+ } else {
-+ return NULL;
-+ }
-+ }
-+
-+ function to_image()
-+ {
-+ $filepath = common_avatar_path($this->filename);
-+ if ($this->mediatype == 'image/gif') {
-+ return imagecreatefromgif($filepath);
-+ } else if ($this->mediatype == 'image/jpeg') {
-+ return imagecreatefromjpeg($filepath);
-+ } else if ($this->mediatype == 'image/png') {
-+ return imagecreatefrompng($filepath);
-+ } else {
-+ return NULL;
-+ }
-+ }
-+
-+ function &pkeyGet($kv)
-+ {
-+ return Memcached_DataObject::pkeyGet('Avatar', $kv);
-+ }
-+
-hunk ./classes/Profile.php 124
-- function delete_avatars() {
-- $avatar = new Avatar();
-- $avatar->profile_id = $this->id;
-- $avatar->find();
-- while ($avatar->fetch()) {
-- $avatar->delete();
-- }
-- return true;
-- }
-+ function crop_avatars($x, $y, $w, $h)
-+ {
-+
-+ $avatar = $this->getOriginalAvatar();
-+ $this->delete_avatars(false); # don't delete original
-+
-+ foreach (array(AVATAR_PROFILE_SIZE, AVATAR_STREAM_SIZE, AVATAR_MINI_SIZE) as $size) {
-+ # We don't do a scaled one if original is our scaled size
-+ if (!($avatar->width == $size && $avatar->height == $size)) {
-+ $s = $avatar->scale_and_crop($size, $x, $y, $w, $h);
-+ if (!$s) {
-+ return NULL;
-+ }
-+ }
-+ }
-+ return true;
-+ }
-+
-+ function delete_avatars($original=true)
-+ {
-+ $avatar = new Avatar();
-+ $avatar->profile_id = $this->id;
-+ $avatar->find();
-+ while ($avatar->fetch()) {
-+ if ($avatar->original) {
-+ if ($original == false) {
-+ continue;
-+ }
-+ }
-+ $avatar->delete();
-+ }
-+ return true;
-+ }
-hunk ./lib/settingsaction.php 63
-- function form_header($title, $msg=NULL, $success=false) {
-- common_show_header($title,
-- NULL,
-- array($msg, $success),
-- array($this, 'show_top'));
-- }
-+ function form_header($title, $msg=NULL, $success=false)
-+ {
-+ common_show_header($title,
-+ array($this, 'show_header'),
-+ array($msg, $success),
-+ array($this, 'show_top'));
-+ }
-+
-+ function show_header()
-+ {
-+ common_element('link', array('rel' => 'stylesheet',
-+ 'type' => 'text/css',
-+ 'href' => common_path('js/jcrop/jquery.Jcrop.css?version='.LACONICA_VERSION),
-+ 'media' => 'screen, projection, tv'));
-+ common_element('script', array('type' => 'text/javascript',
-+ 'src' => common_path('js/jcrop/jquery.Jcrop.pack.js')));
-+ common_element('script', array('type' => 'text/javascript',
-+ 'src' => common_path('js/jcrop/jquery.Jcrop.go.js')));
-+ }
+hunk ./actions/facebookhome.php 78
+- echo '<fb:success message="You can now use the Identi.ca from Facebook!" />';
++ echo '<fb:success message="You can now use Identi.ca from Facebook!" />';
+hunk ./actions/facebooksettings.php 72
+- .'<fb:add-section-button section="profile"/>'
++ .'<p><fb:add-section-button section="profile"/></p>'
+hunk ./actions/facebooksettings.php 75
+- $fbml .= '<fb:prompt-permission perms="status_update"><h2>Allow Identi.ca to update my Facebook status</h2></fb:prompt-permission>';
++ $fbml .= '<p><fb:prompt-permission perms="status_update"><h2>Allow Identi.ca to update my Facebook status</h2></fb:prompt-permission></p>';
++
++ if ($facebook->api_client->users_hasAppPermission('status_update')) {
+hunk ./actions/facebooksettings.php 106
++ }
++
+hunk ./lib/facebookaction.php 75
+- $html = Facebookaction::Aender_notice($notice);
++ $html = Facebookaction::render_notice($notice);
diff --git a/actions/facebookhome.php b/actions/facebookhome.php
index 069ea5e75..6206fb6c2 100644
--- a/actions/facebookhome.php
+++ b/actions/facebookhome.php
@@ -75,7 +75,7 @@ class FacebookhomeAction extends FacebookAction
$flink_id = $flink->insert();
if ($flink_id) {
- echo '<fb:success message="You can now use the Identi.ca from Facebook!" />';
+ echo '<fb:success message="You can now use Identi.ca from Facebook!" />';
}
$this->show_home($facebook, $fbuid, $user);
diff --git a/actions/facebooksettings.php b/actions/facebooksettings.php
index 469bcfc45..d28b1aa5c 100644
--- a/actions/facebooksettings.php
+++ b/actions/facebooksettings.php
@@ -69,10 +69,12 @@ class FacebooksettingsAction extends FacebookAction
$fbml = '<fb:if-section-not-added section="profile">'
.'<h2>Add an Identi.ca box to my profile</h2>'
- .'<fb:add-section-button section="profile"/>'
+ .'<p><fb:add-section-button section="profile"/></p>'
.'</fb:if-section-not-added>';
- $fbml .= '<fb:prompt-permission perms="status_update"><h2>Allow Identi.ca to update my Facebook status</h2></fb:prompt-permission>';
+ $fbml .= '<p><fb:prompt-permission perms="status_update"><h2>Allow Identi.ca to update my Facebook status</h2></fb:prompt-permission></p>';
+
+ if ($facebook->api_client->users_hasAppPermission('status_update')) {
$fbml .= '<form method="post" id="facebook_settings">'
.'<h2>Sync preferences</h2>'
@@ -101,6 +103,8 @@ class FacebooksettingsAction extends FacebookAction
.'</p>'
.'</form>';
+ }
+
echo $fbml;
$this->show_footer();
diff --git a/lib/facebookaction.php b/lib/facebookaction.php
index 7fa097587..9230bad59 100644
--- a/lib/facebookaction.php
+++ b/lib/facebookaction.php
@@ -72,7 +72,7 @@ class FacebookAction extends Action
}
</style>';
- $html = Facebookaction::Aender_notice($notice);
+ $html = Facebookaction::render_notice($notice);
$fbml = "<fb:wide>$style $html</fb:wide>";