http://www.mediawiki.org/wiki/Special:Code/MediaWiki/93541
Revision: 93541 Author: zhenya Date: 2011-07-30 16:52:13 +0000 (Sat, 30 Jul 2011) Log Message: ----------- Added SpecialUserStatus.php where u (soon only admin) can delete messages. Made some changes for the "i like" system(not implemented yet). Fixed some things Modified Paths: -------------- trunk/extensions/SocialProfile/SocialProfile.php trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php trunk/extensions/SocialProfile/UserStatus/UserStatus.css trunk/extensions/SocialProfile/UserStatus/UserStatus.js trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php trunk/extensions/SocialProfile/UserStatus/userstatus.sql Added Paths: ----------- trunk/extensions/SocialProfile/UserStatus/SpecialUserStatus.php Modified: trunk/extensions/SocialProfile/SocialProfile.php =================================================================== --- trunk/extensions/SocialProfile/SocialProfile.php 2011-07-30 16:38:46 UTC (rev 93540) +++ trunk/extensions/SocialProfile/SocialProfile.php 2011-07-30 16:52:13 UTC (rev 93541) @@ -38,7 +38,7 @@ $wgAutoloadClasses['SpecialViewRelationshipRequests'] = $dir . 'UserRelationship/SpecialViewRelationshipRequests.php'; $wgAutoloadClasses['SpecialViewRelationships'] = $dir . 'UserRelationship/SpecialViewRelationships.php'; $wgAutoloadClasses['SpecialViewUserBoard'] = $dir . 'UserBoard/SpecialUserBoard.php'; - +$wgAutoloadClasses['SpecialUserStatus'] = $dir . 'UserStatus/SpecialUserStatus.php'; $wgAutoloadClasses['RemoveAvatar'] = $dir . 'UserProfile/SpecialRemoveAvatar.php'; $wgAutoloadClasses['UpdateEditCounts'] = $dir . 'UserStats/SpecialUpdateEditCounts.php'; $wgAutoloadClasses['UserBoard'] = $dir . 'UserBoard/UserBoardClass.php'; @@ -73,6 +73,7 @@ $wgSpecialPages['UserBoard'] = 'SpecialViewUserBoard'; $wgSpecialPages['ViewRelationshipRequests'] = 'SpecialViewRelationshipRequests'; $wgSpecialPages['ViewRelationships'] = 'SpecialViewRelationships'; +$wgSpecialPages['UserStatus'] = 'SpecialUserStatus'; // Special page groups for MW 1.13+ $wgSpecialPageGroups['AddRelationship'] = 'users'; Modified: trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php =================================================================== --- trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php 2011-07-30 16:38:46 UTC (rev 93540) +++ trunk/extensions/SocialProfile/UserProfile/UserProfilePage.php 2011-07-30 16:52:13 UTC (rev 93541) @@ -1785,7 +1785,7 @@ function getStatus( $userId ) { global $wgUser; - $us_class = new UserStatusClass( $userId ); + $us_class = new UserStatusClass(); $user_status_array = $us_class->getStatus( $userId ); if ( empty( $user_status_array ) ) { $buf = ''; @@ -1806,7 +1806,7 @@ return "<script>UserStatus.toShowMode('$buf','$userId');</script>"; } else { - return $buf; + return $buf."<script>UserStatus.publicHistoryButton('$userId');</script>"; } } Copied: trunk/extensions/SocialProfile/UserStatus/SpecialUserStatus.php (from rev 92938, trunk/extensions/SocialProfile/UserBoard/SpecialSendBoardBlast.php) =================================================================== --- trunk/extensions/SocialProfile/UserStatus/SpecialUserStatus.php (rev 0) +++ trunk/extensions/SocialProfile/UserStatus/SpecialUserStatus.php 2011-07-30 16:52:13 UTC (rev 93541) @@ -0,0 +1,25 @@ +<?php + +class SpecialUserStatus extends UnlistedSpecialPage { + + /** + * Constructor + */ + public function __construct() { + global $wgOut, $wgScriptPath; + + parent::__construct( 'UserStatus' ); + $wgOut->addScriptFile( $wgScriptPath . '/extensions/SocialProfile/UserStatus/UserStatus.js' ); + } + + public function execute( $params ) { + global $wgOut; + + $output = "Enter username: <input type=\"text\" id=\"us-name-input\"> "; + $output .= "<input type=\"button\" value=\"Find\" onclick=\"javascript:UserStatus.specialGetHistory();\">"; + $output .= "<div id=\"us-special\"> </div>"; + $wgOut->addHTML($output); + return; + } + +} Modified: trunk/extensions/SocialProfile/UserStatus/UserStatus.css =================================================================== --- trunk/extensions/SocialProfile/UserStatus/UserStatus.css 2011-07-30 16:38:46 UTC (rev 93540) +++ trunk/extensions/SocialProfile/UserStatus/UserStatus.css 2011-07-30 16:52:13 UTC (rev 93541) @@ -1,5 +1,5 @@ #status-box { - width : 400px; + width : 440px; padding: 0px; margin: 0px; } @@ -34,6 +34,7 @@ #user-status-history { background-color: orange; color: white; + text-align: left; } #user-status-history a { @@ -54,4 +55,8 @@ #status-bar { margin-left: 20px; text-align: left; +} + +#like-status a { + text-decoration: none; } \ No newline at end of file Modified: trunk/extensions/SocialProfile/UserStatus/UserStatus.js =================================================================== --- trunk/extensions/SocialProfile/UserStatus/UserStatus.js 2011-07-30 16:38:46 UTC (rev 93540) +++ trunk/extensions/SocialProfile/UserStatus/UserStatus.js 2011-07-30 16:52:13 UTC (rev 93541) @@ -15,6 +15,10 @@ } document.getElementById('status-letter-count').innerHTML =len + " "+_US_LETTERS; }, + + publicHistoryButton: function( id ) { + document.getElementById( 'user-status-block' ).innerHTML += '<br> <a id="us-link" href="javascript:UserStatus.useHistory(' + id + ');">'+_US_HISTORY+'</a>'; + }, toEditMode: function( status, id ) { var editbar = '<input id="user-status-input" type="text" size="50" value="' + @@ -52,5 +56,23 @@ fromHistoryToStatus: function( str ) { document.getElementById('user-status-input').value = str; + }, + + specialGetHistory: function() { + var us_name = document.getElementById("us-name-input").value; + var block = document.getElementById("us-special"); + sajax_do_call( 'SpecialGetStatusByName', [us_name], block ); + }, + + specialHistoryDelete: function(id) { + var block = document.getElementById("us-special"); + sajax_do_call( 'SpecialHistoryDelete', [id], block ); + this.specialGetHistory(); + }, + + specialStatusDelete: function(id) { + var block = document.getElementById("us-special"); + sajax_do_call( 'SpecialStatusDelete', [id], block ); + this.specialGetHistory(); } }; \ No newline at end of file Modified: trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php =================================================================== --- trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php 2011-07-30 16:38:46 UTC (rev 93540) +++ trunk/extensions/SocialProfile/UserStatus/UserStatusClass.php 2011-07-30 16:52:13 UTC (rev 93541) @@ -1,16 +1,15 @@ <?php /** * Class to manipulate user-specific status messages. - * + * * @file */ class UserStatusClass { - /* private */ function __construct( $u_id ) { + /* private */ function __construct() { global $wgOut, $wgScriptPath; $wgOut->addExtensionStyle( $wgScriptPath . '/extensions/SocialProfile/UserStatus/UserStatus.css' ); $wgOut->addScriptFile( $wgScriptPath . '/extensions/SocialProfile/UserStatus/UserStatus.js' ); - } public function getStatus( $u_id ) { @@ -29,6 +28,7 @@ } else { foreach ( $res as $row ) { $message = array( + 'us_id' => $row->us_id, 'us_user_id' => $row->us_user_id, 'us_status' => htmlspecialchars( $row->us_status ), ); @@ -37,6 +37,12 @@ return $message; } + + public function removeStatus( $status_id ) { + $dbr = wfGetDB( DB_MASTER ); + $dbr->delete('user_status', array( 'us_id' => $status_id ), __METHOD__); + return; + } /** * Add a status message to the database. @@ -48,7 +54,6 @@ $message = trim($message); if (( mb_strlen( $message ) > 70 ) || ( mb_strlen( $message ) < 1 )) { // ERROR. Message length is too long - // @todo Communicate failure to the end-user somehow... return; } @@ -116,6 +121,7 @@ 'ush_user_id' => $row->ush_user_id, 'ush_timestamp' => $row->ush_timestamp, 'ush_status' => $row->ush_status, + 'ush_likes' => $row->ush_likes, ); } @@ -151,4 +157,10 @@ return; } } + + public function removeHistoryStatus( $status_id ) { + $dbr = wfGetDB( DB_MASTER ); + $dbr->delete('user_status_history', array( 'ush_id' => $status_id ), __METHOD__); + return; + } } \ No newline at end of file Modified: trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php =================================================================== --- trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php 2011-07-30 16:38:46 UTC (rev 93540) +++ trunk/extensions/SocialProfile/UserStatus/UserStatus_AjaxFunctions.php 2011-07-30 16:52:13 UTC (rev 93541) @@ -5,7 +5,7 @@ $wgAjaxExportList[] = 'wfSaveStatus'; function wfSaveStatus( $u_id, $status ) { - $us_class = new UserStatusClass( $u_id ); + $us_class = new UserStatusClass(); $us_class->setStatus( $u_id, $status ); $user_status_array = $us_class->getStatus( $u_id ); $buf = $user_status_array['us_status']; @@ -17,20 +17,72 @@ $wgAjaxExportList[] = 'wfGetHistory'; function wfGetHistory( $u_id ) { - $us_class = new UserStatusClass( $u_id ); + $us_class = new UserStatusClass(); $historyArray = $us_class->useStatusHistory('select', $u_id); $output='<table id="user-status-history">'; foreach ($historyArray as $row ) { $time = DateTime::createFromFormat('Y-m-d H:i:s',$row['ush_timestamp']); - $output .= '<tr><td id="status-history-time">'.date_format($time, 'j M G:i').' </td>'; - $output .= '<td><a href="javascript:UserStatus.fromHistoryToStatus(\''.$row['ush_status'].'\');">' - .$row['ush_status'].'</a></td></tr>'; + $output .= '<tr><td width="60" id="status-history-time">'.date_format($time, 'j M G:i').' </td>'; + $output .= '<td width="360"><a href="javascript:UserStatus.fromHistoryToStatus(\''.$row['ush_status'].'\');">' + .$row['ush_status'].'</a></td>'; + //$output .='<td width="20" id="like-status"> <a href="javascript:UserStatus.likeIt('.$row['ush_id'].')" title="I like it!" >♥</a> '.$row['ush_likes'].'</td></tr>'; } $output.='</table>'; return $output; } +$wgAjaxExportList[] = 'SpecialGetStatusByName'; + +function SpecialGetStatusByName( $user_name ) { + global $wgUser; + $output=""; + $user_id = $wgUser->idFromName($user_name); + + if (empty ($user_id)) { + $output.="<div>Wrong name or user does not exist</div>"; + } else { + $us_class = new UserStatusClass(); + $currentStatus = $us_class->getStatus($user_id); + $output .="<br><div>USER ID: $user_id, USERNAME: $user_name</div><br>"; + + if (!empty ($currentStatus)) { + $output .="CURRENT STATUS:<br> + <input id=\"ush_delete\" type=\"button\" value=\"Delete\" + onclick=\"javascript:UserStatus.specialStatusDelete('".$currentStatus['us_id']."');\">" + .$currentStatus['us_status']."<br><br>"; + } + + $output .="HISTORY:<br>"; + + $userHistory = $us_class->useStatusHistory('select', $user_id); + if(empty ($userHistory)) { + $output .= "No history"; + } else { + foreach ( $userHistory as $row ) { + $output .= "<input id=\"ush_delete\" type=\"button\" value=\"Delete\" + onclick=\"javascript:UserStatus.specialHistoryDelete('".$row['ush_id']."');\">" + .$row['ush_timestamp']." - ".$row['ush_status']." <br>"; + } + } + } + return $output; +} + +$wgAjaxExportList[] = 'SpecialHistoryDelete'; +function SpecialHistoryDelete( $id ) { + $us_class = new UserStatusClass(); + $us_class->removeHistoryStatus($id); + return ""; +} + +$wgAjaxExportList[] = 'SpecialStatusDelete'; +function SpecialStatusDelete( $id ) { + $us_class = new UserStatusClass(); + $us_class->removeStatus($id); + return ""; +} + $wgHooks['MakeGlobalVariablesScript'][] = 'addJSGlobals'; function addJSGlobals( $vars ) { @@ -46,16 +98,16 @@ $wgHooks['UserProfileBeginRight'][] = 'wfUserProfileStatusOutput'; function wfUserProfileStatusOutput( $user_profile ) { - global $wgOut , $wgEnableUserStatus; - if ( $wgEnableUserStatus ) { - $userStatus = $user_profile->getStatus( $user_profile->user_id ); - $output = '<div id="status-box"> - <div id="status-box-top"></div> - <div id="status-box-content"> - <div id="user-status-block">' . $userStatus . '</div> - </div> - </div>'; - $wgOut->addHTML($output); - } - return true; + global $wgOut , $wgEnableUserStatus; + if ( $wgEnableUserStatus ) { + $userStatus = $user_profile->getStatus( $user_profile->user_id ); + $output = '<div id="status-box"> + <div id="status-box-top"></div> + <div id="status-box-content"> + <div id="user-status-block">' . $userStatus . '</div> + </div> + </div>'; + $wgOut->addHTML($output); + } + return true; } \ No newline at end of file Modified: trunk/extensions/SocialProfile/UserStatus/userstatus.sql =================================================================== --- trunk/extensions/SocialProfile/UserStatus/userstatus.sql 2011-07-30 16:38:46 UTC (rev 93540) +++ trunk/extensions/SocialProfile/UserStatus/userstatus.sql 2011-07-30 16:52:13 UTC (rev 93541) @@ -13,5 +13,6 @@ `ush_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, `ush_user_id` int(11) NOT NULL default '0', `ush_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - `ush_status` varchar(140) NOT NULL default '' + `ush_status` varchar(140) NOT NULL default '', + `ush_likes` int(11) NOT NULL default '0' )/*$wgDBTableOptions*/; _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs