]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/gallery.php
allow doc and api calls from private
[quix0rs-gnu-social.git] / lib / gallery.php
index 8410768197c6f345a33449a97018f035a262cbbd..886b6b9e88bcfc1ea8b7b16158bab607d3ece510 100644 (file)
@@ -34,7 +34,13 @@ class GalleryAction extends Action {
 
        function handle($args) {
                parent::handle($args);
+
+               # Post from the tag dropdown; redirect to a GET
                
+               if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+                   common_redirect($this->self_url(), 307);
+               }
+
                $nickname = common_canonical_nickname($this->arg('nickname'));
                $user = User::staticGet('nickname', $nickname);
 
@@ -63,7 +69,7 @@ class GalleryAction extends Action {
                }
                
                $tag = $this->arg('tag');
-               
+
                common_show_header($profile->nickname . ": " . $this->gallery_type(),
                                                   NULL, $profile,
                                                   array($this, 'show_top'));
@@ -81,20 +87,32 @@ class GalleryAction extends Action {
 
        function show_tags_dropdown($profile) {
                $tag = $this->trimmed('tag');
-               $tags = $profile->getAllTags();
+               list($lst, $usr) = $this->fields();
+               $tags = $this->get_all_tags($profile, $lst, $usr);
                $content = array();
                foreach ($tags as $t) {
-                       $content[common_local_url($this->trimmed('action'), array('tag' => $t))] = $t;
+                       $content[$t] = $t;
                }
                if ($tags) {
+                       common_element_start('dl', array('id'=>'filter_tags'));
+                       common_element('dt', null, _('Filter tags'));
+                       common_element_start('dd');
+                       common_element_start('ul');
+                       common_element_start('li', array('id'=>'filter_tags_all', 'class'=>'child_1'));
                        common_element('a', array('href' => common_local_url($this->trimmed('action'),
                                                                                                                                 array('nickname' => $profile->nickname))),
                                                   _('All'));
-                       common_element_start('form', array('name' => 'bytag', 'id' => 'bytag'));
+                       common_element_end('li');
+                       common_element_start('li', array('id'=>'filter_tags_item'));
+                       common_element_start('form', array('name' => 'bytag', 'id' => 'bytag', 'method' => 'post'));
                        common_dropdown('tag', _('Tag'), $content,
                                                        _('Choose a tag to narrow list'), FALSE, $tag);
                        common_submit('go', _('Go'));
                        common_element_end('form');
+                       common_element_end('li');
+                       common_element_end('ul');
+                       common_element_end('dd');
+                       common_element_end('dl');
                }
        }
        
@@ -134,7 +152,7 @@ class GalleryAction extends Action {
                                          $lim);
                
                if ($display == 'list') {
-                       $profile_list = new ProfileList($other, $profile);
+                       $profile_list = new ProfileList($other, $profile, $this->trimmed('action'));
                        $cnt = $profile_list->show_list();
                } else {
                        $cnt = $this->icon_list($other);
@@ -216,29 +234,63 @@ class GalleryAction extends Action {
        }
        
        function display_links($profile, $page, $display) {
+               $tag = $this->trimmed('tag');
                
-               common_element_start('p');
+               common_element_start('dl', array('id'=>'subscriptions_nav'));
+               common_element('dt', null, _('Subscriptions navigation'));
+               common_element_start('dd');
+               common_element_start('ul', array('class'=>'nav'));
                
                switch ($display) {
                 case 'list':
-                       common_element('span', NULL, _('List'));
-                       common_text(' | ');
-                       common_element('a', array('href' => common_local_url($this->trimmed('action'),
-                                                                                                                                array('display' => 'icons',
-                                                                                                                                          'nickname' => $profile->nickname,
-                                                                                                                                          'page' => 1 + floor((($page - 1) * PROFILES_PER_PAGE) / AVATARS_PER_PAGE)))),
+                       common_element('li', array('class'=>'child_1'), _('List'));
+                       common_element_start('li');
+                       $url_args = array('display' => 'icons',
+                                                         'nickname' => $profile->nickname,
+                                                         'page' => 1 + floor((($page - 1) * PROFILES_PER_PAGE) / AVATARS_PER_PAGE));
+                       if ($tag) {
+                               $url_args['tag'] = $tag;
+                       }
+                       $url = common_local_url($this->trimmed('action'), $url_args);
+                       common_element('a', array('href' => $url),
                                                   _('Icons'));
+                       common_element_end('li');
                        break;
                 default:
-                       common_element('a', array('href' => common_local_url($this->trimmed('action'),
-                                                                                                                                array('nickname' => $profile->nickname,
-                                                                                                                                          'page' => 1 + floor((($page - 1) * AVATARS_PER_PAGE) / PROFILES_PER_PAGE)))),
+                       common_element_start('li', array('class'=>'child_1'));
+                       $url_args = array('nickname' => $profile->nickname,
+                                                         'page' => 1 + floor((($page - 1) * AVATARS_PER_PAGE) / PROFILES_PER_PAGE));
+                       if ($tag) {
+                               $url_args['tag'] = $tag;
+                       }
+                       $url = common_local_url($this->trimmed('action'), $url_args);
+                       common_element('a', array('href' => $url),
                                                   _('List'));
-                       common_text(' | ');
-                       common_element('span', NULL, _('Icons'));
+                       common_element_end('li');
+                       common_element('li', NULL, _('Icons'));
                        break;
                }
                
-               common_element_end('p');
+               common_element_end('ul');
+               common_element_end('dd');
+               common_element_end('dl');
+       }
+       
+       # Get list of tags we tagged other users with
+
+       function get_all_tags($profile, $lst, $usr) {
+               $profile_tag = new Notice_tag();
+               $profile_tag->query('SELECT DISTINCT(tag) ' .
+                                                       'FROM profile_tag, subscription ' .
+                                                       'WHERE tagger = ' . $profile->id . ' ' .
+                                                       'AND ' . $usr . ' = ' . $profile->id . ' ' .
+                                                       'AND ' . $lst . ' = tagged ' .
+                                                       'AND tagger != tagged');
+               $tags = array();
+               while ($profile_tag->fetch()) {
+                       $tags[] = $profile_tag->tag;
+               }
+               $profile_tag->free();
+               return $tags;
        }
 }
\ No newline at end of file