Changeset 3579

Show
Ignore:
Timestamp:
02/07/07 20:53:25 (2 years ago)
Author:
rinoa
Message:

Adds context menus for Founders and Admins. Adds the chat event for Admins. Removes the demote before promote that everyone hates.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Models/JVSQLChatTranscript.m

    r3473 r3579  
    658658                if( [member serverOperator] ) senderClass = @"server operator"; 
    659659                else if( [member roomFounder] ) senderClass = @"room founder"; 
     660                else if( [member roomAdministrator] ) senderClass = @"room administrator"; 
    660661                else if( [member operator] ) senderClass = @"operator"; 
    661662                else if( [member halfOperator] ) senderClass = @"half operator"; 
  • trunk/Panels/JVChatRoomMember.m

    r3559 r3579  
    413413        NSSet *features = [[self connection] supportedFeatures]; 
    414414 
     415        if( ( localUserIsFounder ) && ( [features containsObject:MVChatRoomMemberFounderFeature] ) ) { 
     416                item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString( @"Founder", "founder contextual menu - admin only") action:@selector( toggleFounderStatus: ) keyEquivalent:@""]; 
     417                [item setTarget:self]; 
     418                [menu addItem:item]; 
     419                [item release]; 
     420        } 
     421 
     422        if( ( ( localUserIsAdministrator || localUserIsFounder ) && (localUserIsAdministrator && ! [self roomFounder]) ) && ( [features containsObject:MVChatRoomMemberAdministratorFeature] ) ) { 
     423                item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString( @"Administrator", "administrator contextual menu - admin only") action:@selector( toggleAdministratorStatus: ) keyEquivalent:@""]; 
     424                [item setTarget:self]; 
     425                [menu addItem:item]; 
     426                [item release]; 
     427        } 
     428 
    415429        if( ( localUserIsOperator || localUserIsAdministrator || localUserIsFounder ) && ( (localUserIsOperator && ! ([self roomAdministrator] || [self roomFounder])) || (localUserIsAdministrator && ! [self roomFounder]) ) ) { 
    416430                if( [features containsObject:MVChatRoomMemberOperatorFeature] ) { 
     
    518532#pragma mark Operator Actions 
    519533 
     534- (IBAction) toggleFounderStatus:(id) sender { 
     535        if( [self founder] ) [[_room target] removeMode:MVChatRoomMemberFounderMode forMemberUser:_user]; 
     536        else [[_room target] setMode:MVChatRoomMemberFounderMode forMemberUser:_user]; 
     537} 
     538 
     539- (IBAction) toggleAdministratorStatus:(id) sender { 
     540        if( [self administrator] ) [[_room target] removeMode:MVChatRoomMemberAdministratorMode forMemberUser:_user]; 
     541        else [[_room target] setMode:MVChatRoomMemberAdministratorMode forMemberUser:_user]; 
     542} 
     543 
    520544- (IBAction) toggleOperatorStatus:(id) sender { 
    521545        if( [self operator] ) [[_room target] removeMode:MVChatRoomMemberOperatorMode forMemberUser:_user]; 
    522         else { 
    523                 [[_room target] setMode:MVChatRoomMemberOperatorMode forMemberUser:_user]; 
    524                 if( [self halfOperator] ) [[_room target] removeMode:MVChatRoomMemberHalfOperatorMode forMemberUser:_user]; 
    525                 if( [self voice] ) [[_room target] removeMode:MVChatRoomMemberVoicedMode forMemberUser:_user]; 
    526         } 
     546        else [[_room target] setMode:MVChatRoomMemberOperatorMode forMemberUser:_user]; 
    527547} 
    528548 
    529549- (IBAction) toggleHalfOperatorStatus:(id) sender { 
    530550        if( [self halfOperator] ) [[_room target] removeMode:MVChatRoomMemberHalfOperatorMode forMemberUser:_user]; 
    531         else {  
    532                 [[_room target] setMode:MVChatRoomMemberHalfOperatorMode forMemberUser:_user]; 
    533                 if( [self operator] ) [[_room target] removeMode:MVChatRoomMemberOperatorMode forMemberUser:_user]; 
    534                 if( [self voice] ) [[_room target] removeMode:MVChatRoomMemberVoicedMode forMemberUser:_user]; 
    535         } 
     551        else [[_room target] setMode:MVChatRoomMemberHalfOperatorMode forMemberUser:_user]; 
    536552} 
    537553 
    538554- (IBAction) toggleVoiceStatus:(id) sender { 
    539555        if( [self voice] ) [[_room target] removeMode:MVChatRoomMemberVoicedMode forMemberUser:_user]; 
    540         else { 
    541                 [[_room target] setMode:MVChatRoomMemberVoicedMode forMemberUser:_user]; 
    542                 if( [self operator] ) [[_room target] removeMode:MVChatRoomMemberOperatorMode forMemberUser:_user]; 
    543                 if( [self halfOperator] ) [[_room target] removeMode:MVChatRoomMemberHalfOperatorMode forMemberUser:_user]; 
    544         } 
     556        else [[_room target] setMode:MVChatRoomMemberVoicedMode forMemberUser:_user]; 
    545557} 
    546558 
    547559- (IBAction) toggleQuietedStatus:(id) sender { 
    548560        if( [self quieted] ) [[_room target] removeMode:MVChatRoomMemberQuietedMode forMemberUser:_user]; 
    549         else { 
    550                 [[_room target] setMode:MVChatRoomMemberQuietedMode forMemberUser:_user]; 
    551         } 
     561        else [[_room target] setMode:MVChatRoomMemberQuietedMode forMemberUser:_user]; 
    552562} 
    553563 
  • trunk/Panels/JVChatRoomPanel.m

    r3570 r3579  
    11411141        if( [[NSUserDefaults standardUserDefaults] boolForKey:@"JVSortRoomMembersByStatus"] ) 
    11421142                [self resortMembers]; 
    1143  
     1143                 
    11441144        MVChatUser *user = [[notification userInfo] objectForKey:@"who"]; 
    11451145        MVChatUser *byUser = [[notification userInfo] objectForKey:@"by"]; 
     
    11841184                        message = [NSString stringWithFormat:NSLocalizedString( @"<span class=\"member\">%@</span> was demoted from room founder by <span class=\"member\">%@</span>.", "user is no longer a chat room founder status message" ), ( mbr ? [mbr title] : [user nickname] ), ( byMbr ? [byMbr title] : [byUser nickname] )]; 
    11851185                } 
     1186        } else if( mode == MVChatRoomMemberAdministratorMode && enabled ) { 
     1187                name = @"memberPromotedToAdministrator"; 
     1188                notificationKey = @"JVChatMemberPromotedAdministrator"; 
     1189                title = NSLocalizedString( @"New Room Administrator", "room administrator promoted title" ); 
     1190                description = [NSString stringWithFormat:NSLocalizedString( @"%@ was promoted to administrator by %@ in %@.", "bubble message member administrator promotion string" ), ( mbr ? [mbr title] : [user nickname] ), ( byMbr ? [byMbr title] : [byUser nickname] ), [self title]]; 
     1191                if( [mbr isLocalUser] && [byMbr isLocalUser] ) { // only server oppers would ever see this 
     1192                        message = NSLocalizedString( @"You promoted yourself to Administrator.", "we gave ourself the chat room administrator privilege status message" ); 
     1193                        name = @"promotedToAdministrator"; 
     1194                } else if( [mbr isLocalUser] ) { 
     1195                        message = [NSString stringWithFormat:NSLocalizedString( @"You were promoted to administrator by <span class=\"member\">%@</span>.", "we are now a chat room administrator status message" ), ( byMbr ? [byMbr title] : [byUser nickname] )]; 
     1196                        name = @"promotedToAdministrator"; 
     1197                } else if( [byMbr isLocalUser] ) { 
     1198                        message = [NSString stringWithFormat:NSLocalizedString( @"<span class=\"member\">%@</span> was promoted to administrator by you.", "we gave user chat room administrator status message" ), ( mbr ? [mbr title] : [user nickname] )]; 
     1199                } else { 
     1200                        message = [NSString stringWithFormat:NSLocalizedString( @"<span class=\"member\">%@</span> was promoted to administrator by <span class=\"member\">%@</span>.", "user is now a chat room administrator status message" ), ( mbr ? [mbr title] : [user nickname] ), ( byMbr ? [byMbr title] : [byUser nickname] )]; 
     1201                } 
     1202        } else if( mode == MVChatRoomMemberAdministratorMode && ! enabled ) { 
     1203                name = @"memberDemotedFromAdministrator"; 
     1204                notificationKey = @"JVChatMemberDemotedAdministrator"; 
     1205                title = NSLocalizedString( @"Room Administrator Demoted", "room administrator demoted title" ); 
     1206                description = [NSString stringWithFormat:NSLocalizedString( @"%@ was demoted from administrator by %@ in %@.", "bubble message member administrator demotion string" ), ( mbr ? [mbr title] : [user nickname] ), ( byMbr ? [byMbr title] : [byUser nickname] ), [self title]]; 
     1207                if( [mbr isLocalUser] && [byMbr isLocalUser] ) { 
     1208                        message = NSLocalizedString( @"You demoted yourself from administrator.", "we removed our chat room administrator privilege status message" ); 
     1209                        name = @"demotedFromAdministrator"; 
     1210                } else if( [mbr isLocalUser] ) { 
     1211                        message = [NSString stringWithFormat:NSLocalizedString( @"You were demoted from administrator by <span class=\"member\">%@</span>.", "we are no longer a chat room administrator status message" ), ( byMbr ? [byMbr title] : [byUser nickname] )]; 
     1212                        name = @"demotedFromAdministrator"; 
     1213                } else if( [byMbr isLocalUser] ) { 
     1214                        message = [NSString stringWithFormat:NSLocalizedString( @"<span class=\"member\">%@</span> was demoted from administrator by you.", "we removed user's chat room administrator status message" ), ( mbr ? [mbr title] : [user nickname] )]; 
     1215                } else { 
     1216                        message = [NSString stringWithFormat:NSLocalizedString( @"<span class=\"member\">%@</span> was demoted from administrator by <span class=\"member\">%@</span>.", "user is no longer a chat room administrator status message" ), ( mbr ? [mbr title] : [user nickname] ), ( byMbr ? [byMbr title] : [byUser nickname] )]; 
     1217                } 
    11861218        } else if( mode == MVChatRoomMemberOperatorMode && enabled ) { 
    11871219                name = @"memberPromotedToOperator"; 
    1188                 notificationKey = @"JVChatMemberPromoted"; 
     1220                notificationKey = @"JVChatMemberPromotedOperator"; 
    11891221                title = NSLocalizedString( @"New Room Operator", "member promoted title" ); 
    11901222                description = [NSString stringWithFormat:NSLocalizedString( @"%@ was promoted to operator by %@ in %@.", "bubble message member operator promotion string" ), ( mbr ? [mbr title] : [user nickname] ), ( byMbr ? [byMbr title] : [byUser nickname] ), [self title]]; 
     
    12021234        } else if( mode == MVChatRoomMemberOperatorMode && ! enabled ) { 
    12031235                name = @"memberDemotedFromOperator"; 
    1204                 notificationKey = @"JVChatMemberDemoted"; 
     1236                notificationKey = @"JVChatMemberDemotedOperator"; 
    12051237                title = NSLocalizedString( @"Room Operator Demoted", "room operator demoted title" ); 
    12061238                description = [NSString stringWithFormat:NSLocalizedString( @"%@ was demoted from operator by %@ in %@.", "bubble message member operator demotion string" ), ( mbr ? [mbr title] : [user nickname] ), ( byMbr ? [byMbr title] : [byUser nickname] ), [self title]]; 
  • trunk/Resources/info.colloquy.plist

    r3505 r3579  
    175175                <string>Whip.aiff</string> 
    176176        </dict> 
    177         <key>JVNotificationSettings JVChatMemberPromoted</key> 
     177        <key>JVNotificationSettings JVChatMemberPromotedOperator</key> 
    178178        <dict> 
    179179                <key>playSound</key> 
  • trunk/Resources/notifications.plist

    r3496 r3579  
    6565        <dict> 
    6666                <key>identifier</key> 
    67                 <string>JVChatMemberPromoted</string> 
     67                <string>JVChatMemberPromotedAdministrator</string> 
     68                <key>title</key> 
     69                <string>Member Promoted to Administrator</string> 
     70        </dict> 
     71        <dict> 
     72                <key>identifier</key> 
     73                <string>JVChatMemberDemotedAdministrator</string> 
     74                <key>title</key> 
     75                <string>Member Demoted from Administrator</string> 
     76        </dict> 
     77        <dict> 
     78                <key>identifier</key> 
     79                <string>JVChatMemberPromotedOperator</string> 
    6880                <key>title</key> 
    6981                <string>Member Promoted to Operator</string> 
     
    7183        <dict> 
    7284                <key>identifier</key> 
    73                 <string>JVChatMemberDemoted</string> 
     85                <string>JVChatMemberDemotedOperator</string> 
    7486                <key>title</key> 
    7587                <string>Member Demoted from Operator</string>