Ignore:
Timestamp:
Dec 12, 2009, 10:20:29 PM (15 years ago)
Author:
ronosman
Message:

Feature 1320 added : add privacy level in photo properties.

Location:
extensions/pLoader/trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • extensions/pLoader/trunk/locale/fr_FR/pLoader.po

    r4467 r4476  
    577577msgid "Photo update management"
    578578msgstr "Gestion de la mise à jour des photos"
     579
     580msgid "Who can see the photo? :"
     581msgstr "Qui peut voir la photo ? :"
     582
     583msgid "everybody"
     584msgstr "tout le monde"
     585
     586msgid "contacts"
     587msgstr "contacts"
     588
     589msgid "friends"
     590msgstr "amis"
     591
     592msgid "family"
     593msgstr "famille"
     594
     595msgid "admins"
     596msgstr "administrateurs"
     597
     598msgid "What shall we do with privacy level?"
     599msgstr "Que faire pour le niveau de confidentialité ?"
  • extensions/pLoader/trunk/res/photo_properties_wdr.pl

    r4475 r4476  
    2727use vars qw($CAPTION); $CAPTION = 10000;
    2828use vars qw($PHOTO_PROPERTIES_CAPTION); $PHOTO_PROPERTIES_CAPTION = 10001;
    29 use vars qw($COMMENT); $COMMENT = 10002;
    30 use vars qw($PHOTO_PROPERTIES_COMMENT); $PHOTO_PROPERTIES_COMMENT = 10003;
    31 use vars qw($AUTHOR); $AUTHOR = 10004;
    32 use vars qw($PHOTO_PROPERTIES_AUTHOR); $PHOTO_PROPERTIES_AUTHOR = 10005;
     29use vars qw($AUTHOR); $AUTHOR = 10002;
     30use vars qw($PHOTO_PROPERTIES_AUTHOR); $PHOTO_PROPERTIES_AUTHOR = 10003;
     31use vars qw($COMMENT); $COMMENT = 10004;
     32use vars qw($PHOTO_PROPERTIES_COMMENT); $PHOTO_PROPERTIES_COMMENT = 10005;
    3333use vars qw($CREATE_DATE); $CREATE_DATE = 10006;
    3434use vars qw($PHOTO_PROPERTIES_CREATE_DATE); $PHOTO_PROPERTIES_CREATE_DATE = 10007;
    3535use vars qw($TAGS); $TAGS = 10008;
    3636use vars qw($PHOTO_PROPERTIES_TAG); $PHOTO_PROPERTIES_TAG = 10009;
     37use vars qw($PRIVACY_LEVEL); $PRIVACY_LEVEL = 10010;
     38use vars qw($PHOTO_PROPERTIES_PRIVACY_LEVEL); $PHOTO_PROPERTIES_PRIVACY_LEVEL = 10011;
    3739
    3840sub PhotoProperties {
    3941    my( $parent ) = $_[0];
    40     my( $item0 ) = Wx::BoxSizer->new( wxHORIZONTAL );
     42    my( $item0 ) = Wx::BoxSizer->new( wxVERTICAL );
    4143   
    42     my( $item1 ) = Wx::BoxSizer->new( wxVERTICAL );
     44    my( $item1 ) = Wx::BoxSizer->new( wxHORIZONTAL );
    4345   
    4446    my( $item2 ) = Wx::BoxSizer->new( wxVERTICAL );
    4547   
    46     my( $item3 ) = Wx::BoxSizer->new( wxVERTICAL );
    47    
    48     my( $item4 ) = Wx::StaticText->new( $parent, $main::CAPTION, "text", wxDefaultPosition, wxDefaultSize, 0 );
    49     $item3->AddWindow( $item4, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
     48    my( $item3 ) = Wx::StaticText->new( $parent, $main::CAPTION, "text", wxDefaultPosition, wxDefaultSize, 0 );
     49    $item2->AddWindow( $item3, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
    5050
    51     my( $item5 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_CAPTION, "", wxDefaultPosition, [200,-1], 0 );
    52     $item3->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP, 5 );
     51    my( $item4 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_CAPTION, "", wxDefaultPosition, [200,-1], 0 );
     52    $item2->AddWindow( $item4, 0, wxALIGN_CENTER_VERTICAL, 5 );
    5353
    54     $item2->Add( $item3, 0, wxALIGN_CENTER|wxALL, 5 );
     54    my( $item5 ) = Wx::StaticText->new( $parent, $main::AUTHOR, "text", wxDefaultPosition, wxDefaultSize, 0 );
     55    $item2->AddWindow( $item5, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
    5556
    56     my( $item6 ) = Wx::BoxSizer->new( wxVERTICAL );
    57    
     57    my( $item6 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_AUTHOR, "", wxDefaultPosition, [200,-1], 0 );
     58    $item2->AddWindow( $item6, 0, wxALIGN_CENTER, 5 );
     59
    5860    my( $item7 ) = Wx::StaticText->new( $parent, $main::COMMENT, "text", wxDefaultPosition, wxDefaultSize, 0 );
    59     $item6->AddWindow( $item7, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
     61    $item2->AddWindow( $item7, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
    6062
    6163    my( $item8 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_COMMENT, "", wxDefaultPosition, [200,100], wxTE_MULTILINE );
    62     $item6->AddWindow( $item8, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 );
     64    $item2->AddWindow( $item8, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
    6365
    64     $item2->Add( $item6, 0, wxALIGN_CENTER_VERTICAL, 5 );
     66    my( $item9 ) = Wx::StaticText->new( $parent, $main::CREATE_DATE, "text", wxDefaultPosition, wxDefaultSize, 0 );
     67    $item2->AddWindow( $item9, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
    6568
    66     my( $item9 ) = Wx::BoxSizer->new( wxVERTICAL );
     69    my( $item10 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_CREATE_DATE, "", wxDefaultPosition, [200,-1], 0 );
     70    $item2->AddWindow( $item10, 0, wxALIGN_CENTER_VERTICAL, 5 );
     71
     72    $item1->Add( $item2, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
     73
     74    my( $item11 ) = Wx::BoxSizer->new( wxVERTICAL );
    6775   
    68     my( $item10 ) = Wx::StaticText->new( $parent, $main::AUTHOR, "text", wxDefaultPosition, wxDefaultSize, 0 );
    69     $item9->AddWindow( $item10, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
    70 
    71     my( $item11 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_AUTHOR, "", wxDefaultPosition, [200,-1], 0 );
    72     $item9->AddWindow( $item11, 0, wxALIGN_CENTER|wxRIGHT|wxTOP, 5 );
    73 
    74     $item2->Add( $item9, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
    75 
    76     my( $item12 ) = Wx::BoxSizer->new( wxVERTICAL );
    77    
    78     my( $item13 ) = Wx::StaticText->new( $parent, $main::CREATE_DATE, "text", wxDefaultPosition, wxDefaultSize, 0 );
    79     $item12->AddWindow( $item13, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
    80 
    81     my( $item14 ) = Wx::TextCtrl->new( $parent, $main::PHOTO_PROPERTIES_CREATE_DATE, "", wxDefaultPosition, [200,-1], 0 );
    82     $item12->AddWindow( $item14, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM, 5 );
    83 
    84     $item2->Add( $item12, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
    85 
    86     $item1->Add( $item2, 0, wxALIGN_CENTER|wxALL, 5 );
    87 
    88     my( $item15 ) = Wx::BoxSizer->new( wxVERTICAL );
    89    
    90     $item1->Add( $item15, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
    91 
    92     my( $item16 ) = Wx::BoxSizer->new( wxVERTICAL );
    93    
    94     $item1->Add( $item16, 0, wxALIGN_CENTER|wxALL, 5 );
    95 
    96     $item0->Add( $item1, 0, wxALL, 5 );
    97 
    98     my( $item17 ) = Wx::BoxSizer->new( wxVERTICAL );
    99    
    100     my( $item18 ) = Wx::StaticText->new( $parent, $main::TAGS, "text", wxDefaultPosition, wxDefaultSize, 0 );
    101     $item17->AddWindow( $item18, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
     76    my( $item12 ) = Wx::StaticText->new( $parent, $main::TAGS, "text", wxDefaultPosition, wxDefaultSize, 0 );
     77    $item11->AddWindow( $item12, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
    10278
    10379    my $tags = $_[1];
    10480$tags->{parentwnd}=$parent;
    105 my( $item19 ) = Uploader::GUI::wxChoiceFilteredPanel->new($tags);
    106     $item17->AddWindow( $item19, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
     81my( $item13 ) = Uploader::GUI::wxChoiceFilteredPanel->new($tags);
     82    $item11->AddWindow( $item13, 0, wxALIGN_CENTER_VERTICAL, 5 );
    10783
    108     $item0->Add( $item17, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
     84    $item1->Add( $item11, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 0 );
     85
     86    $item0->Add( $item1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
     87
     88    my( $item14 ) = Wx::BoxSizer->new( wxHORIZONTAL );
     89   
     90    my( $item15 ) = Wx::BoxSizer->new( wxVERTICAL );
     91   
     92    my( $item16 ) = Wx::StaticText->new( $parent, $main::PRIVACY_LEVEL, "text", wxDefaultPosition, wxDefaultSize, 0 );
     93    $item15->AddWindow( $item16, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 );
     94
     95    my( $item17 ) = Wx::Choice->new( $parent, $main::PHOTO_PROPERTIES_PRIVACY_LEVEL, wxDefaultPosition, [520,-1], [], 0 );
     96    $item15->AddWindow( $item17, 0, wxALIGN_CENTER_VERTICAL, 5 );
     97
     98    $item14->Add( $item15, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
     99
     100    $item0->Add( $item14, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
    109101
    110102    my( $set_size ) = @_ >= 3 ? $_[2] : 1;
  • extensions/pLoader/trunk/src/Uploader/GUI/DlgCommon.pm

    r4475 r4476  
    1818        my $ctrl_handlers = {
    1919            'Wx::TextCtrl' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_TEXT( $ctrl, $ctrl, sub { $self->OnTextCtrl(@_) } ); },
     20            'Wx::Choice' => sub { my ( $ctrl ) = @_; Wx::Event::EVT_CHOICE( $ctrl, $ctrl, sub { $self->OnChoice(@_) } ); },
    2021        };
    2122       
     
    3536    my ( $self, $ctrl, $event ) = @_;
    3637       
    37         printf("OnTextCtrl %s, %s\n", $ctrl->GetId, $event->GetString);
    3838    my $id = $ctrl->GetId;
    3939    # change the property value
     
    4747       
    4848}
     49
     50sub OnChoice {
     51    my ( $self, $ctrl, $event ) = @_;
     52       
     53    my $id = $ctrl->GetId;
     54    # change the property value
     55        $self->properties->{$id}->{selection}->(
     56        $event->GetSelection
     57    ) if exists $self->properties->{$id}->{selection};
     58
     59    # exec the callback
     60    $self->properties->{$id}->{frame_callback}->() if exists
     61        $self->properties->{$id}->{frame_callback};     
     62       
     63}
     64
    4965
    5066my $change_value = {
     
    98114}
    99115
     116sub InitChoices {
     117    my ( $self ) = @_;
     118
     119                map {
     120        my $ctrl =$self->FindWindow($_);
     121        #printf("ctrl %s : %s\n", $_, $ctrl);           
     122        if(defined $ctrl){
     123            # choice
     124            my $choices =$self->properties->{$_}->{choices};
     125                    $choices||=[];
     126                    map{
     127                        $ctrl->Append($_);
     128                    }@$choices;
     129                }
     130    }
     131        keys %{$self->properties};
     132
     133}
     134
    100135sub GetProperties {
    101136    my ( $self ) = @_;
     
    115150                ) if exists $self->properties->{$_}->{selection};
    116151               
     152                printf("selection %s\n", $ctrl->GetSelection())if exists $self->properties->{$_}->{selection};
     153               
    117154                }
    118155    }
  • extensions/pLoader/trunk/src/Uploader/GUI/wxApp.pm

    r4467 r4476  
    111111                  upload_hd
    112112                  eng_upload_hd
     113                  privacy_level
    113114      /
    114115);
     
    303304        }
    304305    );
     306       
     307        # hard coded because the piwigo api to read custom privacy level is not yet available
     308        $self->privacy_level(
     309            [
     310                    'everybody',
     311                        'contacts',
     312                        'friends',
     313                        'family',
     314                        'admins'
     315                ]
     316        );
     317
     318       
     319}
     320
     321# display privacy level list in a pyramid way :
     322# ['everybody', 'contacts', friends, family, admins] -> [everybody, 'contacts, friends, family, admins', 'friends, family, admins', 'family, admins', 'admins only' ]
     323sub privacy_level_choices{
     324    my ( $self ) = @_;
     325
     326    my $pl = $self->privacy_level;     
     327    my $n = scalar @$pl - 1;
     328    my $list = [ gettext($pl->[0]) ];
     329    my $i=0;
     330    while(++$i<$n){   
     331        push @$list, join(
     332                    ', ',
     333                        map{ gettext($_) }
     334                        @$pl[$i..$n]
     335                );
     336    }
     337    push @$list, gettext($pl->[$n]);
     338       
     339        $list;
    305340}
    306341
     
    429464            Wx::LogMessage(
    430465                gettext("An error has occured. Can not read %s\n%s"),
    431                 $self->storable_file,
     466                $self->storable_file, 
    432467                $@
    433468            );
  • extensions/pLoader/trunk/src/Uploader/GUI/wxFrameAUI.pm

    r4475 r4476  
    348348                                                               value => sub { $self->imagelist->current_image->create_date(@_) },
    349349                                                           },
    350                     $main::PRIVACY_LEVEL => { label=>gettext("Privacy level :")},
     350                    $main::PRIVACY_LEVEL => { label=>gettext("Who can see the photo? :")},
     351                        $main::PHOTO_PROPERTIES_PRIVACY_LEVEL => {
     352                                                         selection => sub { $self->imagelist->current_image->privacy_level(@_)},
     353                                                         choices => wxTheApp->privacy_level_choices,                                                                                                                       ,                                                                                                             
     354                                                                 },
    351355                }
    352356    ); 
  • extensions/pLoader/trunk/src/Uploader/GUI/wxPhotoProperties.pm

    r4475 r4476  
    5555        #$self->_init_values;           
    5656        $self->InitLabels();
     57                $self->InitChoices();
    5758        $self->SetProperties();
    5859                $self->InitHandler();
  • extensions/pLoader/trunk/src/Uploader/Image.pm

    r4408 r4476  
    3939                width
    4040                height
     41                privacy_level
    4142    /
    4243);
  • extensions/pLoader/trunk/src/Uploader/ImageList.pm

    r4467 r4476  
    12631263    my ( $self ) = @_;
    12641264
     1265       
    12651266        $self->pwg->reupload_action_files(
    12661267            $self->reupload_action_files||1
     
    13061307    );
    13071308
     1309        $self->pwg->privacy_level(
     1310            $self->current_image->privacy_level
     1311        );
     1312       
    13081313    $self->current_image->site_categories(
    13091314        $self->categories
  • extensions/pLoader/trunk/src/Uploader/PWG/WebServices.pm

    r4467 r4476  
    6969                   single_value_mode
    7070                   multiple_value_mode
     71                   privacy_level
    7172      /
    7273);
     
    170171        # when server response has warnings, the content response is not a valid json string
    171172                # find the json response
    172                 #printf("%s\n", $self->uagent_response->content);
    173173        $self->uagent_response->content =~ /(\{.+\})/;
    174174                #printf("json response %s\n", $1);
     
    181181    }
    182182    else{
    183         $hresult = {
     183        $hresult = {
    184184            'message' => $self->uagent_response->message,
    185185            'stat'    => 'fail',
     
    306306                   
    307307           $progress->{yield}->();
    308            ( $status, $status_line ) = $self->_execute_post($form); 
     308           ( $status, $status_line ) = $self->_execute_post($form);
    309309                }
    310310        # re-upload
    311311        else{
    312                     #printf("reupload, files %s, properties %s\n", $self->reupload_action_files, $self->reupload_action_properties);
    313312            # need to check if files have changed
    314313            # and update image info
     
    327326            # update metadata info
    328327            if($self->reupload_action_properties){     
    329                             #printf("reupload_action_properties %s\n", $self->reupload_action_properties);
    330                 $form->{name} = $self->site_image_name;
     328                        #printf("reupload_action_properties %s\n", $self->reupload_action_properties);
     329                $form->{name}          = $self->site_image_name;
    331330                $form->{author}        = $self->site_author;
    332331                $form->{comment}       = $self->site_comment;
    333332                $form->{date_creation} = $self->site_img_date_creation;
    334333                                $form->{single_value_mode}  = $self->single_value_mode->{$self->reupload_action_properties};
     334                $form->{level} = $self->privacy_level ? 2**($self->privacy_level - 1) : 0;
    335335                    }
    336336            if($self->reupload_action_properties_m){   
     
    342342            $progress->{yield}->();
    343343            ( $status, $status_line ) = $self->_execute_post($form);
    344             }
     344
     345                }
    345346
    346347        delete $form->{tag_ids} unless defined $self->site_tags;
     
    348349
    349350        $progress->{yield}->();
    350             #print "form ", Dumper $form;
    351                 #print "status ", $status, "\n";
    352                 #print "status_line ", $status_line, "\n";
    353             # basic check, should perform a checkfile
    354         $content->{stat} = !$self->_exists($progress->{original_sum}) ? 'fail' : 'ok';
     351        # for first upload
     352        if($doubleCheck){
     353                    $self->image_id(
     354                            $self->_exists($progress->{original_sum})
     355                        );
     356            $content->{stat} = !defined $self->image_id  ? 'fail' : 'ok';
     357            if(defined $self->image_id and defined $self->privacy_level){
     358                    ( $status, $status_line, $content ) = $self->_set_privacy_level;
     359                }
     360        }
    355361
    356362                last UPLOAD;
     
    358364   
    359365    return ( $status,  $status_line, $content);
     366}
     367
     368sub _set_privacy_level {
     369    my ( $self ) = @_;
     370               
     371    my $form = {
     372        method        => 'pwg.images.setPrivacyLevel',
     373        image_id      => $self->image_id,
     374        level         => $self->privacy_level ? 2**($self->privacy_level - 1) : 0,
     375    };
     376        print Dumper $form;
     377        my ( $status, $status_line ) = $self->_execute_post($form);
     378    my $hresult = $self->_json_response_content;
     379
     380    ($status, $status_line, $hresult );
    360381}
    361382
     
    443464    $self->_execute_post($form);   
    444465    my $hresult = $self->_json_response_content;
    445 print Dumper $hresult;
     466
    446467    my $rval = 'ok' eq $hresult->{stat} ? $hresult->{result} : undef;
    447468   
Note: See TracChangeset for help on using the changeset viewer.