[simias-svn] SF.net SVN: simias:[7367] trunk/src/admin
Brought to you by:
srinidhi_bs
|
From: <jj...@us...> - 2010-05-18 13:08:30
|
Revision: 7367
http://simias.svn.sourceforge.net/simias/?rev=7367&view=rev
Author: jjohnny
Date: 2010-05-18 13:08:23 +0000 (Tue, 18 May 2010)
Log Message:
-----------
ID: Bug#583289
Reviewers: Anil
Localization Required: Yes
Documentation Required: Yes
Description: Allow deletion of iFolders from admin console. Secondary
admins would be restricted by a policy.
Modified Paths:
--------------
trunk/src/admin/AdminRights.aspx
trunk/src/admin/AdminRights.aspx.cs
trunk/src/admin/PreferencesEnum.cs
trunk/src/admin/iFolderAdmin.resx
trunk/src/admin/iFolders.aspx
trunk/src/admin/iFolders.aspx.cs
Modified: trunk/src/admin/AdminRights.aspx
===================================================================
--- trunk/src/admin/AdminRights.aspx 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/AdminRights.aspx 2010-05-18 13:08:23 UTC (rev 7367)
@@ -308,7 +308,7 @@
</table>
<table class="policyclass" >
-
+
<tr>
<th colspan="2">
@@ -330,6 +330,7 @@
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
<asp:ListItem></asp:ListItem>
+ <asp:ListItem></asp:ListItem>
</asp:CheckBoxList>
Modified: trunk/src/admin/AdminRights.aspx.cs
===================================================================
--- trunk/src/admin/AdminRights.aspx.cs 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/AdminRights.aspx.cs 2010-05-18 13:08:23 UTC (rev 7367)
@@ -72,8 +72,8 @@
EnableDisableUserAllowed = 4096,
OwnOrphaniFolderAllowed = 8192,
EnableDisableiFolderAllowed = 16384,
- ModifyMemberRightAllowed = 32768
-
+ ModifyMemberRightAllowed = 32768,
+ DeleteiFolderAllowed = 65536,
};
@@ -396,9 +396,11 @@
iFolderRightsList.Items[ 0 ].Text = GetString( "ALLOWORPHANIFOLDEROWNERSHIP" );
iFolderRightsList.Items[ 1 ].Text = GetString( "ALLOWIFOLDERENABLING" );
iFolderRightsList.Items[ 2 ].Text = GetString( "ALLOWSHAREDMEMBERRIGHTS" );
+ iFolderRightsList.Items[ 3 ].Text = GetString( "ALLOWDELETEIFOLDERRIGHTS" );
iFolderRightsList.Items[ 0 ].Selected = true;
iFolderRightsList.Items[ 1 ].Selected = true;
iFolderRightsList.Items[ 2 ].Selected = true;
+ iFolderRightsList.Items[ 3 ].Selected = true;
iFolderUser user = web.GetUser( SecondaryAdmin );
string LebelDisplay;
@@ -661,8 +663,7 @@
iFolderRightsList.Items[0].Selected = UsersGroupRights.OwnOrphaniFolderAllowed;
iFolderRightsList.Items[1].Selected = UsersGroupRights.EnableDisableiFolderAllowed;
iFolderRightsList.Items[2].Selected = UsersGroupRights.ModifyMemberRightAllowed;
-
-
+ iFolderRightsList.Items[3].Selected = UsersGroupRights.DeleteiFolderAllowed;
}
protected int GetSelectedRights()
@@ -685,6 +686,7 @@
value += (iFolderRightsList.Items[0].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.OwnOrphaniFolderAllowed : 0);
value += (iFolderRightsList.Items[1].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.EnableDisableiFolderAllowed : 0);
value += (iFolderRightsList.Items[2].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.ModifyMemberRightAllowed : 0);
+ value += (iFolderRightsList.Items[3].Selected ? (int)Novell.iFolderWeb.Admin.UserGroupAdminRights.GroupAdminPreferencesEnum.DeleteiFolderAllowed : 0);
return value;
}
Modified: trunk/src/admin/PreferencesEnum.cs
===================================================================
--- trunk/src/admin/PreferencesEnum.cs 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/PreferencesEnum.cs 2010-05-18 13:08:23 UTC (rev 7367)
@@ -55,6 +55,7 @@
public bool OwnOrphaniFolderAllowed;
public bool EnableDisableiFolderAllowed;
public bool ModifyMemberRightAllowed;
+ public bool DeleteiFolderAllowed;
public long preference;
public static int defaultpreference;
@@ -73,6 +74,7 @@
OwnOrphaniFolderAllowed = 0x00000200, //512
EnableDisableiFolderAllowed = 0x00000400, //1024
ModifyMemberRightAllowed = 0x00000800, //2048
+ DeleteiFolderAllowed = 0x00001000, //4096
};
public UserGroupAdminRights(long value)
@@ -92,6 +94,7 @@
this.OwnOrphaniFolderAllowed = (this.preference & (int)GroupAdminPreferencesEnum.OwnOrphaniFolderAllowed) == 0 ? false:true;
this.EnableDisableiFolderAllowed = (this.preference & (int)GroupAdminPreferencesEnum.EnableDisableiFolderAllowed) == 0 ? false:true;
this.ModifyMemberRightAllowed = (this.preference & (int)GroupAdminPreferencesEnum.ModifyMemberRightAllowed) == 0 ? false:true;
+ this.DeleteiFolderAllowed = (this.preference & (int)GroupAdminPreferencesEnum.DeleteiFolderAllowed) == 0 ? false:true;
}
}
Modified: trunk/src/admin/iFolderAdmin.resx
===================================================================
--- trunk/src/admin/iFolderAdmin.resx 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/iFolderAdmin.resx 2010-05-18 13:08:23 UTC (rev 7367)
@@ -264,6 +264,9 @@
<data name="ERRORCANNOTDELETEIFOLDER">
<value>Cannot delete iFolder.</value>
</data>
+ <data name="ERRORCANNOTDELETEIFOLDER">
+ <value>You do not have permissions to delete {0}.</value>
+ </data>
<data name="ERRORCANNOTDELETEMEMBERS">
<value>Cannot delete iFolder member {0}.</value>
</data>
@@ -1243,6 +1246,9 @@
<data name="ALLOWSHAREDMEMBERRIGHTS">
<value>Allow to modify rights of shared iFolder members</value>
</data>
+ <data name="ALLOWDELETEIFOLDERRIGHTS">
+ <value>Allow permission to delete iFolders</value>
+ </data>
<data name="ASSIGNADMINRIGHTS">
<value>Assign Admin Rights to: </value>
</data>
Modified: trunk/src/admin/iFolders.aspx
===================================================================
--- trunk/src/admin/iFolders.aspx 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/iFolders.aspx 2010-05-18 13:08:23 UTC (rev 7367)
@@ -179,7 +179,7 @@
Runat="server"
CssClass="ifolderbuttons"
Enabled="False"
- Visible="False"
+ Visible="True"
OnClick="OnDeleteButton_Click" />
<asp:Button
Modified: trunk/src/admin/iFolders.aspx.cs
===================================================================
--- trunk/src/admin/iFolders.aspx.cs 2010-05-18 10:48:22 UTC (rev 7366)
+++ trunk/src/admin/iFolders.aspx.cs 2010-05-18 13:08:23 UTC (rev 7367)
@@ -38,6 +38,7 @@
using System.Data;
using System.Drawing;
using System.Resources;
+using System.Text;
using System.Threading;
using System.Web;
using System.Web.SessionState;
@@ -157,6 +158,21 @@
/// </summary>
protected string currentServerURL;
+ /// <summary>
+ /// Logged in admin system rights instance
+ /// </summary>
+ UserGroupAdminRights uRights;
+
+ /// <summary>
+ /// Logged in user system rights value
+ /// </summary>
+ int grpAccessPolicy = 0;
+
+ /// <summary>
+ /// Currently logged in User ID
+ /// </summary>
+ protected string userID;
+
protected bool reachable = true;
#endregion
@@ -258,7 +274,7 @@
list = web.GetiFoldersByName(iFolderSearch.SearchOperation,
( iFolderSearch.SearchName == String.Empty) ? "*" : iFolderSearch.SearchName,
CurrentiFolderOffset,iFolderList.PageSize);
- DeleteButton.Visible = false;
+ DeleteButton.Visible = true;
break;
}
@@ -381,6 +397,10 @@
rm = Application[ "RM" ] as ResourceManager;
// TopNav.ShowInfo(String.Format("URL: {0}", web.Url));
+ userID = Session[ "UserID" ] as String;
+ grpAccessPolicy = web.GetUserGroupRights(userID, null);
+ uRights = new UserGroupAdminRights(grpAccessPolicy);
+
if ( !IsPostBack )
{
// Initialize the localized fields.
@@ -404,6 +424,8 @@
}
// Set the active ifolder display tab
SetActiveiFolderListTab( ActiveiFolderTab );
+ DeleteButton.Enabled = uRights.DeleteiFolderAllowed;
+
// TopNav.ShowInfo(String.Format("URL: {0}", web.Url));
string code = Thread.CurrentThread.CurrentUICulture.Name;
if (code.StartsWith("pt") || code.StartsWith("de") || code.StartsWith("ru"))
@@ -431,6 +453,7 @@
private void SetActionButtons()
{
Hashtable ht = CheckediFolders;
+
switch(ActiveiFolderTab)
{
case ListDisplayType.Orphaned:
@@ -440,11 +463,11 @@
case ListDisplayType.All:
default:
- DeleteButton.Visible = false;
+ DeleteButton.Visible = true;
break;
}
- //DeleteButton.Enabled = ( ht.Count > 0 ) ? true : false;
+ DeleteButton.Enabled = (ht.Count > 0) ? true : false;
DisableButton.Enabled = ht.ContainsValue( Boolean.FalseString );
EnableButton.Enabled = ht.ContainsValue( Boolean.TrueString );
}
@@ -493,6 +516,36 @@
}
/// <summary>
+ /// Gets iFolder name
+ /// </summary>
+ private string GetiFolderName(string iFolderID)
+ {
+ foreach( DataGridItem item in iFolderList.Items )
+ {
+ string ifolderid = item.Cells[ iFolderIDColumn].Text;
+ if( ifolderid == iFolderID )
+ //FIXME : Magic numbers
+ return item.Cells [12].Text; //iFolder name column.
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// Gets iFolder's owner ID
+ /// </summary>
+ private string GetiFolderOwnerID(string iFolderID)
+ {
+ foreach( DataGridItem item in iFolderList.Items )
+ {
+ string ifolderid = item.Cells[iFolderIDColumn].Text;
+ if( ifolderid == iFolderID )
+ //FIXME : Magic numbers
+ return item.Cells [8].Text; //iFolder ID column.
+ }
+ return null;
+ }
+
+ /// <summary>
/// Sets the ifolder synchronization status on all selected ifolders.
/// </summary>
/// <param name="syncStatus">If true then all selected ifolders will be enabled.</param>
@@ -693,10 +746,30 @@
/// <param name="e"></param>
protected void OnDeleteButton_Click( object source, EventArgs e )
{
+ string skippediFolderNames = "";
foreach( string ifolderID in CheckediFolders.Keys )
{
try
{
+ int rights = GetRightsForiFolder(ifolderID);
+ if (rights == -1 ) rights = 0xffff;
+
+ UserGroupAdminRights adminRights = new UserGroupAdminRights(rights);
+ string ownerID = GetiFolderOwnerID (ifolderID);
+ /*Condition for skipping iFolders for deletion. We allow the owner to
+ delete his own iFolder. */
+ if (userID != ownerID) {
+ if(!adminRights.DeleteiFolderAllowed) {
+ string ifolderName = GetiFolderName (ifolderID);
+ if (skippediFolderNames.Length > 0 ) //Just for adding a comma.
+ skippediFolderNames += ", " + ifolderName;
+ else
+ skippediFolderNames += ifolderName;
+
+ continue;
+ }
+ }
+
string ifolderLocation = web.GetiFolderLocation (ifolderID);
UriBuilder remoteurl = new UriBuilder(ifolderLocation);
remoteurl.Path = (new Uri(web.Url)).PathAndQuery;
@@ -710,6 +783,7 @@
web.Url = currentServerURL;
return;
}
+
}
web.Url = currentServerURL;
@@ -722,6 +796,10 @@
// Rebind the data source with the new data.
GetiFolders();
+
+ //If we have skipped some iFolders, tell the admin.
+ if (skippediFolderNames.Length > 0)
+ TopNav.ShowError(string.Format (GetString ("ERRORCANNOTDELETEIFOLDER"), skippediFolderNames));
}
/// <summary>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|